9.1 KiB
9.1 KiB
技术方案:删除「直接生成测试版」+ 新增「豆包lite-大纲 / 豆包lite-总结」
一、目标
- 删除「直接生成测试版」相关前后端代码。
- 新增两个选项:「直接测试-豆包lite-大纲」「直接测试-豆包lite-总结」,前后端全支持。
- 收尾:推 Git,阿里云部署。
二、现状梳理
| 层级 | 直接生成测试版 (direct_test) | 直接测试-豆包lite (direct_test_lite) |
|---|---|---|
| 后端 | direct_generation_test Prompt 类型;validPersonas 含 direct_test;生成时 persona === 'direct_test' 用该 Prompt、默认模型 |
同用 direct_generation_test Prompt;persona === 'direct_test_lite' 用 DOUBAO_MODEL_LITE |
| 前端 iOS | PersonaType.directTest;PersonaSelectionView 里一张卡片 |
PersonaType.directTestLite;PersonaSelectionView 里一张卡片 |
| 管理后台 | course-admin 里「直接生成测试版 Prompt」配置项 | 无单独配置(与 direct_test 共用 Prompt) |
- 数据库:
course_generation_tasks.persona为 String,无枚举约束,加删 persona 值不需要 DB 迁移。 - 当前直接生成流程:一次调用得到
chaptered_content(大纲+节解释),再contentService.generateAllContent填内容;没有单独的「只生成大纲」或「只生成总结」接口,新选项在现有流程上通过 persona + 可选不同 Prompt 区分即可。
三、方案一:删除「直接生成测试版」+ 新增两个 lite 选项(推荐)
3.1 删除「直接生成测试版」
后端
- promptConfigService.ts
PromptType去掉'direct_generation_test'。- 删除
DIRECT_GENERATION_TEST、默认direct_generation_test的 default prompt、getPromptKey/getDefaultPrompt/getPromptTemplate中对该类型的处理。
- courseGenerationService.ts
- 删除对
persona === 'direct_test'的分支;只保留对direct_test_lite*的判断(见下)。 - 原「直接生成测试版」与「直接测试-豆包lite」共用的逻辑改为:仅当 persona 为
direct_test_lite/direct_test_lite_outline/direct_test_lite_summary时使用「测试用 Prompt」+ 豆包 Lite 模型(见下)。
- 删除对
- validation.ts
validPersonas去掉'direct_test',加入'direct_test_lite_outline'、'direct_test_lite_summary'(若保留原有direct_test_lite则也保留)。
- promptController.ts
- 类型与 PROMPT_TYPE_MAP 等中去掉
direct_generation_test;若保留一个「lite 用」的 Prompt,可重命名为例如direct_generation_lite或保留一名给 lite 共用(见下)。
- 类型与 PROMPT_TYPE_MAP 等中去掉
- course-admin.html
- Prompt 配置列表去掉「直接生成测试版 Prompt」;若新增「豆包lite-大纲/总结」专用 Prompt,则在列表中增加对应项并改说明文案。
iOS
- AICourseModels.swift
- 删除
case directTest = "direct_test"。
- 删除
- PersonaSelectionView.swift
- 删除「直接生成测试版」那张
CleanPersonaCard,只保留/新增「直接测试-豆包lite」「直接测试-豆包lite-大纲」「直接测试-豆包lite-总结」等(见下)。
- 删除「直接生成测试版」那张
3.2 新增「直接测试-豆包lite-大纲」「直接测试-豆包lite-总结」
选项 A:最小实现(推荐先做)
- 两个新选项仅作「人格/入口」区分,共用同一套 Prompt 和同一豆包 Lite 模型,便于先上线、后补差异化 Prompt。
- 后端:
validPersonas增加:direct_test_lite_outline、direct_test_lite_summary。courseGenerationService:- 模型:
persona === 'direct_test_lite' || persona === 'direct_test_lite_outline' || persona === 'direct_test_lite_summary'→ 使用DOUBAO_MODEL_LITE。 - Prompt:上述 persona 均使用同一个「lite 用」Prompt(例如保留并重命名原
direct_generation_test为direct_generation_lite,或新键direct_generation_lite,仅一份模板)。
- 模型:
- 管理后台:保留/改为一个「直接生成 Lite Prompt」(或「豆包 Lite 测试用 Prompt」),供三个 lite 选项共用。
- iOS:
PersonaType增加:directTestLiteOutline、directTestLiteSummary(保留或删除directTestLite按产品决定)。- PersonaSelectionView 在「直接生成」流程下展示两张新卡片:「直接测试-豆包lite-大纲」「直接测试-豆包lite-总结」(若保留「直接测试-豆包lite」则三张)。
- 后续若需要「大纲」和「总结」在生成效果上真正区分,再为这两个 persona 各配不同 Prompt(见选项 B)。
选项 B:大纲/总结用不同 Prompt(可选、后续迭代)
- 后端新增两个 Prompt 类型,例如:
direct_generation_lite_outline、direct_generation_lite_summary。 promptConfigService、promptController、course-admin 中增加这两种类型的配置与编辑。courseGenerationService中按 persona 选择 Prompt:direct_test_lite_outline→direct_generation_lite_outlinedirect_test_lite_summary→direct_generation_lite_summary- (若仍保留
direct_test_lite)→ 共用direct_generation_lite或其一。
- 模型仍为豆包 Lite,仅 Prompt 不同。iOS 无需改接口,只传不同 persona。
3.3 建议实施顺序
- 后端:删除
direct_test与direct_generation_test全部引用;validPersonas改为只含direct_test_lite、direct_test_lite_outline、direct_test_lite_summary(或按产品二选一:只保留后两个)。 - 后端:为 lite 统一使用一个 Prompt 类型(如
direct_generation_lite),courseGenerationService 与 promptController 只认这一种;管理后台只保留一个 Lite 用 Prompt 配置。 - iOS:删除
directTest,新增directTestLiteOutline/directTestLiteSummary,PersonaSelectionView 只展示两个新卡片(或加「直接测试-豆包lite」共三个)。 - 联调:创建课程选「豆包lite-大纲」「豆包lite-总结」各跑通一次,确认进度与结果正常。
- 管理后台:文案与列表项与上述一致(删除直接生成测试版、保留/新增 Lite 用 Prompt)。
四、Git 与阿里云部署
- Git
- 在功能分支完成上述改动,自测通过后合并到主分支(如
main)。 - 提交信息建议包含:
feat: 移除直接生成测试版,新增豆包lite-大纲/总结选项。
- 在功能分支完成上述改动,自测通过后合并到主分支(如
- 阿里云部署
- 当前脚本:
backend/deploy/deploy-from-github.sh(从 GitHub 拉取后 build + pm2 restart)。 - 步骤:
ssh root@<阿里云主机>→cd /var/www/wildgrowth-backend/backend→bash deploy/deploy-from-github.sh [分支名]。 - 若 pull 超时,可使用
deploy-rsync-from-local.sh从本机 rsync 代码再在服务器上 build 并重启。 - 部署后验证:管理后台能打开、Prompt 配置正常;iOS 选「豆包lite-大纲」或「豆包lite-总结」创建课程,任务能正常跑完并在列表中可见。
- 当前脚本:
五、风险与注意点
- 历史任务:已有
persona = 'direct_test'或'direct_generation_test'的旧任务仅作历史数据,新逻辑不再处理;若管理后台有按 persona 展示,需把「直接生成测试版」改为已废弃或隐藏。 - AppConfig 表:若曾把
direct_generation_test_prompt存进配置,删除类型后对应 key 可保留不删,避免误删其它配置;或单独清理脚本只删该 key。 - iOS 与后端 persona 枚举:两边需完全一致(
direct_test_lite_outline/direct_test_lite_summary等),否则接口会报 persona 校验失败。
六、小结
| 步骤 | 内容 |
|---|---|
| 1 | 后端删除 direct_test、direct_generation_test;validPersonas 与生成逻辑只保留 lite 系 persona |
| 2 | 后端为 lite 统一一个 Prompt 类型(如 direct_generation_lite),并支持 direct_test_lite_outline、direct_test_lite_summary |
| 3 | iOS 删除 directTest,新增 directTestLiteOutline、directTestLiteSummary,选择页只展示新选项 |
| 4 | 管理后台 Prompt 列表与说明文案同步 |
| 5 | 推 Git,阿里云执行 deploy-from-github.sh(或 rsync 后 build + 重启) |
七、已实施(本期)
- 已删除「直接生成测试版」(direct_test) 及
direct_generation_testPrompt 类型。 - 已保留「直接测试-豆包lite」(direct_test_lite),并新增「直接测试-豆包lite-大纲」(direct_test_lite_outline)、「直接测试-豆包lite-总结」(direct_test_lite_summary)。
- 后端:三个 lite 选项分别使用
direct_generation_lite、direct_generation_lite_outline、direct_generation_lite_summary三个 Prompt 类型,管理后台可分别配置;均使用豆包 Lite 模型,调用流程与原先直接测试-豆包lite 一致。 - iOS:PersonaSelectionView 在直接生成流程下展示三张卡片;AICourseModels 已移除 directTest,保留 directTestLite,新增 directTestLiteOutline、directTestLiteSummary。
- 部署:代码推 Git 后,在阿里云执行
deploy-from-github.sh(或 rsync 后 build + pm2 restart)即可。