# authCredit 云函数部署说明 ## 当前定位 `cloud-functions/10-authCreditManager.js` 现在是 **Parse/APIG 账号积分网关**,不是自建账号系统。 它不再创建这些旧表: - `AppUser` - `AppSession` - `UserCreditAccount` - `CreditLedger` - `CreditReservation` - `RechargeOrder` 当前项目真实数据来源是: - 登录用户:Parse `_User` - 登录态:`X-Parse-Session-Token` - 视频工作流余额:`APIGAuth.count` - 已用额度:`APIGAuth.used` - 最近扣费状态:`APIGAuth.lastBilling` - 充值订单:现有 `/api/apig/created-apigorder` 和 `/api/apig/saveRecharge` ## 为什么重写 旧版 `10-authCreditManager.js` 从创建开始一直未部署,且已经和当前项目脱节。 如果直接部署旧版,会出现两套账: 1. 用户中心和充值页读取 `APIGAuth` 余额。 2. 旧云函数扣 `UserCreditAccount` 余额。 这样会导致用户明明在 APIG 里有余额,但生成链路却查到另一套余额为 0。 ## 部署步骤 1. 打开 fmode 云函数管理平台。 2. 新建或更新 `10-authCreditManager.js` 对应云函数。 3. 粘贴 `cloud-functions/10-authCreditManager.js` 的完整内容。 4. 配置环境变量。 5. 保存部署,复制云函数 objectId。 6. 填入 `src/app/services/cloud-functions.ts`: ```ts authCredit: '你的云函数 objectId' ``` 7. 执行前端构建和云函数 smoke 检查。 ## 环境变量 | 变量 | 必填 | 默认值 | 说明 | | --- | --- | --- | --- | | `PARSE_API_HOST` | 否 | `https://server.fmode.cn` | Parse/API 主机 | | `PARSE_APP_ID` | 否 | `ncloudmaster` | Parse Application ID | | `VIDEO_WORKFLOW_APIG_ID` | 否 | `6pFf6EAdKT` | 当前短视频 AI 工作流 APIG ID | | `VIDEO_WORKFLOW_APIG_TITLE` | 否 | `短视频AI工作流` | 余额上下文展示标题 | | `VIDEO_WORKFLOW_APIG_UNIT_PRICE_CNY` | 否 | `0.1` | 估算单积分价格 | ## 支持 action | action | 说明 | | --- | --- | | `me` | 根据 `sessionToken` 读取 Parse 当前用户 | | `balance` | 读取或创建当前用户的视频工作流 `APIGAuth`,返回 `count/used` | | `ledger` | 返回最近一次 `APIGAuth.lastBilling` 形成的轻量流水 | | `rechargeContext` | 返回充值需要的 `authId/userId/payUserId/apig/priceStep` | | `reserve` | 在 `APIGAuth.count` 上预扣积分,并写入 `lastBilling` | | `commitReservation` | 把最近一次预扣标记为已确认 | | `refundReservation` | 把最近一次预扣退回 | | `createRechargeOrder` | 代理创建 APIGOrder | | `saveRecharge` | 代理保存充值结果,并写回 APIGAuth 余额 | ## 不再支持的 action 这些 action 会返回 `501`: - `register` - `login` - `changePassword` - `adminListUsers` - `adminCreateUser` - `adminAdjustCredit` 原因:当前项目使用 Parse 手机验证码登录和 APIG 余额体系,不再由该云函数自建账号、密码、积分表。 ## 前端注意 当前 `AuthCreditService` 已经支持云函数优先路径。 配置 `src/app/services/cloud-functions.ts` 里的 `authCredit` 后,以下能力会优先走本云函数;未配置时保留本地开发兜底: - `getVideoWorkflowApigBalance` - `getVideoWorkflowRechargeContext` - `createApigOrder` - `saveApigRecharge` 这样才能彻底做到: - 前端不直接读写 `APIGAuth` - 前端不直接创建 `APIGOrder` - 余额查询、充值、扣费都由服务端统一校验 `sessionToken`