主题
AI 写作 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - AI 写作 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-22 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P1 |
一、功能概述
1.1 功能定位
AI 写作是 PMForge 平台的智能内容生产模块——如果说 AI 对话是"一问一答的咨询顾问",那 AI 写作就是"按模板批量出稿的文案工厂"。用户不需要从零构思,只需选好模板、填入关键信息(项目名称、完成事项、风格偏好等),AI 就能按预设的提示词框架自动生成结构化内容。模块涵盖模板分类体系 → 模板配置(含变量参数) → 模板写作 → 自由写作 → 内容编辑/导出 → 写作历史完整链路。
通俗理解:把 AI 写作想象成一台"智能填空机"。运营搭好框架(模板),标出需要填的空(变量参数),用户只需把关键信息填进去,机器就自动输出一篇结构完整的文章。就像填表格报税比手写报告容易得多——模板写作降低了 AI 使用门槛,让不懂提示词工程的普通用户也能产出高质量内容。
本模块与 AI 对话共享底层模型配置(07-01),统一由 AI 模型管理提供服务商接入能力,避免重复配置。
1.2 目标用户
| 用户类型 | 核心诉求 | 使用频率 |
|---|---|---|
| 运营人员 | 创建高质量模板、分析使用数据、持续优化模板库 | 初期高频,日常中频 |
| 普通用户 | 用模板快速生成周报/邮件/文案,减少写作时间 | 每日高频 |
| 内容创作者 | 批量生成营销文案、个性化调整、高效导出发布 | 每日高频 |
| 租户管理员 | 管理租户写作模板、设置配额、查看统计 | 每周低频 |
| 超级管理员 | 管理全局写作参数、监控 Token 消耗与费用 | 每周低频 |
1.3 业务价值
| 价值维度 | 具体收益 | 衡量指标 |
|---|---|---|
| 降低写作门槛 | 模板化填空替代从零构思,不懂提示词也能用 | 用户首次使用成功率 > 90% |
| 提升内容质量 | 专业提示词框架保证输出结构完整 | 模板生成内容可用率 > 80% |
| 缩短写作时间 | 周报/邮件等重复性写作从30分钟降至2分钟 | 平均生成耗时 < 15秒 |
| 支撑运营决策 | 模板使用数据分析驱动模板优化 | 模板月活跃使用率 > 60% |
| 统一资源管控 | 与 AI 对话共享模型,配额统一管理 | Token 消耗可追溯、可控制 |
1.4 功能范围
| 功能分类 | 后台管理端 | 前台用户端 |
|---|---|---|
| 写作模板管理(CRUD) | ✅ | ❌ |
| 模板分类管理 | ✅ | ❌ |
| 写作记录管理 | ✅ | ❌ |
| 写作统计分析 | ✅ | ❌ |
| 全局写作配置 | ✅ | ❌ |
| 写作主页(模板浏览/搜索) | ❌ | ✅ |
| 模板选择写作(填参→生成) | ❌ | ✅ |
| 自由写作 | ❌ | ✅ |
| 流式内容生成 | ❌ | ✅ |
| 内容编辑/复制/导出 | ❌ | ✅ |
| 写作历史管理 | ❌ | ✅ |
| 写作风格/长度控制 | ❌ | ✅ |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 运营小陈 | 负责写作模板库的创建与维护 | 模板创建流程清晰,提示词支持变量占位,可提供示例参考 |
| 产品经理小刘 | 日常需要写大量周报、邮件、文档 | 模板参数清晰易懂,生成内容质量高,支持二次编辑 |
| 内容创作者小赵 | 专业内容生产,批量输出营销文案 | 批量生成、个性化调整、高效导出 |
| 租户管理员老张 | 管理租户内 AI 写作使用 | 灵活设置配额,查看使用统计,控制成本 |
2.2 使用场景
场景1:运营小陈创建"项目周报生成器"模板
- 前置条件:小陈已登录后台,拥有模板管理权限
- 操作流程:
- 进入"AI 写作 → 模板管理"页面
- 点击"新增模板"
- 选择分类"办公效率",填写模板名称"项目周报生成器"
- 编写提示词模板,使用变量占位符:
{项目名称}、{本周完成}、{下周计划}、{风险问题} - 配置变量参数表单(定义每个变量的显示名称、类型、是否必填、占位提示)
- 填写示例输入和示例输出,点击"预览"验证效果
- 设置输出格式为 Markdown,保存并启用
- 期望结果:模板创建流程清晰,预览功能可即时验证生成效果
- 验收标准:
- AC1:提示词中的
{变量名}与变量参数列表一一对应,保存时自动校验一致性 - AC2:预览功能使用示例输入调用 AI 模型,30秒内返回生成结果
- AC3:变量参数支持文本、数字、下拉选择、日期四种字段类型
- AC4:新增模板默认状态为"禁用",需手动启用后用户才可见
- AC5:模板保存成功后,使用次数初始化为 0
- AC1:提示词中的
场景2:产品经理小刘用模板写周报
- 前置条件:小刘已登录,"项目周报生成器"模板已启用
- 操作流程:
- 进入 AI 写作主页,浏览分类找到"办公效率"
- 点击"项目周报生成器"卡片
- 填写参数:项目名称="PMForge"、本周完成="完成 AI 模块开发"、下周计划="启动测试"、风险问题="模型 API 配额紧张"
- (可选)在高级选项中调整写作风格为"正式商务"、输出长度为"中等"
- 点击"生成",流式输出生成内容
- 微调个别段落后点击"复制"
- 期望结果:填写参数后一键生成,内容结构完整、语言专业
- 验收标准:
- AC1:必填参数未填完时"生成"按钮置灰,hover 提示缺失字段
- AC2:流式输出首字延迟 < 3秒,字符间隔 < 100ms
- AC3:生成完成后自动创建一条写作记录,模板使用次数 +1
- AC4:编辑操作不影响原始生成记录,支持"恢复原始生成"
- AC5:复制功能支持"复制为 Markdown"和"复制为纯文本"两种模式
场景3:内容创作者小赵自由写作
- 前置条件:小赵已登录
- 操作流程:
- 点击"自由写作"入口
- 输入提示词:"帮我写一封感谢客户张总长期合作的商务信函"
- 选择写作风格"正式商务"、输出长度"中等(500-800字)"
- 点击生成,流式输出
- 对个别措辞不满意,追加指令"第三段语气再委婉一些"
- 导出为 Markdown 文件
- 期望结果:自由模式灵活度高,支持追加指令迭代优化
- 验收标准:
- AC1:自由写作提示词最大输入 4000 字符,超出截断并提示
- AC2:写作风格通过追加系统提示词实现,不影响用户原始输入
- AC3:追加指令基于已有生成内容继续优化,不重新从头生成
- AC4:导出 Markdown 文件包含完整内容,格式正确可渲染
- AC5:自由写作同样创建写作记录,type 标记为"自由写作"
场景4:租户管理员老张设置写作配额
- 前置条件:老张已登录后台,拥有配额管理权限
- 操作流程:
- 进入"AI 写作 → 全局配置"
- 设置每用户每日最大写作次数为 30 次
- 设置每用户每日最大 Token 数为 50,000
- 保存配置
- 查看写作统计,发现某用户今日已使用 28/30 次
- 期望结果:配额控制生效,超出时用户收到友好提示
- 验收标准:
- AC1:配额修改后即时生效,无需重启
- AC2:用户超出每日次数时,生成接口返回明确错误码和提示信息
- AC3:统计页面展示配额使用进度(已用/总量)
- AC4:每日配额在凌晨 00:00 自动重置
- AC5:全局配置与 AI 对话模块的配额独立计算,互不影响
三、功能需求
3.1 后台管理端
3.1.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 写作模板列表 | P0 | 分页展示所有写作模板 |
| 新增写作模板 | P0 | 创建新的写作模板(含变量参数配置) |
| 编辑写作模板 | P0 | 修改已有模板配置 |
| 删除写作模板 | P0 | 删除不再使用的模板 |
| 模板启用/禁用 | P0 | 控制模板是否对用户可用 |
| 模板分类管理 | P1 | 管理模板的分类体系 |
| 写作记录管理 | P1 | 查看/删除用户写作记录 |
| 写作统计分析 | P2 | 写作次数、模板排行、Token 消耗 |
| 全局写作配置 | P1 | 设置默认模型、默认参数、配额等 |
3.1.2 写作模板列表
页面描述:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 默认按排序值升序、创建时间倒序排列 | 运营手动排优先级,同排序值按新鲜度 |
| R-02 | 支持按模板名称模糊搜索 | 模板数量多时需快速定位 |
| R-03 | 支持按分类和状态筛选 | 分类管理后需按类查看 |
| R-04 | 使用次数实时更新 | 运营需了解模板热度以决策优化 |
| R-05 | 删除模板不影响已有写作记录 | 记录中保存模板快照,删除模板不应丢失历史数据 |
| R-06 | 删除使用次数>0的模板时提示"该模板已被使用 X 次" | 防止误删高频使用模板 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取模板分页 | GET | /admin-api/ai/write/template/page | 获取写作模板分页列表 |
| 获取模板详情 | GET | /admin-api/ai/write/template/get | 获取模板详细信息 |
| 获取模板精简列表 | GET | /admin-api/ai/write/template/simple-list | 获取启用状态模板列表(下拉选择用) |
3.1.3 新增/编辑写作模板
页面描述:

