When to use
- Before modifying
workflow_email.py,pre_route.py,router.py, or anystepX_handler.py. - Before implementing new detection logic or regex.
- When debugging "lost messages", "wrong step" bugs, or "ignored inputs".
- When adding new steps or gates to the workflow.
Core Reference
READ THIS FILE FIRST: docs/architecture/MASTER_ARCHITECTURE_SHEET.md
Quick Checklist (The "Don't Break It" List)
- Pipeline Order: Remember that
Step 1runs beforePre-Route. Changes in Step 1 affect what Pre-Route sees. Capture runs before OOC. - Interference: If adding a keyword check, did you check
unified_detectionfirst? Don't let a regex override an LLM signal. - Idempotency: Is your "confirm" logic safe if the user says "Yes" to an already verified gate? (It should be a NO-OP, not a detour).
- Anchoring: If extracting a date, are you sure it's the Event Date and not a payment/quote date? Use
detect_change_type_enhanced. - Hybrid Handling: If the user sends "Confirm + Question", does your handler answer the question? Don't drop the QnA part.
- Hard Facts: Did you verify that LLM verbalization includes all units and prices exactly as in the data?
Critical Files
docs/architecture/MASTER_ARCHITECTURE_SHEET.md(The Law)backend/workflows/runtime/pre_route.py(The Gatekeeper)backend/workflows/steps/step1_intake/trigger/step1_handler.py(The Intake & Change Detector)backend/ux/universal_verbalizer.py(The Voice)
Common "False Friends" (Traps)
bodyvsbody_markdown: Usebodyfor client email,body_markdownfor internal HIL display.confirm_dateintent: Often triggers OOC if used in Step 4+. Use Gate-Aware Arbitration.event_datevspayment_date: Raw regex will confuse them. Use Normalization and Anchoring.
Scan to join WeChat group