# 方案计划文档管理系统

面向方案、子方案和共享附件全生命周期管理的前后端业务系统。系统提供分类管理、文档上传与下载、共享附件挂载、文档权限、审计统计、回收站恢复和统一中文展示字典。

## 技术栈

- 前端：React 18、TypeScript、Vite、Material UI
- 后端：Python、Flask、SQLAlchemy、Alembic
- 数据库：MySQL 8
- 文件存储：本地文件系统，数据库仅保存安全相对路径
- 接口规范：OpenAPI 3.0.3

## 工程结构

```text
.
├─ backend/                    后端应用、迁移、OpenAPI和自动化测试
│  ├─ dms/                    DMS业务模块
│  ├─ src/                    既有AI信息抽取模块
│  ├─ migrations/             Alembic迁移
│  ├─ openapi/                OpenAPI规格
│  ├─ tests/                  后端自动化测试
│  ├─ dms-storage/            正式运行文件存储（内容不提交Git）
│  └─ dms-test-storage/       本地测试文件存储（不提交Git）
├─ frontend/                   React前端
│  └─ src/features/           按业务领域划分的前端模块
├─ docs/                       计划、提示词和演示资料
├─ deliverables/               本地部署包和交付压缩包（不提交Git）
├─ DMS_FUNCTION_CONTRACT.md    正式功能契约
├─ DMS_API_CONTRACT.md         正式接口契约
└─ FUNCTION_AND_API_SPECIFICATION.md
```

详细文档索引见 [docs/README.md](docs/README.md)。

## 本地运行

### 后端

```powershell
cd backend
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
```

`.env.example` 是配置模板，应用不会自动读取本地 `.env`。运行前应通过进程环境或服务管理器配置至少以下参数：

```text
DMS_DATABASE_URL
DMS_JWT_SECRET
DMS_STORAGE_ROOT
```

开发启动：

```powershell
python app.py
```

默认后端地址为 `http://127.0.0.1:8754`，健康检查为：

```text
GET /api/v1/health
```

数据库迁移：

```powershell
alembic -c migrations/alembic.ini upgrade head
```

### 前端

```powershell
cd frontend
npm install
npm run dev
```

默认开发端口由 `vite.config.ts` 配置为 `9345`。生产接口基础路径通过 `VITE_API_BASE_URL` 配置。

## 验证

后端：

```powershell
cd backend
python -m pytest
```

前端：

```powershell
cd frontend
npm run typecheck
npm run test
npm run build
```

自动化测试源码属于正式工程质量资产，应保留在仓库中；缓存、覆盖率、运行日志和隔离测试存储不提交Git。

## 配置与数据边界

- 数据库连接、JWT密钥、存储根目录和AI密钥通过安全环境配置提供。
- UI中文展示字典默认位于 `backend/dms/resources/ui-dictionaries.zh-CN.json`。
- 业务文件保存在 `DMS_STORAGE_ROOT`，数据库只保存相对路径、大小和SHA-256。
- `.env`、运行日志、构建目录、部署包和存储文件均不提交Git。

## 当前基线

- 功能契约：1.2
- API契约：1.2
- OpenAPI：1.2.0
- 数据库迁移最新版本：`0002_add_restore_audit_action`
- Q1统一UI字典、分类层级和真实认证已通过独立验收
