feat: 微信公众号技能包重命名(weixin_public_account)并增强功能
- 将 wechat_official_account 重命名为 weixin_public_account,符合中文命名规范 - 新增 DOCX 文档生成技能、聊天历史、请求 ID 中间件 - 增强工作流、热点服务、文章服务等模块功能 - 前端同步重命名组件和 API - 新增架构文档 AR13/AR14、专员文档更新 - 补充测试用例(seed_specialists_test, db_migration_test) Co-Authored-AI: yes
This commit is contained in:
@@ -56,7 +56,7 @@ GW02 给出了"对话 vs 结构化 UI"的分界原则。本文件把它落到具
|
||||
|
||||
---
|
||||
|
||||
### 2.2 公众号创作专员(wechat-official-account)
|
||||
### 2.2 公众号创作专员(weixin-public-account)
|
||||
|
||||
| 维度 | 分析 |
|
||||
|---|---|
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
> 关联文档:
|
||||
> - `GW02_对话式AI工作台与传统UI分界判断.md`
|
||||
> - `GW03_专员工作交互形式分析.md`
|
||||
> - `docs/05_Object_Catalog/specialists/wechat-official-account/`(对象目录)
|
||||
> - `docs/05_Object_Catalog/specialists/weixin-public-account/`(对象目录)
|
||||
|
||||
---
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
| 层级 | 组件 | 说明 |
|
||||
|------|------|------|
|
||||
| Manifest | manifest.js (26行) | 专员定义 + InteractionCard |
|
||||
| API 封装 | officialAccount.js (33行) | 6个API函数 |
|
||||
| API 封装 | weixinPublicAccount.js (33行) | 6个API函数 |
|
||||
| 内置注册 | builtin.js 注册 | 作为第4个内置专员注册 |
|
||||
| 项目模板 | content-operations 绑定 | 绑定公众号创作专员 |
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
| 缺失项 | 级别 | 说明 |
|
||||
|--------|------|------|
|
||||
| **专属路由页面** | 必须 | `/apps/wechat-official-account` 无对应前端页面 |
|
||||
| **专属路由页面** | 必须 | `/apps/weixin-public-account` 无对应前端页面 |
|
||||
| **工作流配置页** | 必须 | 创建任务时输入业务域、关键词、受众、目标、语气等 |
|
||||
| **工作流步骤面板** | 必须 | 选题候选卡片选择、标题选择、提纲编辑、正文编辑 |
|
||||
| **配图管理 UI** | 必须 | 配图提示词查看、图片预览、图片重生成 |
|
||||
@@ -138,7 +138,7 @@
|
||||
需要实现的前端页面结构:
|
||||
|
||||
```
|
||||
/apps/wechat-official-account
|
||||
/apps/weixin-public-account
|
||||
├── 创建页:输入业务域、关键词、受众、目标、语气、字数要求
|
||||
├── 工作流页(主页面)
|
||||
│ ├── 左侧:步骤导航栏(9步进度条)
|
||||
@@ -305,14 +305,14 @@ AI 不仅给热度标签(爆热/高/中高/中),还给出预估阅读量
|
||||
|
||||
## 5. 已知 Bug
|
||||
|
||||
### 5.1 `isOfficialAccountStep` 缺少 `page_markdown` case
|
||||
### 5.1 `isWeixinPublicAccountStep` 缺少 `page_markdown` case
|
||||
|
||||
后端工作流引擎的 `isOfficialAccountStep` 函数(约第 919-924 行)的 switch 语句中缺少对 `officialAccountStepKeyPageMD` 的检查,而 `officialAccountNextStep` 函数(约第 950-968 行)会将其作为 `preview_export` 的下一步。这意味着执行分页 MD 步骤时会返回 "工作流步骤不存在" 错误。
|
||||
后端工作流引擎的 `isWeixinPublicAccountStep` 函数(约第 919-924 行)的 switch 语句中缺少对 `weixinPublicAccountStepKeyPageMD` 的检查,而 `weixinPublicAccountNextStep` 函数(约第 950-968 行)会将其作为 `preview_export` 的下一步。这意味着执行分页 MD 步骤时会返回 "工作流步骤不存在" 错误。
|
||||
|
||||
**修复方法:** 在 `isOfficialAccountStep` 的 switch 中添加:
|
||||
**修复方法:** 在 `isWeixinPublicAccountStep` 的 switch 中添加:
|
||||
|
||||
```go
|
||||
case officialAccountStepKeyPageMD:
|
||||
case weixinPublicAccountStepKeyPageMD:
|
||||
return true
|
||||
```
|
||||
|
||||
@@ -323,12 +323,12 @@ case officialAccountStepKeyPageMD:
|
||||
### 6.1 目录结构
|
||||
|
||||
```
|
||||
frontend/src/specialists/packages/wechat-official-account/
|
||||
frontend/src/specialists/packages/weixin-public-account/
|
||||
├── manifest.js ← 已存在,不需改
|
||||
├── views/
|
||||
│ ├── OfficialAccountCreatePage.vue ← 创建任务页
|
||||
│ ├── OfficialAccountWorkbenchPage.vue ← 工作流主页面(核心)
|
||||
│ └── OfficialAccountPreviewPage.vue ← 预览页(可选,可嵌入 Workbench)
|
||||
│ ├── WeixinPublicAccountCreatePage.vue ← 创建任务页
|
||||
│ ├── WeixinPublicAccountWorkbenchPage.vue ← 工作流主页面(核心)
|
||||
│ └── WeixinPublicAccountPreviewPage.vue ← 预览页(可选,可嵌入 Workbench)
|
||||
├── components/
|
||||
│ ├── WorkflowStepNav.vue ← 步骤导航(9步进度条)
|
||||
│ ├── TopicCandidateCard.vue ← 选题候选卡片
|
||||
@@ -340,16 +340,16 @@ frontend/src/specialists/packages/wechat-official-account/
|
||||
│ ├── PreviewPanel.vue ← 预览面板
|
||||
│ └── BottomPanel.vue ← 底部面板
|
||||
├── composables/
|
||||
│ ├── useOfficialAccountWorkflow.js ← 工作流状态管理
|
||||
│ └── useOfficialAccountExport.js ← 导出逻辑
|
||||
│ ├── useWeixinPublicAccountWorkflow.js ← 工作流状态管理
|
||||
│ └── useWeixinPublicAccountExport.js ← 导出逻辑
|
||||
└── api/
|
||||
└── officialAccount.js ← 已存在,不需改
|
||||
└── weixinPublicAccount.js ← 已存在,不需改
|
||||
```
|
||||
|
||||
### 6.2 核心交互流程伪代码
|
||||
|
||||
```javascript
|
||||
// OfficialAccountWorkbenchPage.vue
|
||||
// WeixinPublicAccountWorkbenchPage.vue
|
||||
<template>
|
||||
<div class="workbench">
|
||||
<!-- 左侧:步骤导航 -->
|
||||
@@ -421,12 +421,12 @@ frontend/src/specialists/packages/wechat-official-account/
|
||||
|
||||
```javascript
|
||||
// 1. 用户从专员市场或通用助手点击"公众号创作专员"
|
||||
// 2. 跳转到 /apps/wechat-official-account
|
||||
// 2. 跳转到 /apps/weixin-public-account
|
||||
// 3. 展示创建表单(或对话式启动)
|
||||
// 4. 填写表单 → 创建任务 → 跳转到工作流页
|
||||
|
||||
// 表单提交
|
||||
const task = await createOfficialAccountTask({
|
||||
const task = await createWeixinPublicAccountTask({
|
||||
business_domain: 'ai',
|
||||
keyword: '智能体',
|
||||
audience: '技术从业者',
|
||||
@@ -448,7 +448,7 @@ await fetchWorkflow(task.id)
|
||||
// 用户选择选题后,自动进入下一步
|
||||
async function handleSelectTopic(topic) {
|
||||
// 保存选题
|
||||
await updateOfficialAccountTask(taskId, { selected_topic: topic })
|
||||
await updateWeixinPublicAccountTask(taskId, { selected_topic: topic })
|
||||
// 执行下一步:标题生成
|
||||
await executeStep(taskId, 'title_generation', { topic })
|
||||
// 刷新工作流
|
||||
@@ -471,7 +471,7 @@ async function handleSelectTopic(topic) {
|
||||
| 组件 | 预估工作量 | 说明 |
|
||||
|------|-----------|------|
|
||||
| 创建表单 | 1天 | 业务域、关键词、受众、目标、语气、字数 |
|
||||
| 路由配置 | 0.5天 | `/apps/wechat-official-account` 路由 |
|
||||
| 路由配置 | 0.5天 | `/apps/weixin-public-account` 路由 |
|
||||
| 步骤导航 | 1天 | 9步进度条,状态指示 |
|
||||
| 选题卡片 | 1.5天 | 候选展示、选择、刷新热点 |
|
||||
| 标题卡片 | 0.5天 | 3个标题候选、选择 |
|
||||
|
||||
@@ -185,13 +185,13 @@ SpecialistPanel 是一个**只读面板**,它的职责是:
|
||||
- SpecialistPanel 根据 `currentStep` 动态渲染不同组件
|
||||
- 对话消息中展示工作流摘要
|
||||
- 面板中展示完整交互
|
||||
- 两个区域的同步通过 `fetchOfficialAccountWorkflow` API + 定时刷新
|
||||
- 两个区域的同步通过 `fetchWeixinPublicAccountWorkflow` API + 定时刷新
|
||||
|
||||
---
|
||||
|
||||
### 方案 B:独立工作台页面
|
||||
|
||||
**思路:** 用户从对话框点击"用公众号创作专员处理"后,跳转到 `/apps/wechat-official-account` 独立页面。
|
||||
**思路:** 用户从对话框点击"用公众号创作专员处理"后,跳转到 `/apps/weixin-public-account` 独立页面。
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────────────┐
|
||||
@@ -410,8 +410,8 @@ SpecialistPanel 是一个**只读面板**,它的职责是:
|
||||
|
||||
<!-- 新增:交互式步骤 -->
|
||||
<div v-if="tab === 'interactive'">
|
||||
<OfficialAccountStepInteractive
|
||||
v-if="currentSpecialistKey === 'wechat-official-account'"
|
||||
<WeixinPublicAccountStepInteractive
|
||||
v-if="currentSpecialistKey === 'weixin-public-account'"
|
||||
:step="currentStep"
|
||||
:workflow-state="workflowState"
|
||||
@select="handleStepSelect"
|
||||
@@ -443,7 +443,7 @@ messages.value.push({
|
||||
```
|
||||
|
||||
当用户点击卡片中的"选择这个"时:
|
||||
1. 调用 `executeOfficialAccountWorkflowStep(stepKey, { topic: selectedTopic })`
|
||||
1. 调用 `executeWeixinPublicAccountWorkflowStep(stepKey, { topic: selectedTopic })`
|
||||
2. 工作流自动推进到下一步
|
||||
3. 新的结果卡片出现在消息流中
|
||||
|
||||
|
||||
Reference in New Issue
Block a user