# 04-任务矩阵

状态说明：

- `未开始`：尚未实施。
- `进行中`：正在实施。
- `已完成`：已完成并有验收证据。
- `阻塞`：存在外部条件阻塞。
- `取消`：明确不再执行。

## 1. 总任务表

| 编号 | 任务 | 状态 | 优先级 | 验收标准 |
| --- | --- | --- | --- | --- |
| `T000` | 移植前基线准备 | 已完成 | P0 | 目标 SDK 固定为 `.NET 10`；`working1` 文档补齐；`MesUniversalApi/` 目录骨架创建；当前开发环境约束已记录 |
| `T001` | 旧接口资产盘点 | 未开始 | P0 | 输出旧 Type/Name/Param 调用清单，标出文件、SQL、存储过程和高风险接口 |
| `T002` | 新 WebAPI 项目骨架创建 | 未开始 | P0 | 项目可启动，Swagger 可访问，健康检查通过 |
| `T003` | 数据源配置模型设计 | 未开始 | P0 | 支持 SQL Server/PostgreSQL/MySQL 三类数据源配置 |
| `T004` | 统一响应与异常处理中间件 | 未开始 | P0 | 所有 JSON 接口返回 `{code,message,data,traceId}` |
| `T005` | JWT 鉴权和 action 授权 | 未开始 | P0 | 未登录不能执行业务接口，action 权限可配置 |
| `T006` | Provider 抽象接口 | 未开始 | P0 | 定义 `IDatabaseProvider`、`DbExecutionContext`、结果模型 |
| `T007` | SQL Server Provider | 未开始 | P0 | 可执行 Text 查询、非查询、StoredProcedure、输出参数 |
| `T008` | Legacy Type=11 兼容 | 未开始 | P0 | 旧格式请求可通过白名单执行 SQL Server 存储过程并返回 JSON |
| `T009` | Legacy Type=111 分页兼容 | 未开始 | P1 | 可追加分页参数并返回 `rows/total` |
| `T010` | Legacy Type=12/13/21 兼容 | 未开始 | P1 | 执行型、DataSet、新结构响应均可用 |
| `T011` | 文件上传 Type=15 迁移 | 未开始 | P1 | multipart 上传成功，支持大小和扩展名校验 |
| `T012` | 文件下载 Type=16/2004 迁移 | 未开始 | P1 | 返回二进制、文件名和正确响应头 |
| `T013` | actionId 白名单执行接口 | 未开始 | P0 | 前台可通过 actionId 执行一个配置动作 |
| `T014` | PostgreSQL Provider | 未开始 | P1 | 可执行 Text 查询、Function、非查询、bytea 文件 |
| `T015` | MySQL Provider | 未开始 | P1 | 可执行 Text 查询、CALL procedure、非查询、longblob 文件 |
| `T016` | 报表导出接口 | 未开始 | P2 | 可按 reportId 导出 Excel/PDF |
| `T017` | 审计日志 | 未开始 | P0 | 记录用户、action、数据库、耗时、结果 |
| `T018` | Linux Docker 部署 | 未开始 | P0 | Docker 容器在 Linux 启动并通过健康检查 |
| `T019` | systemd 部署文档 | 未开始 | P2 | 具备 systemd service 配置和启动说明 |
| `T020` | 集成测试环境 | 未开始 | P1 | docker compose 可启动 API + 三类数据库测试环境 |
| `T021` | 旧接口回归对比 | 未开始 | P0 | 选定旧接口与新接口输出一致或差异有说明 |
| `T022` | 高风险 Type 退场方案 | 未开始 | P0 | `3/4/7/22/1001/1002/3001` 有明确禁用或替代方案 |
| `T023` | OpenAPI 与前台对接文档 | 未开始 | P1 | 前台可按文档调用新接口 |
| `T024` | 性能压测 | 未开始 | P2 | 有查询、分页、文件上传下载压测报告 |
| `T025` | 云仓库初始化与首次提交 | 已完成 | P1 | 云端仓库创建成功；`main` 分支首次提交完成；仓库只包含迁移资料与新移植目录 |

## 2. 当前优先队列

第一批建议执行：

1. `T001` 旧接口资产盘点。
2. `T002` 新 WebAPI 项目骨架创建。
3. `T003` 数据源配置模型设计。
4. `T004` 统一响应与异常处理中间件。
5. `T006` Provider 抽象接口。
6. `T007` SQL Server Provider。
7. `T008` Legacy Type=11 兼容。

## 3. 任务依赖

```text
T000 -> T001/T002/T003/T018/T020
T001 -> T008/T009/T010/T011/T012/T021/T022
T002 -> T003/T004/T005/T006/T018
T006 -> T007/T014/T015
T007 -> T008/T009/T010/T011/T012/T013
T013 -> T014/T015/T023
T017 -> T021/T024
```

## 4. 防重复规则

- 所有新工作必须先在本矩阵中找到或新增任务编号。
- 新增代码、测试、部署文件和工具脚本只进入 `MesUniversalApi/`，不回写到旧系统目录。
- 同一能力不得同时以 legacy 和 actionId 两条线重复开发，除非明确是兼容过渡。
- 已完成任务如果返工，必须在 `03-推进台账.md` 写明原因。
- 验收证据必须写入 `05-验收证据.md` 后才能标记 `已完成`。

## 5. 高风险任务说明

### T022 高风险 Type 退场方案

必须处理的旧 Type：

- `3`：直接 SQL 查询。
- `4`：直接 SQL 非查询。
- `7`：动态建表，含 DROP/CREATE。
- `22`：直接 SQL 返回新结构。
- `1001`：客户端传 SQL 增删改。
- `1002`：客户端传 SQL 查询。
- `3001`：SQL 命令执行入口。

验收标准：

- 每个 Type 都有处置策略：禁用、仅内网管理、替换为 actionId、保留但强审计。
- 默认生产环境不可被普通前台调用。
