DEPLOY.md 7.6 KB

云函数部署指南

本目录是 fmode 云函数源码。前端通过 src/app/services/cloud-functions.ts 里的函数 ID 调用这些函数。

部署清单

字段 文件 状态 主要 action / 能力
manifest 01-manifestManager.js 已配置 list / get / create / update / delete
task 02-taskManager.js 已配置 list / get / create / update / delete
history 03-historyManager.js 已配置 list / create / delete / clearAll
result 04-resultManager.js 已配置 list / get / create / update / delete
remix 05-remixManager.js 已配置 listAll / listByVideo / upsert / delete
voice 06-voiceManager.js 已配置 autoSpeakerId / syncProfile / listProfiles / initPool / deleteProfile
quickly 07-quicklyVideo.js 待部署 create / query
proxy 08-proxyHub.js 已配置 llmChat / geminiChat / llmChatStream
upload 09-uploadManager.js 已配置 createUploadToken
authCredit 10-authCreditManager.js 待部署/暂未启用 register / login / me / reserve / commit / refund / ledger
jimeng 11-jimengManager.js 已配置 即梦图片、视频、数字人、动作迁移代理
douyin 12-douyinManager.js 已配置 TikHub 抖音搜索、详情、评论、博主数据代理
douyinInsight 13-douyinInsightManager.js 已配置 爆款分析、选题池、日报资产持久化、逐字稿任务

部署步骤

  1. 打开 fmode 云函数管理平台。
  2. 新建或更新云函数,名称建议与文件名一致。
  3. 粘贴对应 .js 文件完整内容。
  4. 在平台配置该函数需要的环境变量。
  5. 保存并部署,复制返回的 10 位函数 ID。
  6. 更新 src/app/services/cloud-functions.ts 对应字段。
  7. 执行 npm run smoke:cloud 验证已配置函数是否可调用。
  8. 执行 npm run build 验证前端编译。

外部凭证清单

函数 必需凭证/配置 说明
06-voiceManager.js VOICE_TOKEN, VOICE_TTS_BASE_URL 火山 TTS/音色训练代理;listProfiles 不需要调用上游。
07-quicklyVideo.js QUICKLY_APP_KEY, QUICKLY_APP_SECRET, QUICKLY_ACCOUNT_ID, QUICKLY_CALLBACK_URL, QUICKLY_RELAY_URL, QUICKLY_UPSTREAM_FN_ID 一键成片。如不用该功能可保持 quickly 为空。
08-proxyHub.js LLM_BASE_URL, LLM_API_KEY LLM/Gemini 代理。
09-uploadManager.js QINIU_AK, QINIU_SK, QINIU_BUCKET, QINIU_CDN_DOMAIN, QINIU_CDN_PREFIX, QINIU_UPLOAD_URL 七牛直传 token。
10-authCreditManager.js Parse session 可用即可;无第三方密钥 账号、积分、充值框架。商业化恢复前再启用。
11-jimengManager.js JIMENG_TOKEN, JIMENG_BASE_URL, PARSE_BASE_URL, PARSE_APP_ID 即梦真实生成代理。为保留公司计费,线上 JIMENG_BASE_URL 应指向 https://server.fmode.cn/api/volcengine/jimeng;云函数会依次尝试 fetch、Node HTTPS、XMLHttpRequest 访问同一公司接口。
12-douyinManager.js DOUYIN_API_BASE_URL, DOUYIN_API_TOKEN(可复用 VOC_TOKEN / VOICE_TOKEN 抖音真实平台数据抓取。默认走 https://server.fmode.cn/api/voc-social
13-douyinInsightManager.js PARSE_API_HOST, PARSE_APP_ID, DOUYIN_API_BASE_URL, DOUYIN_API_TOKEN, VOC_TOKEN(或 TRANSCRIPTION_VOC_TOKEN / VOICE_TOKEN), IFLYTEK_GATEWAY_BASE_URL 业务资产持久化和用户隔离;逐字稿任务会通过抖音数据网关获取视频详情并调用讯飞网关转写。

以上变量均已在云函数源码中改为“环境变量优先、当前兼容值兜底”。正式部署时应在 fmode 云函数平台配置环境变量,并在确认新变量生效后轮换旧凭证。

当前前端函数 ID

src/app/services/cloud-functions.ts。当前仍为空的字段:

  • quickly: 一键成片云函数未启用。
  • authCredit: 账号/积分云函数未启用;试运营阶段积分扣费仍关闭。

验证命令

npm run smoke:cloud
npm run build

smoke:cloud 会跳过函数 ID 为空的项目;对于 jimengdouyinproxy 会用预期失败请求验证函数可达和路由校验是否生效,避免触发真实生成或真实扣费。

2026-06-01 联网冒烟结果:

  • 最终通过:manifest.listtask.listhistory.listresult.listremix.listAllvoice.listProfilesupload.token.probejimeng.unknownActiondouyin.unknownRoutedouyinInsight.authGuardproxy.unknownAction
  • 权限保护符合预期:douyinInsight.listTopics 未带 session token 时返回“请先登录”。
  • 首轮曾出现 manifest.listtask.list 偶发 fetch failed,复跑通过;后续生产运维需要继续观察函数平台网络稳定性。
  • 待部署填 ID:quicklyauthCredit

首次部署后的特殊步骤

voiceManager 需要初始化 speaker_id 池:

await fetch('https://server.fmode.cn/api/functions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Parse-Application-Id': 'ncloudmaster',
  },
  body: JSON.stringify({
    id: 'voice 函数 ID',
    _ApplicationId: 'ncloudmaster',
    action: 'initPool',
    speakerIds: ['S_xxx', 'S_yyy'],
  }),
});

