Files
PromptCR-Lab/openspec/changes/init-promptcr-platform/tasks.md
T
2026-09-19 12:54:45 +08:00

71 lines
5.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.
# Tasks: init-promptcr-platform
## 1. M1 项目骨架与基础设施
- [x] 1.1 初始化 Git 仓库与 `.gitignore`(排除 `.env`、密钥、node_modules、构建产物)
- [x] 1.2 创建后端目录结构(`backend/`,按 dataset / models / prompts / experiments / analysis / api / cli 分包)与单一 `requirements.txt`
- [x] 1.3 创建前端骨架(Vite + React 18 + Tailwind CSS 3 + shadcn/ui,ECharts 依赖)
- [x] 1.4 用 SQLAlchemy 定义核心表(samples、defects、prompt_templates、prompt_template_versions、experiments、experiment_runs、results)并建库迁移
- [x] 1.5 编写配置管理(环境变量 / `.env` 读取密钥与连接串,零硬编码)
- [x] 1.6 编写 docker-compose 骨架(db + backend + frontend/nginx)与各 Dockerfile,PostgreSQL 挂 volume
- [x] 1.7 M1 自验后创建 git commit(里程碑存档点)
## 2. M2 F1 数据集管理模块
- [x] 2.1 实现 Git 解析(GitPython):遍历提交历史并按"变更规模适中、语言分布均衡、提交信息完整"筛选候选 commit
- [x] 2.2 实现 Unidiff 提取(保留变更前后文件上下文)并落库 samples
- [x] 2.3 实现缺陷规则框架:统一规则接口 + 目录扫描注册表(按语言组织,新增文件即插拔)
- [x] 2.4 实现 Python 内置规则(基于标准库 `ast` AST 级变换):空指针引用、资源未关闭、边界条件错误(含边界条件错乱)、逻辑运算符误用、并发安全问题
- [x] 2.5 实现 Java 内置规则(基于 `javalang` 解析做 AST 级变换,同类五型,位置精确可知,注释/文档说明引入理由,禁止正则/纯文本替换)
- [x] 2.6 实现 JavaScript 内置规则(基于 `esprima` 解析做 AST 级变换,同类五型,位置精确可知,注释/文档说明引入理由,禁止正则/纯文本替换)
- [x] 2.7 实现 Ground Truth 标注生成(缺陷位置/类型/参考修复/语言)落库 defects
- [x] 2.8 构建并交付 12 个 commit 样本数据集(≥3 语言、分布均衡),自验 A1;新增一条自定义规则验证 A1b
- [x] 2.9 M2 自验后创建 git commit(里程碑存档点)
## 3. M3 F2 模型适配 + F3 提示词策略
- [x] 3.1 实现 `ModelAdapter` 抽象基类(统一 `chat(prompt, params)` 返回审查文本 + token + 耗时,内置信号量并发控制与指数退避重试)
- [x] 3.2 实现 DeepSeek / Kimi / 通义千问三适配器(统一 OpenAI 兼容格式,仅配置差异)与工厂模式,自验 A2
- [x] 3.3 实现提示词模板存储与版本管理(模板表 + 版本表,旧版本只读)
- [x] 3.4 内置 L1/L2/L3 三级 Jinja2 模板(含策略/级别标识、版本号、变量 schema)并实现 `render(strategy_id, version, context)`,自验 A3
- [x] 3.5 M3 自验后创建 git commit(里程碑存档点)
## 4. M4 F4 实验调度与结果采集
- [x] 4.1 实现全因子矩阵生成(3 模型 × N 级 × 12 commit × 3 重复,唯一 run_id,采样参数快照落库),自验 A4
- [x] 4.2 实现 asyncio 异步调度器(按并发额度分批,五步流水线:加载 diff → 渲染 → 调用 → 采集 → 落库更新进度)
- [x] 4.3 实现失败重试、阈值隔离、单单元失败不中断批次,自验 B1
- [x] 4.4 实现断点续跑(重启扫描 pending/中断单元继续,已完成不重复调用),自验 B2
- [x] 4.5 实现异常输出处理(空/不合约定 → 标记失败留原文不崩溃、不猜测解析),自验 B3、C1、C2
- [x] 4.6 全因子矩阵小规模真实跑通,自验 A5
- [x] 4.7 M4 自验后创建 git commit(里程碑存档点)
## 5. M5 F5 数据分析与可视化(后端)
- [x] 5.1 实现输出解析与 Ground Truth 自动比对,计算检出率 / 误报率 / 覆盖率
- [x] 5.2 实现李克特五级量表评分存储与"模型 × 级别"聚合(均值 + 频数分布)
- [x] 5.3 实现输出稳定性度量(三次重复输出指出项集合两两 Jaccard 相似度取平均值)
- [x] 5.4 实现统计分析(pandas + scipy:描述性统计、ANOVA、配对 t 检验)
- [x] 5.5 实现 matplotlib 论文图(热力图 / 箱线图 / 分组柱状图,中文显示、样式统一)与前端同口径 JSON 接口,自验 A6
- [x] 5.6 M5 自验后创建 git commit(里程碑存档点)
## 6. M6 F6 接入层 + F7 Web 前端
- [x] 6.1 实现 FastAPI RESTful API(数据集 / 模板 / 实验下发 / 进度 / 结果 / 统计 / 李克特打分),仅返回 JSON
- [x] 6.2 实现 Typer CLI 与 API 等价(含 1×1×1×1 冒烟命令),自验 D4 等价性
- [x] 6.3 实现数据集管理页(样本列表、Ground Truth 详情、构建入口)
- [x] 6.4 实现实验配置页(模型/级别/样本/重复勾选、单元数量实时预览、模板在线编辑与新增),自验 A3b
- [x] 6.5 实现实验监控页(批次进度、单条 run 状态与原始输出、断点续跑触发)
- [x] 6.6 实现结果分析页(ECharts 热力图/箱线图/分组柱状图、维度筛选、李克特打分录入),自验 A7
- [x] 6.7 实现前端三异常态(后端离线 / API 报错 / 数据为空)明确提示,自验 B4
- [x] 6.8 M6 自验后创建 git commit(里程碑存档点)
## 7. M7 测试、Docker 与文档收尾
- [x] 7.1 后端 pytest + pytest-cov 覆盖率提升至 ≥90%,自验 D2
- [x] 7.2 前端核心交互逻辑 Vitest 测试全部通过
- [x] 7.3 Docker 全栈联调:`docker compose up` 一键可用、容器重建数据不丢,自验 D1b
- [x] 7.4 密钥审计(仓库无硬编码密钥)
- [x] 7.5 编写 README(安装、配置、本地与 Docker 两种启动、断点续跑方法、数据库 ER 说明),自验 D1、D3
- [x] 7.6 M7 自验后创建 git commit(里程碑存档点)