模板在线编辑与导出链路重构
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# AI 文档模板生成系统 · 模板在线编辑重构任务拆解清单
|
||||
|
||||
总工期估算:4-6 周(两人并行:前端 + 后端)
|
||||
|
||||
## 第一阶段:方案定稿与数据结构升级(第 1 周)
|
||||
|
||||
### 产品方案与交互定稿(2-3 天)
|
||||
- [ ] 明确“在线编辑模式 / AI 选区模式”双模式交互
|
||||
- [ ] 明确块类型定义(标题块 / 正文块 / 表格块 / AI 块 / 变量块)
|
||||
- [ ] 明确 AI 选区后的操作菜单(设为 AI / 设为固定内容 / 设为变量)
|
||||
- [ ] 明确模板保存后的基线含义(保存即修改模板源内容)
|
||||
- [ ] 明确导出时的填充规则(固定内容保留,AI 块填充,变量块替换)
|
||||
- [ ] 输出交互原型说明文档
|
||||
|
||||
### 数据模型升级(2-3 天)
|
||||
- [x] 新增模板块表 `template_blocks`
|
||||
- [x] 定义块字段(block_type / sort_index / parent_id / anchor_ref / content_json / style_json / edit_mode)
|
||||
- [x] 为 AI 块补充字段(placeholder_key / model_id / prompt_text / need_file / output_format)
|
||||
- [x] 为变量块补充字段(variable_key / default_value)
|
||||
- [x] 保留旧 `paragraphs` 结构用于兼容过渡
|
||||
- [x] 输出数据库增量 SQL
|
||||
|
||||
## 第二阶段:模板解析器重构(第 1-2 周)
|
||||
|
||||
### Word 块级解析(4-5 天)
|
||||
- [x] 解析 `.docx` 为块流结构,而不只按 Heading 识别段落
|
||||
- [x] 识别标题块
|
||||
- [x] 识别普通正文块
|
||||
- [x] 识别表格块
|
||||
- [ ] 识别空白分隔块
|
||||
- [ ] 为每个块记录原始位置索引与样式快照
|
||||
- [x] 输出新的块级 JSON 结构
|
||||
|
||||
### 特殊区域识别(2-3 天)
|
||||
- [ ] 识别封面区内容(标题 / 日期 / 负责人 / 单位等)
|
||||
- [ ] 识别摘要区内容
|
||||
- [ ] 识别未使用 Heading 的小节正文
|
||||
- [x] 识别连续正文中的可拆分候选块
|
||||
- [ ] 输出模板体检提示信息
|
||||
|
||||
## 第三阶段:模板在线编辑器重构(第 2-3 周)
|
||||
|
||||
### 中间编辑画布(4-5 天)
|
||||
- [x] 将当前段落预览区改造为块级编辑画布
|
||||
- [x] 支持标题块直接编辑
|
||||
- [x] 支持正文块直接编辑
|
||||
- [ ] 支持表格块展示与基础编辑
|
||||
- [x] 支持块新增
|
||||
- [x] 支持块删除
|
||||
- [x] 支持块上移 / 下移
|
||||
- [ ] 支持块拆分 / 合并
|
||||
|
||||
### 编辑模式与 AI 选区模式(3-4 天)
|
||||
- [ ] 增加“在线编辑模式 / AI 选区模式”切换
|
||||
- [ ] 在线编辑模式下支持直接修改模板内容
|
||||
- [ ] AI 选区模式下支持鼠标选中一段内容
|
||||
- [ ] 选中内容后可设为 AI 块
|
||||
- [ ] 选中内容后可设为变量块
|
||||
- [ ] 支持在当前位置后插入新的 AI 块
|
||||
- [ ] 支持取消 AI 标记并恢复为固定内容
|
||||
|
||||
### 左右侧配置区联动(2-3 天)
|
||||
- [x] 左侧块列表与中间编辑画布联动高亮
|
||||
- [x] 右侧根据当前选中块显示不同配置项
|
||||
- [x] AI 块显示模型 / 提示词 / 文件要求 / 输出格式配置
|
||||
- [x] 变量块显示变量名 / 默认值配置
|
||||
- [x] 固定块显示只读或基础编辑信息
|
||||
|
||||
## 第四阶段:模板保存与模板源同步写回(第 3 周)
|
||||
|
||||
### 模板保存链路重构(3-4 天)
|
||||
- [ ] 保存模板时持久化块结构而非仅保存段落配置
|
||||
- [ ] 保存模板时同步生成最新模板快照
|
||||
- [ ] 将最新模板快照写回模板源 `.docx`
|
||||
- [ ] 保存后重新加载模板时展示最新编辑结果
|
||||
- [ ] 补充模板版本或快照记录
|
||||
|
||||
### 模板源写回引擎(3-4 天)
|
||||
- [ ] 支持标题块写回
|
||||
- [ ] 支持正文块写回
|
||||
- [ ] 支持删除块后同步从模板源移除
|
||||
- [ ] 支持移动块后同步更新模板顺序
|
||||
- [ ] 支持新增块后同步插入模板源
|
||||
- [ ] 处理第一页封面区块写回
|
||||
|
||||
## 第五阶段:生成链路适配(第 3-4 周)
|
||||
|
||||
### AI 生成任务改造(3-4 天)
|
||||
- [ ] 生成任务由“按段落”改为“按 AI 块”
|
||||
- [ ] 固定块不参与 AI 生成
|
||||
- [ ] 变量块按规则填充值
|
||||
- [ ] AI 块支持单块测试生成
|
||||
- [ ] AI 块支持多块批量生成
|
||||
- [ ] AI 块支持失败回退与重试
|
||||
|
||||
### 文件与提示词链路适配(2-3 天)
|
||||
- [ ] 文件上传改为绑定 AI 块
|
||||
- [ ] 历史文件复用继续兼容
|
||||
- [ ] 提示词配置迁移到 AI 块级别
|
||||
- [ ] 输出格式配置迁移到 AI 块级别
|
||||
|
||||
## 第六阶段:导出引擎重构(第 4-5 周)
|
||||
|
||||
### Word 导出写回(4-5 天)
|
||||
- [ ] 导出基于“最新模板快照”而不是原始导入模板
|
||||
- [ ] 固定块保持模板编辑后的最终内容
|
||||
- [ ] AI 块按占位位置写回生成结果
|
||||
- [ ] 变量块按变量值替换
|
||||
- [ ] 支持同一位置下多块顺序写回
|
||||
- [ ] 支持文字与表格混排导出
|
||||
- [ ] 保留主要样式与段落结构
|
||||
|
||||
### 导出正确性校验(2-3 天)
|
||||
- [ ] 校验删除块后导出无残留
|
||||
- [ ] 校验调整顺序后导出顺序正确
|
||||
- [ ] 校验第一页内容导出正确
|
||||
- [ ] 校验摘要区内容导出正确
|
||||
- [ ] 校验多级标题结构导出正确
|
||||
|
||||
## 第七阶段:联调、修边与验收(第 5-6 周)
|
||||
|
||||
- [ ] 用真实复杂模板联调(含封面 / 摘要 / 多级标题 / 表格)
|
||||
- [ ] 验证第一页块可删除、可调整、可导出
|
||||
- [ ] 验证保存模板后再次进入能看到最新模板内容
|
||||
- [ ] 验证 AI 选区转块后的生成与导出闭环
|
||||
- [ ] 验证历史生成记录兼容旧数据
|
||||
- [ ] 完善错误提示、加载状态与操作反馈
|
||||
- [ ] 补充模板编辑使用说明
|
||||
|
||||
## 阶段交付物
|
||||
|
||||
| 阶段 | 交付物 |
|
||||
|------|--------|
|
||||
| 第 1 周 | 在线编辑方案、块模型设计、数据库增量方案 |
|
||||
| 第 2 周 | 新版模板解析器、块级 JSON 结构、模板体检提示 |
|
||||
| 第 3 周 | 块级在线编辑器、AI 选区模式、模板保存链路 |
|
||||
| 第 4-5 周 | AI 块生成链路、导出写回引擎、真实模板导出闭环 |
|
||||
| 第 6 周 | 全流程联调通过、使用说明与验收结果 |
|
||||
@@ -0,0 +1,28 @@
|
||||
CREATE TABLE IF NOT EXISTS template_blocks (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
template_id INT NOT NULL,
|
||||
source_paragraph_id INT DEFAULT NULL COMMENT '来源段落 ID',
|
||||
parent_block_id INT DEFAULT NULL COMMENT '父块 ID',
|
||||
sort_index INT DEFAULT 0 COMMENT '排序',
|
||||
block_type VARCHAR(30) DEFAULT 'text' COMMENT 'heading/text/table/ai_slot/variable',
|
||||
anchor_ref VARCHAR(500) DEFAULT '' COMMENT '原始锚点引用',
|
||||
title VARCHAR(500) DEFAULT '' COMMENT '块标题',
|
||||
content_json TEXT DEFAULT '{}' COMMENT '块内容 JSON',
|
||||
style_json TEXT DEFAULT '{}' COMMENT '块样式 JSON',
|
||||
edit_mode VARCHAR(20) DEFAULT 'manual' COMMENT 'manual/ai',
|
||||
placeholder_key VARCHAR(120) DEFAULT '' COMMENT 'AI 占位键',
|
||||
variable_key VARCHAR(120) DEFAULT '' COMMENT '变量键',
|
||||
default_value TEXT DEFAULT '' COMMENT '默认值',
|
||||
model_id INT DEFAULT NULL COMMENT '指定模型',
|
||||
need_prompt TINYINT(1) DEFAULT 1 COMMENT '是否需要提示词',
|
||||
prompt_text TEXT DEFAULT '' COMMENT '预设提示词',
|
||||
need_file TINYINT(1) DEFAULT 0 COMMENT '是否需要参考文件',
|
||||
file_note TEXT DEFAULT '' COMMENT '备注说明',
|
||||
output_format VARCHAR(20) DEFAULT 'text' COMMENT 'text/table/mixed/chart',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
CONSTRAINT fk_template_blocks_template FOREIGN KEY (template_id) REFERENCES templates(id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_template_blocks_paragraph FOREIGN KEY (source_paragraph_id) REFERENCES paragraphs(id) ON DELETE SET NULL,
|
||||
CONSTRAINT fk_template_blocks_parent FOREIGN KEY (parent_block_id) REFERENCES template_blocks(id) ON DELETE SET NULL,
|
||||
CONSTRAINT fk_template_blocks_model FOREIGN KEY (model_id) REFERENCES ai_models(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
Reference in New Issue
Block a user