This commit is contained in:
zwt13703
2026-07-02 14:48:05 +08:00
parent a1a314cf99
commit e558733f05
64 changed files with 3258 additions and 1 deletions
+78 -1
View File
@@ -1,3 +1,80 @@
# doc-forge
《文档锻造》
上传 Word 模板 → AI 逐段落生成 → 导出保留原始样式的 Word 文档。
## 技术栈
- **前端**: Vue 3.4 + Vite 5 + TypeScript + Ant Design Vue 4.x + Pinia + Axios
- **后端**: Python 3.11+ + FastAPI + SQLAlchemy 2.0 async
- **数据库**: MySQL 8.0asyncmy 驱动)
- **对象存储**: MinIO(模板/参考文件/导出文档)
- **文档处理**: python-docx、openpyxl
## 快速开始
```bash
# 1. 启动基础设施(MySQL + MinIO
docker-compose up -d mysql minio
# 2. 启动后端
cd backend
pip install -r requirements.txt
python main.py
# → http://localhost:8000/docs Swagger
# 3. 启动前端
cd web
pnpm install
pnpm dev
# → http://localhost:5173
```
## 目录结构
```
doc-forge/
├── web/ Vue 3 前端
│ └── src/
│ ├── views/ 6 个页面
│ ├── components/ 6 个通用组件
│ ├── api/ Axios 请求层
│ ├── stores/ Pinia 状态管理
│ └── router/ 路由配置
├── backend/ Python FastAPI 后端
│ ├── app/models/ ORM 数据模型
│ ├── app/routers/ API 路由
│ ├── app/schemas/ Pydantic 校验
│ ├── app/services/ 业务逻辑层
│ ├── config.py 配置
│ └── database.py 异步数据库引擎
├── docker-compose.yml MySQL + MinIO + 后端 + 前端
├── init.sql 数据库建表 DDL
└── docs/ 项目文档
```
## 核心流程
```
上传模板 → 解析段落 → 标注配置 → 保存模板
→ 执行生成(上传文件 → AI 并行生成 → SSE 进度)
→ 预览编辑 → 导出 Word(保留原始样式)
```
## 关键设计
| 决策 | 选择 | 原因 |
|------|------|------|
| 段落边界 | Word 标题样式 Heading 1~6 | 稳定可靠,用户学习成本低 |
| AI 输出 | 结构化 JSON | 支持文字+表格混合,后端可控解析 |
| 导出策略 | 基于原模板替换内容 | 样式零损失,不限模板格式 |
| 文件存储 | MinIO 对象存储 | 可扩展,不占用本地磁盘 |
| 数据库 | MySQL 8.0 | 生产级可靠性 |
| 生成方式 | 多段落并行 asyncio.gather | 大幅缩短等待时间 |
## 环境要求
- Python 3.11+
- Node.js 18+
- pnpm 8+
- Docker + docker-composeMySQL + MinIO
- LibreOffice(可选,用于 PDF 导出)