# OCR Platform 开发 Todo

## 阶段 0：项目底座

- [x] 新建独立项目目录 `/Users/alphaPlanet/vibecoding/ocr-platform`
- [x] 初始化本地 git 仓库
- [x] 复制原型可复用文档、表单样例、图片样例和 form3 预览器
- [x] 建立 Spring Boot 后端骨架，包名从 `com.zhengmeng` 开始
- [x] 建立 Vue 3 前端骨架
- [x] 后端接入 MySQL / Flyway / JPA
- [x] 建立第一版数据库迁移脚本
- [x] 上传文件创建 OCR 任务并保存文档元数据
- [x] 提供任务查询和键值对查询 API 骨架

## 阶段 1：任务执行闭环

- [x] 实现 Worker 调度器，从 `ocr_task` 拉取 `QUEUED` 任务
- [x] 增加任务状态流转事件表 `ocr_task_event`
- [x] 增加失败重试、取消、超时恢复
- [x] 保存 OCR 引擎原始 JSON 到 `ocr_raw_result`
- [x] 保存全文 OCR 文本块到 `ocr_text_block`
- [x] 保存结构化键值对到 `ocr_key_value`
- [x] 提供任务详情 API：文件、全文、键值对、错误信息、耗时聚合

## 阶段 2：外部 OCR Provider 适配

- [x] 定义 OCR 引擎适配器接口
- [x] 接入已部署 PaddleOCR `/layout-parsing` 外部服务适配器
- [x] 接入已部署 PP-ChatOCR `/chatocr-visual` 与 `/chatocr-chat` 外部服务适配器
- [x] 增加 LLM 模型管理，支持 DeepSeek V4 Pro、DeepSeek V4 Flash、MiniMax M2.7 选择与思考模式开关
- [x] Java 适配器向 PP-ChatOCR 下发字段抽取清单
- [x] 使用 mock/外部算法服务完成 Java Worker 到 OCR provider 的端到端联调
- [x] 联调真实 PaddleOCR、PP-ChatOCR 和 LLM 配置
- [x] 明确中台不依赖历史 OCR 项目，PaddleOCR 只是可选 provider 之一
- [x] 补充 OCR provider 接入指南，约束后续新算法接入边界
- [x] 增加 PaddleOCR 外部 provider 验证配置和脚本，并完成 `/layout-parsing` 直连验证
- [x] 为 MySQL 5.7 调整迁移 collation，并将 `ocr_text_block.bbox_json` 改为 `longtext`
- [x] 使用 `ocrplatform` 专库重建库表，跑通 PaddleOCR provider 平台端到端验证
- [x] 支持 ChatOCR LLM 配置检测
- [x] 保存引擎版本、参数、耗时、错误
- [x] 对同一样张保留多次识别结果，方便效果对比
- [x] 增加字段抽取质量评估指标：数量、置信度、命中率、人工修正率

## 阶段 3：管理端

- [x] 任务列表页面
- [x] 任务详情页面
- [x] OCR 结果展示页面：全文、键值对、原始 JSON
- [x] OCR 引擎管理页面
- [x] 样张集和标准答案管理页面
- [x] 算法评估报告页面
- [x] 系统配置页面
- [x] 系统配置接入后端数据库持久化，避免前端假保存
- [x] 拆分大响应接口：任务详情瘦身、文本块分页、rawJson 按需单条读取

## 阶段 4：业务系统集成

- [x] 表单模板导入和版本管理
- [x] form3 预览器嵌入式展示
- [x] OCR 字段到表单字段的映射规则
- [x] 回填预览 API
- [x] 业务系统插件式调用 API
- [x] 接入鉴权、调用方限流和审计日志

## 阶段 5：生产部署

- [x] 构建后端 Docker 镜像
- [x] 构建前端 Docker 镜像
- [x] 在 192.168.1.13 部署 API、前端、OCR 引擎容器
- [x] 接入 192.168.1.222 MySQL 或生产 MySQL
- [x] 配置日志目录和文件保留策略
- [x] 配置 Prometheus / Grafana 监控