变量参数配置:
| 参数属性 | 类型 | 说明 |
|---|---|---|
| 变量名 | String | 与提示词中 {变量名} 对应,字母开头,仅含字母数字下划线 |
| 显示名称 | String | 用户填写时看到的字段名 |
| 字段类型 | Enum | 文本 / 数字 / 下拉选择 / 日期 |
| 是否必填 | Boolean | 是否为必填参数 |
| 默认值 | String | 参数默认值 |
| 选项列表 | String[] | 下拉选择类型的可选项 |
| 占位提示 | String | 输入框提示文字 |
| 排序 | Integer | 参数展示顺序 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 提示词模板中的变量名必须以字母开头,仅含字母数字下划线 | 防止特殊字符导致替换异常 |
| R-02 | 提示词模板长度不超过 8000 字符 | 避免超出模型上下文窗口 |
| R-03 | 变量参数名称不可重复 | 防止替换歧义 |
| R-04 | 保存时自动校验提示词中的 {变量} 与参数列表一致性 | 防止遗漏或多余参数定义 |
| R-05 | {username}、{datetime} 为系统变量,自动替换,无需在参数列表中定义 | 通用信息自动注入 |
| R-06 | 预览测试使用示例输入调用 AI,30秒超时 | 管理员可在发布前验证模板效果 |
| R-07 | 编辑模板不影响已生成的写作记录 | 历史记录保存的是当时的提示词快照 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 创建模板 | POST | /admin-api/ai/write/template/create | 创建写作模板 |
| 更新模板 | PUT | /admin-api/ai/write/template/update | 更新写作模板 |
| 删除模板 | DELETE | /admin-api/ai/write/template/delete | 删除写作模板 |
| 更新模板状态 | PUT | /admin-api/ai/write/template/update-status | 启用/禁用模板 |
| 模板预览测试 | POST | /admin-api/ai/write/template/preview | 使用示例参数预览效果 |
3.1.4 模板分类管理
页面描述:
- 列表形式展示所有分类,支持拖拽排序
- 操作:新增、编辑、删除
预设分类:
| 分类名称 | 描述 |
|---|---|
| 办公效率 | 周报、日报、会议纪要、邮件等办公场景模板 |
| 营销文案 | 广告文案、产品描述、推广软文等营销模板 |
| 项目文档 | 需求文档、技术方案、项目计划等项目模板 |
| 学术教育 | 论文大纲、课程总结、学习报告等教育模板 |
| 社交媒体 | 公众号文章、微博文案、短视频脚本等模板 |
| 日常写作 | 日记、读书笔记、心得体会等日常模板 |
| 编程开发 | 代码注释、API文档、技术博客等开发模板 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 分类名称在同一租户内唯一 | 避免分类混淆 |
| R-02 | 分类下有模板时不允许删除 | 防止模板变成"无分类"孤儿 |
| R-03 | 系统预设分类不可删除(可禁用) | 保证基础分类体系稳定 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取分类列表 | GET | /admin-api/ai/write/template-category/list | 获取分类列表 |
| 创建分类 | POST | /admin-api/ai/write/template-category/create | 创建模板分类 |
| 更新分类 | PUT | /admin-api/ai/write/template-category/update | 更新模板分类 |
| 删除分类 | DELETE | /admin-api/ai/write/template-category/delete | 删除模板分类 |
3.1.5 写作记录管理
页面描述:
- 顶部:搜索栏(用户名称/模板名称/标题/创建时间)
- 主体:记录列表,列包含用户、模板名称、标题、使用模型、Token 消耗、创建时间
- 操作:查看详情、删除
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取记录分页 | GET | /admin-api/ai/write/record/page | 获取写作记录分页列表 |
| 获取记录详情 | GET | /admin-api/ai/write/record/get | 获取写作记录详细信息 |
| 删除记录 | DELETE | /admin-api/ai/write/record/delete | 删除写作记录 |
3.1.6 写作统计分析
页面描述:
- 顶部:时间范围选择(今日/近7天/近30天/自定义)
- 概览卡片区:总写作次数、总 Token 消耗、活跃用户数、人均写作次数
- 图表区:写作趋势图、模板使用排行、Token 消耗趋势、分类使用分布
统计指标:
| 指标 | 说明 |
|---|---|
| 写作总次数 | 用户发起写作的总次数 |
| 活跃用户数 | 使用过写作功能的去重用户数 |
| Token 总消耗 | 输入 Token + 输出 Token 总量 |
| 模板使用排行 | 各模板被使用的次数排行 |
| 分类使用分布 | 各分类的使用次数占比 |
| 平均生成耗时 | 写作生成的平均耗时 |
| 模板完成率 | 用户打开模板到完成生成的转化率 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取写作统计概览 | GET | /admin-api/ai/write/statistics/overview | 获取写作统计概览数据 |
| 获取写作趋势 | GET | /admin-api/ai/write/statistics/trend | 获取写作趋势数据 |
| 获取模板排行 | GET | /admin-api/ai/write/statistics/template-rank | 获取模板使用排行 |
| 获取分类分布 | GET | /admin-api/ai/write/statistics/category-dist | 获取分类使用分布 |
| 获取 Token 统计 | GET | /admin-api/ai/write/statistics/token | 获取 Token 消耗统计 |
3.1.7 全局写作配置
配置字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| 默认写作模型 | 下拉选择 | 从启用模型中选择 |
| 默认温度 | 滑块 | 默认温度参数 |
| 默认最大 Token | 数字输入 | 默认最大输出 Token 数 |
| 默认输出格式 | 下拉选择 | Markdown / 纯文本 / HTML |
| 每用户每日最大写作次数 | 数字输入 | 0 表示不限 |
| 每用户每日最大 Token 数 | 数字输入 | 0 表示不限 |
| 内容审核开关 | 开关 | 是否对生成内容进行安全审核 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取写作配置 | GET | /admin-api/ai/write/config/get | 获取全局写作配置 |
| 更新写作配置 | PUT | /admin-api/ai/write/config/update | 更新全局写作配置 |
3.2 前台用户端
3.2.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 写作主页 | P0 | 展示模板分类和推荐模板 |
| 模板选择写作 | P0 | 选择模板、填写参数、生成内容 |
| 自由写作 | P0 | 自由输入提示词生成内容 |
| 流式内容生成 | P0 | 实时展示生成过程 |
| 内容编辑 | P0 | 对生成内容进行二次编辑 |
| 内容复制/导出 | P0 | 复制/导出为 Markdown/TXT 文件 |
| 写作历史 | P1 | 查看历史写作记录 |
| 重新生成 | P1 | 对历史记录重新生成 |
| 写作风格选择 | P1 | 选择不同的写作风格和语气 |
| 输出长度控制 | P1 | 控制生成内容的长度 |
3.2.2 写作主页
页面描述:

