Files
2026-07-01 20:13:23 +08:00

6.0 KiB
Raw Permalink Blame History

name, description, version, metadata
name description version metadata
ai-doc-template-system 通用型 AI 文档模板生成系统 — Word 模板标注与 AI 文档生成平台。触发:需要建设/开发/维护 AI 文档模板生成平台时使用。 1.0.0
hermes
tags related_skills
文档生成
AI
Word模板
系统建设
FastAPI
Vue3
requirements-analysis
task-splitting-methodology
prototype-design

AI 文档模板生成系统

一个面向多类文档的"模板管理 + 提示词配置 + AI 内容生成 + Word 样式回填"平台。


系统定位

本系统不是一个纯 Word 在线编辑器,而是一个 Word 模板标注器:

  1. 用户上传 Word → 系统自动解析标题/段落/表格 → 生成预览 HTML
  2. 用户点击文档中的某个区域 → 左侧显示配置表单
  3. 用户配置区域名称、区域类型、数据来源、提示词、输出格式、审核要求
  4. 保存配置后,该区域成为 AI 可生成区域
  5. 后续生成文档时,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 — 上传 docx
  • GET /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 — 下载 Word
  • GET /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 第一版需要精确位置控制