Files
ai-doc-template-system/README.md
T
2026-07-01 20:13:23 +08:00

197 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 文档模板生成系统
> 通用型 AI 文档模板配置与生成平台 — 上传 Word 模板 → 自动解析结构 → 配置 AI 生成规则 → 分章节生成内容 → 回填 Word 模板 → 导出 Word/PDF。
---
## 一句话定位
**Word 模板标注器**:上传 Word 后,系统在页面中间展示文档预览,为每个标题/段落/表格生成唯一 block_id。用户点击预览区某个区域后,左侧显示该区域的提示词配置表单,可设置区域类型、数据来源、提示词、输出格式和审核要求。右侧显示文档结构树,与预览区联动。保存配置后,该区域成为 AI 可生成区域。
---
## 技术栈
| 层 | 技术 | 版本要求 |
|---|------|---------|
| 前端框架 | Vue 3 | ^3.4 |
| 构建工具 | Vite | ^5.x |
| UI 组件库 | Ant Design Vue | ^4.x |
| 状态管理 | Pinia | ^2.x |
| 路由 | Vue Router 4 | ^4.x |
| 后端框架 | Python FastAPI | ^0.110 |
| Python 版本 | Python 3.11+ | |
| 数据库 | MySQL 8.0 | |
| 缓存 | Redis 7.x | 可选 |
| 对象存储 | MinIO | |
| 文档解析 | python-docx | ^1.1 |
| 模板回填 | python-docx-template | ^1.0 |
| PDF 转换 | LibreOffice 无头模式 | |
| 容器化 | Docker + Docker Compose | |
---
## 目录结构
```
ai-doc-template/
├── README.md
├── SKILL.md # Hermes 技能文件
├── AGENTS.md # AI 编码助手指引
├── .gitignore
├── .env.example
├── docker-compose.yml
├── backend/
│ ├── Dockerfile
│ ├── requirements.txt
│ └── app/
│ ├── __init__.py
│ ├── main.py # 应用入口 + FastAPI 实例
│ ├── database.py # 数据库连接 + Session
│ ├── models/
│ │ ├── __init__.py
│ │ ├── template.py # template 表 Model
│ │ ├── template_block.py
│ │ └── block_config.py
│ ├── api/
│ │ ├── __init__.py
│ │ ├── templates.py # 模板上传/查询接口
│ │ ├── blocks.py # 区域配置接口
│ │ └── data_sources.py # 数据源管理接口
│ ├── services/
│ │ ├── __init__.py
│ │ ├── storage.py # MinIO 文件存储
│ │ ├── template_service.py
│ │ ├── doc_parser.py # Word 解析引擎
│ │ └── html_generator.py # HTML 预览生成
│ └── schemas/
│ ├── __init__.py
│ └── template.py # Pydantic 模型
├── frontend/
│ ├── Dockerfile
│ ├── package.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── index.html
│ └── src/
│ ├── main.ts # 入口 + 插件注册
│ ├── App.vue
│ ├── router/
│ │ └── index.ts # 路由配置
│ ├── stores/
│ │ ├── templateStore.ts
│ │ ├── selectionStore.ts
│ │ └── uiStore.ts
│ ├── api/
│ │ └── base.ts # Axios 实例
│ ├── styles/
│ │ └── variables.css # 全局 CSS 变量
│ ├── views/
│ │ ├── TemplateCenter.vue
│ │ └── TemplateEdit.vue
│ └── components/
│ └── TemplateEdit/
│ ├── LeftMenu.vue
│ ├── TopToolbar.vue
│ ├── WordPreview.vue
│ ├── ConfigPanel.vue
│ └── StructureTree.vue
└── docs/
└── architecture.md
```
---
## 快速开始
### 前置依赖
- Docker & Docker Compose
- Python 3.11+
- Node.js 18+
- LibreOffice(可选,PDF 导出需要)
### 启动后端
```bash
# 1. 启动 MySQL + MinIO
docker compose up -d mysql minio
# 2. 安装后端依赖
cd backend
pip install -r requirements.txt
# 3. 复制环境变量
cp ../.env.example .env
# 4. 初始化数据库
alembic upgrade head
# 5. 启动后端
uvicorn app.main:app --reload --port 8000
```
### 启动前端
```bash
cd frontend
npm install
npm run dev
```
### 访问
- 前端页面:http://localhost:5173
- API 文档:http://localhost:8000/docs
- MinIO Consolehttp://localhost:9001
---
## 开发阶段
| 阶段 | 目标 | 预估 |
|------|------|:----:|
| 第一阶段:模板标注 MVP | 上传 Word → 解析 → 预览 → 点击配置 → 保存 | 3-4 周 |
| 第二阶段:生成测试 | 上传资料 → AI 逐区域生成 → 预览结果 | 1-2 周 |
| 第三阶段:回填导出 | block 回填 → Word/PDF 导出 | 1-2 周 |
| 第四阶段:高级功能 | 提示词历史、数据源管理、审核流程等 | 2-3 周 |
---
## 核心流程
### 创建模板
```
上传 Word → 保存原始文件 → 解析标题/段落/表格 → 生成 block_id
→ 生成 HTML 预览 → 用户点击段落 → 配置提示词 → 保存配置
```
### 生成文档
```
选择模板 → 上传资料 → AI 提取结构化数据 → 按区域逐块生成
→ 人工审核修改 → 回填 Word 模板 → 导出 Word/PDF
```
---
## 数据库核心表
| 表名 | 说明 |
|------|------|
| template | 模板基本信息、文件路径、版本 |
| template_block | 解析出的文档区域(标题/段落/表格),含 block_id 和层级 |
| block_config | 用户为每个区域配置的提示词、类型、数据来源等 |
| data_source | 数据源配置 |
---
## 设计原则
1. **Word 保持版式,系统管理结构,AI 生成内容**
2. **HTML 只负责预览和交互,原始 docx 负责最终导出**
3. **block_id 是关键索引**:所有功能(点击、配置、生成、回填)都围绕 block_id
4. **先提取、再生成、再审核、再回填**,不把资料一次性扔给 AI
5. **第一版不做在线 Word 编辑**,聚焦标注和配置