Files
janssen/Feasibility/forward_offer_outlook_v1.1.md
2026-06-16 14:32:28 +02:00

46 lines
1.8 KiB
Markdown

# forward_offer_outlook_v1.1.py
**Verze:** 1.1 · **Datum:** 2026-06-16
JNJ-native skript (pywin32 / MAPI). Pro daného lékaře vytvoří **skutečný Outlook
Forward** jeho původní úvodní nabídky (zachová originál včetně data 31.05.2026,
formátování i hlavičky).
## Změna oproti v1.0
- **Primárně hledá zprávu přímo podle jednoznačného `EntryID`** (MAPI) přes
`Namespace.GetItemFromID(entry_id, store_id)` → nalezení „na první dobrou",
nulová nejednoznačnost.
- `EntryID` se bere z **JNJ SQLite** (`messages.entry_id`). Pro Huštáka je už
předvyplněný v `TARGETS`.
- **Fallback** (když EntryID nesedne) = původní heuristika subjekt + datum
31.05.2026 + příjemce To.
## Spuštění (JNJ stroj s Outlookem)
```
pip install pywin32
python forward_offer_outlook_v1.1.py
```
## Konfigurace
- `TARGETS` — list `{"email", "entry_id"}`. Defaultně jen **Hušták**
(ostatní zakomentované; doplň jim EntryID ze SQLite, jinak poběží fallback).
- `CC_RECIPIENTS` — Kocourková + Bartošová.
- `ADD_INTRO` / `INTRO_HTML` — krátký úvod nad forwardem (`False` = čistý forward).
- `ACTION``display` (default, jen otevře) / `draft` / `send`.
## Kde vzít EntryID dalších lékařů
JNJ SQLite, tabulka `messages`:
```sql
SELECT entry_id, subject, received_at, source
FROM messages
WHERE source LIKE '%<FC...msg-nazev>%';
```
(`message_id` je tam uložený jako `entryid:` + EntryID; sloupec `entry_id`
obsahuje čistý EntryID. Internet Message-ID `<…@…>` v datech NENÍ —
`.msg` jsou X-Unsent drafty, RFC Message-ID přiděluje až Exchange při odeslání.)
## Pozn.
- `GetItemFromID` zkusí variantu se `store_id` i bez něj.
- `display` nevyvolá Outlookový „program se snaží odeslat" dialog.
- Když se nenajde ani EntryID, ani jednoznačný fallback → lékaře přeskočí.