接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取写作主页数据 | GET | /app-api/ai/write/home | 获取主页分类和推荐模板 |
| 搜索模板 | GET | /app-api/ai/write/template/search | 搜索写作模板 |
3.2.3 模板选择写作
页面描述:

写作风格定义:
| 风格 | 标识 | 说明 |
|---|---|---|
| 正式商务 | formal | 语气正式、专业,适合商务场景 |
| 轻松幽默 | casual | 语气轻松活泼,适合社交媒体 |
| 学术严谨 | academic | 语言严谨、引用规范,适合学术场景 |
| 创意发散 | creative | 思维开放、创意丰富,适合创意写作 |
| 新闻纪实 | journalistic | 客观陈述、事实导向,适合新闻稿 |
| 温暖亲切 | warm | 语气亲切温暖,适合客户沟通 |
| 简洁精炼 | concise | 言简意赅、直击要点,适合摘要总结 |
输出长度定义:
| 长度 | 标识 | Token 范围 | 说明 |
|---|---|---|---|
| 简短 | short | 200-500 | 简短精炼的回复 |
| 中等 | medium | 500-1500 | 适度详细的回复 |
| 详细 | long | 1500-4000 | 深入详细的回复 |
| 自定义 | custom | 用户自定义 | 用户指定目标字数 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 必填参数未填写时"生成"按钮置灰 | 防止无效请求浪费模型资源 |
| R-02 | 生成过程中按钮显示 loading,不可重复点击 | 防止重复提交 |
| R-03 | 流式输出使用 SSE 协议 | 减少等待焦虑,提升体验 |
| R-04 | 生成内容实时渲染 Markdown | 用户所见即所得 |
| R-05 | 重新生成时保留原参数,重新调用 AI | 方便对比不同版本 |
| R-06 | 生成过程中支持"停止生成"操作 | 用户发现方向错误可及时终止节省 Token |
| R-07 | 参数填写支持保存为草稿(本地存储) | 防止意外丢失已填内容 |
| R-08 | 每次生成自动创建一条写作记录 | 保证历史可追溯 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取模板详情(前台) | GET | /app-api/ai/write/template/get | 获取模板详细信息及参数定义 |
| 执行模板写作(流式) | POST | /app-api/ai/write/generate | 执行模板写作并流式输出 |
| 执行模板写作(非流式) | POST | /app-api/ai/write/generate-block | 执行模板写作并一次性返回 |
| 停止生成 | POST | /app-api/ai/write/stop | 停止当前生成过程 |
请求参数(执行写作):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| templateId | Long | 是 | 模板ID |
| params | JSON | 是 | 模板变量参数键值对 |
| modelId | Long | 否 | 模型ID(为空使用模板默认或全局默认) |
| temperature | Double | 否 | 温度(覆盖模板默认值) |
| maxTokens | Integer | 否 | 最大输出 Token 数 |
| outputFormat | String | 否 | 输出格式 |
| style | String | 否 | 写作风格 |
| length | String | 否 | 输出长度(short/medium/long/custom) |
| stream | Boolean | 否 | 是否流式输出(默认 true) |
返回结果(流式 - SSE):
event: message
data: {"content": "# 项目周报\n\n", "finish": false}
event: message
data: {"content": "## 本周完成\n\n", "finish": false}
event: message
data: {"content": "1. 完成了用户模块开发...", "finish": false}
event: done
data: {"recordId": 3001, "promptTokens": 150, "completionTokens": 500, "totalTokens": 650}3.2.4 自由写作
页面描述:
- 类似简洁的写作界面,上方大文本框输入提示词
- 下方设置选项栏:写作风格、输出长度、模型选择
- 生成结果区域与模板写作相同
- 支持多轮对话式写作(生成后可追加指令继续优化)
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 自由写作(流式) | POST | /app-api/ai/write/free-generate | 自由写作并流式输出 |
| 自由写作(非流式) | POST | /app-api/ai/write/free-generate-block | 自由写作并一次性返回 |
| 追加写作指令 | POST | /app-api/ai/write/continue | 基于已有内容追加指令继续优化 |
3.2.5 写作历史
页面描述:
- 列表形式展示所有历史写作记录
- 顶部:搜索框 + 筛选(模板/自由写作/时间)
- 每条记录:标题/摘要、模板名称(或"自由写作"标签)、Token 消耗、创建时间
- 操作:查看详情、重新生成、删除
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取写作记录列表 | GET | /app-api/ai/write/record/list | 获取当前用户的写作记录列表 |
| 获取写作记录详情 | GET | /app-api/ai/write/record/get | 获取写作记录详细信息 |
| 删除写作记录 | DELETE | /app-api/ai/write/record/delete | 删除写作记录 |
| 重新生成 | POST | /app-api/ai/write/record/regenerate | 基于原参数重新生成 |
| 保存编辑内容 | PUT | /app-api/ai/write/record/update-result | 保存编辑后的写作内容 |
| 导出写作内容 | GET | /app-api/ai/write/record/export | 导出写作内容为文件 |
四、非功能需求
4.1 性能要求
| 指标 | 要求 | 实现策略 |
|---|---|---|
| 流式输出首字延迟 | < 3秒 | 直连服务商 API,不使用中间缓存 |
| 流式输出字符间隔 | < 100ms | SSE 长连接,逐 chunk 推送 |
| 模板列表查询 | < 500ms | Redis 缓存模板列表,TTL 10分钟 |
| 写作记录列表查询 | < 500ms | 按用户+时间索引优化 |
| 主页数据加载 | < 800ms | 分类+推荐模板预聚合缓存 |
| 统计概览数据查询 | < 2秒 | 异步聚合 + 缓存,5分钟粒度预计算 |
4.2 安全要求
| 要求 | 说明 | 实现方式 |
|---|---|---|
| 数据隔离 | 用户只能查看自己的写作记录 | 所有查询自动拼接 userId 条件 |
| 内容审核 | 支持对用户输入和生成内容进行安全审核 | 接入内容安全模块,可配置开关 |
| 频率限制 | 单用户每分钟最多发起 10 次写作请求 | Redis 滑动窗口限流 |
| 配额控制 | 按用户/租户维度控制每日写作次数和 Token 消耗上限 | Redis HINCRBY 原子计数 |
| 输入过滤 | 对用户输入的提示词进行 XSS 过滤 | Jsoup 白名单过滤 |
4.3 错误码定义
| 错误码 | 说明 | 用户提示 |
|---|---|---|
| AI_WRITE_TEMPLATE_NOT_FOUND | 模板不存在 | "模板不存在或已被删除" |
| AI_WRITE_TEMPLATE_DISABLED | 模板已禁用 | "该模板已停用,请选择其他模板" |
| AI_WRITE_PARAM_MISSING | 必填参数缺失 | "请填写必填参数:{参数名}" |
| AI_WRITE_PROMPT_TOO_LONG | 提示词超长 | "提示词长度不能超过 4000 字符" |
| AI_WRITE_QUOTA_EXCEEDED | 配额超出 | "今日写作次数已用完,明天再试或升级配额" |
| AI_WRITE_TOKEN_QUOTA_EXCEEDED | Token 配额超出 | "今日 Token 额度已用完,明天再试" |
| AI_WRITE_MODEL_UNAVAILABLE | 模型不可用 | "当前模型暂时不可用,请稍后重试" |
| AI_WRITE_GENERATE_TIMEOUT | 生成超时 | "生成超时,请重试" |
| AI_WRITE_RATE_LIMIT | 频率限制 | "操作太频繁,请稍后再试" |
五、数据设计
5.1 数据表概览
| 表名 | 说明 | 核心字段 |
|---|---|---|
| ai_write_template | 写作模板表 | name, category_id, prompt, params(JSON), output_format, model_id, temperature, max_tokens, usage_count |
| ai_write_template_category | 模板分类表 | name, description, icon, sort |
| ai_write_record | 写作记录表 | user_id, template_id, title, type(模板/自由), prompt(完整快照), params, result, edited_result, model(快照), tokens, cost_time |
| ai_write_config | 写作全局配置表 | config_key, config_value |
5.2 表关系

