import { formatMs } from '../../../config/index.js';
import { RelatorioMensagens } from './report-messages.js';
export function gerarHeaderRelatorio(metadados) {
    const lines = [];
    const { principal } = RelatorioMensagens;
    lines.push(`# ${principal.titulo}`);
    lines.push('');
    lines.push(`**${principal.secoes.metadados.data}:** ${metadados.dataISO}  `);
    lines.push(`**${principal.secoes.metadados.duracao}:** ${formatMs(metadados.duracao)}  `);
    lines.push(`**${principal.secoes.metadados.arquivos}:** ${metadados.totalArquivos}  `);
    lines.push(`**${principal.secoes.metadados.ocorrencias}:** ${metadados.totalOcorrencias}  `);
    lines.push('');
    lines.push(RelatorioMensagens.comum.separadores.secao);
    lines.push('');
    if (metadados.manifestFile && metadados.relatoriosDir) {
        lines.push(`**${principal.secoes.metadados.arquivoManifest}:** \`${metadados.manifestFile}\`  `);
        lines.push('');
        lines.push(`> ${principal.secoes.metadados.notaManifest}`);
        lines.push('');
        lines.push(RelatorioMensagens.comum.separadores.secao);
        lines.push('');
    }
    return lines;
}
export function gerarSecaoGuardian(guardian) {
    const lines = [];
    const { guardian: msg } = RelatorioMensagens.principal.secoes;
    lines.push(`## ${msg.titulo}`);
    lines.push('');
    lines.push(`  - **${msg.status}:** ${guardian.status}`);
    lines.push(`  - **${msg.timestamp}:** ${guardian.timestamp}`);
    lines.push(`  - **${msg.totalArquivos}:** ${guardian.totalArquivos}`);
    lines.push('');
    lines.push(RelatorioMensagens.comum.separadores.secao);
    lines.push('');
    return lines;
}
export function gerarTabelaResumoTipos(tiposContagem, limite = 10) {
    const lines = [];
    const { resumoTipos } = RelatorioMensagens.principal.secoes;
    lines.push(`## ${resumoTipos.titulo}`);
    lines.push('');
    lines.push(`| ${resumoTipos.tipo} | ${resumoTipos.quantidade} |`);
    lines.push('|---|---|');
    const sorted = Object.entries(tiposContagem).sort(([, arquivo], [, base]) => base - arquivo).slice(0, limite);
    for (const [tipo, count] of sorted) {
        lines.push(`| ${tipo.padEnd(17)} | ${String(count).padStart(8)} |`);
    }
    lines.push('');
    lines.push(RelatorioMensagens.comum.separadores.secao);
    lines.push('');
    return lines;
}
function escapeMarkdownTableCell(value) {
    return value.replace(/\\/g, '\\\\').replace(/\|/g, '\\|');
}
export function gerarTabelaOcorrencias(ocorrencias) {
    const lines = [];
    const { ocorrencias: msg } = RelatorioMensagens.principal.secoes;
    lines.push(`## ${msg.titulo}`);
    lines.push('');
    lines.push(`| ${msg.colunas.arquivo} | ${msg.colunas.linha} | ${msg.colunas.nivel}  | ${msg.colunas.mensagem} |`);
    lines.push('|---|---|---|---|');
    for (const ocorrencia of ocorrencias) {
        const arquivo = String(ocorrencia.relPath || '');
        const linha = ocorrencia.linha ? String(ocorrencia.linha) : '';
        const nivel = String(ocorrencia.nivel || '');
        const mensagem = escapeMarkdownTableCell(String(ocorrencia.mensagem || ''));
        lines.push(`| ${arquivo} | ${linha} | ${nivel} | ${mensagem} |`);
    }
    lines.push('');
    return lines;
}
export function gerarSecaoProblemasAgrupados(titulo, problemas, mostrarExemplos = true) {
    const lines = [];
    const { labels } = RelatorioMensagens.resumo;
    lines.push(`## ${titulo}`);
    lines.push('');
    if (problemas.length === 0) {
        lines.push(`> ${RelatorioMensagens.comum.vazios.nenhumResultado}`);
        lines.push('');
        return lines;
    }
    for (const prob of problemas) {
        lines.push(`### ${prob.icone} ${prob.titulo}`);
        lines.push('');
        lines.push(`**${labels.quantidade}:** ${prob.quantidade}  `);
        lines.push(`**Resumo:** ${prob.resumo}  `);
        if (prob.acaoSugerida) {
            lines.push(`**${labels.acaoSugerida}:** ${prob.acaoSugerida}  `);
        }
        lines.push('');
        if (mostrarExemplos && prob.ocorrencias.length > 0) {
            lines.push(`**${labels.exemplos}:**`);
            const exemplos = prob.ocorrencias.slice(0, 3);
            for (const ex of exemplos) {
                const local = ex.relPath ? `${ex.relPath}${ex.linha ? `:${ex.linha}` : ''}` : '';
                const msg = ex.mensagem ? ` - ${ex.mensagem}` : '';
                lines.push(`  - \`${local}\`${msg}`);
            }
            if (prob.ocorrencias.length > 3) {
                lines.push(`  - _...还有 ${prob.ocorrencias.length - 3} 个出现项_`);
            }
            lines.push('');
        }
        lines.push(RelatorioMensagens.comum.separadores.subsecao);
        lines.push('');
    }
    return lines;
}
export function gerarTabelaDuasColunas(dados, cabecalhos) {
    const lines = [];
    lines.push(`| ${cabecalhos[0]} | ${cabecalhos[1]} |`);
    lines.push('|---|---|');
    for (const [col1, col2] of dados) {
        lines.push(`| ${col1.padEnd(16)} | ${String(col2).padStart(8)} |`);
    }
    lines.push('');
    return lines;
}
export function gerarSecaoEstatisticas(stats) {
    const lines = [];
    const { estatisticas } = RelatorioMensagens.principal.secoes;
    lines.push(`## ${estatisticas.titulo}`);
    lines.push('');
    for (const [chave, valor] of Object.entries(stats)) {
        lines.push(`  - **${chave}:** ${valor}`);
    }
    lines.push('');
    return lines;
}
export function gerarFooterRelatorio(timestampISO) {
    const lines = [];
    lines.push(RelatorioMensagens.comum.separadores.secao);
    lines.push('');
    lines.push('_由 Tutanus CLI 生成_');
    if (timestampISO) {
        lines.push(`_${timestampISO}_`);
    }
    lines.push('');
    return lines;
}
export async function escreverRelatorioMarkdown(outputCaminho, lines) {
    const { salvarEstado } = await import('../../../../shared/persistence/index.js');
    await salvarEstado(outputCaminho, lines.join('\n'));
}
//# sourceMappingURL=report-templates.js.map