feat: corrigido encoding UTF-8 nos spawns de Python do painel CEP
- corrigido encoding UTF-8 nos spawns de Python do painel CEP para exibir caracteres acentuados corretamente Resumo: - 3 arquivos alterados - 0 novos - 3 modificados - 0 removidos 3 files changed, 21 insertions(+), 17 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/main.js - code/engine/aplicar_plano_de_edicao.py
This commit is contained in:
+20
-17
@@ -852,10 +852,10 @@ function analisesCarregar() {
|
||||
analisesRelatorioPath = path.join(os.tmpdir(), "jhonny-analises-" + stamp + ".json");
|
||||
setBusy("btnAnalisesCarregar", true); taskStart("Análises", "Lendo o banco de análises", null);
|
||||
var child = childProcess.spawn(SCANNER_PYTHON_BIN, [ANALISES_ENGINE_SCRIPT, ANALISES_DB_PATH, analisesRelatorioPath],
|
||||
{ cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code", stdio: ["ignore", "pipe", "pipe"] });
|
||||
{ cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code", stdio: ["ignore", "pipe", "pipe"], env: Object.assign({}, process.env, { PYTHONIOENCODING: "utf-8" }) });
|
||||
var stderr = "", stdout = "";
|
||||
child.stdout.on("data", function (chunk) { stdout += chunk.toString(); });
|
||||
child.stderr.on("data", function (chunk) { stderr += chunk.toString(); });
|
||||
child.stdout.on("data", function (chunk) { stdout += chunk.toString("utf-8"); });
|
||||
child.stderr.on("data", function (chunk) { stderr += chunk.toString("utf-8"); });
|
||||
child.on("error", function (error) { setBusy("btnAnalisesCarregar", false); taskEnd(false, "Análises indisponíveis", error.stack || error.message); });
|
||||
child.on("close", function (code) {
|
||||
setBusy("btnAnalisesCarregar", false);
|
||||
@@ -1081,15 +1081,15 @@ function retakesAnalisar() {
|
||||
document.getElementById("retakesProgressoCard").hidden = false;
|
||||
document.getElementById("retakesProgressoEtapa").textContent = "Analisando retakes…";
|
||||
var child = childProcess.spawn(SCANNER_PYTHON_BIN, [RETAKES_ENGINE_SCRIPT, entrada, path.join(retakesRaiz(), retakesCasoAtual)],
|
||||
{ cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code/engine", stdio: ["ignore", "pipe", "pipe"] });
|
||||
{ cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code/engine", stdio: ["ignore", "pipe", "pipe"], env: Object.assign({}, process.env, { PYTHONIOENCODING: "utf-8" }) });
|
||||
retakesProcesso = child;
|
||||
var resto = "";
|
||||
var erroTecnico = "";
|
||||
child.stdout.on("data", function (pedaco) {
|
||||
resto += pedaco.toString(); var linhas = resto.split("\n"); resto = linhas.pop();
|
||||
resto += pedaco.toString("utf-8"); var linhas = resto.split("\n"); resto = linhas.pop();
|
||||
linhas.forEach(function (linha) { var evento; try { evento = JSON.parse(linha); } catch (_) { return; } retakesProcessarEvento(evento); });
|
||||
});
|
||||
child.stderr.on("data", function (pedaco) { erroTecnico += pedaco.toString(); if (pedaco.toString().trim()) retakesLog(pedaco.toString().trim()); });
|
||||
child.stderr.on("data", function (pedaco) { var texto = pedaco.toString("utf-8"); erroTecnico += texto; if (texto.trim()) retakesLog(texto.trim()); });
|
||||
child.on("error", function (erro) { retakesProcesso = null; setBusy("btnRetakesAnalisar", false); taskEnd(false, "Engine indisponível", erro.stack || erroTecnico || erro.message); showToast("err", erro.message); });
|
||||
child.on("close", function (codigo) {
|
||||
retakesProcesso = null; setBusy("btnRetakesAnalisar", false);
|
||||
@@ -1379,17 +1379,17 @@ function scannerIniciarProcessamento() {
|
||||
scannerReportPath=path.join(outputRoot,"relatorio-"+stamp+".json");
|
||||
fs.writeFileSync(input,JSON.stringify({perfil:profile,timeline:scannerTimeline},null,2),"utf-8");
|
||||
setBusy("btnScannerProcess",true);
|
||||
var spawnOptions={cwd:"/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code",stdio:["ignore","pipe","pipe"]};
|
||||
var huggingFaceEnvironment=hfSpawnOptions(); if(huggingFaceEnvironment&&huggingFaceEnvironment.env) spawnOptions.env=huggingFaceEnvironment.env;
|
||||
var spawnOptions={cwd:"/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code",stdio:["ignore","pipe","pipe"],env:Object.assign({},process.env,{PYTHONIOENCODING:"utf-8"})};
|
||||
var huggingFaceEnvironment=hfSpawnOptions(); if(huggingFaceEnvironment&&huggingFaceEnvironment.env) spawnOptions.env=Object.assign({},spawnOptions.env,huggingFaceEnvironment.env);
|
||||
var child=childProcess.spawn(SCANNER_PYTHON_BIN,[SCANNER_ENGINE_SCRIPT,input,scannerReportPath],spawnOptions);
|
||||
scannerProcesso=child; scannerCancelSolicitado=false;
|
||||
taskStart("Scanner", "Preparando análise", null, function () { scannerCancelSolicitado=true; if (scannerProcesso) scannerProcesso.kill("SIGTERM"); });
|
||||
var stderr="", stdout="";
|
||||
child.stdout.on("data",function(chunk) {
|
||||
stdout += chunk.toString(); var lines=stdout.split("\n"); stdout=lines.pop();
|
||||
stdout += chunk.toString("utf-8"); var lines=stdout.split("\n"); stdout=lines.pop();
|
||||
lines.forEach(function(line) { try { var event=JSON.parse(line); if (event.evento === "progresso") taskUpdate({stage:event.etapa, detail:event.clipe || "", pct:event.percentual}); if (event.evento === "concluido" && event.arquivo) scannerReportPath=event.arquivo; } catch (_) {} });
|
||||
});
|
||||
child.stderr.on("data",function(chunk){stderr+=chunk.toString();});
|
||||
child.stderr.on("data",function(chunk){stderr+=chunk.toString("utf-8");});
|
||||
child.on("error",function(error){setBusy("btnScannerProcess",false);taskEnd(false,"Scanner indisponível",error.stack||error.message);showToast("err",error.message);});
|
||||
child.on("close",function(code){var foiCancelado=scannerCancelSolicitado;scannerProcesso=null;setBusy("btnScannerProcess",false);if(foiCancelado){taskEnd(false,"Scanner cancelado");return;}if(code!==0||!fs.existsSync(scannerReportPath)){taskEnd(false,"Scanner falhou",stderr||"Não foi possível gerar o relatório.");showToast("err",stderr||"Não foi possível gerar o relatório.");return;}scannerRelatorioExistente=scannerReportPath;scannerAtualizarComplementos();taskEnd(true,"Relatório JSON gerado");document.getElementById("scannerReportPath").textContent=scannerReportPath;document.getElementById("scannerReportCard").hidden=false;showToast("ok","Scanner concluído.");});
|
||||
}
|
||||
@@ -1401,16 +1401,16 @@ function scannerProcessarComplemento(acao) {
|
||||
var entrada = path.join(scannerOutputRoot(), "pedido-complemento-" + Date.now() + ".json");
|
||||
var perfil; try { perfil = scannerProfileFromScreen(); } catch (error) { setBusy(botao.id, false); showToast("err", error.message); return; }
|
||||
fs.writeFileSync(entrada, JSON.stringify({perfil: perfil, timeline: scannerTimeline}, null, 2), "utf-8");
|
||||
var opcoes = {cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code", stdio: ["ignore", "pipe", "pipe"]};
|
||||
var hf = hfSpawnOptions(); if (hf && hf.env) opcoes.env = hf.env;
|
||||
var opcoes = {cwd: "/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code", stdio: ["ignore", "pipe", "pipe"], env: Object.assign({}, process.env, { PYTHONIOENCODING: "utf-8" })};
|
||||
var hf = hfSpawnOptions(); if (hf && hf.env) opcoes.env = Object.assign({}, opcoes.env, hf.env);
|
||||
var processo = null;
|
||||
taskStart("Complementando a análise do Scanner", acao === "diarizacao" ? "Detectando locutores" : "Calculando métricas de voz", null, function () {
|
||||
if (processo) processo.kill("SIGTERM");
|
||||
});
|
||||
processo = childProcess.spawn(SCANNER_PYTHON_BIN, [SCANNER_ENGINE_SCRIPT, entrada, scannerRelatorioExistente, "--complemento", acao], opcoes);
|
||||
var erro = "";
|
||||
processo.stderr.on("data", function (bloco) { erro += bloco.toString(); });
|
||||
processo.stdout.on("data", function (bloco) { bloco.toString().split("\n").forEach(function (linha) { try { var evento = JSON.parse(linha); if (evento.evento === "progresso") taskUpdate({stage: evento.etapa, detail: evento.clipe || "", pct: evento.percentual}); } catch (_) {} }); });
|
||||
processo.stderr.on("data", function (bloco) { erro += bloco.toString("utf-8"); });
|
||||
processo.stdout.on("data", function (bloco) { bloco.toString("utf-8").split("\n").forEach(function (linha) { try { var evento = JSON.parse(linha); if (evento.evento === "progresso") taskUpdate({stage: evento.etapa, detail: evento.clipe || "", pct: evento.percentual}); } catch (_) {} }); });
|
||||
processo.on("close", function (codigo) { processo = null; setBusy(botao.id, false); if (taskState.canceled) { taskEnd(false, "Complemento cancelado"); return; } if (codigo !== 0) { taskEnd(false, "Falha ao processar o complemento.", erro || "Não foi possível processar este complemento."); showToast("err", erro || "Não foi possível processar este complemento."); return; } scannerAtualizarComplementos(); document.getElementById("scannerReportPath").textContent = scannerRelatorioExistente; document.getElementById("scannerReportCard").hidden = false; taskEnd(true, "Complemento concluído"); showToast("ok", acao === "diarizacao" ? "Locutores processados sem refazer a transcrição." : "Métricas da fala processadas sem refazer a transcrição."); });
|
||||
}
|
||||
|
||||
@@ -2844,7 +2844,10 @@ var PROGRESS_PREFIX = "@@PROGRESS ";
|
||||
|
||||
function runStreamed(bin, args, onLine, onDone, options) {
|
||||
var childProcess = nodeRequire("child_process");
|
||||
var child = childProcess.spawn(bin, args, options || {});
|
||||
var baseEnv = Object.assign({}, process.env || {}, { PYTHONIOENCODING: "utf-8" });
|
||||
var finalEnv = Object.assign(baseEnv, options && options.env || {});
|
||||
var mergedOptions = Object.assign({}, options || {}, { env: finalEnv });
|
||||
var child = childProcess.spawn(bin, args, mergedOptions);
|
||||
var buffer = "";
|
||||
var ultimoErro = "";
|
||||
var ultimaSaida = "";
|
||||
@@ -2868,8 +2871,8 @@ function runStreamed(bin, args, onLine, onDone, options) {
|
||||
if (parts[i].trim()) handleLine(parts[i]);
|
||||
}
|
||||
}
|
||||
child.stdout.on("data", function (d) { ultimaSaida += d.toString(); flushLines(d.toString()); });
|
||||
child.stderr.on("data", function (d) { ultimoErro = d.toString().trim() || ultimoErro; flushLines(d.toString()); });
|
||||
child.stdout.on("data", function (d) { ultimaSaida += d.toString("utf-8"); flushLines(d.toString("utf-8")); });
|
||||
child.stderr.on("data", function (d) { ultimoErro = d.toString("utf-8").trim() || ultimoErro; flushLines(d.toString("utf-8")); });
|
||||
child.on("error", function (err) { onDone(1, "spawn error: " + err.message); });
|
||||
child.on("close", function (code) {
|
||||
if (buffer.trim()) handleLine(buffer);
|
||||
|
||||
Reference in New Issue
Block a user