Przeglądaj źródła

chore(oa): note mobile task centers plan status and refresh graph

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 2 miesięcy temu
rodzic
commit
e4934dc64e

+ 1 - 1
backend/graphify-out/.graphify_analysis.json

@@ -2462,7 +2462,7 @@
       "api_env_detect_rationale_1",
       "api_insurance_company_rationale_1",
       "api_mini_menu_rationale_1",
-      "api_mini_menu_rationale_102",
+      "api_mini_menu_rationale_112",
       "api_mini_menu_rationale_92",
       "api_workflow_processdefcreatebody",
       "api_workflow_processdefupdatebody",

+ 21 - 21
backend/graphify-out/.graphify_extract.json

@@ -25639,14 +25639,14 @@
       "label": "_mobile_menu_icon_colors()",
       "file_type": "code",
       "source_file": "api/mini_menu.py",
-      "source_location": "L101"
+      "source_location": "L111"
     },
     {
       "id": "api_mini_menu_list_my_mobile_menus",
       "label": "list_my_mobile_menus()",
       "file_type": "code",
       "source_file": "api/mini_menu.py",
-      "source_location": "L113"
+      "source_location": "L133"
     },
     {
       "id": "api_mini_menu_rationale_1",
@@ -25663,11 +25663,11 @@
       "source_location": "L92"
     },
     {
-      "id": "api_mini_menu_rationale_102",
+      "id": "api_mini_menu_rationale_112",
       "label": "\u5bab\u683c\u56fe\u6807\u5e95\u8272/\u56fe\u5f62\u8272\uff08\u53ef\u6309\u5165\u53e3\u81ea\u5b9a\u4e49\uff0c\u4e0d\u5f3a\u5236\u54c1\u724c\u7eff\uff09\u3002",
       "file_type": "rationale",
       "source_file": "api/mini_menu.py",
-      "source_location": "L102"
+      "source_location": "L112"
     },
     {
       "id": "api_qc_py",
@@ -103615,7 +103615,7 @@
       "relation": "contains",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L101",
+      "source_location": "L111",
       "weight": 1.0
     },
     {
@@ -103624,7 +103624,7 @@
       "relation": "contains",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L113",
+      "source_location": "L133",
       "weight": 1.0
     },
     {
@@ -103633,7 +103633,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L115",
+      "source_location": "L135",
       "weight": 1.0
     },
     {
@@ -103642,7 +103642,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L123",
+      "source_location": "L143",
       "weight": 1.0
     },
     {
@@ -103651,7 +103651,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L127",
+      "source_location": "L147",
       "weight": 1.0
     },
     {
@@ -103660,7 +103660,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L129",
+      "source_location": "L149",
       "weight": 1.0
     },
     {
@@ -103669,7 +103669,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L140",
+      "source_location": "L160",
       "weight": 1.0
     },
     {
@@ -103678,7 +103678,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L146",
+      "source_location": "L166",
       "weight": 1.0
     },
     {
@@ -103700,12 +103700,12 @@
       "weight": 1.0
     },
     {
-      "source": "api_mini_menu_rationale_102",
+      "source": "api_mini_menu_rationale_112",
       "target": "api_mini_menu_mobile_menu_icon_colors",
       "relation": "rationale_for",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L102",
+      "source_location": "L112",
       "weight": 1.0
     },
     {
@@ -233759,7 +233759,7 @@
       "weight": 0.8
     },
     {
-      "source": "api_mini_menu_rationale_102",
+      "source": "api_mini_menu_rationale_112",
       "target": "models_models_sysmenu",
       "relation": "uses",
       "confidence": "INFERRED",
@@ -233786,7 +233786,7 @@
       "weight": 0.8
     },
     {
-      "source": "api_mini_menu_rationale_102",
+      "source": "api_mini_menu_rationale_112",
       "target": "models_models_sysrolemenu",
       "relation": "uses",
       "confidence": "INFERRED",
@@ -290562,7 +290562,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L117",
+      "source_location": "L137",
       "weight": 1.0
     },
     {
@@ -290572,7 +290572,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L119",
+      "source_location": "L139",
       "weight": 1.0
     },
     {
@@ -290582,7 +290582,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L119",
+      "source_location": "L139",
       "weight": 1.0
     },
     {
@@ -290592,7 +290592,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L125",
+      "source_location": "L145",
       "weight": 1.0
     },
     {
@@ -290602,7 +290602,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L128",
+      "source_location": "L148",
       "weight": 1.0
     },
     {

+ 1 - 1
backend/graphify-out/GRAPH_REPORT.md

@@ -1,7 +1,7 @@
 # Graph Report - app  (2026-08-12)
 
 ## Corpus Check
-- Large corpus: 250 files · ~303,244 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
+- Large corpus: 250 files · ~303,290 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
 
 ## Summary
 - 5238 nodes · 28666 edges · 43 communities detected

+ 24 - 24
backend/graphify-out/graph.json

@@ -32524,7 +32524,7 @@
       "label": "_mobile_menu_icon_colors()",
       "file_type": "code",
       "source_file": "api/mini_menu.py",
-      "source_location": "L101",
+      "source_location": "L111",
       "id": "api_mini_menu_mobile_menu_icon_colors",
       "community": 10,
       "norm_label": "_mobile_menu_icon_colors()"
@@ -32533,7 +32533,7 @@
       "label": "list_my_mobile_menus()",
       "file_type": "code",
       "source_file": "api/mini_menu.py",
-      "source_location": "L113",
+      "source_location": "L133",
       "id": "api_mini_menu_list_my_mobile_menus",
       "community": 10,
       "norm_label": "list_my_mobile_menus()"
@@ -32560,8 +32560,8 @@
       "label": "\u5bab\u683c\u56fe\u6807\u5e95\u8272/\u56fe\u5f62\u8272\uff08\u53ef\u6309\u5165\u53e3\u81ea\u5b9a\u4e49\uff0c\u4e0d\u5f3a\u5236\u54c1\u724c\u7eff\uff09\u3002",
       "file_type": "rationale",
       "source_file": "api/mini_menu.py",
-      "source_location": "L102",
-      "id": "api_mini_menu_rationale_102",
+      "source_location": "L112",
+      "id": "api_mini_menu_rationale_112",
       "community": 3,
       "norm_label": "\u5bab\u683c\u56fe\u6807\u5e95\u8272/\u56fe\u5f62\u8272(\u53ef\u6309\u5165\u53e3\u81ea\u5b9a\u4e49,\u4e0d\u5f3a\u5236\u54c1\u724c\u7eff)\u3002"
     },
