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
This commit is contained in:
2026-06-01 21:35:13 +08:00
parent 7000c186e2
commit afcd18c54f
77 changed files with 1498 additions and 2886 deletions
+74
View File
@@ -0,0 +1,74 @@
# Publish — AI 日报分发平台
私有化部署的日报/周报管理与分发平台。后端 Spring Boot + SQLite,前端 Vue 3 + Vite。
## 快速开始
### 开发
```bash
# 后端(需要 Java 21
./mvnw.cmd spring-boot:run
# 前端
pnpm install
pnpm dev # → http://localhost:41733
```
### 部署
本项目使用**宝塔面板**部署(不是 Docker)。
```bash
powershell -File deploy/package.ps1
# 生成 deploy/publish_deploy.zip
# 上传到服务器 /usr/local/publish_dishboard/ 解压覆盖
```
完整部署步骤见 [deploy/README.md](deploy/README.md)
## 文档
- [API.md](API.md) — 完整 API 文档
- [CHANGELOG.md](CHANGELOG.md) — 更新日志
- [deploy/README.md](deploy/README.md) — 部署说明
## 项目结构
```
publish/
├── src/main/java/com/reportdist/ # Spring Boot 后端
│ ├── controller/ # REST API
│ ├── service/ # 业务逻辑
│ ├── repository/ # JPA 仓储
│ ├── entity/ # 数据库实体
│ ├── dto/ # 数据传输对象
│ └── exception/ # 异常处理
├── src/ # Vue 3 前端
│ ├── pages/ # 页面
│ ├── components/ # 组件
│ ├── composables/ # 组合式 API
│ └── router/ # 路由
├── deploy/ # 部署脚本与说明
├── pom.xml # Maven 配置
└── package.json # 前端依赖
```
## 技术栈
- **后端**Spring Boot 3.2.5 + Spring Data JPA + SQLite + Apache POI + PDFBox
- **前端**Vue 3.4 + Vite 5 + TailwindCSS 4 + Axios
- **构建**Maven + pnpm
- **部署**:宝塔面板 (Java 21 + Node.js)
## 端口约定
| 服务 | 端口 |
|------|------|
| 后端 (Spring Boot) | 30081 |
| 前端 (Node.js static server) | 30080 |
| 开发模式 - Vite | 41733 |
## 许可证
私有项目