apiVersion: sub2rank.pikapython.com/v1 kind: Sub2Rank metadata: name: apistate owner: unidesk monitor: timezone: Asia/Shanghai refreshIntervalMinutes: 10 scoreWindow: 8h target: PK01 cli: workDir: /opt/unidesk executable: bun entrypoint: scripts/cli.ts mainServerHost: 152.53.229.148 timeoutMs: 180000 webAuth: username: admin cookieName: apistate_session sessionTtlSeconds: 43200 sub2api: baseUrl: https://api.pikapython.com/api/v1 requestTimeoutMs: 20000 pageSize: 100 adminCredentials: sourceRef: platform-infra/sub2api.env emailKey: ADMIN_EMAIL passwordKey: ADMIN_PASSWORD lottery: timezone: Asia/Shanghai initialDrawCount: 1 dailyGrant: hour: 6 minute: 0 count: 1 eligibility: activeWithinHours: 24 statuses: - active excludedRoles: - admin excludedIdentities: - zhuo - huiguo identityFields: - username - email - emailLocalPart prize: amountUsd: 100 automaticCredit: enabled: false mode: dry-run notesPrefix: Sub2Rank 每日抽奖奖金 creditTest: targetIdentifier: admin identityFields: - username - emailLocalPart amountUsd: 0.01 notes: Sub2Rank CLI 管理员充值链路测试 ranking: timezone: Asia/Shanghai windowDays: 1 sourceLimit: 100 displayLimit: 20 records: publicLimit: 20 temporal: addressEnv: APISTATE_TEMPORAL_ADDRESS namespace: unidesk taskQueue: apistate scoreScheduleWorkflowId: apistate-score-refresh-schedule workflowExecutionTimeout: 5m activityStartToCloseTimeout: 4m retry: maximumAttempts: 1 runtime: secretsRoot: /root/.unidesk/.state/secrets secretSourcePaths: /root/.unidesk/.env/unified-admin-password.txt: /root/.unidesk/.env/unified-admin-password.txt platform-infra/sub2api.env: /root/.unidesk/.state/secrets/platform-infra/sub2api.env platform-infra/apistate.env: /root/.unidesk/.state/secrets/platform-infra/apistate.env defaultCliTarget: local overApiTarget: native-api cliTargets: local: mode: embedded databasePath: .state/sub2rank.sqlite scoreCachePath: .state/account-scores.json monitorWorkDir: /root/unidesk temporalTaskQueue: apistate-native production: mode: http baseUrl: https://apistate.hwpod.com adminToken: sourceRef: platform-infra/apistate.env sourceKey: APISTATE_API_KEY development: mode: http baseUrl: http://sub2rank.platform-infra-development.svc.cluster.local:8080 adminToken: sourceRef: platform-infra/apistate.env sourceKey: APISTATE_API_KEY native-api: mode: http baseUrl: http://127.0.0.1:8080 adminToken: sourceRef: platform-infra/apistate.env sourceKey: APISTATE_API_KEY native: stateDir: .state/native env: APISTATE_WEB_PASSWORD: sourceRef: /root/.unidesk/.env/unified-admin-password.txt sourceKey: contents APISTATE_API_KEY: sourceRef: platform-infra/apistate.env sourceKey: APISTATE_API_KEY APISTATE_SESSION_SECRET: sourceRef: platform-infra/apistate.env sourceKey: APISTATE_SESSION_SECRET SUB2API_ADMIN_EMAIL: sourceRef: platform-infra/sub2api.env sourceKey: ADMIN_EMAIL SUB2API_ADMIN_PASSWORD: sourceRef: platform-infra/sub2api.env sourceKey: ADMIN_PASSWORD services: api: command: - bun - --hot - src/api.ts - --config - config/sub2rank.yaml - --runtime - native pidFile: api.pid logFile: api.log worker: command: - bun - src/worker.ts - --config - config/sub2rank.yaml - --runtime - native pidFile: worker.pid logFile: worker.log web: command: - bunx - vite - --config - vite.config.ts pidFile: web.pid logFile: web.log serverTargets: native: listenHost: 127.0.0.1 listenPort: 8080 workerHealthHost: 127.0.0.1 workerHealthPort: 8081 webListenHost: 127.0.0.1 webListenPort: 5173 webApiBaseUrl: http://127.0.0.1:8080 secureCookies: false databasePath: .state/sub2rank.sqlite scoreCachePath: .state/account-scores.json monitorWorkDir: /root/unidesk temporalTaskQueue: apistate-native scoreScheduleWorkflowId: apistate-native-score-refresh-schedule adminTokenEnv: APISTATE_API_KEY sub2apiAdminEmailEnv: SUB2API_ADMIN_EMAIL sub2apiAdminPasswordEnv: SUB2API_ADMIN_PASSWORD webPasswordEnv: APISTATE_WEB_PASSWORD apiKeyEnv: APISTATE_API_KEY sessionSecretEnv: APISTATE_SESSION_SECRET k8s: listenHost: 0.0.0.0 listenPort: 8080 workerHealthHost: 0.0.0.0 workerHealthPort: 8081 webListenHost: 127.0.0.1 webListenPort: 5173 webApiBaseUrl: http://127.0.0.1:8080 secureCookies: true databasePath: /var/lib/sub2rank/sub2rank.sqlite scoreCachePath: /var/lib/sub2rank/account-scores.json monitorWorkDir: /opt/unidesk temporalTaskQueue: apistate scoreScheduleWorkflowId: apistate-score-refresh-schedule adminTokenEnv: APISTATE_API_KEY sub2apiAdminEmailEnv: SUB2API_ADMIN_EMAIL sub2apiAdminPasswordEnv: SUB2API_ADMIN_PASSWORD webPasswordEnv: APISTATE_WEB_PASSWORD apiKeyEnv: APISTATE_API_KEY sessionSecretEnv: APISTATE_SESSION_SECRET development: listenHost: 0.0.0.0 listenPort: 8080 workerHealthHost: 0.0.0.0 workerHealthPort: 8081 webListenHost: 127.0.0.1 webListenPort: 5173 webApiBaseUrl: http://127.0.0.1:8080 secureCookies: false databasePath: /var/lib/sub2rank/sub2rank.sqlite scoreCachePath: /var/lib/sub2rank/account-scores.json monitorWorkDir: /opt/unidesk temporalTaskQueue: apistate-development scoreScheduleWorkflowId: apistate-development-score-refresh-schedule adminTokenEnv: APISTATE_API_KEY sub2apiAdminEmailEnv: SUB2API_ADMIN_EMAIL sub2apiAdminPasswordEnv: SUB2API_ADMIN_PASSWORD webPasswordEnv: APISTATE_WEB_PASSWORD apiKeyEnv: APISTATE_API_KEY sessionSecretEnv: APISTATE_SESSION_SECRET