Files
daily_publish/EVALUATION_REPORT.md
T
panda afcd18c54f fix: evaluation report P0/P1/P2 fixes, remove Docker, add upload UI
Backend:
- Add NotFoundException + BusinessException, return correct HTTP status (404/400)
- Add @Index on reports.project_id and reports.upload_time
- Add fileSize column to reports, populate on upload, return in DTO
- Cascade delete: deleting project now removes all reports (DB + files + PDFs)
- Delete report: also clean up pre-rendered PDF
- File upload MIME validation (extension + Content-Type)
- Remove duplicate @ExceptionHandler from ReportController
- Switch from System.err to SLF4J logger
- Handle MethodArgumentNotValid, MissingServletRequestPart, etc.

Frontend:
- Remove all Docker files (project uses 宝塔 panel deployment)
- Upgrade axios 1.6.8 -> 1.7.7 (CVE-2024-39338)
- Remove unused @vue-office/pptx + vue-demi (see CHANGELOG for rationale)
- Fix vite proxy port 37821 -> 30081
- Remove mock data fallback in production
- Add upload report UI (button + modal in ProjectDetail)
- Add create project UI (button + modal in ProjectList)
- Add filename search box in ProjectDetail
- New useApi methods: createProject, uploadReport, deleteProject, deleteReport
- FilePreview/ReportCard: show fileSize (was undefined before)

Docs:
- Add README.md (overview, quick start, structure)
- Add CHANGELOG.md (full change log + pptx removal rationale)
- Include EVALUATION_REPORT.md and blog-vibe-coding.md

Tests:
- All 73 backend tests pass
- All 43 frontend tests pass
- Updated test fixtures for new API contract
2026-06-01 21:35:13 +08:00

3.9 KiB
Raw Blame History

publish(AI日报分发平台)评测报告

评测时间2026-06-01 08:27 项目路径D:\Idea Project\publish 项目定位:AI日报私有化分发平台,单用户使用,无登录系统 技术栈Spring Boot 3.2.5 + Vue 3.4 + SQLite + Docker + nginx


综合评分

维度 评分 状态
代码质量与架构 69/100 verifier通过(95%准确率)
产品设计与用户体验 P0×1 / P1×5+ verifier通过

一、代码质量与架构评测 — 69/100

P0 严重(必须修复)

1. axios 已知漏洞

  • 存在已知 CVE,需升级 axios 版本
  • 修复:检查 package.json / pom.xml 确认具体版本

2. reports.project_id 无数据库索引

  • 查询报表列表时 WHERE project_id 无索引,性能瓶颈
  • 修复:添加索引 CREATE INDEX idx_reports_project_id ON reports(project_id)

3. 级联删除缺失

  • 删除项目后,reports 中的关联记录变成孤立数据
  • 修复JPA entity 添加 @OnDelete(DeleteAction.CASCADE) 或手动清理

P1 高风险

# 问题 说明
1 ddl-auto: update 生产危险 字段变更可能导致数据丢失
2 exception handler 重复 各 controller 重复 try-catch,应统一
3 N+1 查询 列表查询未做 JOIN FETCH
4 文件上传 MIME 校验缺失 仅检查后缀,类型可伪造
5 无单元/集成测试 核心业务逻辑无测试覆盖

误报修正(verifier 发现)

  • 端口冲突(30081 vs 37821)→ 实际不冲突,30081 在 Docker 内被正确忽略
  • iframe sandbox 安全gap → iframe sandbox 默认阻止脚本,实际安全
  • vite proxy 与后端端口不一致 → 确认需使用 docker-compose 端口

亮点

  • HTML iframe sandbox 隔离(安全)
  • PPTX 转 PDF 预渲染机制(阅读体验好)
  • API 文档完整(API.md
  • 分层清晰(controller → service → repository
  • 私有化部署完整(Dockerfile + docker-compose + nginx

二、产品设计与用户体验评测

P0 致命(阻塞性)

前端完全缺失上传报告 UI

  • 后端 API 完整(POST /api/reports + multipart 上传)
  • 前端 UI 断链:用户打开页面只能看,无法发布报告
  • 这与「发布平台」的定位根本矛盾
  • 修复:补充前端上传 UIfile input + project selector + submit button

P1 高风险

# 问题 说明
1 报告管理无搜索/筛选 报告多了无法快速找到
2 Docker volume 路径硬编码 部署时路径不灵活
3 单用户场景无密码保护 虽无认证需求,但文件上传无任何保护
4 报告阅读体验优秀 HTML/MD/PPTX 预览完整,视觉质量高

亮点

  • 阅读体验:HTML/MD/PPTX 预览完整,视觉质量高
  • Docker 一键部署基本可用
  • 无登录需求判断正确(单用户私有化)

修复优先级

本周(阻塞项)

  1. 补充前端上传 UIP0,平台核心功能缺失)
  2. 升级 axiosP0,安全漏洞)
  3. 添加 reports.project_id 索引P0,性能)

下月(重要)

  1. 级联删除修复
  2. 文件上传 MIME 校验
  3. 添加基础测试覆盖

关键文件索引

文件 作用
src/main/java/.../controller/ReportController.java 报告 API(上传/列表/详情/删除)
src/main/java/.../entity/Report.java 报告实体(无索引)
src/main/java/.../config/ CORS + Docker 配置
frontend/src/views/ Vue 前端视图(缺上传页)
docker-compose.yml 容器编排(缺 health check
nginx.conf 前端反向代理配置
deploy/package.ps1 部署打包脚本

报告生成时间:2026-06-01 08:33Cycle 1 · 代码+产品设计 verifier 均通过)