# 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 Console:http://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 编辑**,聚焦标注和配置