7.6 KiB
7.6 KiB
research
Research scope
本研究用于支撑 011-frontend-speckit-alignment 的实施阶段,聚焦以下问题:
- 前端仓如何稳定回指
water-docs的正式 Speckit 工件。 - 页面模板规范与样例索引如何分层,避免入口文件膨胀。
- 实际页面样例如何组织成可复用的模板索引,并支持一页多模板参考。
- 当前权限边界在普通页面、列表列配置与 BPM 场景之间应如何准确表述。
Decision 1: water-docs 继续作为正式 Speckit 单一真源
Decision
- 正式
spec / plan / tasks / baseline / docs-validation / final-verdict全部继续落在water-docs/specs/011-frontend-speckit-alignment/。 water-frontend只承载实现侧入口说明、模板规则与样例索引,不复制.specify/,也不维护第二套正式流程。AGENTS.md与CLAUDE.md必须把“从 frontend 启动”和“回 docs 启动”的边界写成相同口径。
Rationale
- 该工作本质是多仓协作规则整理,不是单独的前端局部优化。
water-docs根仓的.specify/已是唯一正式流程入口,继续复用能避免前端仓和平行 docs 口径分叉。- frontend 只保留实施入口,能让实现人员在正确位置读取正式文档,而不把 spec 工件散落到代码仓。
Alternatives considered
- 在
water-frontend新建独立.specify/:拒绝,破坏单一事实来源。 - 将 spec 只保留在前端仓:拒绝,本 feature 同时约束 docs 与 frontend 两边协作方式。
Decision 2: 模板规范采用“规则文件 + 样例索引文件”双层结构
Decision
FRONTEND_PAGE_TEMPLATE_GUIDE.md作为规则层,承载模板分类、元模型、命名规则、权限边界与选型规则。FRONTEND_PAGE_TEMPLATE_INDEX.md作为样例层,承载src/views到模板类型的实际映射、母板页优先级、主模板/辅模板关系与复用建议。AGENTS.md与CLAUDE.md只做入口,不再重复内嵌大段模板分类正文。
Rationale
- 仅有规则文件时,实现人员仍需要自己搜索真实样例。
- 仅有样例索引时,又无法得到统一的命名、目录与权限接入规范。
- 双层结构既能定义规则,又能快速回扣现有母板页。
Alternatives considered
- 把全部内容塞回
AGENTS.md/CLAUDE.md:拒绝,入口文件会再次膨胀。 - 只保留 guide,不单独建 index:拒绝,无法满足“可复用样例映射”和“母板页优先级”要求。
Decision 3: 页面分类按交互结构组织,并允许一页多模板参考
Decision
- 页面模板分类维持按交互结构划分,而不是按业务域命名:
- 标准列表查询页
- 左树右表页
- 左树右详情维护页
- 弹窗表单页
- 导入上传页
- 详情展示页
- 配置 / 权限页
- BPM / 流程页
- 报表 / 可视化容器页
- 登录 / 认证容器页
- 组合容器 / 工作台页
- 对同时包含查询列表、弹窗表单、导入动作的页面,先确定主模板,再补充辅模板参考,不强行要求单一分类。
Rationale
- 同一业务域常同时包含多种页面交互形态。
- 页面生成与样例复用更依赖交互骨架,而不是模块名称。
- 允许“一页多模板参考”,能更准确映射
system/user、settings/priceTemplate等复合页面。
Alternatives considered
- 按业务模块分类:拒绝,不能直接指导页面骨架复用。
- 按组件技术碎片分类:拒绝,过于细碎,不利于协作入口阅读。
Decision 4: 权限结论以代码证据为准,不扩写未证实能力
Decision
- 计划和后续任务保持以下权限边界:
- 角色权限:已存在
- 按钮权限:已存在
- 菜单 / 路由权限:已存在
- 数据权限:已存在
- 列表列可见配置:已存在,且为后端持久化能力
- BPM 字段权限:已存在,仅限 BPM 场景
- 普通业务表单全局字段权限框架:当前未发现通用实现
Evidence paths
- 用户信息与权限集合加载:
../water-frontend/src/store/modules/user.ts - 菜单路由缓存与动态路由生成:
../water-frontend/src/store/modules/permission.ts、../water-frontend/src/permission.ts - 按钮权限指令:
../water-frontend/src/directives/permission/hasPermi.ts - 角色权限指令:
../water-frontend/src/directives/permission/hasRole.ts - 角色菜单/数据权限 API:
../water-frontend/src/api/system/permission/index.ts - 数据权限页面消费:
../water-frontend/src/views/system/role/RoleDataPermissionForm.vue - 菜单权限与权限标识录入:
../water-frontend/src/views/system/menu/MenuForm.vue - 列可见配置 API 与前端存取:
../water-frontend/src/api/system/userFormConfig.ts、../water-frontend/src/components/ColumnSetting/hooks/useColumnSettingStorage.ts - BPM 字段权限消费:
../water-frontend/src/views/bpm/processInstance/create/ProcessDefinitionDetail.vue
Rationale
- spec 已明确要求不能把未证实的能力描述为已具备。
- 当前工作只需要如实表达边界,不新增权限模型设计。
Alternatives considered
- 统一称“字段权限不存在”:拒绝,BPM 字段权限与列表列配置都属于已存在能力。
- 直接规划普通业务表单字段权限:拒绝,超出本轮 feature 范围。
Decision 5: contracts/ 保留目录,但本 feature 不新增外部接口契约
Decision
- 本 feature 保留 Speckit 标准
contracts/目录结构,但不新增 API / CLI / 外部系统契约文件。 - 前端协作入口、模板规范与样例索引约束由
plan.md、quickstart.md与前端 Markdown 文件承接。
Rationale
- 本轮交付对象是文档规范与协作方式,而不是新增系统接口。
- 强行编造 OpenAPI 或伪契约不会提升可实施性,反而会引入假细节。
Alternatives considered
- 创建伪 API contract:拒绝,与 feature 无关。
- 完全跳过
contracts/目录:不采用,保留标准目录结构更利于后续延展。
Decision 6: 验证以文档一致性与 evidence 闭环为主
Decision
- 本轮主要验证产物为:
baseline.mddocs-validation.mdfinal-verdict.md
- 最小文档校验命令固定为:
make validate-file FILE=specs/011-frontend-speckit-alignment/quickstart.mdmake validate-file FILE=specs/011-frontend-speckit-alignment/data-model.mdmake validate-file FILE=specs/011-frontend-speckit-alignment/research.mdmake validate-file FILE=specs/011-frontend-speckit-alignment/docs-validation.mdmake check-links
- 不强制执行 frontend build / lint,因为本轮未触达 Vue 业务代码。
Rationale
- 变更范围仅涉及 Markdown 协作文件与规范文件。
- spec 已将交付边界限定为前端协作说明、独立规范文件与 evidence 工件。
Alternatives considered
- 强制跑前端构建:未采用,与当前改动无直接关联。
- 不做任何 evidence:拒绝,无法满足 spec 对可追溯验证的要求。
Research conclusion
本 feature 的实施路径已经明确:
- 在
water-docs保持正式spec / plan / tasks / evidence单一真源。 - 在
water-frontend形成:- 入口规则:
AGENTS.md、CLAUDE.md - 模板规则文件:
FRONTEND_PAGE_TEMPLATE_GUIDE.md - 样例索引文件:
FRONTEND_PAGE_TEMPLATE_INDEX.md
- 入口规则:
- 对权限边界严格按代码证据回写,不把普通业务表单字段权限误写为既有能力。
- 用
baseline.md、docs-validation.md、final-verdict.md固定基线、验证与最终结论,不更新本轮不适用的治理台账。