reavaliarComContextoIxc.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import "dotenv/config";
  2. import { Atendimento } from "../src/models/Atendimento.model.js";
  3. import { avaliarAtendimento } from "../src/services/atendimentoAvaliacaoService.js";
  4. const limiteIdx = process.argv.indexOf("--limite");
  5. const LIMITE = limiteIdx > -1 ? Number(process.argv[limiteIdx + 1]) : null;
  6. async function main() {
  7. let query = Atendimento.query()
  8. .join("atendimento_avaliacoes as av", "av.AtendimentoId", "atendimentos.Id")
  9. .join("atendimento_clientes as c", "c.Id", "atendimentos.ClienteId")
  10. .where("atendimentos.Setor", "SUP")
  11. .where("av.Avaliavel", true)
  12. .whereNotNull("c.ErpProtocolo")
  13. .select("atendimentos.Id", "atendimentos.Codigo")
  14. .orderBy("atendimentos.Abertura", "desc");
  15. if (LIMITE) query = query.limit(LIMITE);
  16. const alvos = await query;
  17. const total = alvos.length;
  18. console.log(`[reavaliar-ixc] iniciando: ${total} atendimentos`);
  19. let processados = 0;
  20. let erros = 0;
  21. const t0 = Date.now();
  22. for (const a of alvos) {
  23. try {
  24. await avaliarAtendimento(a.Id);
  25. } catch (err) {
  26. erros += 1;
  27. console.warn(`[reavaliar-ixc] erro em ${a.Codigo}: ${err.message}`);
  28. } finally {
  29. processados += 1;
  30. if (processados % 25 === 0 || processados === total) {
  31. const s = Math.round((Date.now() - t0) / 1000);
  32. const ritmo = s / processados;
  33. const restamMin = Math.round(((total - processados) * ritmo) / 60);
  34. console.log(
  35. `[reavaliar-ixc] progresso: ${processados}/${total} | erros: ${erros} | ${Math.round(s / 60)}min decorridos | ~${restamMin}min restantes`
  36. );
  37. }
  38. }
  39. }
  40. console.log(`[reavaliar-ixc] concluído: ${processados}/${total} | erros: ${erros} | ${Math.round((Date.now() - t0) / 60000)}min total`);
  41. process.exit(0);
  42. }
  43. main().catch((err) => {
  44. console.error("[reavaliar-ixc] falha fatal:", err);
  45. process.exit(1);
  46. });