外观
智能写作
功能概览
智能写作提供两种生成模式:
- 撰写:根据一个主题或提示词,直接生成一篇完整的文章/段落。

- 回复:在给定原文的基础上,结合回复提示词,生成符合场景的对话或文字回复。

每次生成都可组合以下控制维度(通过标签点选,未选择即「自动」):
- 长度:自动、短、中等、长
- 格式:自动、电子邮件、消息、评论、段落、文章、博客文章、想法、大纲
- 语气:自动、友善、随意、友好、专业、诙谐、有趣、正式
- 语言:自动、中文、英文、韩语、日语
后端架构
智能写作模块位于 backend/app/api/v1/module_ai/write,采用与平台其他模块一致的分层结构:
model.py:数据模型AiWriteModel(表ai_write)与各类枚举、内置系统提示词。schema.py:请求/响应校验与序列化模型,AiWriteGenerateSchema用于生成入参。service.py:AiWriteService业务层,负责模型解析、Prompt 组装、流式调用与落库。crud.py:基于CRUDBase的数据访问层。controller.py:路由层,对外暴露接口。
写作任务通过数据权限策略 PermissionFilterStrategy.OWN 按 user_id 隔离,普通用户只能访问自己的记录。
前端页面
前端入口位于 frontend/apps/web-ele/src/views/ai/write,分为「用户写作页」与「管理端列表页」两部分。
用户写作页采用左右分栏布局:
- 左侧(
modules/left.vue)为参数面板,提供「撰写 / 回复」切换标签,并实时填写提示词、原文以及长度、格式、语气、语言四个维度的标签选择;内置「示例」入口可一键填充 Vue 介绍、请假回复等样例。 - 右侧(
modules/right.vue)为结果展示区,使用富文本编辑器承载流式生成的内容,支持在生成过程中随时停止(通过AbortController中断 SSE)。
交互关键点:
- 通过
fetchEventSource消费 SSE,收到[DONE]或error时结束并清理连接。 - 「回复」模式要求先填写原文,再填写回复提示词;「撰写」模式仅需提示词。
- 切换「撰写 / 回复」标签时,会保留各自已填写的数据,避免相互覆盖。
管理端列表页(manager/index.vue)基于 vxe-table 表格,提供分页查询、单条删除与批量删除能力,并受 ai:write:delete 权限控制;顶部内置指向官方文档的 DocAlert 引导。