Files
zentao-flow/prds/ai-sop-20260723-1024/outputs/dev_plan.md
T

10 KiB
Raw Blame History

开发方案(v4.0:依据 PRD v1.24)

本文整合截至 CHG-025 的全部决策:数值走表、文档走 MD 文件流、状态字段可查询化。 一期 W≈1~2 人日(仅 1 列);二期立项评估;三期立项评估+口径锁定。

0. 文档信息

字段 内容
版本 v4.0
状态 评审中
作者 AI(pmassist/tgassist 流程产出)
创建日期 2026-07-23
依据 outputs/prd.md v1.24

变更记录

版本 日期 变更编号 变更说明
v4.0 2026-07-23 — 基于 PRD v1.24 全量重生成(取代 v3.x:融入 CHG-014 MD 文件流、CHG-018 zt_file.url、CHG-019 砍 zt_task_extend、CHG-020 zt_meeting.url、CHG-021~025 zt_story 7 url 列+code_review_status+测试 4 文档字段)

1. 架构总览

graph LR
    subgraph AI框架
        A1[pmassist: PRD/纪要/用例] --> M[MD 文件]
        A2[tgassist: 审查报告/工作日志] --> M
        A3[demand-assessor: 指标数值] --> N[/zt-story-expand 已有/]
        A4[tgassist: 任务拆分] --> T[/zt-task/aiBatchAdd 新增/]
    end
    M -->|/common/uploadBind| F[zt_file + url]
    F --> S[zt_story 7 url 列 + code_review_status<br/>zt_meeting.url 自动刷新]
    F --> P[详情页在线渲染 MD]
    F --> C[FR-014 齐备核查·三期]
  • 数值类:zt_story_expand(已有+一期加 1 列);任务工时入 zt_task.estimate(任务级指数豁免)
  • 文档类:一律 MD → zt_file(FileTypes 6 新类)→ url 直取 + 在线渲染
  • 状态类:code_review_status 随审查报告上传写入(SOP 卡点可系统强制)

2. 一期(极瘦版,W≈1~2 人日)

2.1 唯一 DDL(codes/zentao/sql/20260724_alter_zt_story_expand_add_ai_rate.sql,含说明头+回滚+可重入)

