Strandmöllen AutoSend Watcher — Update auf v1.2.0
====================================================
(Paket 13 — Robustes Antwort-Matching mit Thread-Headern
 + Unclear-Queue fuer nicht-eindeutige Domain-Treffer)

WAS IST NEU
-----------
Version 1.1.0 hat Inbox-Antworten ausschließlich per exaktem
Absender-Match erkannt. v1.2.0 erweitert das Matching auf drei
Stufen — und fängt damit genau die Fälle ab, die vorher
durchgerutscht sind:

  1. THREAD-HEADER (hart eindeutig)
     Die Gase-App vergibt beim Versand eine eindeutige Message-ID
     (Format <gase-log-<id>-<rand>@gase-app.synology.me>). Antwortet
     ein Kontakt, setzt Outlook/der Mail-Server automatisch die Header
     "In-Reply-To:" und "References:" auf genau diese Message-ID.
     Der Watcher liest beide Header aus dem Internet-Header-Block
     (MAPI-Property PR_TRANSPORT_MESSAGE_HEADERS) und schickt sie mit
     — das Backend findet den Vorgang auch dann, wenn die Antwort
     aus einem ganz anderen Postfach kommt (z. B. info@... statt
     m.meier@...).

  2. ABSENDER (wie in v1.1)
     Kein Header-Treffer? Absender-Adresse vergleichen.
     Case-insensitive, wie bisher.

  3. DOMAIN-FALLBACK -> Unclear-Queue
     Absender passt nicht, aber die Domain ja? Dann geht der Eintrag
     in die neue "Unclear-Queue" der App. Du ordnest ihn dort per
     Klick dem passenden Vorgang zu. Der Watcher mischt sich nicht
     in diese Entscheidung ein.


SERVER-SEITIG ENTSCHEIDEND
--------------------------
Der Watcher transportiert nur Header + Absender + Betreff + Preview.
Die Matching-Logik läuft komplett im Backend (vorgaenge_db.js,
Paket-13-Migration). Dadurch kann die Logik in Zukunft ohne neue
Client-Installation angepasst werden.


INSTALLATION
------------
1. Watcher beenden:
   - Aufgabenplanung: Aufgabe "StrandmollenAutoSend" stoppen, ODER
   - PowerShell-Fenster schliessen, ODER
   - Laptop einmal neu starten.

2. Die Datei "StrandmollenAutoSend.ps1" aus diesem Paket in den
   bisherigen Installationsordner kopieren und die alte Version
   ueberschreiben:
     %APPDATA%\Strandmollen\StrandmollenAutoSend.ps1

   (Oder einfacher: setup.bat ausfuehren — ueberschreibt nur das
   Skript, die bestehende autosend.config.json bleibt erhalten.)

3. Watcher neu starten.

4. Im autosend-YYYY-MM-DD.log (%APPDATA%\Strandmollen\logs) sollte
   jetzt erscheinen:
     StrandmollenAutoSend Watcher v1.2.0 gestartet
     Matching-Stufen: Thread-Header -> Absender -> Domain (unclear).


KONFIGURATION
-------------
Keine Aenderung an autosend.config.json noetig. Intervalle und
Lookback-Fenster sind unveraendert:
  $InboxPollIntervalSec = 120  # alle 2 Minuten
  $InboxLookbackDays    = 7    # Fenster fuer den Posteingang
  $OutgoingWindowDays   = 90   # offene Vorgaenge beruecksichtigen


ROLLBACK
--------
Die Vorgaengerversion v1.1.0 ist unveraendert lauffaehig — einfach
die PS1 zurueckkopieren. Der Inbox-Cache kann (muss aber nicht)
geloescht werden. Das Backend ist rueckwaerts-kompatibel; die
neuen Spalten (outgoing_message_id, match_method, in_reply_to,
mail_references) stoeren v1.1 nicht.


DIAGNOSE
--------
Im Log-File stehen jetzt 3 Varianten fuer Treffer:
  [INFO] Inbox-Match [thread]: vorgangId=42 from=info@meier.de
  [INFO] Inbox-Match [sender]: vorgangId=42 from=m.meier@meier.de
  [WARN] Inbox-Match unklar (unclearId=7) — bitte in der App zuordnen.

Offene "unklare" Matches siehst du in der Web-App unter
  Vorgaenge  ->  Unklare Rueckmeldungen

Dort kannst du:
  - einem Vorgang zuordnen  (-> wird zu einem normalen Match),
  - verwerfen  (-> Eintrag wird geschlossen, nicht mehr gezeigt).


PRIVACY
-------
Wie bisher werden nur Mails an das Backend uebertragen, die zu einer
aktiven Akquise passen (Absender-Match ODER Domain-Match). Alle
anderen Inbox-Mails bleiben lokal, werden weder gelesen noch
verschoben und nur mit ihrer EntryId im Cache vermerkt.
