| 1 |
- {"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_docs_superpowers_plans_2026_08_20_crm_invoice_paste_recognize_md", "label": "2026-08-20-crm-invoice-paste-recognize.md", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L1"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_crm_implementation_plan", "label": "CRM \u5f00\u7968\u4fe1\u606f\u7c98\u8d34\u5feb\u901f\u8bc6\u522b Implementation Plan", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L1"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "label": "File map", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L16"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_task_1", "label": "Task 1: \u89e3\u6790\u5de5\u5177\u5355\u6d4b\uff08\u5148\u7ea2\uff09", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L30"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_1", "label": "code:ts (import assert from 'node:assert/strict')", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L40"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_2", "label": "code:ts (export const CRM_INVOICE_PASTE_SAMPLE_ANQING = `\u5f00\u7968\u8d44\u6599\uff1a)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L114"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_3", "label": "code:bash (cd web-admin && pnpm exec tsx --test src/utils/crm-invoice-p)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L162"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_task_2", "label": "Task 2: \u5b9e\u73b0\u89e3\u6790\u5de5\u5177\uff08\u8f6c\u7eff\uff09", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L172"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_4", "label": "code:ts (function normalizeSpaces(s: string): string {)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L181"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_5", "label": "code:bash (cd web-admin && pnpm exec tsx --test src/utils/crm-invoice-p)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L319"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_task_3_invoiceinfo_vue_ui", "label": "Task 3: InvoiceInfo.vue \u63a5\u5165\u7c98\u8d34\u8bc6\u522b UI", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L331"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_6", "label": "code:vue (<div class=\"invoice-paste-panel\">)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L340"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_7", "label": "code:ts (import {)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L368"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_8", "label": "code:scss (.invoice-paste-panel {)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L421"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_task_4", "label": "Task 4: \u6536\u5c3e", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L468"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_9", "label": "code:bash (cd web-admin && pnpm exec tsx --test src/utils/crm-invoice-p)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L478"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_10", "label": "code:bash (./scripts/update-graph.sh frontend)", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L484"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_spec_coverage", "label": "Spec coverage\uff08\u81ea\u68c0\uff09", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L492"}, {"id": "plans_2026_08_20_crm_invoice_paste_recognize_placeholder_scan", "label": "Placeholder scan", "file_type": "document", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L504"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_docs_superpowers_plans_2026_08_20_crm_invoice_paste_recognize_md", "target": "plans_2026_08_20_crm_invoice_paste_recognize_crm_implementation_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L1", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_crm_implementation_plan", "target": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L16", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "target": "plans_2026_08_20_crm_invoice_paste_recognize_task_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L30", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_1", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L40", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_1", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L114", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_1", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L162", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "target": "plans_2026_08_20_crm_invoice_paste_recognize_task_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L172", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_2", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_4", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L181", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_2", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_5", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L319", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "target": "plans_2026_08_20_crm_invoice_paste_recognize_task_3_invoiceinfo_vue_ui", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L331", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_3_invoiceinfo_vue_ui", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_6", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L340", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_3_invoiceinfo_vue_ui", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_7", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L368", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_3_invoiceinfo_vue_ui", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_8", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L421", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_file_map", "target": "plans_2026_08_20_crm_invoice_paste_recognize_task_4", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L468", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_4", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_9", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L478", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_task_4", "target": "plans_2026_08_20_crm_invoice_paste_recognize_codeblock_10", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L484", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_crm_implementation_plan", "target": "plans_2026_08_20_crm_invoice_paste_recognize_spec_coverage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L492", "weight": 1.0}, {"source": "plans_2026_08_20_crm_invoice_paste_recognize_crm_implementation_plan", "target": "plans_2026_08_20_crm_invoice_paste_recognize_placeholder_scan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/docs/superpowers/plans/2026-08-20-crm-invoice-paste-recognize.md", "source_location": "L504", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|