| 12345678910111213141516171819202122232425262728293031323334 |
- // P98:用**全量**参数重新触发重算(skip_scada:false)—— 产物被全清后必须补 SCADA 步骤,否则第 14 步读不到 temp_bins.parquet
- const GW = 'http://106.120.102.238:28084'
- const t0 = Date.now()
- const st = () => ((Date.now() - t0) / 1000).toFixed(0).padStart(5) + 's'
- async function get(path) {
- try {
- const r = await fetch(GW + path + (path.includes('?') ? '&' : '?') + 'ts=' + Date.now() + Math.random(), { headers: { 'Cache-Control': 'no-cache' } })
- const b = await r.text()
- return { status: r.status, len: b.length, txt: b }
- } catch (e) { return { status: 0, len: 0, txt: String(e) } }
- }
- async function post(path, body) {
- const r = await fetch(GW + path, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body || {}) })
- return { status: r.status, txt: (await r.text()).slice(0, 240) }
- }
- console.log(st() + ' fleet(前)=' + (await get('/api/fleet')).status)
- console.log(st() + ' 全量 rebuild: ' + JSON.stringify(await post('/ops/api/rebuild', { skip_scada: false, with_verify: false })))
- let ok = false
- for (let i = 0; i < 160; i++) {
- await new Promise((r) => setTimeout(r, 45000))
- const f = await get('/api/fleet')
- const s = await get('/ops/api/state')
- let job = {}
- try { job = JSON.parse(s.txt).job || {} } catch { /* ignore */ }
- const tail = String((job.log_tail || []).slice(-1)[0] || '').trim().slice(0, 96)
- console.log(st() + ' fleet=' + f.status + '(' + f.len + 'B) job=' + (job.status || '?') + ' rc=' + (job.rc ?? '-') + ' · ' + tail)
- if (f.status === 200 && f.len > 50000) { ok = true; console.log('✅ fleet 已恢复'); break }
- if (job.rc !== null && job.rc !== undefined) {
- console.log('⚠️ 结束 rc=' + job.rc)
- for (const l of (job.log_tail || []).slice(-10)) console.log(' ' + String(l).slice(0, 190))
- break
- }
- }
- console.log('END ' + st() + ' ' + (ok ? 'OK' : 'NOT-OK'))
|