上线前检查

  • cloud-functions.ts 不允许留错函数 ID。
  • 必需凭证要配置在云函数平台环境变量中。
  • npm run smoke:cloud 通过。
  • npm run build 通过。
  • 批量真实生成、素材归档、发布复盘抓取各跑一条端到端样例。

2026-06-03 凭证治理补充规范

本项目已经新增根目录 .env.example 作为本地开发配置模板。后续本地联调请复制为 .env 后填写真实值,.env 已被 .gitignore 忽略,禁止提交真实凭证。

云函数部署时必须在 fmode 云函数平台配置环境变量。代码中后续会逐步移除真实 token/key fallback,因此不要依赖源码里的兼容兜底值。

变量分组

能力 变量 用途
即梦生成 JIMENG_TOKEN, JIMENG_BASE_URL 文生视频、图生视频、图片生成、数字人、动作迁移。为保留公司计费,生产建议使用 https://server.fmode.cn/api/volcengine/jimeng
抖音数据 DOUYIN_API_BASE_URL, DOUYIN_API_TOKEN, VOC_TOKEN, VOC_SOCIAL_TOKEN 视频详情、评论、博主作品、爆款分析证据抓取
TikHub 直连 TIKHUB_BASE_URL, TIKHUB_TOKEN 仅在明确直连 TikHub 时使用
逐字稿 IFLYTEK_GATEWAY_BASE_URL, TRANSCRIPTION_VOC_TOKEN, VOICE_TOKEN, OPENCLAW_VOC_TOKEN 爆款分析补逐字稿、音频转写
LLM/Gemini LLM_BASE_URL, LLM_API_KEY AI 助手、脚本生成、素材理解
七牛上传 QINIU_AK, QINIU_SK, QINIU_BUCKET, QINIU_DOMAIN, QINIU_CDN_DOMAIN, QINIU_CDN_PREFIX, QINIU_UPLOAD_URL 上传 token 和素材归档
语音合成 VOLC_TTS_TOKEN, VOLC_SPEECH_API_KEY, VOLC_SPEECH_APP_KEY, VOLC_SPEECH_ACCESS_KEY, VOICE_TTS_BASE_URL TTS、音色训练、语音合成
Quickly QUICKLY_APP_KEY, QUICKLY_APP_SECRET, QUICKLY_ACCOUNT_ID, QUICKLY_CALLBACK_URL, QUICKLY_RELAY_URL, QUICKLY_UPSTREAM_FN_ID 一键成片

安全要求

  • 文档、源码、提交记录中不记录真实 token/key。
  • diagnose 类接口只能返回 tokenConfiguredtokenSourcebaseUrl,不能返回明文 token。
  • 已经暴露在源码或聊天记录中的凭证,上线前需要在对应平台轮换。
  • 缺少凭证时应返回中文配置错误,提示具体变量名,不允许静默使用错误账号。