# Server

后端已按 `FastAPI + PostgreSQL + SQLAlchemy + Alembic` 起好基础工程。

## 为什么先选 PostgreSQL

这个项目是报销、审批、员工、流程、审计记录为主，核心特点是：

- 强事务
- 多表关联明显
- 审批流和审计日志需要一致性
- 后续大概率要做复杂查询、统计和条件筛选

这类系统优先选关系型数据库更合适，`PostgreSQL` 是当前默认推荐。

## Redis 要不要现在上

现在 **不是必须**。

先不把 Redis 作为启动前置，原因很直接：

- 当前第一阶段先把核心业务表、接口、权限、审批流跑通
- 如果一开始就把 Redis 绑死，会增加部署和排障复杂度

Redis 更适合后面这些场景：

- 登录态 / token 黑名单
- 热点数据缓存
- 限流
- 分布式锁
- 消息队列 / 后台任务

所以现在的策略是：

- 主数据库：`PostgreSQL`
- Redis：`可选能力`，配置已预留，但不是必需依赖

## 目录

- `src/app/`：应用代码
- `alembic/`：数据库迁移
- `tests/`：测试

## 启动

1. 创建虚拟环境并安装依赖

```bash
cd server
python -m venv .venv
.venv\\Scripts\\activate
pip install -e .[dev]
```

2. 在项目根目录准备环境变量

```bash
copy ..\\.env.example ..\\.env
```

3. 启动服务

```bash
uvicorn app.main:app --reload --app-dir src
```

## 迁移

```bash
alembic upgrade head
```