5.3 缓存策略
| 缓存 Key | 数据 | 过期时间 | 更新策略 |
|---|---|---|---|
ai:write:template:list | 启用模板精简列表 | 10分钟 | 模板增删改时主动失效 |
ai:write:category:list | 分类列表 | 30分钟 | 分类变更时主动失效 |
ai:write:config | 全局配置 | 不过期 | 配置更新时主动失效 |
ai:write:quota:{userId}:{date} | 用户每日配额使用量 | 当日剩余时间 | HINCRBY 原子递增 |
六、跨模块联动
6.1 联动关系总览
| 联动模块 | 联动方向 | 联动场景 |
|---|---|---|
| AI 模型管理(07-01) | 被依赖 | 写作功能依赖 AI 模型管理提供的服务商配置 |
| 会员积分(05-02) | 双向 | 写作消耗可关联积分扣减;写作活动可奖励积分 |
| 钱包管理(04-02) | 单向依赖 | Token 消耗从用户钱包扣费 |
| 内容安全 | 单向依赖 | 对用户输入和生成内容进行安全审核 |
| 系统管理(01) | 被依赖 | 权限控制、操作日志、租户隔离 |
| 统计分析 | 数据输出 | 写作数据汇入全局统计 |
6.2 详细联动设计
AI 写作 ↔ AI 模型管理(07-01)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 获取可用模型 | 用户打开写作页面 | 从 AI 模型管理获取启用状态的模型列表 | 07-01 → 07-02 |
| 模型被禁用 | 管理员禁用某模型 | 写作模板如指定该模型为默认,提示管理员修改 | 07-01 → 07-02 |
| 共享配额 | 用户发起写作 | Token 消耗计入 AI 对话模块的统一配额体系 | 07-02 → 07-01 |
AI 写作 ↔ 会员积分(05-02)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 积分扣减 | 用户选择积分支付写作 | 扣减对应积分,余额不足时拒绝 | 07-02 → 05-02 |
| 写作奖励 | 完成首次写作/达到写作里程碑 | 发放奖励积分 | 07-02 → 05-02 |
AI 写作 ↔ 钱包管理(04-02)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 余额扣费 | 用户写作消耗 Token | 从钱包余额扣减对应费用 | 07-02 → 04-02 |
| 余额不足 | 用户钱包余额不足 | 拒绝生成请求,提示充值 | 04-02 → 07-02 |
AI 写作 → 统计分析
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 写作数据上报 | 每次写作完成 | 记录写作次数、Token 消耗、耗时等指标 | 07-02 → 统计模块 |
七、附录
7.1 名词解释
| 术语 | 通俗理解 | 技术说明 |
|---|---|---|
| 写作模板 | 像"填空模板"——搭好框架留好空,用户填关键信息就出稿 | 预设的提示词模板,包含 {变量} 占位符,用户填写参数后替换并调用 AI |
| 变量参数 | 模板里的"空格"——每个空格有名字和要求,填完才能提交 | 模板中定义的动态字段,用户填写后替换提示词中的占位符 |
| 自由写作 | 不套模板、自由发挥——像在白纸上写作文 | 不限模板,用户自由输入提示词进行 AI 写作 |
| 写作风格 | 像选"语气"——正式商务像穿西装,轻松幽默像穿T恤 | 通过追加系统提示词控制 AI 生成内容的语气和表达方式 |
| 输出长度 | 像告诉 AI"写长一点还是短一点" | 通过 maxTokens 参数控制生成内容的篇幅 |
| 流式输出 | 像看直播——AI 边想边写,你边等边看 | 使用 SSE 协议逐 chunk 推送 AI 生成内容 |
| Token | AI 世界的"计价单位"——就像打车按公里算,AI 按 Token 算钱 | AI 模型处理文本的最小单位,一个中文字约 1-2 个 Token |
| 温度 | 像"创造力旋钮"——拧高了天马行空,拧低了规规矩矩 | Temperature 参数(0-2),值越高输出越随机,值越低越确定 |
| SSE | "服务端推送"——像广播电台,服务器持续给客户端发信号 | Server-Sent Events,用于实现流式输出的单向推送协议 |
| 提示词(Prompt) | 给 AI 的"任务说明书"——写得越清楚,AI 做得越好 | 发送给 AI 模型的完整文本指令 |
| 系统变量 | 不用用户填、系统自动填的"智能空"——如当前用户名、当前时间 | {username}、{datetime} 等由系统自动替换的变量 |
7.2 权限标识汇总
| 权限标识 | 说明 | 所属模块 |
|---|---|---|
| ai:write:template:list | 查看模板列表 | 写作模板管理 |
| ai:write:template:query | 查询模板详情 | 写作模板管理 |
| ai:write:template:create | 创建模板 | 写作模板管理 |
| ai:write:template:update | 修改模板 | 写作模板管理 |
| ai:write:template:delete | 删除模板 | 写作模板管理 |
| ai:write:template:status | 修改模板状态 | 写作模板管理 |
| ai:write:template:preview | 模板预览测试 | 写作模板管理 |
| ai:write:category:list | 查看分类列表 | 模板分类管理 |
| ai:write:category:create | 创建分类 | 模板分类管理 |
| ai:write:category:update | 修改分类 | 模板分类管理 |
| ai:write:category:delete | 删除分类 | 模板分类管理 |
| ai:write:record:list | 查看写作记录列表 | 写作记录管理 |
| ai:write:record:query | 查询写作记录详情 | 写作记录管理 |
| ai:write:record:delete | 删除写作记录 | 写作记录管理 |
| ai:write:config:get | 查看写作配置 | 写作配置管理 |
| ai:write:config:update | 修改写作配置 | 写作配置管理 |
| ai:write:statistics:overview | 查看写作统计概览 | 统计分析 |
| ai:write:statistics:template-rank | 查看模板使用排行 | 统计分析 |
| ai:write:statistics:token | 查看 Token 消耗统计 | 统计分析 |
7.3 预设写作模板示例
| 模板名称 | 分类 | 描述 |
|---|---|---|
| 项目周报生成器 | 办公效率 | 根据项目进展自动生成结构化的项目周报 |
| 日报/工作汇报 | 办公效率 | 快速生成日常工作汇报内容 |
| 会议纪要整理 | 办公效率 | 将会议要点整理成规范的会议纪要 |
| 商务邮件撰写 | 办公效率 | 根据场景生成专业的商务邮件 |
| 产品描述文案 | 营销文案 | 为产品生成吸引人的描述文案 |
| 广告推广文案 | 营销文案 | 生成各类广告推广文案 |
| 公众号文章 | 社交媒体 | 生成微信公众号风格的文章 |
| 短视频脚本 | 社交媒体 | 生成短视频拍摄脚本和台词 |
| 需求文档模板 | 项目文档 | 根据项目信息生成需求文档框架 |
| 技术方案概述 | 项目文档 | 生成技术方案文档的结构化概述 |
| 论文摘要生成 | 学术教育 | 根据研究内容生成学术论文摘要 |
| 课程学习总结 | 学术教育 | 整理课程要点生成学习总结 |
| API 接口文档 | 编程开发 | 根据接口信息生成规范的 API 文档 |
| 技术博客文章 | 编程开发 | 生成技术分享博客文章框架 |