60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
|
|
#!/usr/bin/env node
|
|||
|
|
/**
|
|||
|
|
* ITL / Unified Tasks 发布前配置检查(只读)
|
|||
|
|
*/
|
|||
|
|
import { loadH5Environment } from './load-env.mjs';
|
|||
|
|
|
|||
|
|
loadH5Environment(import.meta.dirname);
|
|||
|
|
|
|||
|
|
const env = process.env;
|
|||
|
|
const checks = [
|
|||
|
|
{
|
|||
|
|
id: 'schedule_enabled',
|
|||
|
|
label: 'H5_SCHEDULE_ENABLED=1',
|
|||
|
|
ok: env.H5_SCHEDULE_ENABLED === '1',
|
|||
|
|
required: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'unified_tasks',
|
|||
|
|
label: 'H5_UNIFIED_TASKS_ENABLED=1(Phase B/C 双写 + 统一读)',
|
|||
|
|
ok: env.H5_UNIFIED_TASKS_ENABLED === '1',
|
|||
|
|
required: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'intent_transaction',
|
|||
|
|
label: 'H5_INTENT_TRANSACTION_ENABLED=1(Phase A Confirm Gate)',
|
|||
|
|
ok: env.H5_INTENT_TRANSACTION_ENABLED === '1',
|
|||
|
|
required: false,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'database_url',
|
|||
|
|
label: 'DATABASE_URL 已配置',
|
|||
|
|
ok: Boolean(env.DATABASE_URL),
|
|||
|
|
required: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 'scheduled_task_worker',
|
|||
|
|
label: 'H5_SCHEDULED_TASK_WORKER_ENABLED 未显式关闭',
|
|||
|
|
ok: env.H5_SCHEDULED_TASK_WORKER_ENABLED !== '0',
|
|||
|
|
required: false,
|
|||
|
|
},
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
let failed = 0;
|
|||
|
|
console.log('=== ITL Rollout Config Check ===\n');
|
|||
|
|
for (const check of checks) {
|
|||
|
|
const mark = check.ok ? '✔' : (check.required ? '✘' : '○');
|
|||
|
|
console.log(`${mark} ${check.label}`);
|
|||
|
|
if (!check.ok && check.required) failed += 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('\n推荐灰度顺序:');
|
|||
|
|
console.log(' 1. 部署代码(ITL/Unified 开关关闭)');
|
|||
|
|
console.log(' 2. H5_UNIFIED_TASKS_ENABLED=1');
|
|||
|
|
console.log(' 3. node scripts/migrate-tang-unified-tasks-103.mjs --apply');
|
|||
|
|
console.log(' 4. npm run verify:tang-itl-readiness-103');
|
|||
|
|
console.log(' 5. H5_INTENT_TRANSACTION_ENABLED=1');
|
|||
|
|
console.log(' 6. 微信实测 Action Card 流程');
|
|||
|
|
|
|||
|
|
process.exit(failed > 0 ? 1 : 0);
|