doc-forge-remark/CLAUDE.md

68 lines
2.8 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.

# doc-forge — AI 文档模板生成系统
## 项目概述
上传 Word 模板 → AI 自动解析段落(按标题样式切割)→ 用户标注段落配置 → 上传参考文件 → AI 多段落并行生成 → 预览编辑 → 导出 Word保留原始样式
## 技术栈
| 层 | 技术 | 说明 |
|----|------|------|
| 前端 | Vue 3.4 + TypeScript + Ant Design Vue 4.x + Pinia + Vite 5 | web/ |
| 后端 | Python 3.11+ + FastAPI + SQLAlchemy 2.0 async | backend/app/ |
| 数据库 | MySQL 8.0asyncmy 驱动) | docker-compose mysql |
| 对象存储 | MinIO | 存模板文件、参考文件、生成文档 |
| Word 处理 | python-docx | 解析/导出 |
| Excel 处理 | openpyxl | 解析参考文件 |
## 目录结构
```
doc-forge/
├── web/ 前端
│ └── src/
│ ├── views/ TemplateList, TemplateEditor, ModelManage, GeneratePage, HistoryPage, PreviewEdit
│ ├── components/ ParagraphList, ParagraphConfig, DocPreview, FileUploader, ModelModal, TestModal
│ ├── api/ Axiostemplate, model, generate
│ ├── stores/ Piniatemplate, model, document
│ └── router/ 6 条路由
├── backend/
│ ├── app/
│ │ ├── models/ ORMtemplate, paragraph, ai_model, document, generation_log
│ │ ├── routers/ APItemplates, models, generate, export
│ │ ├── schemas/ Pydantic 校验
│ │ ├── services/ 业务逻辑parser, ai_service, generator, exporter, minio_client
│ │ └── main.py
│ ├── config.py 配置MySQL + MinIO + AI
│ └── database.py 异步引擎
├── docs/ 项目文档
├── docker-compose.yml MySQL + MinIO + backend + web
├── init.sql 数据库建表 DDL
├── CLAUDE.md
└── AGENTS.md
```
## 关键约定
### 段落解析规则
- 段落边界由 Word 标题样式Heading 1~6确定
- 标题与下一标题之间的正文、表格归属到该标题段落
- 表格独立存储为 `is_table=True`,归属于前一个标题
### AI 输出格式
AI 必须返回结构化 JSON
```json
{"content": [{"type": "text", "text": "..."}, {"type": "table", "headers": [], "rows": []}]}
```
### 文件存储
- 所有文件存 MinIO不存本地磁盘
- bucket 分三类templates / uploads / outputs
- MinIO 开发环境在 docker-compose 中启动
### AI 模型调用
- OpenAI 格式GPT-4o, DeepSeek-V3, 通义千问
- Anthropic 格式Claude 3.5 Sonnet
- 超时 60s最多重试 3 次,单文档最大并发 5
### Word 导出
- 从 MinIO 拉取原始模板 → 在内存中修改 → 上传回 MinIO
- 样式完全保留(字体/颜色/行距/页边距/页眉页脚)