# 会议核销SaaS 开发启动说明

## 目录
- `backend/`：Spring Boot 后端工程（按模块分包）。
- `frontend/`：Vue3 + Element Plus 前端工程（按模块路由）。
- `基金会、协会、北京欣欣会议核销系统_完整版.md`：业务需求文档。
- `会议核销SaaS系统_技术开发文档.md`：技术开发文档。

## 当前已落地MVP模块
- 后端核心接口
  - `GET /api/system/health`
  - `GET/POST /api/projects`
  - `POST /api/projects/{id}/freeze`
  - `GET/POST /api/meetings`
  - `POST /api/meetings/{id}/submit`
  - `GET /api/audits/tasks`
  - `POST /api/audits/tasks/{id}/approve`
  - `POST /api/audits/tasks/{id}/reject`
  - `POST /api/audits/tasks/{id}/return`
  - `GET /api/finance/projects`
  - `POST /api/finance/payments`
- 后端分层结构
  - 已按 `controller/service/repository/model/dto` 分层。
  - 已实现业务异常、参数校验、统一响应结构、错误码处理。
- 数据库与初始化
  - `backend/src/main/resources/db/schema.sql`
  - `backend/src/main/resources/db/data.sql`
- 调度任务（无MQ）
  - 已实现 `Scheduler + async_job` 内存版执行机制、重试与幂等防重。
- 前端模块页面
  - 项目管理（新建/冻结/列表）
  - 会议管理（新建/会议级提交）
  - 审核管理（通过/拒绝/退回）
  - 财务管理（支付确认/列表）

## 第二阶段已落地
- 持久化升级
  - 新增 JDBC 仓储实现（项目/会议/审核/支付/任务）。
  - 支持通过 `APP_REPOSITORY_MODE` 切换 `jdbc` 与 `in-memory`。
- 数据库迁移
  - 新增 Flyway 迁移脚本：
    - `backend/src/main/resources/db/migration/V1__init_schema.sql`
    - `backend/src/main/resources/db/migration/V2__seed_data.sql`
- 系统设置基础模块
  - 后端新增用户与角色接口：`/api/users`、`/api/roles`
  - 前端新增用户管理、角色管理页面与菜单。
- 文件能力
  - 新增 OSS 预签名下载接口：`GET /api/files/presign-download`

## 第三阶段当前进展（已完成）
- 认证与鉴权
  - 新增 JWT 登录接口：`POST /api/auth/login`
  - 新增鉴权拦截器：统一校验 `Authorization: Bearer <token>`
  - 新增 RBAC 权限注解：`@RequirePermission`
- 权限落地
  - 项目、会议、审核、财务关键写操作已接入权限码校验。
- Flyway 迁移增强
  - 新增 `V3__auth_rbac_seed.sql`，补齐用户、角色、权限与映射初始化数据。
- 前端登录与路由守卫
  - 新增登录页 `/login`
  - 未登录自动跳转登录，token 过期自动清理并回登录页。
  - 新增退出登录按钮。

## 启动方式

### 后端
1. 配置 `backend/src/main/resources/application.yml` 中的 MySQL 与 OSS 参数。
2. 在 `backend` 目录执行：
   - `mvn spring-boot:run`

### 前端
1. 在 `frontend` 目录执行：
   - `npm install`
   - `npm run dev`

## 测试与构建

### 后端
- 在 `backend` 目录执行：
  - `mvn clean test`

### 前端
- 在 `frontend` 目录执行：
  - `npm run build`

## 试运行与发布
- 试运行与回滚预案见：
  - `docs/MVP_试运行与发布回滚预案.md`

## 下一阶段建议
1. 接入真实 MySQL 持久化仓储（替换内存仓储）。
2. 完成租户/用户/角色/权限模块。
3. 完善审核流配置化与任务告警通知通道。
4. 落地 OSS 上传、模板治理、专家模块。
