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.
28 lines
3.2 KiB
28 lines
3.2 KiB
|
3 weeks ago
|
# 0024. Bruno 接口文档页面归属采用菜单粒度
|
||
|
|
|
||
|
|
状态: 已接受
|
||
|
|
|
||
|
|
冷启动生成的 collection 按类级 `@Tag` 聚合:`LeadController` 类级 `@Tag("线索管理")` 导致 23 个接口平铺在一个文件夹,而文档受众是前端,心智模型是菜单页——「我开发 /lead/public-pool,要用哪些接口、viewType 传什么」。菜单有两处候选真相源:`LeadPermissionInitializer` seed(公海 / 我的线索 / 我的关注 / 线索管理,挂「线索管理」目录)与产品原型(线索管理一级文件夹 → 线索公海 / 我的线索 / 我的关注 / 线索管理 / 线索设置),措辞不完全一致。
|
||
|
|
|
||
|
|
## 决策
|
||
|
|
|
||
|
|
1. 文档页面归属 = **菜单粒度**,tag 命名**以产品原型为准**:`线索管理/线索公海`、`线索管理/我的线索`、`线索管理/我的关注`、`线索管理/线索管理`;「线索规则-公海池配置」改名「线索管理/线索设置」对齐原型。行政区划无菜单对应,保留资源命名。
|
||
|
|
2. 真相源双层:**归属** = Controller 方法级 `@Operation(tags)`(LeadController 23 个方法、ColumnPreferenceController 2 个方法全量挂 4 菜单;删除两处类级 `@Tag`,避免多出聚合文件夹);**参数语义** = `bruno-sync.config.json` 的 `menuBindings`(菜单 → viewType / scopeKey 专属值,生成器据此在副本中替换示例值并注明「本页固定传」)。
|
||
|
|
3. 四菜单共用接口**全量副本**(不做接口级页面裁剪):按钮显隐由前端权限点运行时控制(权限码全集下发接口已立 ticket `.scratch/auth-perms/`),文档不预估页面按钮集。
|
||
|
|
4. 副本幂等维护:`gen_bruno.py` 重跑覆盖,前端只读;手改会在下次同步时丢失。
|
||
|
|
5. scope_key 四值钉死(与 viewType 一一对应):`lead.public_pool` / `lead.my_lead` / `lead.my_follow` / `lead.manage`。
|
||
|
|
6. 视图对照:线索公海=PUBLIC_POOL=lead.public_pool · 我的线索=MY_LEAD=lead.my_lead · 我的关注=MY_FOLLOW=lead.my_follow · 线索管理=MANAGE=lead.manage(glossary 同步收词)。
|
||
|
|
|
||
|
|
## 考虑过的替代
|
||
|
|
|
||
|
|
- 只把 page / stats / 列偏好按菜单出副本,命令接口留公共文件夹——被否:前端要单页自足,且「页面 × 命令」矩阵无真相源(button 权限点未 seed)。
|
||
|
|
- 不改源码、纯 config 覆盖映射——被否:swagger UI 同样受益于菜单分组,映射应进业务代码(业务代码即文档)。
|
||
|
|
- 生成器自行推断页面接口集——被否:无源可依,等同编故事,违背「结构听源码」铁律。
|
||
|
|
|
||
|
|
## 后果
|
||
|
|
|
||
|
|
- collection 从 66 涨到 141 个 .bru;21 个命令接口副本零参数差异(仅 docs 前缀【X 页】不同),为已知代价,用户已确认前端不手改文档。
|
||
|
|
- `menuBindings`(config)与 `gen_bruno.py` 的 `MENUS` 常量需人工保持同源。
|
||
|
|
- seed 菜单名「公海」与原型「线索公海」不一致:seeder 按 name find-or-create,直接改字符串会 seed 出第二个菜单,需数据迁移(UPDATE `sys_menu`)才能统一——遗留待办,文档侧命名先行以原型为准。
|
||
|
|
- swagger UI 分组从 1 个「线索管理」变为 4 个菜单组,前端打开后端 swagger 同样按菜单导航。
|