docs: 更新设计文档以匹配Black-white-box-Merge分支最新代码

- 00-overview.md: 重写架构图(移除web/入口)、更新模块清单、更新API签名
- 05-agents-llm.md: 修复章节编号(Section 7/8子节编号错误)
- 08-data-flow.md: 修复Mermaid代码块格式(单反引号→三反引号)
- 09-run-pipeline.md: 新增run.py全流程入口+black-box-data-create详细设计
- DESIGN.md: 重写为竞赛要求格式(场景价值、范式图、Agent架构、工具清单)
- README.md: 添加项目性质声明(新规)、团队分工、技术难度评估
This commit is contained in:
hangshuo652
2026-08-23 21:10:33 +08:00
parent 5342220de5
commit dec597eff0
6 changed files with 1028 additions and 167 deletions
+302 -34
View File
@@ -1,40 +1,308 @@
# DESIGN.md — verify-cli Web UI
# COBOL → Java/Spark 迁移验证平台 设计文档
## Aesthetic
Terminal Developer Tool — 命令行工具的可视化包装。暗底、等宽、最小装饰
用户的第一反应应该是"这是我的终端,只不过多了个表单"。
> 版本: v3.0 | 日期: 2026-08-23
> 本文档描述COBOL迁移验证平台的场景价值、开发范式、Agent架构、系统架构及工具清单
## Typography
- Primary: SF Mono / Fira Code / Cascadia Code / Consolas (等宽字体堆栈)
- 全部使用系统原生字体,零外部依赖
- 层级差异通过字号和颜色区分,不换字体家族
---
## Color
| Token | Hex | Usage |
|-------|-----|-------|
| bg | #0a0e14 | 页面底色 |
| panel | #12171f | 卡片/表单容器 |
| border | #1f2937 | 分割线 |
| text | #b2becd | 正文 |
| dim | #5c6e80 | 标签/次要信息 |
| accent | #39bae6 | 链接/操作色 |
| green | #7fd962 | 成功状态 |
| red | #f26d78 | 错误状态 |
| yellow | #ffad66 | 等待中状态 |
## 一、场景与价值
## Layout
- 单栏,最大宽度 680px
- Header → Sections → Footer 的垂直流
- 表单使用 CSS Grid 双列布局
- 结果页 Section 分离 Summary 和 Field Results
### 1.1 业务场景
## Spacing
- 页面 padding: 3rem 1.5rem
- Section 内 padding: 1.5rem, 间距 1rem
- 表单 label 间距: .75rem
大型企业在进行COBOL向Java/Spark迁移时,面临以下核心挑战:
## Decisions
- 不使用 Jinja23.1+ 与 Starlette 不兼容),改用字符串替换
- 不使用任何 CSS 框架,纯手写 CSS variables
- 不使用 emoji 或装饰图标,状态通过颜色边框表达
- 无紫色渐变、无 3 列 icon grid、无居中布局、无装饰性波浪 — AI slop 反模式检查通过
- **验证成本高**:人工逐行比对COBOL与Java输出,耗时数周
- **覆盖不全**:手工测试难以覆盖所有分支路径,遗漏边界条件
- **回归风险**:修改后无法快速验证功能一致性
### 1.2 解决方案
本平台通过**AI辅助自动化测试**,实现:
| 能力 | 说明 |
|------|------|
| COBOL源码解析 | 自动解析DATA DIVISION和PROCEDURE DIVISION |
| 测试数据生成 | 基于分支覆盖的测试数据自动生成 |
| 双管道验证 | 支持非DBflat file)和DBSQLite)两种验证模式 |
| 覆盖率分析 | 静态分支覆盖 + 动态gcov覆盖 |
| AI辅助 | LLM驱动的程序分类和测试策略生成 |
### 1.3 价值量化
| 指标 | 传统方式 | 本平台 | 提升 |
|------|----------|--------|------|
| 单程序验证时间 | 2-3天 | 10分钟 | **99%+** |
| 分支覆盖率 | 30-50% | 75%+ | **50%+** |
| 回归测试时间 | 1-2周 | 1小时 | **99%+** |
---
## 二、开发范式流程图
> 详细流程见 `docs/development-paradigm.md`
```mermaid
graph TD
A[1. 需求分析] --> B[2. AI方案生成]
B --> C{3. 人工审核}
C -->|通过| D[4. AI编码实现]
C -->|需要修改| B
D --> E[5. 测试验证]
E --> F{6. 质量评审}
F -->|达标| G[7. 交付归档]
F -->|未达标| D
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e8f5e8
style F fill:#fff3e0
style G fill:#e8f5e8
```
### 范式步骤与AI日志对应
| 步骤 | 名称 | 负责人 | AI日志范式步骤 |
|:----:|------|:------:|----------------|
| 1 | 需求分析 | 人工 | 需求分析 |
| 2 | AI方案生成 | AI | AI方案生成 |
| 3 | 人工审核 | 人工 | 人工审核 |
| 4 | AI编码实现 | AI | AI编码实现 |
| 5 | 测试验证 | 工具+人工 | 测试验证 |
| 6 | 质量评审 | 人工 | 质量评审 |
| 7 | 交付归档 | 人工 | 交付归档 |
---
## 三、Agent架构图(感知-规划-行动-记忆)
```
┌─────────────────────────────────────────────────────────────────┐
│ Agent 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 感知层 (Perception) │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ COBOL解析 │ │ 设计书解析 │ │ COPY句解析 │ │ │
│ │ │ read.py │ │ LLM读取 │ │ copybook │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 规划层 (Planning) │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 分支树构建 │ │ 路径枚举 │ │ MC/DC分析 │ │ │
│ │ │ core.py │ │ design.py │ │ cond.py │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 行动层 (Action) │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 测试数据生成 │ │ COBOL编译运行│ │ 输出比对 │ │ │
│ │ │ output.py │ │ runners/ │ │ comparator/ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 记忆层 (Memory) │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 覆盖率记录 │ │ 测试报告 │ │ AI使用日志 │ │ │
│ │ │ coverage.py │ │ report/ │ │ _AI_USAGE_LOG│ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### Agent能力说明
| 层级 | 能力 | 实现模块 |
|------|------|----------|
| 感知 | COBOL源码解析、设计书理解 | `read.py`, LLM |
| 规划 | 分支分析、路径规划、测试策略 | `core.py`, `cond.py`, `design.py` |
| 行动 | 数据生成、编译运行、结果比对 | `output.py`, `runners/`, `comparator/` |
| 记忆 | 覆盖率追踪、报告生成、日志记录 | `coverage.py`, `report/`, `_AI_USAGE_LOG.md` |
---
## 四、系统架构
### 4.1 架构图
```
┌─────────────────────────────────────────────────────────────────┐
│ V3系统架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ CLI入口 │ │ Web界面 │ │ API接口 │ │
│ │ main.py │ │ web/ │ │ __init__ │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 编排层 (Orchestrator) │ │
│ │ orchestrator.py (非DB) orchestrator_db.py (DB) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 核心引擎 │ │ 运行引擎 │ │ AI代理 │ │
│ │ cobol_testgen│ │ runners/ │ │ agents/ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 比对模块 │ │ 报告模块 │ │ 配置模块 │ │
│ │ comparator/ │ │ report/ │ │ config/ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 4.2 分层架构
| 层级 | 模块 | 职责 |
|------|------|------|
| **L1 数据层** | data/ | 共享数据模型 |
| **L2 核心层** | cobol_testgen/, config/ | COBOL解析、配置管理 |
| **L3 业务层** | hina/, agents/, comparator/ | 分类、AI代理、比对 |
| **L4 编排层** | orchestrator*, runners/ | 流程编排、执行 |
| **L5 接口层** | main.py, web/, __init__.py | 用户接口 |
### 4.3 数据流
#### 非DB管道
```
COBOL源码 → read.py → core.py → design.py → output.py → cobol_runner.py → comparator/ → report/
```
#### DB管道
```
COBOL源码 → gixsql_runner.py → orchestrator_db.py → cobol_testgen → to_sql.py → flatfile.py → SQLite → comparator/ → report/
```
---
## 五、工具/API清单
### 5.1 核心工具
| 工具 | 用途 | 版本 |
|------|------|------|
| Python | 主要开发语言 | 3.12+ |
| Lark | COBOL语法解析 | 1.1.0+ |
| GnuCOBOL | COBOL编译器 | 3.2.0 |
| gixsql | SQL预处理 | 已vendored |
| pytest | 测试框架 | 最新版 |
### 5.2 AI模型
| 模型 | 用途 | API |
|------|------|-----|
| DeepSeek | 程序分类、测试策略生成 | DeepSeek API |
### 5.3 开发工具
| 工具 | 用途 |
|------|------|
| Git | 版本控制 |
| VS Code | 代码编辑 |
| OpenCode | AI辅助开发 |
### 5.4 外部服务
| 服务 | 用途 | 状态 |
|------|------|------|
| DeepSeek API | LLM调用 | 可选 |
| Gitea | 代码托管 | 组委会提供 |
---
## 六、目录结构
```
cobol-java-v3/
├── cobol_testgen/ # 核心引擎 (~8000行)
│ ├── __init__.py # 公开 API 入口
│ ├── models.py # 共享数据模型 (零依赖)
│ ├── read.py # INPUT: 预处理 + DATA DIVISION 解析
│ ├── core.py # CORE: 分支树构建
│ ├── cond.py # CONDITION: 条件解析 + MC/DC
│ ├── design.py # DESIGN: 路径枚举 + 值生成
│ ├── coverage.py # COVERAGE: 覆盖标记 + HTML 报告
│ ├── output.py # OUTPUT: JSON 输出
│ └── to_sql.py # SQL 辅助: WHERE 约束解析
├── runners/ # 编译运行引擎
│ ├── cobol_runner.py # GnuCOBOL 编译运行
│ └── gixsql_runner.py # DB 管道编译运行
├── agents/ # LLM 代理
│ └── api_client.py # DeepSeek API 调用
├── comparator/ # 字段比对
├── hina/ # HINA 程序分类
├── config/ # 配置管理
├── report/ # 报告生成
├── test-data/ # 测试套件
├── tests/ # 单元测试 (80+文件)
├── benchmark-programs/ # 43个基准 COBOL 程序
├── docs/ # 文档
│ ├── detailed-design/ # V3 详细设计 (9个文档)
│ ├── development-paradigm.md
│ └── test-report.md
└── sample/ # 示例数据
```
---
## 七、测试策略
### 7.1 测试层次
| 层次 | 覆盖率目标 | 工具 |
|------|------------|------|
| 单元测试 | ≥ 90% | pytest |
| 集成测试 | ≥ 80% | pytest |
| 端到端测试 | 100%通过 | 自定义脚本 |
### 7.2 测试数据
- 43个COBOL基准程序
- 33+2种程序类型
- 58个电信测试程序
---
## 八、环境要求
| 组件 | 要求 |
|------|------|
| OS | Windows 10/11 |
| Python | 3.12+ |
| GnuCOBOL | 3.2.0 |
| 磁盘 | ≥ 500MB |
---
## 九、文档索引
| 文档 | 说明 |
|------|------|
| `SETUP.md` | 环境搭建、运行指南 |
| `docs/v3-理解文档.md` | 系统架构、组件说明 |
| `docs/detailed-design/` | V3 详细设计 (9个文档) |
| `docs/development-paradigm.md` | 开发范式流程图 |
| `docs/test-report.md` | 测试报告 |
| `_AI_USAGE_LOG.md` | AI 使用日志 |