diff --git a/docs/plans/frontend/2026-05-07-project-special-check-graph-atlas-frontend-implementation-plan.md b/docs/plans/frontend/2026-05-07-project-special-check-graph-atlas-frontend-implementation-plan.md new file mode 100644 index 00000000..188c5de1 --- /dev/null +++ b/docs/plans/frontend/2026-05-07-project-special-check-graph-atlas-frontend-implementation-plan.md @@ -0,0 +1,572 @@ +# 项目详情专项排查图谱嵌入前端实施计划 + +> **执行说明:** 按当前项目 `AGENTS.md` 规则执行。未得到用户明确授权时默认不开启 subagent;如用户明确要求使用 subagent,必须按项目规则指定模型与推理强度。Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 在项目详情“专项排查”页面内,将现有图谱占位卡片替换为可输入证件号并生成 iframe 链接的资金图谱/关系图谱展示区。 + +**Architecture:** 只做前端最短路径改造。新增一个独立 Vue 2 组件负责证件号标准化、md5、tab 状态和 iframe `src` 拼接;`SpecialCheck.vue` 只负责引入组件并替换现有占位卡片。外部图谱当前可能打不开,验收只检查 iframe 链接是否按规则生成。 + +**Tech Stack:** Vue 2、Element UI、SCSS、`@/utils/md5`、`browser-use:browser` 实际页面验证。 + +--- + +## Scope Check + +本计划只覆盖项目详情“专项排查”页内的图谱 iframe 嵌入,不新增后端接口,不保存证件号,不新增项目详情一级菜单,不做身份证格式校验,不增加外部图谱服务兜底或降级逻辑。 + +## File Structure + +- Create: `ruoyi-ui/src/views/ccdiProject/components/detail/GraphAtlasSection.vue` + - 责任:维护共用证件号输入、资金/关系图谱 tab、证件号标准化、md5、iframe 链接生成和空状态展示。 +- Modify: `ruoyi-ui/src/views/ccdiProject/components/detail/SpecialCheck.vue` + - 责任:移除现有“图谱外链展示”占位卡片,引入并渲染 `GraphAtlasSection`,并让图谱在资产负债核查空数据状态下仍可展示,清理不再使用的占位样式。 +- Create: `docs/reports/implementation/2026-05-07-project-special-check-graph-atlas-frontend-record.md` + - 责任:记录本次前端实现内容、影响范围和验证情况。 +- Do not commit: `output/browser-use/` 或其它临时测试文件。 + +## Test Data + +用于链接断言的固定样例: + +- 输入:`110101199003074211` +- md5:`9b1b5eba4a26c9a68ff1ca06f40bee1b` +- 资金图谱期望 `vId`:`idno_node/9b1b5eba4a26c9a68ff1ca06f40bee1b` +- 关系图谱期望 `vId`:`rel_node/9b1b5eba4a26c9a68ff1ca06f40bee1b` + +标准化样例: + +- 输入:` 33078219900101123x ` +- 标准化后:`33078219900101123X` +- md5:`233c8519f86a57b1f00ec88a32152ce3` + +## Task 1: Establish Current Failure Baseline + +**Files:** +- Read: `docs/design/2026-05-07-project-special-check-graph-atlas-design.md` +- Read: `ruoyi-ui/src/views/ccdiProject/components/detail/SpecialCheck.vue` + +- [ ] **Step 1: Confirm the spec** + +Run: + +```bash +sed -n '1,140p' docs/design/2026-05-07-project-special-check-graph-atlas-design.md +``` + +Expected: spec confirms 专项排查内嵌 iframe、两个 tab、共用证件号、`trim + x 转 X + md5`、只校验 iframe `src`。 + +- [ ] **Step 2: Confirm current placeholder** + +Run: + +```bash +rg -n "图谱外链展示|graph-placeholder" ruoyi-ui/src/views/ccdiProject/components/detail/SpecialCheck.vue +``` + +Expected: current page still has placeholder card and no证件号 input, no graph iframe. + +- [ ] **Step 3: Record baseline failure** + +Acceptance baseline: + +- Current page cannot input证件号 in the graph area. +- Current page cannot produce `idno_node/` or `rel_node/` iframe links. + +Expected: FAIL relative to the new spec. This is the intended pre-implementation failure. + +## Task 2: Create GraphAtlasSection Component + +**Files:** +- Create: `ruoyi-ui/src/views/ccdiProject/components/detail/GraphAtlasSection.vue` + +- [ ] **Step 1: Create the component with minimal behavior** + +Create `GraphAtlasSection.vue` with this implementation: + +```vue +