168 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# research
## Research scope
本研究用于支撑 `011-frontend-speckit-alignment` 的实施阶段,聚焦以下问题:
1. 前端仓如何稳定回指 `water-docs` 的正式 Speckit 工件。
2. 页面模板规范与样例索引如何分层,避免入口文件膨胀。
3. 实际页面样例如何组织成可复用的模板索引,并支持一页多模板参考。
4. 当前权限边界在普通页面、列表列配置与 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.md`
- `docs-validation.md`
- `final-verdict.md`
- 最小文档校验命令固定为:
- `make validate-file FILE=specs/011-frontend-speckit-alignment/quickstart.md`
- `make validate-file FILE=specs/011-frontend-speckit-alignment/data-model.md`
- `make validate-file FILE=specs/011-frontend-speckit-alignment/research.md`
- `make validate-file FILE=specs/011-frontend-speckit-alignment/docs-validation.md`
- `make check-links`
- 不强制执行 frontend build / lint因为本轮未触达 Vue 业务代码。
**Rationale**
- 变更范围仅涉及 Markdown 协作文件与规范文件。
- spec 已将交付边界限定为前端协作说明、独立规范文件与 evidence 工件。
**Alternatives considered**
- 强制跑前端构建:未采用,与当前改动无直接关联。
- 不做任何 evidence拒绝无法满足 spec 对可追溯验证的要求。
## Research conclusion
本 feature 的实施路径已经明确:
1.`water-docs` 保持正式 `spec / plan / tasks / evidence` 单一真源。
2.`water-frontend` 形成:
- 入口规则:`AGENTS.md``CLAUDE.md`
- 模板规则文件:`FRONTEND_PAGE_TEMPLATE_GUIDE.md`
- 样例索引文件:`FRONTEND_PAGE_TEMPLATE_INDEX.md`
3. 对权限边界严格按代码证据回写,不把普通业务表单字段权限误写为既有能力。
4.`baseline.md``docs-validation.md``final-verdict.md` 固定基线、验证与最终结论,不更新本轮不适用的治理台账。