SET @c := (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='zt_story_expand' AND COLUMN_NAME='ai_participation_rate');
SET @s := IF(@c=0,
  'ALTER TABLE `zt_story_expand` ADD COLUMN `ai_participation_rate` VARCHAR(16) DEFAULT NULL COMMENT ''AI参与率(只存不算,口径待定)'' AFTER `ai_efficiency_coefficient`',
  'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;
-- 回滚:ALTER TABLE zt_story_expand DROP COLUMN ai_participation_rate;

2.2 实体与测试

  • ZtStoryExpand.java 加 private String aiParticipationRate;(紧随 aiEfficiencyCoefficient);saveOrUpdate 自动携带,XML 不动;无新 Service/Controller
  • 回归测试 1 场景:saveOrUpdate 实体带 aiParticipationRate → 透传到 insert/update(JUnit5+Mockito)

2.3 步骤(1 人 1~2 天)

D1 DDL+评审+本地执行+实体加字段 → D2 回归测试+dev_log+送审

2.4 检查单

  • 仅此 1 项 DDL;无计算逻辑;无 Controller 泄漏;说明头+回滚+可重入齐全;现有编译/测试不红

3. 二期:文件流 + 接口 + 页面 + 挂钩(详细规格)

3.1 DDL 清单(3 个文件,均含说明头+可重入)

-- ① zt_file 加访问链接
ALTER TABLE zt_file ADD COLUMN url VARCHAR(512) DEFAULT NULL COMMENT '附件访问链接' AFTER pathname;

-- ② zt_meeting 加纪要链接(多份存最新)
ALTER TABLE zt_meeting ADD COLUMN url VARCHAR(512) DEFAULT NULL COMMENT '会议纪要MD访问链接(最新一份)';

-- ③ zt_story 加 8 列
ALTER TABLE zt_story
  ADD COLUMN prd_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN code_review_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN work_log_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN test_case_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN test_report_download_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN test_report_submit_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN test_other_url VARCHAR(512) DEFAULT NULL,
  ADD COLUMN code_review_status VARCHAR(16) DEFAULT NULL COMMENT '审查状态 pass/reject';

3.2 FileTypes 扩展 6 类 + uploadBind

enums/FileTypes.java 新增:aiCodeReview、aiWorkLog、testCase、testReport、testReportSubmit、testOther。

新增 POST /common/uploadBind(上传+绑定一步完成;现状 /common/upload 不写 objectType 需业务表单二次绑定,AI 纯上传无表单)。按 objectType 自动刷新主表字段:

objectType 附件 自动写入
story PRD zt_story.prd_url
aiCodeReview 审查报告 code_review_url;code_review_status(报文参数或 MD 头部「结果」解析)
aiWorkLog 工作日志 work_log_url
testCase 测试用例(下载) test_case_url
testReport 报告模版(下载) test_report_download_url
testReportSubmit 报告(模版填完提交) test_report_submit_url
testOther 其他测试文档 test_other_url
meeting 会议纪要 zt_meeting.url(刷新为最新一份)

MD 附件字段:zt_file(objectType/objectID/title/pathname/url/extension/addedBy 操作人/addedDate 操作时间/extra);extra 约定:审查报告 {"round":N}、工作日志 {"logType":"8类之一"}、测试报告 {"reviewRound":N};审查报告 MD 头部约定「严重:N/错误:N」(三期取数)。

3.3 MD 在线渲染

引入 markdown-it,封装 MdPreview 组件:.md 附件点击→按 url(空则 pathname 拼接)拉取→页面内渲染;其他格式维持下载;上传组件放开 .md 类型。

3.4 接口(2 新增 + 2 小改 + 前置)

  1. POST /common/uploadBind:见 3.2
  2. POST /zt-task/aiBatchAdd:
{"storyId": 8319, "tasks": [
  {"name": "建表与实体生成", "type": "devel", "assignedTo": "zhangsan", "aiEvaluationTime": "6", "planStartDate": "2026-07-27", "deadline": "2026-07-29"},
  {"name": "接口联调测试", "type": "test", "assignedTo": "lisi", "aiEvaluationTime": "2"}
]}

事务:storyId 不存在或 type 非 devel/test → 整批拒绝;同 storyId+name+type 重复 → 跳过记 skipped;建 zt_task(status=wait、create_user=ai、estimate=aiEvaluationTime)。响应含 taskIds:{"code":0,"data":{"created":2,"taskIds":[12001,12002],"skipped":[]}}

  1. ZtStoryUserServiceImpl.java:562 附近补写 activateddate(1 行)
  2. 鉴权必决(多人环境):签名/内部 token,不得裸连
  3. 前置:zt_user 建 ai 账户

3.5 页面改动(web_zentao)

用户需求详情:右侧 tabs 加「需求讨论会议」——列出 zt_meeting.storyIds 含本需求的会议(主题/类型/时间/参与人/创建人),点击跳详情;查询用 FIND_IN_SET(防 12 误中 112);关系多对多。

会议纪要页:add/editDialog 渲染 uploads(objectType=meeting);多份 MD 按时间排列,显示操作人(addedBy)/操作时间(addedDate)/会议人(users);.md 点击 MdPreview;查看直取 zt_meeting.url(最新一份)。

研发需求详情(对应补充⑧,②~⑥展示位):

区块/按钮 内容 数据
需求 ID 展示 已按用户验收反馈移除(页面顶部已有 ID+标题,冗余) —
「AI 指标」区块 12 字段只读(含 aiParticipationRate) zt_story_expand
测试用例 查看+下载(不上传覆盖) zt_file(testCase)+zt_case
测试报告模版 查看+下载 zt_file(testReport)
「提交测试报告」 上传+在线查看(code_review_status≠pass 禁用——SOP 卡点系统强制) zt_file(testReportSubmit)
其他测试文档 上传+查看 zt_file(testOther)
「代码审查报告」 上传 MD 多份(按轮次)+在线查看+状态展示(code_review_status) zt_file(aiCodeReview)+zt_story
「工作日志」 上传 MD+在线查看 zt_file(aiWorkLog)

3.6 框架挂钩(upload_md.py,模式照 submit_assessment.py)

python upload_md.py --story-id 8319 --type aiWorkLog --file outputs/work_log.md
触发点 --type
pmassist 定稿 PRD story
会议纪要产出 meeting(objectId=meetingId)
代码审查每轮结束 aiCodeReview(文件名含轮次,头部带「结果/严重/错误」)
各节点工作日志 aiWorkLog
用例/报告模版产出 testCase / testReport
测试报告提交 testReportSubmit
其他测试文档 testOther
demand-assessor 评估完 维持 submit_assessment.py(数值通道已通)

原则:产生即传、不补传;人工按钮为备选通道。


4. 三期:绩效消费(要点,承接 v2.2 详细版)

  • FR-014 判定源:zt_case + zt_file(testReportSubmit / aiCodeReview / aiWorkLog);《AI 文档更新记录》=zt_file(aiWorkLog) 中 doc_update 类内容
  • 代码质量取数:审查报告 MD 头部「严重:N/错误:N」解析(三期前确认约定;否则人工读数)
  • 其余不变:三层架构(指标/规则 zt_perf_config/落库 zt_month_score)、zt_doc_check 快照、13 项自动指标取数表、6 接口 4 页面、人工评分入口、对拍验收(取 1~2 个已考核月份与线下 Excel 对拍)
  • 立项前锁定:口径待确认 5 项(PRD 7.3)

5. 里程碑与风险

里程碑 内容 时间
M0 定稿 PRD Final + 验收标准 待确认
M1 一期 1 列 DDL+实体+回归(1~2 天) 定稿后启动
M2 二期 3 项 DDL+uploadBind+aiBatchAdd+MD 渲染+页面+挂钩+ai 账户+鉴权 立项评估
M3 三期 绩效(承接第 4 章) 立项评估
M4 验收 对照 PRD+SRC-002 —
风险 等级 应对
DDL 手工执行(zt_story 8 列为核心表,需低峰+备份) 中 说明头+可重入+评审
接口鉴权未决(多人必决) 中 二期立项前定签名/token
MD 头部计数约定不被遵守 中 模板+上传校验提示;降级人工读数
测试欠账(安全门) 中 新代码强制单测
挂钩漏接(多技能) 低 upload_md.py 单脚本+清单核对

6. FR 对照

一期=FR-004 部分;二期=FR-001/002/003/004/005 部分/006/008/010/011;三期=FR-012/013/014;复用=FR-009;豁免=FR-007 指数部分(CHG-019)。