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

186 lines
6.0 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.
---
name: ai-doc-template-system
description: "通用型 AI 文档模板生成系统 — Word 模板标注与 AI 文档生成平台。触发:需要建设/开发/维护 AI 文档模板生成平台时使用。"
version: 1.0.0
metadata:
hermes:
tags: [文档生成, AI, Word模板, 系统建设, FastAPI, Vue3]
related_skills: [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 | 第一版需要精确位置控制 |