avaliarTudo.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Roda a avaliação (estágio 1) em lotes até zerar a fila de pendentes.
  2. // Uso: node scripts/avaliarTudo.js [--lote 20]
  3. import { avaliarPendentes, contarPendentes } from "../src/services/atendimentoAvaliacaoService.js";
  4. const loteArg = process.argv.indexOf("--lote");
  5. const LOTE = loteArg > -1 ? Number(process.argv[loteArg + 1]) : 20;
  6. async function main() {
  7. let restantes = await contarPendentes();
  8. console.log(`[avaliar-tudo] ${restantes} pendentes, lotes de ${LOTE}`);
  9. while (restantes > 0) {
  10. const t0 = Date.now();
  11. const r = await avaliarPendentes({ limite: LOTE });
  12. restantes = await contarPendentes();
  13. console.log(
  14. `[avaliar-tudo] +${r.avaliados} avaliados, ${r.semDialogo} sem diálogo, ${r.erros.length} erros ` +
  15. `(${((Date.now() - t0) / 1000).toFixed(0)}s) — restam ${restantes}`
  16. );
  17. if (r.erros.length) r.erros.slice(0, 3).forEach((e) => console.log(" erro:", e.atendimentoId, e.erro));
  18. // lote sem nenhum progresso = algo estrutural errado; para em vez de girar para sempre
  19. if (r.avaliados === 0 && r.semDialogo === 0) {
  20. console.error("[avaliar-tudo] lote inteiro falhou, abortando");
  21. process.exit(1);
  22. }
  23. }
  24. console.log("[avaliar-tudo] fila zerada");
  25. process.exit(0);
  26. }
  27. main().catch((e) => {
  28. console.error("[avaliar-tudo] falha:", e.message);
  29. process.exit(1);
  30. });