init
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
# 模板格式规范
|
||||
|
||||
## 一、对用户(模板提供方)的要求
|
||||
|
||||
### 必须遵守
|
||||
| 要求 | 说明 |
|
||||
|------|------|
|
||||
| 标题样式 | 需要 AI 生成的段落,其标题必须应用 Word 内置标题样式(Heading 1~3) |
|
||||
| 段落独立性 | 每个标题段落的内容应当主题独立,方便 AI 分别生成 |
|
||||
|
||||
### 强烈建议
|
||||
| 建议 | 说明 |
|
||||
|------|------|
|
||||
| 正文提供参考内容 | 标题下的现有文本可作为 AI 生成的上下文,建议保留 |
|
||||
| 表格上方有说明文字 | 表格前最好有一段文字说明,方便定位表格归属 |
|
||||
| 文件名中文 | 模板文件名建议用中文,方便识别 |
|
||||
|
||||
### 不约束
|
||||
| 项 | 说明 |
|
||||
|----|------|
|
||||
| 字体/配色/布局 | 不限,导出时完全保留 |
|
||||
| 页眉页脚 | 不限,导出时完全保留 |
|
||||
| 图片 | 不限,解析时保留占位,导出时保持不动 |
|
||||
| 封面/附录 | 不限,不作为段落处理,导出时保留 |
|
||||
|
||||
## 二、解析规则(面向开发)
|
||||
|
||||
### 2.1 段落检测算法
|
||||
```
|
||||
for each paragraph in document.paragraphs:
|
||||
style = paragraph.style.name
|
||||
|
||||
if style starts with "Heading":
|
||||
→ 新段落开始
|
||||
→ style 等级 = heading level (1~6)
|
||||
→ 该段落为「标题段落」
|
||||
elif style is "Normal" or None:
|
||||
→ 属于上一个标题段落的「正文内容」
|
||||
→ 追加到 paragraph.content
|
||||
elif paragraph is inside a table cell:
|
||||
→ 属于表格内容,跳过段落检测
|
||||
```
|
||||
|
||||
### 2.2 表格归属
|
||||
```
|
||||
当前检测到的表格 → 归属于最近的标题段落
|
||||
if 无标题段落:
|
||||
→ 独立成段,段名 = "表格_{序号}"
|
||||
```
|
||||
|
||||
### 2.3 样式捕获字段
|
||||
对每个标题段落,捕获以下样式信息:
|
||||
```json
|
||||
{
|
||||
"font": {
|
||||
"name": "等线",
|
||||
"eastAsia": "等线",
|
||||
"size": 16,
|
||||
"bold": true,
|
||||
"italic": false,
|
||||
"color": "000000"
|
||||
},
|
||||
"paragraph": {
|
||||
"alignment": "CENTER",
|
||||
"spaceBefore": 12,
|
||||
"spaceAfter": 6,
|
||||
"lineSpacing": 1.5,
|
||||
"firstLineIndent": 0
|
||||
},
|
||||
"headingLevel": 1
|
||||
}
|
||||
```
|
||||
|
||||
### 2.4 表格样式捕获
|
||||
```json
|
||||
{
|
||||
"rows": 5,
|
||||
"cols": 6,
|
||||
"gridSpan": {},
|
||||
"cellStyles": [
|
||||
{
|
||||
"font": {"name": "宋体", "size": 10.5, "bold": false},
|
||||
"shading": "D9E2F3",
|
||||
"alignment": "CENTER",
|
||||
"borders": {"top": "single", "bottom": "single", "left": "single", "right": "single"}
|
||||
}
|
||||
],
|
||||
"tableWidth": 5000
|
||||
}
|
||||
```
|
||||
|
||||
## 三、AI 输出解析规则
|
||||
|
||||
### 3.1 强制输出 JSON
|
||||
```
|
||||
在 prompt 末尾附加:
|
||||
请以 JSON 格式返回,不要包含任何其他说明文字。
|
||||
{
|
||||
"content": [
|
||||
{"type": "text|table", ...}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 3.2 JSON 解析
|
||||
```
|
||||
收到 AI 响应后:
|
||||
1. 尝试解析为 JSON
|
||||
2. 若解析失败,尝试从响应的 ```json ``` 代码块中提取
|
||||
3. 若仍然失败,将整个响应作为纯文本处理(type=text)
|
||||
```
|
||||
|
||||
### 3.3 表格插入
|
||||
```
|
||||
当 type=table:
|
||||
1. 在原始 docx 中找到该段落后面的第一个表格占位
|
||||
2. 删除占位表格的 XML 节点
|
||||
3. 创建新表格(python-docx add_table)
|
||||
4. 逐格填充数据
|
||||
5. 应用模板中该位置的表格样式(边框、底纹、对齐)
|
||||
```
|
||||
|
||||
## 四、段落编辑方式
|
||||
|
||||
### 人工编辑
|
||||
- 段落内容完全由用户手动输入
|
||||
- 不参与 AI 生成流程
|
||||
- 导出时保留用户输入的内容
|
||||
|
||||
### AI 生成
|
||||
- 参与 AI 生成流程
|
||||
- 可配置:生成模型、提示词、参考文件、输出格式
|
||||
- 生成后可在预览编辑页手动修改
|
||||
Reference in New Issue
Block a user