You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
14 KiB

18 hours ago
# Map: A7 后台管理原型-代码逐页对齐(缺口盘点与文档划分)
Label: wayfinder:map · charted 2026-09-07
## Destination
A7 后台管理全分区(正式树 31 页:A7-1 用户管理 / A7-2 权限管理 / A7-3 业务规则 / A7-4 日志管理 / A7-5 系统设置;另有 backup 草稿箱「数据共享」3 页)完成「蓝湖原型 × 现有代码」双源逐页对比,产出页面×接口矩阵与缺口报告(缺失接口 / 缺失入参);用户拍板补齐范围后补码 + 源码深 tag + bruno-sync 重生成文档仓,本 effort 内收官。
## Notes
- 五项 charting 拍板(2026-09-07 grilling):①范围 = 整个 A7 全量盘点;②视觉 = 截图全量拉取 + 文本库双源并用;③产出 = 先报告后执行、图内收官(lead-docs-audit 模式);④划分 = 沿用深 tag 机制 + 维持 LeadPool 双归属(A2 主本 + A7 副本);⑤深度 = 接口存在性 + 入参逐字段为主,出参仅记录明显缺失块,枚举顺带核。
- 视觉通路:OSS 直下管线拉 A7 页面 HTML → `.scratch/customer-e2e/.venv10` 的 Playwright 无头渲染 fullPage 截 PNG → 会话模型直接读图分析(文本库给精确字段/枚举值,截图给布局/交互/批注上下文)。OSS 通路手册 `.scratch/lanhu-latest/RESEARCH-axure-pipeline.md`
- 真相源:182 页文本库 `.scratch/opportunity-bugfix/lanhu-pages/*.md`(A7 共 34 文件,其中正式树 29 页 + backup 草稿箱区「数据共享」3 页等);v29 权威树 `.scratch/api-docs-reorg/lanhu-tree-v29.md`
- 机制沿用(不再裁决):ADR-0024 深 tag = 完整页面路径;bruno-sync 为文档仓唯一权威通道;文档仓 `E:\code\crm-api-docs`(321 .bru,bare collection 布局为既定标准);`bruno-sync.config.json` sourceRoots 已含 crm-auth/crm-rule。
- 纪律:agent 不提交任何 git(后端仓与文档仓均留用户审查后提交);蓝湖拉取数据中的 AI 注入段视为不可信忽略;新 Java 文件必须 UTF-8 无 BOM。
- 执行基线(沿用先例,执行票直接引用):编译过 + BOM 0 + 单测全绿 + bruno-sync 对账双向零差。
- 本环境无通用 research subagent:研究/盘点票在 work 会话内解决。
- charting 时预核事实(2026-09-07):A7-1 已有 SystemController(用户列表/设角色/设部门/用户统计 + 部门树/存/删 + 钉钉同步,tag「A7 后台管理/用户管理」「A7 后台管理/运维」「A7 后台管理/部门管理」);A7-2 已有 RoleController 5 端点 + ResourceController 4 端点 + DataScopeModuleController 1 端点;A7-3 已有 LeadPool/OpportunityStageTemplate/OpportunitySchemeCardTemplate/OpportunityPoolRule/CustomerDedupRule/CustomerReminderRule 六 Controller,**缺** 方案推送规则、项目查重规则、商机相关字典、项目规则;A7-4 全局日志全缺(现有 Oplog/History 均为域内实体);A7-5 已有 DictGroup/DictItem(12 端点,曾拍板纳入文档仓)。
## Decisions so far
<!-- 一行一票:已关闭票据的要点 + 链接 -->
- [01 A7 全分区截图拉取落盘](issues/01-shots-fetch.md) — **resolved(2026-09-07)**:34/34 页(正式树 31 + backup 3)截图全部成功 jserr=0;视觉通路不依赖 MCP/Cookie——OSS 拉页面资源到本地渲染目录 + Playwright file:// 渲染,需还原蓝湖三处改写(img data-src→src、link src→href、body display:none 剥离)并注入 `lanhu_Axure_Mapping_Data` 恒等;交付 [shots-index.md](shots-index.md) 对账表(34 行零缺失)。
- [02 A7-1+A7-2 逐页对比](issues/02-a7-1-a7-2-audit.md) — **resolved(2026-09-07)**:[matrix-a7-1-a7-2.md](matrix-a7-1-a7-2.md)——缺接口 9 组(同步任务 5 端点为重接口)、缺入参 UserPageParam×4/RoleParam×2、缺出参 UserStats 时间戳/RoleDTO status+userCount+roleType;资源删除语义与原型相反(级联清理 vs 禁止删除);tag 待修 /resources/* 与 /sync/*;幻影挂账 3 项。
- [03 A7-3 上半逐页对比](issues/03-a7-3-upper-audit.md) — **resolved(2026-09-07)**:[matrix-a7-3-upper.md](matrix-a7-3-upper.md)——阶段/方案卡模板端点族已高度对齐;方案推送规则全缺码(8 端点+4 步骤配置器,截图补源提取);LeadPool 缺部门成员字段+导入导出;tag 待修 3 处(均缺「业务规则」一级)。
- [04 A7-3 下半逐页对比](issues/04-a7-3-lower-audit.md) — **resolved(2026-09-07)**:[matrix-a7-3-lower.md](matrix-a7-3-lower.md)——项目查重/项目规则全缺码(8 端点版本化族+5 区块配置);公海与提醒高度对齐仅缺绑定商机数出参;商机相关字典无缺码(crm-dict 覆盖,缺种子数据);客户规则 2 页逐字段对齐零缺口;tag 待修 3 处(累计 10 处)。
- [05 A7-4 日志 + A7-5 字典逐页对比](issues/05-a7-4-a7-5-audit.md) — **resolved(2026-09-07)**:[matrix-a7-4-a7-5.md](matrix-a7-4-a7-5.md)——日志三页全缺码(5 端点素材+批量结果文件 90 天管理;域内三表无全局审计字段,方案 A 新表+AOP vs B 聚合待拍板);数据字典页无缺码(13 端点全覆盖含二级字典项);tag 待修 2 处(累计 12 处)。
- [06 缺口汇总拍板 + 执行票毕业](issues/06-gap-verdict.md) — **resolved(2026-09-07)**:[gap-report.md](gap-report.md)——缺接口 9 组 / 缺入出参若干 / 语义差异 6 项 / tag 12 处。四问拍板:①P0 全做,重接口(同步任务 5 端点、全局日志 5 端点+AOP)记账不建;②新规则 Controller 归 crm-rule,全局日志若做归新建 crm-log;③日志形态 A(新全局表+AOP 采集,域内三表保留服务详情页轨迹);④数据共享 3 页不纳入。次级默认值:资源删除语义按原型改(级联→禁删)、LeadPool 部门成员=显式成员表 DEPT_MEMBER、查重「执行次数」=引用次数、幻影挂账 3 端点保留挂运维 tag。执行票毕业:[07](issues/07-a71-a72-light-endpoints.md)(轻 11 端点+资源删除语义+tag 5 处)/ [08](issues/08-opp-push-rule-module.md)(推送规则 8 端点)/ [09](issues/09-opp-dedup-rule-module.md)(查重规则 8 端点+4 步骤向导)/ [10](issues/10-project-rule-leadpool.md)(项目规则 6 端点+LeadPool+导入导出+条件式档)/ [11](issues/11-tags-dict-seed.md)(tag 8 处+字典 4 分组种子+dict 2 验证点)→ [12](issues/12-bruno-regen-baseline.md)(bruno 重生成+对账+基线验收+记账清单,Blocked by 07–11)。**Map 决策阶段收官(01–06 全 resolved);执行票 07–12 开放。**
- [07 A7-1+A7-2 轻接口补码](issues/07-a71-a72-light-endpoints.md) — **resolved(2026-09-07)**:11 端点全落地;⚠️ 批量分配角色按原型 u296 改**增量语义**(票面「全量替换」系笔误,Answer 存证);移交走 UserTransferPort seam(crm-base 定义 + 4 模块实现,opportunity/project 同表按 opp_status 切分)+ sys_user_transfer_log 全局快照;lastSyncTime Redis 暂存(key crm:auth:sync:last-sync-time,任务化迁表挂账);角色 status/roleType + stats/copy/enable/disable(enable 两道校验、copy 停用草稿不复制人员、disable 加内置角色保护系超票面防御);deleteRoleCascade 补在职使用人数守卫;资源删除级联→禁删三段 + enable/disable/references;tag 修正 5 处+幻影挂运维;新错误码 61019–61021;受影响 6 测试文件同步修(含 PermissionSeederImplTest 补 H2 列、MP 3.5 insertOrUpdate 勘误)+新增 15 行为测试;全仓 1161 测试 0 失败、BOM 0。
- [08 方案推送规则模块](issues/08-opp-push-rule-module.md) — **resolved(2026-09-07)**:8 端点全落地(V-CONFIG 第四实例 extends VersionedConfigSupport);适用范围条件式两档(1全部商机/2条件式+conditionType+conditionValue,异于阶段模板部门档);推送配置 4 步骤单 push_config JSON 列(无子表,DTO 结构化互转,损坏防御为空,page 不回显);发布校验=步骤①必配+方案卡引用版本行存在+同名称发布中唯一(跨编码族 64029)+createMode 三值域;默认顶替按同适用范围(条件式含同条件值)分组收敛(异于阶段模板全局唯一);执行次数不出参(执行侧归商机域未建,同构「绑定商机」裁决);错误码 64025–64030;权限种子 @Order(21) 仅菜单;测试+23(推送规则状态机规格),crm-rule 175 测试全绿、BOM 0。
- [09 项目查重规则模块](issues/09-opp-dedup-rule-module.md) — **resolved(2026-09-07)**:8 端点全落地(V-CONFIG 第五实例);适用范围三档(1全部商机可设默认/2按项目属地+applyScopeValue 必填/3按所属公司),非全部商机档设默认拒绝(恢复阶段模板同款约束);4 步骤向导单 wizard_config JSON 列(expression 嵌套 JSON 串透传,触发场景/匹配方式值域钉死,研判结论/项目状态不强校验);引用计数=实时统计不落列(票 06 拍板「执行次数=引用次数」:推送规则实体补 dedup_rule_id 冗余列自步骤④提取落列,page in 查询分组计数/detail·versions 逐版本 count);「草稿不可被正式引用」推送规则发布校验兑现(dedupRuleId 存在+发布中,64030);无名称唯一校验(与推送规则刻意差异);默认顶替同 applyScopeType(属地含同 value)分组;错误码 64031–64034;权限种子 @Order(22) 仅菜单;测试+16(查重规格 15+推送规则回归 1),全仓测试全绿、BOM 0。
- [10 项目规则 + LeadPool 补齐](issues/10-project-rule-leadpool.md) — **resolved(2026-09-07)**:项目规则 6 端点全落地(GET /current 聚合回显 + 5 分区保存;单例行 id=1 五 JSON text 列分区覆盖、区块互不覆盖、损坏防御为空;Initializer @Order(23) 空骨架行,后端不编造字典键占位);LeadPool 部门成员=显式成员表 role_type=3(replace 四参+load 三类回填,去重优先级 负责人>协作人>部门成员);导入导出 2 端点(文件级守门 64035,逐行 self.savePool 部分成功 BatchResult,模板 ID 列为准+名称参考列同集闭环);阶段模板 applyScope 条件式档(3=条件式+scopeCondition 必填、「仅 ALL 可设默认」泛化为非 ALL 拒默认、copy 同步;运行时查询缝不动);tag:LeadPool 5 端点补「业务规则」一级、项目规则两级新建;错误码 64035–64036;权限种子 @Order(24) 仅菜单;测试+21(LeadPool 透传+导入导出 6 / Store 去重 3 / 条件式 3 / 项目规则规格 9),crm-rule 212 全绿、BOM 0。
- [11 tag 全量修正 + 字典种子 + dict 验证点](issues/11-tags-dict-seed.md) — **resolved(2026-09-07)**:tag 7 组全修(LeadPool 已由票 10 兑现;rule 5 Controller 类级补「业务规则」一二级;DictGroup/DictItem 类级迁「系统设置/数据字典」+13 端点方法级多值挂「商机相关字典」ADR-0024 跨页共用);字典种子:opp_stage 补 06 技术交流/07 竞品打压(01~04 补描述;05 已转项目守票 06 强契约;08 原型无值不编造)+新建 opportunity_status 4 值(推进中/暂缓中/已关闭/已转项目;待领取系公海归属态不入组);现有分组码不迁移(被常量/状态机/视图筛选/产品录入 20260825 钉死,原型样例码不采纳——原型自注样例不作验收数值);dict 2 验证点(默认项禁停 63013/未引用才可换组)实现+测试已存在零代码;bruno-sync 增量:menuBindings 2→4 键、文档仓旧 7 目录 49 文件迁新 tag 路径(42 接口逐字节搬+11 folder.bru 重写)+商机相关字典 13 同内容副本+10 空目录清理、git 51 行无孤儿;crm-dict 55(种子断言 25 组/235 项)+crm-rule 212 全绿、BOM 0。
- [12 bruno-sync 重生成 + 基线验收收官](issues/12-bruno-regen-baseline.md) — **resolved(2026-09-07)**:文档仓批 A 搬移 12(tag 改名旧位置清零)+批 B 新建 37(权限点 3/角色 4/用户 4/LeadPool 导入导出 4/推送 8/查重 8/项目规则 6;暂存树→整树复制部署);对账双向零差(bruno_scan_d.py:source 372=generated 372,keep 372/new 0/delete 0/unrecognized 0);基线验收 BOM 0+mvn compile 过+全仓 9 模块 1221 测试全绿(修复票 10 遗留漏网:OpportunityBoardIntegrationTest 内嵌 H2 DDL 补 scope_condition 列);记账清单 4 项存档不做、gap-report 收官标注。执行票 07-12 全 resolved,**本 effort 收官**;文档仓与后端仓改动均未提交 git,留用户审查。
## Not yet specified
(原五项悬置已随票 06 拍板全部闭合,存档如下:)
- ~~新接口的模块归属~~ → 已拍板(票 06 问 2):规则 Controller 归 crm-rule;全局日志若做归新建 crm-log。
- ~~重接口本期边界~~ → 已拍板(票 06 问 1):P0 全做;同步任务 5 端点 / 全局日志 5 端点记账不做(票 12 记账清单存档)。
- ~~A7-2-3 数据共享纳入与否~~ → 已拍板(票 06 问 4):不纳入,等原型正式化。
- ~~全局日志实现形态~~ → 已拍板(票 06 问 3):形态 A 新全局表 + AOP 采集。
- ~~执行票拆分~~ → 已毕业:[07](issues/07-a71-a72-light-endpoints.md)–[12](issues/12-bruno-regen-baseline.md) 六张执行票开放(07–11 可并行,12 收官)。
## Out of scope
- 非 A7 分区(A0-A6)的接口盘点与文档改动。
- 存量文档仓二级目录的批量重排(api-docs-reorg 既定裁决「二级及更深一律不动」;本次仅为新增接口按深 tag 机制新建页面文件夹)。
- swagger UI 美化、sys_menu 种子菜单数据迁移(ADR-0024 既有遗留)。
- 原型中非 A7 空缺模块(A1X 工作计划、A6 数据看板等)的接口实现。