# 评估功能前后端实现评估报告 > 评估日期:2026-01-18 > 评估范围:危险评估、计分考核、评估报告模块 > 评估目标:发现交互逻辑问题、功能设置问题,为产品专家评审提供依据 --- ## 一、功能模块概览 ### 1.1 已实现模块清单 | 模块名称 | 中文名称 | 后端路径 | 前端路径 | 完成度 | |---------|---------|---------|---------|-------| | RiskAssessment | 危险评估 | `controller/admin/riskassessment/` | `views/prison/riskassessment/` | 90% | | Score | 计分考核 | `controller/admin/score/` | `views/prison/score/` | 85% | | ScoreRule | 考核规则配置 | `controller/admin/score/rule/` | 未实现 | 70% | | ScoreDetail | 考核明细记录 | `controller/admin/score/detail/` | 未实现 | 70% | | EvaluationReport | 评估报告 | `controller/admin/evaluationreport/` | `api/prison/evaluation/` | 75% | ### 1.2 评估报告模块表结构 | 表名 | 说明 | 状态 | |-----|------|------| | `prison_evaluation_template` | 评估报告模板表 | ✅ 已创建 | | `prison_evaluation_dimension` | 评估维度配置表 | ✅ 已创建 | | `prison_evaluation_report` | 评估报告表 | ✅ 已创建 | | `prison_evaluation_dimension_data` | 报告维度数据表 | ✅ 已创建 | | `prison_report_comment` | 快捷评语库表 | ✅ 已创建 | | `prison_evaluation_report_version` | 报告版本历史表 | ✅ 已创建 | | `prison_evaluation_ai_log` | AI生成日志表 | ✅ 已创建 | --- ## 二、需求实现对比分析 ### 2.1 模板管理功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 新增模板 | ✅ 已实现 | | | 编辑模板 | ✅ 已实现 | | | 复制模板 | ❌ **未实现** | 需求文档3.1.3明确要求 | | 启用/停用模板 | ✅ 已实现 | | | 设为默认 | ❌ **未实现** | 需求文档3.1.3明确要求 | | 版本管理 | ⚠️ 部分实现 | 仅存储,未实现版本对比 | | 模板分类 | ✅ 已实现 | 支持4种类型 | ### 2.2 维度管理功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 新增维度 | ✅ 已实现 | | | 编辑维度 | ✅ 已实现 | | | 删除维度 | ✅ 已实现 | | | 复制维度 | ❌ **未实现** | 需求文档3.1.4.1明确要求 | | 拖拽排序 | ❌ **未实现** | 仅后端存储sort字段,前端未实现拖拽 | | 启用/停用 | ✅ 已实现 | | | AI提示词配置 | ✅ 已实现 | | | 数据源绑定 | ✅ 已实现 | | ### 2.3 报告生成功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 手动创建报告 | ✅ 已实现 | | | 批量生成报告 | ❌ **未实现** | 需求文档3.5.2明确要求 | | 数据自动填充 | ✅ 已实现 | | | AI生成初稿 | ✅ 已实现 | | | 人工修改 | ✅ 已实现 | | | 逐维度重新生成 | ✅ 已实现 | | | 快捷评语 | ✅ 已实现 | | ### 2.4 报告审核功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 提交审核 | ✅ 已实现 | | | 审核通过 | ✅ 已实现 | | | 审核退回 | ⚠️ **不完整** | 缺少结构化退回原因记录 | | 撤回报告 | ❌ **未实现** | 需求文档3.13.3明确要求 | | 退回后重新提交 | ✅ 已实现 | | ### 2.5 报告导出功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 导出Excel | ✅ 已实现 | | | 导出PDF | ❌ **未实现** | 需求文档3.9明确要求 | | 导出Word | ❌ **未实现** | 需求文档3.9明确要求 | | 批量导出 | ❌ **未实现** | 需求文档3.11.5明确要求 | | 批量打包下载 | ❌ **未实现** | 需求文档3.9.2明确要求 | ### 2.6 归档管理功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 报告归档 | ❌ **未实现** | 需求文档3.10明确要求 | | 归档查询 | ❌ **未实现** | | | 归档后不可修改 | ❌ **未实现** | | ### 2.7 版本管理功能对比 | 需求功能 | 实现状态 | 问题说明 | |---------|---------|---------| | 版本记录 | ✅ 已实现 | 表结构已创建 | | 版本查看 | ⚠️ 部分实现 | 仅存储,未实现查看功能 | | 版本对比 | ❌ **未实现** | 需求文档3.8.2明确要求 | | 版本回滚 | ❌ **未实现** | 需求文档3.8.2明确要求 | --- ## 三、交互逻辑问题清单 ### 3.1 报告编号生成规则不一致 **问题描述**: - 需求规范:`RPT-{监区编码}-{年月}-{4位序号}` 示例:`RPT-JQ01-202601-0001` - 代码实现:`PGEV + yyyyMMdd + 6位序号` 示例:`PGEV20260118000001` **影响**:报告编号不符合需求规范,无法直观识别监区信息 **建议修复**: ```java // 建议改为: // 1. 获取罪犯所属监区编码 // 2. 获取当前年月 // 3. 查询当月该监区的最大序号 // 4. 格式:RPT-{监区编码}-{年月}-{序号(4位)} ``` ### 3.2 审核退回流程不完整 **问题描述**: - 当前实现:仅记录 `audit_opinion` 文本字段 - 需求要求:结构化记录退回原因、驳回时间、驳回人 **影响**:退回原因无法有效传达给起草人,缺少退回时间追溯 **建议修复**: ```sql -- 增加字段 ALTER TABLE prison_evaluation_report ADD COLUMN return_reason VARCHAR(500) COMMENT '退回原因', ADD COLUMN return_time DATETIME COMMENT '退回时间', ADD COLUMN return_by BIGINT COMMENT '退回人ID'; ``` ### 3.3 缺少报告撤回功能 **问题描述**: - 需求文档3.13.3明确要求:待审核状态可撤回为草稿 - 当前代码:没有撤回(Withdraw/Recall)相关接口 **影响**:提交审核后发现问题无法及时撤回修改 **建议新增接口**: ``` POST /prison/evaluation-report/report/withdraw 参数:reportId 前置条件:status = PENDING_AUDIT(2) 后置条件:status = DRAFT(1) ``` ### 3.4 状态枚举定义不一致 **问题描述**: - 需求文档:草稿(1)、待审核(2)、已通过(3)、已退回(4)、已归档(5) - 代码实现:缺少"已归档"状态枚举 **影响**:归档功能无法正确实现状态流转 **建议修复**:在 `EvaluationReportStatusEnum` 中添加 `ARCHIVED(5, "已归档")` ### 3.5 维度类型定义不一致 **问题描述**: - 数据库表:1-基本信息, 2-犯罪情况, 3-服刑表现... - DO类定义:1-心理测评, 2-危险性评估, 3-改造表现... **影响**:前后端数据交换可能出现类型映射错误 **建议修复**:统一枚举定义,确保DO类与数据库枚举值一致 --- ## 四、功能设置问题清单 ### 4.1 模板缺少"复制"功能 **问题描述**:需求要求支持复制模板快速创建,当前未实现 **业务场景**: - 管理员需要基于现有模板创建新版模板 - 不同监区需要基于标准模板创建本地化版本 **建议实现**: ```java @PostMapping("/template/copy") public CommonResult copyTemplate(@RequestParam("templateId") Long templateId) { // 1. 查询原模板 // 2. 复制模板基础信息(名称加"副本"后缀) // 3. 复制所有维度配置 // 4. 返回新模板ID } ``` ### 4.2 维度缺少"复制"功能 **问题描述**:需求要求支持复制维度快速创建,当前未实现 **业务场景**: - 类似维度需要微调配置 - 跨模板复用维度配置 **建议实现**: ```java @PostMapping("/dimension/copy") public CommonResult copyDimension(@RequestParam("dimensionId") Long dimensionId) { // 1. 查询原维度 // 2. 复制维度配置(名称加"副本"后缀) // 3. 返回新维度ID } ``` ### 4.3 缺少批量生成报告功能 **问题描述**:需求要求支持选择多个罪犯+模板批量生成报告 **业务场景**: - 月末批量生成在押犯评估报告 - 入监队批量生成新入监罪犯评估报告 **建议实现**: ```java @PostMapping("/report/batch-generate") public CommonResult> batchGenerate( @RequestBody BatchGenerateReqVO vo) { // vo包含:prisonerIds, templateId, evaluationDate // 使用异步队列处理,返回任务ID } ``` ### 4.4 缺少归档管理功能 **问题描述**:需求要求已审核报告可归档,归档后不可修改 **建议实现**: ```java @PostMapping("/report/archive") public CommonResult archive(@RequestParam("reportId") Long reportId); @PostMapping("/report/unarchive") public CommonResult unarchive(@RequestParam("reportId") Long reportId); @PostMapping("/report/archive-list") public CommonResult batchArchive(@RequestParam("reportIds") List reportIds); ``` ### 4.5 缺少版本对比和回滚功能 **问题描述**:需求要求支持版本对比和回滚 **建议实现**: ```java // 版本对比 @GetMapping("/report/version/compare") public CommonResult compareVersions( @RequestParam("reportId") Long reportId, @RequestParam("version1") Integer version1, @RequestParam("version2") Integer version2); // 版本回滚 @PostMapping("/report/version/rollback") public CommonResult rollback( @RequestParam("reportId") Long reportId, @RequestParam("targetVersion") Integer targetVersion); ``` ### 4.6 缺少PDF/Word导出功能 **问题描述**:需求要求支持PDF和Word格式导出 **建议实现**: ```java @PostMapping("/report/export-pdf") public void exportPdf(@RequestParam("reportId") Long reportId, HttpServletResponse response); @PostMapping("/report/export-word") public void exportWord(@RequestParam("reportId") Long reportId, HttpServletResponse response); @PostMapping("/report/batch-export-zip") public void batchExportZip(@RequestBody List reportIds, HttpServletResponse response); ``` --- ## 五、性能与安全缺失项 ### 5.1 缓存机制未实现 **需求要求**: - 罪犯基础信息缓存(5分钟过期) - 考核数据缓存(10分钟过期) - 模板配置缓存(1小时过期) **当前状态**:未实现任何缓存 **建议实现**: ```java @Cacheable(value = "prisoner", key = "#prisonerId", ttl = 5 * 60) public PrisonerDTO getPrisoner(Long prisonerId) { ... } @Cacheable(value = "scoreData", key = "#prisonerId + ':' + #year", ttl = 10 * 60) public ScoreDTO getScoreData(Long prisonerId, Integer year) { ... } ``` ### 5.2 异步生成队列未实现 **需求要求**: - 批量生成使用异步队列 - 支持队列状态查询 - 失败重试(最多3次) - 生成完成通知 **当前状态**:同步调用LLM服务 **建议实现**: ```java @Async("reportGenerateExecutor") public CompletableFuture generateReportAsync(GenerateTask task) { // 调用LLM生成报告 // 失败时重试3次 // 完成后发送系统通知 } ``` ### 5.3 AI服务降级未实现 **需求要求**:AI服务不可用时有降级策略 **当前状态**:仅检查LLM是否可用,无降级机制 **建议实现**: - 使用默认模板填充 - 标记维度为"待人工填写" - 记录服务降级日志 --- ## 六、前端交互问题 ### 6.1 评估报告前端页面未完整实现 | 组件 | 状态 | 说明 | |-----|------|------| | 报告模板管理页 | ❌ 未实现 | 仅有API,无页面 | | 维度配置管理页 | ❌ 未实现 | 仅有API,无页面 | | 报告编辑页面 | ❌ 未实现 | 仅有API,无页面 | | 报告列表页 | ❌ 未实现 | 仅有API,无页面 | ### 6.2 前后端联调问题 **问题**:前端API已定义,但后端Controller路径不一致 **示例**: - 前端定义:`/prison/evaluation-report/template/page` - 后端实际:`/prison/evaluation-report/template/page` ✅ 一致 **但缺少以下前端页面**: - 模板列表/编辑页面 - 维度配置页面 - 报告编辑页面(左右分栏布局) - 报告预览/打印页面 - 快捷评语管理页面 --- ## 七、功能实现完成度汇总 | 功能模块 | 已实现 | 需完善 | 未实现 | 完成度 | |---------|-------|-------|-------|-------| | 模板管理 | 8项 | 1项 | 2项 | **75%** | | 维度管理 | 5项 | 0项 | 2项 | **71%** | | 报告创建 | 5项 | 1项 | 1项 | **79%** | | 报告审核 | 3项 | 1项 | 1项 | **60%** | | 报告导出 | 1项 | 0项 | 3项 | **25%** | | 归档管理 | 0项 | 0项 | 3项 | **0%** | | 版本管理 | 1项 | 1项 | 2项 | **33%** | | AI生成 | 3项 | 2项 | 2项 | **50%** | | 前端页面 | 0项 | 0项 | 5项 | **0%** | **总体评估**:核心数据模型和API已实现,但前端页面缺失较多,高级功能(批量生成、归档、版本对比)未实现。 --- ## 八、改进优先级建议 ### P0 - 必须修复(影响核心流程) 1. **报告编号规则修复** - 符合需求规范 2. **审核退回流程完善** - 结构化记录退回原因 3. **添加报告撤回功能** - 支持待审核撤回 4. **状态枚举补全** - 添加已归档状态 ### P1 - 应该实现(影响用户体验) 5. **模板复制功能** 6. **维度复制功能** 7. **批量生成报告功能** 8. **PDF/Word导出功能** 9. **归档管理功能** 10. **版本对比功能** ### P2 - 建议实现(提升体验) 11. **数据缓存机制** 12. **异步生成队列** 13. **AI服务降级** 14. **前端页面完整实现** 15. **维度拖拽排序前端** --- ## 九、待产品专家评审事项 ### 9.1 业务流程问题 1. **批量生成场景确认** - 一次性最多生成多少个报告? - 是否需要显示生成进度? - 生成失败如何处理? 2. **审核退回流程确认** - 是否必须填写退回原因? - 退回原因是否需要分类? - 退回后是否需要通知起草人? 3. **归档策略确认** - 自动归档还是手动归档? - 归档后是否可导出? - 归档文件保留多长时间? ### 9.2 交互设计问题 1. **报告编辑页面布局** - 需求文档设计了左右分栏布局,是否认可? - 罪犯列表每页显示多少条? - 是否需要支持快捷键操作? 2. **版本对比界面** - 左右分屏对比是否足够? - 是否需要高亮显示差异? - 是否需要一键还原? ### 9.3 功能优先级确认 1. **第一阶段MVP功能范围** - 模板管理、维度配置 - 报告创建、AI生成 - 报告审核、Excel导出 2. **第二阶段功能范围** - 批量生成、PDF导出 - 归档管理、版本对比 --- ## 附录:关键文件清单 ### 后端关键文件 | 文件路径 | 说明 | |---------|------| | `controller/admin/evaluationreport/EvaluationReportController.java` | 主控制器 | | `service/evaluationreport/EvaluationReportService.java` | 服务接口 | | `service/evaluationreport/impl/EvaluationReportServiceImpl.java` | 服务实现 | | `dal/dataobject/evaluationreport/EvaluationReportDO.java` | 报告实体 | | `dal/dataobject/evaluationreport/EvaluationDimensionDO.java` | 维度实体 | | `enums/EvaluationReportStatusEnum.java` | 状态枚举 | ### 前端关键文件 | 文件路径 | 说明 | |---------|------| | `api/prison/evaluation/index.ts` | API定义 | | `views/prison/riskassessment/index.vue` | 危险评估列表 | | `views/prison/score/index.vue` | 计分考核列表 | ### 数据库脚本 | 文件路径 | 说明 | |---------|------| | `sql/evaluation_report.sql` | 评估报告表结构 | | `sql/evaluation_report_dict_data.sql` | 字典数据 | --- **报告生成时间**:2026-01-18 **评估人**:Claude Code **版本**:v1.0