File size: 1,725 Bytes
51cf475
 
 
 
 
 
 
 
 
 
 
 
 
f9e4e57
 
 
 
 
 
 
 
 
 
 
 
 
9619afc
f9e4e57
 
 
 
 
 
 
 
 
 
9619afc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from datetime import datetime


def save_log(user_id: int, history: dict, response: str):
    log_entry = (
        f"[{datetime.now().isoformat(sep=' ', timespec='seconds')}]\n"
        f"Usuário: {user_id}\n"
        f"Histórico: {history}\n"
        f"Recomendação: {response.strip()}\n"
        f"{'-'*40}\n"
    )
    with open("recommender.log", "a", encoding="utf-8") as f:
        f.write(log_entry)


def get_user_history(user_id: int) -> dict:
    """
    Lê o arquivo recommender.log e retorna o último histórico do usuário.
    """
    history = {}

    try:
        with open("recommender.log", "r", encoding="utf-8") as f:
            lines = f.readlines()

        current_user = None

        for line in lines:
            if line.startswith("Usuário:"):
                current_user = int(line.split(":")[1].strip())
            elif line.startswith("Histórico:") and current_user == user_id:
                history = eval(line.split(":", 1)[1].strip())

    except FileNotFoundError:
        pass

    return history


def get_all_users() -> dict:
    """
    Retorna todos os usuários e seus históricos a partir do arquivo de log.
    """
    users = {}

    try:
        with open("recommender.log", "r", encoding="utf-8") as f:
            lines = f.readlines()

        current_user = None

        for i, line in enumerate(lines):

            if line.startswith("Usuário:"):
                current_user = int(line.split(":")[1].strip())
            elif line.startswith("Histórico:") and current_user is not None:
                history = eval(line.split(":", 1)[1].strip())
                users[current_user] = history

    except FileNotFoundError:
        pass

    return users