# 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.0(asyncmy 驱动) - **对象存储**: 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-compose(MySQL + MinIO) - LibreOffice(可选,用于 PDF 导出)