diff --git a/scripts/email_processor/README.md b/scripts/email_processor/README.md index bfa64c5..6c03937 100644 --- a/scripts/email_processor/README.md +++ b/scripts/email_processor/README.md @@ -98,7 +98,6 @@ chmod +x email-processor.sh # --- Other --- ./email-processor.sh stats # show decision history -./email-processor.sh migrate # import old decisions ``` Or call Python directly: `python main.py scan --dry-run` @@ -176,7 +175,7 @@ ollama list # should show kamekichi128/qwen3-4b-instruct-2507:latest ``` email_processor/ - main.py # Entry point — scan/review/stats/migrate subcommands + main.py # Entry point — scan/review/stats subcommands classifier.py # LLM prompt builder + response parser decision_store.py # Decision history storage + few-shot retrieval config.json # Ollama + automation settings diff --git a/scripts/email_processor/decision_store.py b/scripts/email_processor/decision_store.py index 203734e..ac94ff4 100644 --- a/scripts/email_processor/decision_store.py +++ b/scripts/email_processor/decision_store.py @@ -204,50 +204,3 @@ def get_all_stats(): "by_source": dict(by_source), "top_domains": top_domains, } - - -# --------------------------------------------------------------------------- -# Migration -# --------------------------------------------------------------------------- - -def migrate_pending(): - """One-time migration: import 'done' entries from pending_emails.json. - - Converts old-style action names ("archived" -> "archive", etc.) and - records them as user decisions in the history file. Safe to run - multiple times (will create duplicates though, so run once only). - """ - if not PENDING_FILE.exists(): - print("No pending_emails.json found, nothing to migrate.") - return 0 - - with open(PENDING_FILE, "r", encoding="utf-8") as f: - pending = json.load(f) - - # Map old action names to new ones - action_map = { - "archived": "archive", - "kept": "keep", - "deleted": "delete", - } - - migrated = 0 - for msg_id, data in pending.items(): - if data.get("status") != "done": - continue - old_action = data.get("action", "") - action = action_map.get(old_action, old_action) - if not action: - continue - - email_data = { - "sender": data.get("sender", ""), - "recipient": data.get("recipient", ""), - "subject": data.get("subject", ""), - "summary": data.get("summary", ""), - } - record_decision(email_data, action, source="user") - migrated += 1 - - print(f"Migrated {migrated} decisions from pending_emails.json") - return migrated diff --git a/scripts/email_processor/email-processor.sh b/scripts/email_processor/email-processor.sh index 9e54866..1b97ae5 100755 --- a/scripts/email_processor/email-processor.sh +++ b/scripts/email_processor/email-processor.sh @@ -11,7 +11,6 @@ # ./email-processor.sh review all delete # act on all pending # ./email-processor.sh review accept # accept all suggestions # ./email-processor.sh stats # show history stats -# ./email-processor.sh migrate # import old decisions # # Requires: Python 3.8+, himalaya, Ollama running with model. diff --git a/scripts/email_processor/main.py b/scripts/email_processor/main.py index 8a547bd..7d5630a 100644 --- a/scripts/email_processor/main.py +++ b/scripts/email_processor/main.py @@ -19,7 +19,6 @@ Subcommands: python main.py review all # act on all pending python main.py review accept # accept all suggestions python main.py stats # show decision history - python main.py migrate # import old decisions Action mapping (what each classification does to the email): delete -> himalaya message delete (moves to Trash) @@ -632,19 +631,6 @@ def cmd_stats(): print(f"\nKnown labels: {', '.join(sorted(labels))}") -# --------------------------------------------------------------------------- -# Subcommand: migrate -# --------------------------------------------------------------------------- - -def cmd_migrate(): - """Import old pending_emails.json 'done' entries into decision history. - - Run once after upgrading from the old system. Converts old action - names (archived/kept/deleted) to new ones (archive/keep/delete). - """ - decision_store.migrate_pending() - - # --------------------------------------------------------------------------- # Entry point & argument parsing # @@ -703,10 +689,7 @@ if __name__ == "__main__": elif subcommand == "stats": cmd_stats() - elif subcommand == "migrate": - cmd_migrate() - else: print(f"Unknown subcommand: {subcommand}") - print("Usage: python main.py [scan|review|stats|migrate] [--recent N] [--dry-run]") + print("Usage: python main.py [scan|review|stats] [--recent N] [--dry-run]") sys.exit(1)