feat(kugou): 凭证支持环境变量兜底(配一次永久用);补 deploy.yml 变量映射

站长问「能不能跳转到酷狗 App 登录」—— 平台不允许(小程序无法启动任意原生 App),
而且即使跳过去,App 内的登录态也只在那台手机上,不会回传给服务端。
所以真正的便利做法是「凭证配一次、长期复用」:

- kugouService.kuGouFetch:cookie/token 增加 KUGOU_ADMIN_COOKIE / KUGOU_ADMIN_TOKEN
  兜底读环境变量;优先级 显式传入 > 库里绑定 > 环境变量
  (库里绑定的优先,所以之后想临时换一份 Cookie 仍可在后台粘一次覆盖)
- status.get.ts:bound 增加 source: 'db' | 'env' | 'none',界面能说清凭证从哪来
- deploy.yml:KUGOU_ADMIN_COOKIE / KUGOU_ADMIN_TOKEN 三处齐全
  (step env: 映射 + ENV_PAYLOAD export + upsert_env_key),并用 ${VAR:-} 兜底 ——
  少任何一处都会像上次那样 unbound variable 直接把部署打挂

已用脚本校验:payload 占位符/参数 23/23 对应、远端脚本 30 个变量都有来源、
两个新变量三处齐全。
This commit is contained in:
2026-09-30 19:16:55 +08:00
parent af50ff1d95
commit 9d3edc2c5e
3 changed files with 30 additions and 6 deletions
+7 -2
View File
@@ -22,6 +22,8 @@ export default defineEventHandler(async (event) => {
let serviceOk: boolean
let serviceMessage: string
let loginStatus: any = null
const envCookie = !!(process.env.KUGOU_ADMIN_COOKIE || '').trim()
const envToken = !!(process.env.KUGOU_ADMIN_TOKEN || '').trim()
try {
const r = await kuGouFetch('/login/status', { timestamp: Date.now() })
loginStatus = r
@@ -41,9 +43,12 @@ export default defineEventHandler(async (event) => {
serviceMessage,
loginStatus,
},
// 环境变量兜底(KUGOU_ADMIN_COOKIE / KUGOU_ADMIN_TOKEN):配一次永久用;库里绑定的优先
bound: {
hasToken: !!settings?.kugouAdminToken,
hasCookie: !!settings?.kugouAdminCookie,
hasToken: !!settings?.kugouAdminToken || envToken,
hasCookie: !!settings?.kugouAdminCookie || envCookie,
// 让界面能说清"这份凭证从哪来",排错时很关键
source: settings?.kugouAdminCookie || settings?.kugouAdminToken ? 'db' : envCookie || envToken ? 'env' : 'none',
boundAt: settings?.kugouAdminBoundAt || null,
user: settings?.kugouAdminUser || null,
},