46 lines
1.8 KiB
Markdown
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čí.
|