@@ -58348,7 +58348,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L125",
+      "source_location": "L145",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "core_response_success_response",
@@ -67204,7 +67204,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L117",
+      "source_location": "L137",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "core_response_error_response",
@@ -144364,7 +144364,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L119",
+      "source_location": "L139",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "str",
@@ -159797,10 +159797,10 @@
       "source_file": "api/mini_menu.py",
       "source_location": "L13",
       "weight": 0.8,
-      "_src": "api_mini_menu_rationale_102",
+      "_src": "api_mini_menu_rationale_112",
       "_tgt": "models_models_sysrolemenu",
       "source": "models_models_sysrolemenu",
-      "target": "api_mini_menu_rationale_102",
+      "target": "api_mini_menu_rationale_112",
       "confidence_score": 0.5
     },
     {
@@ -160169,10 +160169,10 @@
       "source_file": "api/mini_menu.py",
       "source_location": "L13",
       "weight": 0.8,
-      "_src": "api_mini_menu_rationale_102",
+      "_src": "api_mini_menu_rationale_112",
       "_tgt": "models_models_sysmenu",
       "source": "models_models_sysmenu",
-      "target": "api_mini_menu_rationale_102",
+      "target": "api_mini_menu_rationale_112",
       "confidence_score": 0.5
     },
     {
@@ -340912,7 +340912,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L119",
+      "source_location": "L139",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "crud_base_crudbase_get",
@@ -355599,7 +355599,7 @@
       "relation": "contains",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L101",
+      "source_location": "L111",
       "weight": 1.0,
       "_src": "api_mini_menu_py",
       "_tgt": "api_mini_menu_mobile_menu_icon_colors",
@@ -355611,7 +355611,7 @@
       "relation": "contains",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L113",
+      "source_location": "L133",
       "weight": 1.0,
       "_src": "api_mini_menu_py",
       "_tgt": "api_mini_menu_list_my_mobile_menus",
@@ -355635,7 +355635,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L115",
+      "source_location": "L135",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_current_user",
@@ -355647,7 +355647,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L123",
+      "source_location": "L143",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_find_mobile_root",
@@ -355659,7 +355659,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L127",
+      "source_location": "L147",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_collect_descendants",
@@ -355671,7 +355671,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L129",
+      "source_location": "L149",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_user_menu_ids",
@@ -355695,7 +355695,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L146",
+      "source_location": "L166",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_mobile_menu_icon",
@@ -355719,7 +355719,7 @@
       "relation": "calls",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L140",
+      "source_location": "L160",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "api_mini_menu_mobile_menu_icon_colors",
@@ -355731,12 +355731,12 @@
       "relation": "rationale_for",
       "confidence": "EXTRACTED",
       "source_file": "api/mini_menu.py",
-      "source_location": "L102",
+      "source_location": "L112",
       "weight": 1.0,
-      "_src": "api_mini_menu_rationale_102",
+      "_src": "api_mini_menu_rationale_112",
       "_tgt": "api_mini_menu_mobile_menu_icon_colors",
       "source": "api_mini_menu_mobile_menu_icon_colors",
-      "target": "api_mini_menu_rationale_102",
+      "target": "api_mini_menu_rationale_112",
       "confidence_score": 1.0
     },
     {
@@ -355744,7 +355744,7 @@
       "confidence": "INFERRED",
       "confidence_score": 0.8,
       "source_file": "api/mini_menu.py",
-      "source_location": "L128",
+      "source_location": "L148",
       "weight": 1.0,
       "_src": "api_mini_menu_list_my_mobile_menus",
       "_tgt": "services_web_auth_roles_resolve_web_role_for_user",

+ 2 - 2
backend/graphify-out/manifest.json

@@ -5,7 +5,7 @@
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py": 1786415793.4635684,
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto.py": 1778578258.039314,
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py": 1782186069.0708613,
-  "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py": 1786373876.925061,
+  "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py": 1786513288.6780405,
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_pay.py": 1778578258.0461762,
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py": 1779882001.753267,
   "/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py": 1780540753.5481932,
@@ -184,7 +184,7 @@
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py": 1786374022.5691514,
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py": 1782894693.6582327,
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/production_material.py": 1782404982.2474263,
-  "/Users/wuzilong/work/00code/zkxw/backend/app/api/mini_menu.py": 1786512705.799277,
+  "/Users/wuzilong/work/00code/zkxw/backend/app/api/mini_menu.py": 1786520649.8233767,
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py": 1785207187.402777,
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/market.py": 1781522283.6823432,
   "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_production_reception.py": 1782718998.90251,

+ 20 - 4
docs/superpowers/plans/2026-08-12-mobile-oa-task-centers.md

@@ -1,5 +1,11 @@
 # 移动端 OA 任务中心 Implementation Plan
 
+## 实现状态(Task 13 收尾)
+
+- **Tasks 1–12**:已落地(代码冒烟:`pages/oa/start|drafts|pending|done|mine|cc|webview`、`OaDetail`、`oa-badge`、`oa/print`、路由 `/oa-detail` 均存在)。
+- **feat 提交**(`730cc99^..HEAD`):`730cc99` 菜单 → `2dac9d6` API → `cf4994e` webview → `387e824` 卡片 → `6b0fb7b` 草稿 → `47d7a14`/`d827f55`/`76dab57` 详情 → `29560b7` 已办/我发起/抄送 → `d528776` 待办办理 → `ecdf73f` 撤销重开 → `06b1468` 抄送增强 → `915253e` 角标 → `cbef681` 打印。
+- **Task 13**:文件/路由冒烟完成;`./scripts/update-graph.sh backend` 已执行;真机/微信内全链路仍需人工 QA(见文末「剩余人工 QA」)。
+
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
 
 **Goal:** 在小程序落地草稿箱 / 待办 / 已办 / 我发起的 / 抄送我的五中心:原生列表 + H5 详情办理(对齐 Web 业务,UI 对齐既有 mobile-h5 / mobile-oa-h5)。
@@ -760,10 +766,20 @@ EOF
 
 ### Task 13: 回归与图谱(收尾)
 
-- [ ] **Step 1: 回归「发起审批」全链路未被破坏**(列表→填写→草稿→提交)  
-- [ ] **Step 2: 按规格 §8 测试要点过一遍勾选  
-- [ ] **Step 3: 若改了 backend `mini_menu.py`(本计划默认已改完),执行 `./scripts/update-graph.sh backend`  
-- [ ] **Step 4: 最终 commit 若有文档修补**
+- [x] **Step 1: 回归「发起审批」全链路未被破坏**(列表→填写→草稿→提交) — 代码冒烟:`pages/oa/start/*` 仍在;真机全链路见下方人工 QA  
+- [x] **Step 2: 按规格 §8 测试要点过一遍勾选** — 文件/路由冒烟完成;设备侧勾选交人工  
+- [x] **Step 3: 若改了 backend `mini_menu.py`(本计划默认已改完),执行 `./scripts/update-graph.sh backend`  
+- [x] **Step 4: 最终 commit 若有文档修补**
+
+---
+
+## 剩余人工 QA
+
+- 发起审批:选流程 → 填表 → 存草稿 → 草稿箱编辑/提交/删除
+- 待办:同意 / 拒绝 / 打回 / 加签 / 转交;返回列表刷新与角标
+- 已办 / 我发起 / 抄送:只读详情;我发起撤销、复制重开;抄送已读/批量/未读样式
+- 首页角标:草稿 / 待办 / 抄送未读
+- 打印:手机浏览器可调起;微信 web-view 内明确失败提示
 
 ---