notebookvb
This commit is contained in:
+22
-10
@@ -4,18 +4,22 @@ Hledá ve schránce **ordinace@buzalkova.cz** e-maily, kde pacient žádá
|
||||
o předepsání léku (recept), vytěžuje pacienta + požadované léky a pacienta
|
||||
ověřuje v kartotéce Medicusu.
|
||||
|
||||
## Stav: testovací režim (read-only)
|
||||
## Stav: nasazeno na toweru (produkce), DELTA režim
|
||||
|
||||
`recepty_agent.py` zatím jen načte `NEWEST_N` (= 5) nejnovějších mailů
|
||||
z Inboxu, klasifikuje je Claude modelem a vypíše report do konzole
|
||||
a `_log_recepty.txt`. **Ve schránce nic nemění** (žádné kategorie,
|
||||
přesuny, odpovědi), žádný `state.json`.
|
||||
`recepty_agent.py` zpracuje **všechny nové maily od posledního zpracovaného**
|
||||
(vodoznak), klasifikuje Claude modelem, identifikuje pacienta a u vysoké jistoty
|
||||
založí požadavek v Medeviu, jinak dá dotaz do fronty (Telegram). Označuje maily
|
||||
kategoriemi. Běží na toweru — viz „Nasazení na tower" níže.
|
||||
|
||||
## Tok
|
||||
|
||||
1. **Graph API** — `newest_inbox_messages()`: N nejnovějších mailů z Inboxu,
|
||||
bez filtru na přílohy (`$orderby receivedDateTime desc` — bez filtru
|
||||
funguje, na rozdíl od kombinace s `hasAttachments`, viz EmailAgent).
|
||||
1. **Graph API — DELTA** `nove_inbox_messages(mailbox, since_iso)`: všechny maily
|
||||
s `receivedDateTime gt vodoznak`, řazeno vzestupně, stránkováno (max
|
||||
`MAX_PER_RUN`=200/běh). Vodoznak = `_last_processed.txt` (2 řádky: čas + ID
|
||||
posl. mailu). POZOR: Graph má sub-sekundovou přesnost, ale `receivedDateTime`
|
||||
se zobrazuje oříznutě na sekundy → `gt` vrací i hraniční už zpracovaný mail;
|
||||
ten se odfiltruje podle uloženého ID. První běh (vodoznak chybí) jen nastaví
|
||||
vodoznak na nejnovější mail a od příště jede dopředně (historie se nedohání).
|
||||
2. **AI klasifikace + vytěžení (Claude `claude-haiku-4-5`)** — pro každý mail
|
||||
JSON: `je_zadost_o_recept`, `pacient` (může se lišit od odesílatele —
|
||||
příbuzní píší za pacienta), `rodne_cislo` (přesně jak je v textu),
|
||||
@@ -162,11 +166,19 @@ založil „Recept na léky" správnému pacientovi (dotazník Název léků + P
|
||||
označené maily přeskočí (ještě před AI klasifikací). Maily čekající na
|
||||
odpověď přes Telegram se přeskočí podle `recept_pending.je_mail_pending`
|
||||
(znovu se neptá).
|
||||
- Pozor: agent čte jen `NEWEST_N` (5) nejnovějších mailů — hloub do inboxu
|
||||
nejde. Když je všech 5 nejnovějších označených, neudělá nic.
|
||||
- DELTA režim: zpracuje vše po vodoznaku (ne jen N nejnovějších). Strop
|
||||
`MAX_PER_RUN`=200/běh (kdyby byl vodoznak hodně zpět — zbytek dobere další běh).
|
||||
Vodoznak lze ručně posunout úpravou `_last_processed.txt` (např. backfill).
|
||||
|
||||
## Spuštění
|
||||
|
||||
Vývoj (notebook/Z230):
|
||||
```powershell
|
||||
python U:\ordinaceprojekt\OrdinaceAgentEmail\recepty_agent.py
|
||||
```
|
||||
|
||||
Produkce (tower, python-runner) — viz „Nasazení na tower":
|
||||
```
|
||||
docker exec -e PYTHONIOENCODING=utf-8 -e MEDICUS_FDB_DSN=192.168.1.76:/firebird/data/medicus.fdb \
|
||||
python-runner python /scripts/OrdinaceReceptAgent/OrdinaceAgentEmail/recepty_agent.py
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user