34 lines
1.7 KiB
Markdown
34 lines
1.7 KiB
Markdown
# Codex-Prompt — Durchstich
|
|
|
|
Kopiervorlage für Codex. Erst `Codex-Briefing.md` + `Projektbeschreibung.md`
|
|
lesen, dann NUR den Durchstich bauen (nicht mehr).
|
|
|
|
---
|
|
|
|
Baue den **Durchstich** des Mail-Graveyard (Go-Single-Binary, Hausstil steht als
|
|
Stub-Gerüst). Ziel: **ein Konto, nur den Posteingang, sauber und wiederholbar
|
|
umziehen.** Lies zuerst `Codex-Briefing.md` und `Projektbeschreibung.md`; die 6
|
|
harten Regeln sind bindend.
|
|
|
|
Umfang des Durchstichs:
|
|
|
|
1. `02-database.go`: SQLite-Schema anlegen (accounts, folder_map, copied, jobs),
|
|
plus `GetAccount`, `ListAccounts`, `SaveAccount`, `AlreadyCopied`, `MarkCopied`.
|
|
2. `04-imap-source.go`: `OpenIMAPSource` für IMAP mit allen drei Security-Modi
|
|
(`tls`/`starttls`/`none`) und `SrcInsecure`. `Folders()` (mit SPECIAL-USE +
|
|
Delim) und `Fetch("INBOX")` (`UID FETCH BODY[] FLAGS INTERNALDATE`, streamend).
|
|
3. `05-imap-target.go`: `OpenIMAPTarget` (gleiche Security-Logik), `Folders()`,
|
|
`Delim()`, `EnsureFolder`, `Append` mit Flags + INTERNALDATE.
|
|
4. `06-mbox.go`: `MboxWriter` + `Append` (korrektes "From "-Trennen, >From-Quoting).
|
|
5. `07-migrate.go`: `migrateAccount` für nur "INBOX": pro Mail Message-ID gegen
|
|
`copied` prüfen; sonst `Append` (IMAP) **und** mbox schreiben, dann `MarkCopied`.
|
|
`RunMigration(name, false)` ruft es für ein Konto auf.
|
|
6. `main.go --run <konto>` muss durchlaufen.
|
|
|
|
Bewusst NOCH NICHT: Web-CRUD, Viewer, Weiterleiten, alle Ordner rekursiv,
|
|
Rollen-Mapping (11-folders.go), `--watch`, POP3. Nur INBOX, nur CLI.
|
|
|
|
**Abnahme:** Konto per SQL/Seed eintragen (Klartext-IMAP-Quelle testen!),
|
|
`./mail-graveyard --run test` zweimal laufen lassen → beim zweiten Mal werden
|
|
0 Mails kopiert (Idempotenz), Ziel-INBOX und lokale mbox enthalten dieselben
|
|
Mails mit erhaltenen Flags und Original-Datum.
|