const DEFAULT_SCORE = 100;
const SCORE_PENALTY_ERROR = 5;
const SCORE_PENALTY_WARNING = 2;
const SCORE_PENALTY_INFO = 1;
const MIN_SCORE = 0;
export function calcularScoreGeral(totalArquivos, ocorrencias) {
    if (totalArquivos === 0 || ocorrencias.length === 0)
        return DEFAULT_SCORE;
    let score = DEFAULT_SCORE;
    for (const o of ocorrencias) {
        const nivel = o.nivel?.toLowerCase() || 'info';
        if (nivel === 'erro')
            score -= SCORE_PENALTY_ERROR;
        else if (nivel === 'aviso')
            score -= SCORE_PENALTY_WARNING;
        else
            score -= SCORE_PENALTY_INFO;
    }
    const penaltyPerFile = Math.floor(ocorrencias.length / Math.max(totalArquivos, 1));
    score -= penaltyPerFile;
    return Math.max(MIN_SCORE, Math.min(DEFAULT_SCORE, score));
}
export function resumirPorTipo(ocorrencias) {
    const resumo = {};
    for (const o of ocorrencias) {
        const tipo = o.tipo || 'desconhecido';
        resumo[tipo] = (resumo[tipo] || 0) + 1;
    }
    return resumo;
}
export function resumirPorSeveridade(ocorrencias) {
    const resumo = {};
    for (const o of ocorrencias) {
        const nivel = o.nivel?.toLowerCase() || 'info';
        resumo[nivel] = (resumo[nivel] || 0) + 1;
    }
    return resumo;
}
export function simplificarOcorrencias(ocorrencias) {
    return ocorrencias.map(o => ({
        mensagem: typeof o.mensagem === 'string' ? o.mensagem : String(o.mensagem ?? ''),
        relPath: typeof o.relPath === 'string' ? o.relPath : String(o.relPath ?? ''),
        tipo: typeof o.tipo === 'string' ? o.tipo : undefined,
        nivel: typeof o.nivel === 'string' ? o.nivel : undefined,
        linha: typeof o.linha === 'number' ? o.linha : undefined,
        coluna: typeof o.coluna === 'number' ? o.coluna : undefined,
        sugestao: typeof o.sugestao === 'string' ? o.sugestao : undefined
    }));
}
//# sourceMappingURL=full-analysis-utils.js.map