Files
daily_publish/deploy
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
..

AI 发布平台 - 部署说明

快速打包

# 方式一:双击运行
deploy\build.bat

# 方式二:PowerShell
powershell -File deploy\package.ps1

输出:deploy/publish_deploy.zip

服务器目录结构

解压 publish_deploy.zip/usr/local/publish_dishboard/,得到:

/usr/local/publish_dishboard/
  frontend/
    index.html          ← 前端入口
    server.js           ← Node.js 静态服务(端口 30080
    assets/             ← JS / CSS 静态资源
  app.jar              ← Spring Boot 后端(端口 30081
  database.db          ← SQLite 数据库

宝塔面板部署步骤

1. 后端(Java

  • 项目名称publish_backend
  • 项目端口30081
  • 启动文件/usr/local/publish_dishboard/app.jar
  • 运行目录/usr/local/publish_dishboard/
  • 启动命令java -jar app.jar

2. 前端(Node.js

  • 项目名称publish_dishboard
  • 项目端口30080
  • 启动文件/usr/local/publish_dishboard/frontend/server.js
  • 运行目录/usr/local/publish_dishboard/frontend/
  • 环境变量
    • STATIC_DIR=/usr/local/publish_dishboard/frontend
    • UPLOADS_DIR=/usr/local/publish_dishboard/frontend/uploads

3. Nginx 反向代理

# 前端(静态文件 + Vue Router
location /publish_dishboard/ {
    rewrite ^/publish_dishboard(/.*)$ $1 break;
    proxy_pass http://127.0.0.1:30080;
}

# 后端 API
location /publish_server/ {
    rewrite ^/publish_server(/.*)$ $1 break;
    proxy_pass http://127.0.0.1:30081;
}

# API 代理(前端 useApi.js 的 baseURL: '/api'
location /api/ {
    rewrite ^/api/(.*) /api/$1 break;
    proxy_pass http://127.0.0.1:30081;
}

# 静态资源(前端 assets
location /assets/ {
    alias /usr/local/publish_dishboard/frontend/assets/;
    expires 30d;
    add_header Cache-Control "public, immutable";
}

# 上传文件(后端存储的封面图等)
location /uploads/ {
    proxy_pass http://127.0.0.1:30081/uploads/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

域名访问

  • 前端:https://www.1415243231.top/publish_dishboard
  • 后端:https://www.1415243231.top/publish_server

数据库权限

如果遇到 Permission denied on database.db

chown -R www:www /usr/local/publish_dishboard
chmod -R 755 /usr/local/publish_dishboard

然后重启 Java 项目。

完整部署流程

  1. 本地运行 deploy\build.bat,生成 deploy\publish_deploy.zip
  2. 上传 zip 到 NAS/usr/local/publish_dishboard/
  3. 解压覆盖
  4. 重启前后端两个项目(宝塔面板操作)
  5. 访问 https://www.1415243231.top/publish_dishboard