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
+67
View File
@@ -0,0 +1,67 @@
# doc-forge — AI 文档模板生成系统
## 项目概述
上传 Word 模板 → AI 自动解析段落(按标题样式切割)→ 用户标注段落配置 → 上传参考文件 → AI 多段落并行生成 → 预览编辑 → 导出 Word(保留原始样式)。
## 技术栈
| 层 | 技术 | 说明 |
|----|------|------|
| 前端 | Vue 3.4 + TypeScript + Ant Design Vue 4.x + Pinia + Vite 5 | web/ |
| 后端 | Python 3.11+ + FastAPI + SQLAlchemy 2.0 async | backend/app/ |
| 数据库 | MySQL 8.0asyncmy 驱动) | docker-compose mysql |
| 对象存储 | MinIO | 存模板文件、参考文件、生成文档 |
| Word 处理 | python-docx | 解析/导出 |
| Excel 处理 | openpyxl | 解析参考文件 |
## 目录结构
```
doc-forge/
├── web/ 前端
│ └── src/
│ ├── views/ TemplateList, TemplateEditor, ModelManage, GeneratePage, HistoryPage, PreviewEdit
│ ├── components/ ParagraphList, ParagraphConfig, DocPreview, FileUploader, ModelModal, TestModal
│ ├── api/ Axiostemplate, model, generate
│ ├── stores/ Piniatemplate, model, document
│ └── router/ 6 条路由
├── backend/
│ ├── app/
│ │ ├── models/ ORMtemplate, paragraph, ai_model, document, generation_log
│ │ ├── routers/ APItemplates, models, generate, export
│ │ ├── schemas/ Pydantic 校验
│ │ ├── services/ 业务逻辑(parser, ai_service, generator, exporter, minio_client
│ │ └── main.py
│ ├── config.py 配置(MySQL + MinIO + AI
│ └── database.py 异步引擎
├── docs/ 项目文档
├── docker-compose.yml MySQL + MinIO + backend + web
├── init.sql 数据库建表 DDL
├── CLAUDE.md
└── AGENTS.md
```
## 关键约定
### 段落解析规则
- 段落边界由 Word 标题样式(Heading 1~6)确定
- 标题与下一标题之间的正文、表格归属到该标题段落
- 表格独立存储为 `is_table=True`,归属于前一个标题
### AI 输出格式
AI 必须返回结构化 JSON
```json
{"content": [{"type": "text", "text": "..."}, {"type": "table", "headers": [], "rows": []}]}
```
### 文件存储
- 所有文件存 MinIO,不存本地磁盘
- bucket 分三类:templates / uploads / outputs
- MinIO 开发环境在 docker-compose 中启动
### AI 模型调用
- OpenAI 格式:GPT-4o, DeepSeek-V3, 通义千问
- Anthropic 格式:Claude 3.5 Sonnet
- 超时 60s,最多重试 3 次,单文档最大并发 5
### Word 导出
- 从 MinIO 拉取原始模板 → 在内存中修改 → 上传回 MinIO
- 样式完全保留(字体/颜色/行距/页边距/页眉页脚)