docs(版本模块): 规则引擎与任务类型设计

This commit is contained in:
Script Generator
2026-06-25 09:52:05 +08:00
parent d0fd390bd0
commit 4a567da762
6 changed files with 729 additions and 42 deletions

View File

@@ -33,8 +33,8 @@ Requirement Version TestCase
| 前端 | Next.js 14 (App Router) | TypeScript + 客户端组件为主 |
| UI | Tailwind CSS + Shadcn/ui | 紧凑信息密度、现代风格 |
| 状态 | Zustand | 每个领域一个 store |
| 持久化 | localStorageV1 | 后端 NestJS + Prisma 已搭好但未启用 |
| 后端 | NestJS + Prisma + PostgreSQLV2 | 暂未启用 |
| 持久化 | PostgreSQL AppDataV2.1 | 业务数据走 NestJS `/data/:key`,不再以浏览器存储为主 |
| 后端 | NestJS + Prisma + PostgreSQLV2 | 已接入通用数据文档层,后续再逐表关系化 |
| AI | Anthropic SDKV3 远景) | 健康度/风险预警/排期建议 |
## 模块结构
@@ -113,17 +113,14 @@ DevTask 没有"已完成"状态,"已提测"就是终态——开发交付完
## 数据持久化
**V1当前** 全部 localStorage每个 store 独立 key
- `ftb_overview_v1` - 产品/项目/版本树
- `ftb_requirements_v3`
- `ftb_version_plans_v1`
- `ftb_dev_tasks_v1`
- `ftb_test_cases_v1`
- `ftb_bugs_v1`
- `ftb_overtime_v1`
- `ftb_task_categories_v1`
**V2.1当前** 通用服务端文档表 `app_data`
- 后端:`apps/server/src/modules/data/` 提供 `GET/PUT /api/v1/data/:key`
- 数据库Prisma `AppData` 模型,表名 `app_data``key` 为主键,`value` 为 JSONB
- 前端:各 Zustand store 保持现有数据形状,通过 `apps/web/lib/server-data.ts` 读写服务端
- 覆盖范围:产品/项目/版本树、需求池、调研/产品方案/UI 计划、开发任务、测试用例、Bug、成员/角色/部门、任务类型、任务工时日志、加班记录
- 浏览器仅保留登录会话(`ftb_auth_session` / `ftb_auth_persist`),不再作为业务数据主存储
**V2计划** NestJS + Prisma + PostgreSQLSchema 已设计但尚未运行 migration
**后续 V2.2计划** `app_data` 中稳定的数据形状逐步拆成关系表和领域 CRUD API。拆表前不要恢复业务 localStorage 缓存,避免线上部署后出现多端数据分叉
## 权限模型(轻量)
@@ -134,3 +131,35 @@ V1 仅做前端校验,无后端鉴权:
- 版本 `members` 为空时所有人可见(兼容旧数据)
V2 接入后端后改为基于 `ProjectMember` 表的 RBACOwner/Admin/Member/Viewer
## AI Agent 层
详细规范见 `agent-spec.md`。要点:
- AI Agent 不是一个独立服务,而是嵌在前端的"特定调用入口"。当前 V3.1 仅 Prototype Decompose Agent。
- Agent 写入数据时必须带 `aiDraft: true` 标记,列表中视觉区分(紫色边)。用户编辑后自动清除标记。
- DevTask / TestCase 加入 `references[]` 字段,记录任务/用例的来源(需求 / 原型批注。Agent 和人工创建均强制至少 1 条引用。
- 原型链接**不在 Version 上独立存储**,而是来自产品方案 (VersionPlan type=product) 已完成计划的 `resultUrl`。约定:提交产品方案的成果就是原型。
- AI 服务实现走 **NestJS 后端**`apps/server/src/modules/ai/`),不走 Next.js API Route。
- API Key 通过 **`/admin/ai-config` 页面配置**(仅超管可见),存到 `apps/server/data/ai-config.json`,不入 git环境变量 `ANTHROPIC_API_KEY` 作为兜底。
新增涉及 AI 的实体字段:
| 实体 | 字段 | 类型 | 说明 |
|------|------|------|------|
| DevTask | references | Reference[]? | 引用来源(需求/原型批注) |
| DevTask | aiDraft | boolean? | AI 草案标记 |
| DevTask | aiDraftAt | string? | AI 生成时间戳 |
| TestCase | references | Reference[]? | 同上 |
| TestCase | aiDraft | boolean? | 同上 |
| TestCase | aiDraftAt | string? | 同上 |
## 版本模块规则层V2.2 设计约束)
版本详情里的计划完成、需求候选和任务类型映射必须走规则层:
- `version-plan-workflow.ts`:调研/产品方案/UI 设计的子任务、需求覆盖、成果提交和完成条件。
- `requirement-selector.ts`:当前版本所属项目下可关联需求的候选筛选,默认只返回 `status === 'adopted'` 的项目需求。
- `task-category.ts`DevTask/TestCase 共用任务类型字典,`id` 用于存储,`code` 用于 AI 语义映射。
页面组件只消费规则层输出,不直接拼完成条件或候选筛选条件。