6.0 KiB
6.0 KiB
name, description, version, metadata
| name | description | version | metadata | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ai-doc-template-system | 通用型 AI 文档模板生成系统 — Word 模板标注与 AI 文档生成平台。触发:需要建设/开发/维护 AI 文档模板生成平台时使用。 | 1.0.0 |
|
AI 文档模板生成系统
一个面向多类文档的"模板管理 + 提示词配置 + AI 内容生成 + Word 样式回填"平台。
系统定位
本系统不是一个纯 Word 在线编辑器,而是一个 Word 模板标注器:
- 用户上传 Word → 系统自动解析标题/段落/表格 → 生成预览 HTML
- 用户点击文档中的某个区域 → 左侧显示配置表单
- 用户配置区域名称、区域类型、数据来源、提示词、输出格式、审核要求
- 保存配置后,该区域成为 AI 可生成区域
- 后续生成文档时,AI 根据各区域提示词生成内容并回填到原 Word
技术架构
| 层 | 选型 | 说明 |
|---|---|---|
| 前端 | Vue3 + Vite + Ant Design Vue + Pinia | 组件化单页应用 |
| 后端 | Python FastAPI | RESTful API |
| 数据库 | MySQL 8.0 + SQLAlchemy + Alembic | 关系型数据 |
| 文件存储 | MinIO / 本地文件系统 | 模板和资料文件 |
| 文档解析 | python-docx | 读取 Word 结构 |
| 模板回填 | python-docx-template | 内容回填 Word |
| AI 集成 | 大模型 API + LangChain | 内容生成 |
| 容器化 | Docker + Docker Compose | 一键部署 |
目录结构
ai-doc-template/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI 入口 + CORS
│ │ ├── database.py # MySQL + SQLAlchemy
│ │ ├── models/ # SQLAlchemy Model 定义
│ │ ├── api/ # RESTful 路由
│ │ ├── services/ # 业务逻辑层
│ │ └── schemas/ # Pydantic 请求/响应
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── views/ # 页面级组件
│ │ ├── components/ # 业务组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── api/ # Axios API 客户端
│ │ └── styles/ # 全局样式变量
│ └── package.json
├── docker-compose.yml
├── .env.example
└── README.md
数据库表
详见 后端开发 > 数据模型,核心三张表:
template — 模板
| 字段 | 说明 |
|---|---|
| id, name, type, version | 基本信息 |
| original_file_path | 原始 docx 存储路径 |
| status | 1=启用, 0=停用 |
template_block — 文档区域
| 字段 | 说明 |
|---|---|
| template_id | 所属模板 |
| block_id | 唯一标识(block_001) |
| block_type | title/heading/paragraph/table |
| level | 层级(0/1/2) |
| parent_block_id | 父级 |
| table_rows, table_cols | 表格行列 |
block_config — 区域配置
| 字段 | 说明 |
|---|---|
| template_id + block_id | 联合唯一键 |
| region_type | ai_generate/manual/fixed/table |
| prompt | 提示词 |
| data_sources | 数据来源列表(JSON) |
| need_review | 是否需要审核 |
API 接口清单
模板
POST /api/templates/upload— 上传 docxGET /api/templates/{id}— 模板详情(含预览 HTML + blocks + 配置)
区域配置
POST /api/templates/{id}/blocks/{blockId}/config— 保存/更新区域配置GET /api/data-sources— 数据源列表POST /api/data-sources— 新增数据源
生成(后续阶段)
POST /api/templates/{id}/generate-test— 生成测试GET /api/tasks/{id}/download-docx— 下载 WordGET /api/tasks/{id}/download-pdf— 下载 PDF
开发任务(第一阶段 MVP)
共 73 个任务,按模块分组:
| 模块 | 任务数 | 核心产出 |
|---|---|---|
| 环境搭建 | 11 | FastAPI + Vue3 项目骨架 + Docker |
| 数据库建表 | 3 | template, template_block, block_config |
| 模板上传 | 4 | 文件接收校验 → 存储 → 入库 |
| Word 解析 | 7 | 标题/段落/表格识别 → block_id → 结构树 |
| HTML 预览 | 4 | heading/paragraph/table 转 HTML |
| 查询+配置接口 | 4 | 详情查询、配置保存、数据源 |
| 四栏布局 | 6 | 菜单/工具栏/预览/配置/树 shell |
| 左侧菜单 | 3 | 数据模型、展开收起、高亮 |
| 工具栏 | 4 | 面包屑、版本号、保存状态、操作按钮 |
| Word 预览区 | 7 | v-html渲染、点击、高亮、颜色、标签、缩放 |
| 结构树 | 4 | 递归组件、展开折叠、状态圆点、滚动联动 |
| 配置面板 | 9 | 名称/类型/数据源/提示词/审核/备注/保存 |
| Pinia Store | 3 | templateStore, selectionStore, uiStore |
| 三区联动 | 4 | watch 驱动的配置加载、树同步、loading |
详见 docs/tasks-v3.md
开发阶段规划
第一阶段:模板标注 MVP(3-4 周)
核心流程:上传 Word → 解析 → 预览 → 点击配置 → 保存
交付物:
- 可用的模板编辑页面(四栏布局)
- Word 解析服务(标题/段落/表格)
- 区域配置面板(类型/提示词/数据来源)
- 结构树联动
第二阶段:生成测试(1-2 周)
- 上传资料 → AI 逐区域生成 → 预览结果 → 人工编辑
第三阶段:回填导出(1-2 周)
- block 回填原始 Word → Word/PDF 导出
第四阶段:高级功能(2-3 周)
- 提示词历史、数据源管理、审核流程
关键设计决策
| 决策 | 原因 |
|---|---|
| 不做 Word→HTML→Word 转换 | 格式丢失严重,Word 做底座 |
| HTML 只预览,docx 负责导出 | 分离预览和最终输出 |
| block_id 作为统一索引 | 解析、配置、生成、回填共享同一定位 |
| 分阶段迭代 | MVP 先跑通标注流程 |
| python-docx 而非 docxtpl | 第一版需要精确位置控制 |