# NER阶段开发任务清单 ## 阶段1:基础设施搭建(预计2天) ### 任务1.1:扩展常量定义 - [ ] 编辑 `Constants.java`,添加NER相关常量 - 节点类型:`NODE_NER_ENTITY`, `NODE_NER_RELATION` - 边类型:`EDGE_HAS_NER_ENTITY`, `EDGE_ENTITY_RELATION`, `EDGE_ENTITY_TO_VALUE` - 提取方法:`NER_METHOD_RULE`, `NER_METHOD_LLM`, `NER_METHOD_MANUAL` - NER状态:`NER_PENDING`, `NER_PROCESSING`, `NER_COMPLETED`, `NER_FAILED` ### 任务1.2:创建DTO类 - [ ] 创建 `NerEntityDTO.java`(实体数据传输对象) - [ ] 创建 `NerRelationDTO.java`(关系数据传输对象) - [ ] 创建 `NerStatisticsDTO.java`(统计数据对象) - [ ] 创建 `EntityMappingRequest.java`(映射请求对象) ### 任务1.3:数据库迁移 - [ ] 创建迁移脚本 `003_add_ner_support.sql` - [ ] 添加节点类型和边类型(如果有类型表) - [ ] 添加必要的索引优化查询性能 - [ ] 测试迁移脚本 ### 任务1.4:配置DeepSeek API(可选) - [ ] 在 `application.properties` 添加API配置 ```properties ai.deepseek.api-key=your-api-key ai.deepseek.base-url=https://api.deepseek.com ai.deepseek.model=deepseek-chat ``` - [ ] 测试API连接 **验收标准**: - 所有常量定义完成且编译通过 - DTO类创建完成并通过单元测试 - 数据库迁移成功执行 --- ## 阶段2:Python NER服务增强(预计3天) ### 任务2.1:扩展实体类型规则 - [ ] 编辑 `ner_service.py`,在 `_extract_by_rules` 方法中添加: - `SCORE` 规则(评审得分) - `LEVEL` 规则(级别) - `CERTIFICATE_CODE` 规则(证书编号) - `REVIEW_CODE` 规则(评审代码) - `COMPANY_ALIAS` 规则(公司简称) - `PROJECT_CODE` 规则(项目编号) - `REVIEW_ITEM` 规则(评审项) ### 任务2.2:优化规则准确率 - [ ] 添加停用词过滤 - [ ] 添加上下文验证逻辑 - [ ] 调整置信度计算方法 - [ ] 测试并优化规则 ### 任务2.3:实现表格提取功能 - [ ] 创建 `table_extractor.py` - [ ] 实现 `extract_tables()` 方法 - [ ] 实现 `_extract_simple_tables()` 方法(基于分隔符) - [ ] 实现 `_extract_known_tables()` 方法(基于关键词) - [ ] 实现特定表格提取器: - `_extract_review_project_table()` - 复审项目表 - `_extract_reviewer_table()` - 复审人员表 - `_extract_suggestion_table()` - 整改建议表 ### 任务2.4:集成LLM提取(可选) - [ ] 实现 `_extract_by_deepseek()` 方法 - [ ] 设计提示词模板 - [ ] 实现结果解析和验证 - [ ] 添加错误处理和重试机制 ### 任务2.5:单元测试 - [ ] 编写规则提取测试用例 - [ ] 编写表格提取测试用例 - [ ] 编写LLM提取测试用例(如果实现) - [ ] 准备测试数据(从mock数据中提取) **验收标准**: - 所有新实体类型规则添加完成 - 表格提取功能正常工作 - 单元测试覆盖率 > 80% - 在测试数据上准确率 > 85% --- ## 阶段3:后端服务集成(预计3天) ### 任务3.1:创建NER实体服务 - [ ] 创建 `NerEntityService.java` - [ ] 实现 `extractAndSaveEntities()` - 提取并保存实体 - [ ] 实现 `saveEntity()` - 保存单个实体到图数据库 - [ ] 实现 `getEntitiesByAttachment()` - 查询附件的实体 - [ ] 实现 `mapEntityToElement()` - 映射实体到要素 - [ ] 实现 `deleteEntity()` - 删除实体 - [ ] 实现 `updateEntity()` - 更新实体信息 ### 任务3.2:创建NER控制器 - [ ] 创建 `NerController.java` - [ ] 实现 `POST /api/v1/ner/attachments/{id}/extract` - 触发NER提取 - [ ] 实现 `GET /api/v1/ner/attachments/{id}/entities` - 获取实体列表 - [ ] 实现 `POST /api/v1/ner/entities/{id}/map` - 映射实体 - [ ] 实现 `DELETE /api/v1/ner/entities/{id}` - 删除实体 - [ ] 实现 `PUT /api/v1/ner/entities/{id}` - 更新实体 - [ ] 实现 `GET /api/v1/ner/attachments/{id}/statistics` - 获取统计信息 ### 任务3.3:集成到附件上传流程 - [ ] 修改 `AttachmentService.uploadAttachment()` - [ ] 添加NER触发选项(自动/手动) - [ ] 实现异步NER任务创建 - [ ] 添加NER状态更新逻辑 ### 任务3.4:实现自动映射逻辑 - [ ] 创建 `EntityMappingService.java` - [ ] 实现基于规则的自动映射 - 日期类实体 → 日期类要素 - 机构类实体 → 评审对象相关要素 - 得分类实体 → 评审得分要素 - [ ] 实现映射置信度计算 - [ ] 添加映射建议功能 ### 任务3.5:API测试 - [ ] 编写集成测试 - [ ] 测试完整流程:上传附件 → NER提取 → 保存实体 → 查询展示 - [ ] 测试异常情况处理 - [ ] 性能测试(大文档处理) **验收标准**: - 所有API接口实现完成 - 集成测试通过 - API文档更新 - 性能满足要求(单个附件NER < 30s) --- ## 阶段4:前端界面开发(预计4天) ### 任务4.1:创建API接口层 - [ ] 创建 `src/api/ner.js` - [ ] 实现 `getNerEntities(attachmentId)` - 获取实体列表 - [ ] 实现 `triggerNerExtract(attachmentId)` - 触发NER提取 - [ ] 实现 `mapEntityToElement(entityId, elementKey)` - 映射实体 - [ ] 实现 `deleteEntity(entityId)` - 删除实体 - [ ] 实现 `getNerStatistics(attachmentId)` - 获取统计信息 ### 任务4.2:创建NER分析主页面 - [ ] 创建 `src/views/NerAnalysis.vue` - [ ] 实现顶部统计卡片 - [ ] 实现Tab切换(实体列表/文本标注/要素映射/关系图谱) - [ ] 实现数据加载和刷新 - [ ] 添加加载状态和错误处理 ### 任务4.3:实现实体列表视图 - [ ] 创建 `src/views/components/EntityListView.vue` - [ ] 实现实体表格展示 - [ ] 实现筛选功能(类型/映射状态/置信度) - [ ] 实现搜索功能 - [ ] 实现映射操作 - [ ] 实现删除操作 - [ ] 添加批量操作功能 ### 任务4.4:实现文本标注视图 - [ ] 创建 `src/views/components/TextAnnotationView.vue` - [ ] 实现原文展示 - [ ] 实现实体高亮(不同颜色标识不同类型) - [ ] 实现鼠标悬停显示详情 - [ ] 实现点击实体跳转到详情 - [ ] 添加高亮开关和类型过滤 ### 任务4.5:实现要素映射视图 - [ ] 创建 `src/views/components/EntityMappingView.vue` - [ ] 实现左右分栏布局(实体列表 | 要素列表) - [ ] 实现拖拽映射功能 - [ ] 实现自动映射建议展示 - [ ] 实现映射关系可视化 - [ ] 添加批量映射功能 ### 任务4.6:实现关系图谱视图(可选) - [ ] 创建 `src/views/components/RelationGraphView.vue` - [ ] 集成图可视化库(如 ECharts/G6) - [ ] 实现节点和边的渲染 - [ ] 实现交互功能(缩放/拖拽/点击) - [ ] 添加布局算法选择 ### 任务4.7:集成到附件管理页面 - [ ] 修改 `src/views/AttachmentManagement.vue` - [ ] 添加"NER分析"按钮 - [ ] 添加NER状态显示 - [ ] 添加快捷操作入口 ### 任务4.8:样式优化 - [ ] 设计实体类型颜色方案 - [ ] 优化表格和卡片样式 - [ ] 添加响应式布局 - [ ] 优化移动端显示 **验收标准**: - 所有视图组件实现完成 - UI/UX符合设计规范 - 响应式布局正常工作 - 浏览器兼容性测试通过 --- ## 阶段5:测试与优化(预计3天) ### 任务5.1:端到端测试 - [ ] 准备测试数据集(5-10个真实附件) - [ ] 测试完整流程: 1. 上传附件 2. 触发NER提取 3. 查看实体列表 4. 文本标注展示 5. 映射到要素 6. 验证要素值填充 - [ ] 记录测试结果和问题 ### 任务5.2:准确率评估 - [ ] 人工标注测试数据的正确实体 - [ ] 计算NER准确率、召回率、F1值 - [ ] 分析错误案例 - [ ] 优化规则和阈值 - [ ] 重新测试直到准确率 > 85% ### 任务5.3:性能优化 - [ ] 分析性能瓶颈(使用profiler) - [ ] 优化数据库查询(添加索引) - [ ] 优化NER提取速度(并行处理) - [ ] 优化前端渲染性能(虚拟滚动) - [ ] 添加缓存机制 - [ ] 压力测试(并发请求) ### 任务5.4:用户体验优化 - [ ] 添加操作引导(新手教程) - [ ] 优化错误提示信息 - [ ] 添加操作确认对话框 - [ ] 优化加载状态展示 - [ ] 添加快捷键支持 - [ ] 收集用户反馈并改进 ### 任务5.5:文档编写 - [ ] 编写用户操作手册 - [ ] 编写API接口文档 - [ ] 编写开发者文档 - [ ] 录制操作演示视频 - [ ] 编写FAQ文档 **验收标准**: - 端到端测试全部通过 - NER准确率 > 85% - 单个附件处理时间 < 30s - 用户满意度 > 4.0/5.0 - 文档完整齐全 --- ## 阶段6:部署与上线(预计1天) ### 任务6.1:环境配置 - [ ] 配置生产环境的NER服务地址 - [ ] 配置DeepSeek API密钥(如使用) - [ ] 配置数据库连接 - [ ] 配置日志级别和输出 ### 任务6.2:部署Python NER服务 - [ ] 构建Docker镜像 - [ ] 部署到服务器 - [ ] 配置systemd服务(参考 `scripts/systemd/lingyue-ner.service`) - [ ] 测试服务可用性 - [ ] 配置监控和告警 ### 任务6.3:部署后端服务 - [ ] 编译打包后端代码 - [ ] 执行数据库迁移 - [ ] 部署到服务器 - [ ] 重启相关服务 - [ ] 验证API可用性 ### 任务6.4:部署前端 - [ ] 构建前端代码 - [ ] 部署到Web服务器 - [ ] 配置Nginx反向代理 - [ ] 测试页面访问 ### 任务6.5:上线验证 - [ ] 执行冒烟测试 - [ ] 验证核心功能 - [ ] 检查日志输出 - [ ] 监控系统性能 - [ ] 准备回滚方案 **验收标准**: - 所有服务正常运行 - 核心功能验证通过 - 监控指标正常 - 无严重错误日志 --- ## 附录:开发规范 ### 代码规范 - Java代码遵循阿里巴巴Java开发手册 - Python代码遵循PEP 8规范 - Vue代码遵循Vue官方风格指南 - 所有代码必须通过Lint检查 ### 提交规范 - Commit message格式:`[类型] 简短描述` - 类型:feat/fix/docs/style/refactor/test/chore - 示例:`[feat] 添加NER实体列表视图` ### 分支管理 - 主分支:`main` - 开发分支:`dev/ner-implementation` - 功能分支:`feature/ner-entity-service` - 修复分支:`fix/ner-accuracy-issue` ### Code Review - 所有代码必须经过至少1人Review - Review重点:功能正确性、代码质量、性能、安全性 - 使用GitLab Merge Request进行Review ### 测试要求 - 单元测试覆盖率 > 80% - 关键功能必须有集成测试 - 上线前必须通过端到端测试 --- ## 风险管理 ### 高风险项 1. **NER准确率不达标** - 缓解措施:准备多种提取模式(规则/LLM),支持人工校正 - 应急方案:降低自动映射比例,增加人工审核 2. **性能问题** - 缓解措施:异步处理、分块提取、缓存优化 - 应急方案:限制并发数、增加服务器资源 3. **LLM API成本过高** - 缓解措施:优先使用规则模式,仅复杂场景用LLM - 应急方案:切换到本地模型(Ollama) ### 中风险项 1. **数据一致性问题** - 缓解措施:事务控制、审计日志 - 应急方案:数据回滚机制 2. **用户体验不佳** - 缓解措施:用户测试、快速迭代 - 应急方案:提供详细操作文档和培训 --- ## 进度跟踪 | 阶段 | 预计工期 | 开始日期 | 结束日期 | 负责人 | 状态 | |------|----------|----------|----------|--------|------| | 阶段1:基础设施 | 2天 | - | - | - | 待开始 | | 阶段2:NER服务 | 3天 | - | - | - | 待开始 | | 阶段3:后端集成 | 3天 | - | - | - | 待开始 | | 阶段4:前端开发 | 4天 | - | - | - | 待开始 | | 阶段5:测试优化 | 3天 | - | - | - | 待开始 | | 阶段6:部署上线 | 1天 | - | - | - | 待开始 | | **总计** | **16天** | - | - | - | - | --- **文档版本**:v1.0 **创建时间**:2024-03-04 **最后更新**:2024-03-04 **维护者**:开发团队