NER开发任务清单.md 12 KB

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配置

    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
维护者:开发团队