Skip to content

Commit 76da39f

Browse files
feat: aprimorar gerenciamento de sugestões administrativas com identificação de arquivos e melhorias na busca de textos originais
1 parent e4dd466 commit 76da39f

File tree

1 file changed

+73
-37
lines changed

1 file changed

+73
-37
lines changed

docs/translate.html

Lines changed: 73 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,15 +1001,6 @@
10011001
overflow: hidden;
10021002
}
10031003

1004-
.admin-suggestion-header {
1005-
display: flex;
1006-
justify-content: space-between;
1007-
align-items: center;
1008-
padding: 0.5rem 0.75rem;
1009-
background: rgba(201, 162, 39, 0.1);
1010-
border-bottom: 1px solid rgba(201, 162, 39, 0.15);
1011-
}
1012-
10131004
.admin-suggestion-id {
10141005
font-family: monospace;
10151006
font-size: 0.7rem;
@@ -1025,6 +1016,26 @@
10251016
font-weight: 600;
10261017
}
10271018

1019+
.admin-suggestion-file {
1020+
font-size: 0.65rem;
1021+
padding: 0.15rem 0.4rem;
1022+
border-radius: 4px;
1023+
font-weight: 600;
1024+
background: rgba(99, 102, 241, 0.2);
1025+
color: #818cf8;
1026+
}
1027+
1028+
.admin-suggestion-header {
1029+
display: flex;
1030+
justify-content: space-between;
1031+
align-items: center;
1032+
padding: 0.5rem 0.75rem;
1033+
background: rgba(201, 162, 39, 0.1);
1034+
border-bottom: 1px solid rgba(201, 162, 39, 0.15);
1035+
gap: 0.5rem;
1036+
flex-wrap: wrap;
1037+
}
1038+
10281039
.admin-suggestion-body {
10291040
padding: 0.75rem;
10301041
}
@@ -2801,10 +2812,10 @@ <h4><i class="fas fa-clipboard-list"></i> Sugestões (<span id="cart-count">0</s
28012812
const suggestions = parseIssueSuggestions(issue.body);
28022813

28032814
// Buscar dados originais do arquivo TSV para comparação
2815+
// Passa as sugestões completas para saber de qual arquivo cada uma veio
28042816
let originalData = [];
28052817
if (suggestions.length > 0) {
2806-
const suggestionIds = suggestions.map(s => s.id);
2807-
originalData = await fetchOriginalTexts(suggestionIds);
2818+
originalData = await fetchOriginalTexts(suggestions);
28082819
}
28092820

28102821
const created = new Date(issue.created_at).toLocaleString('pt-BR');
@@ -2847,19 +2858,23 @@ <h3><i class="fas fa-clipboard-check"></i> Revisão da Issue #${issue.number}</h
28472858
</div>
28482859
<div class="admin-suggestions-list" id="admin-suggestions-list">
28492860
${suggestions.map((sug, idx) => {
2850-
const orig = originalData.find(o => o.id === sug.id);
2861+
// Buscar pelo ID E arquivo para evitar conflito de IDs duplicados
2862+
const orig = originalData.find(o => o.id === sug.id && o.file === sug.file)
2863+
|| originalData.find(o => o.id === sug.id); // fallback
28512864
const originalText = orig?.originalText || '(não encontrado)';
28522865
const currentTranslation = orig?.translatedText || '';
2866+
const sourceFile = sug.file === 'translate_words_map_en_diff.tsv' ? 'Diff' : 'Main';
28532867
28542868
// Só mostra "Tradução Atual" se for DIFERENTE do original (já foi traduzido)
28552869
const hasCurrentTranslation = currentTranslation &&
28562870
currentTranslation.trim() !== '' &&
28572871
currentTranslation !== originalText;
28582872
28592873
return `
2860-
<div class="admin-suggestion-item" data-index="${idx}">
2874+
<div class="admin-suggestion-item" data-index="${idx}" data-file="${sug.file}">
28612875
<div class="admin-suggestion-header">
28622876
<span class="admin-suggestion-id"><i class="fas fa-fingerprint"></i> ${sug.id}</span>
2877+
<span class="admin-suggestion-file" title="Arquivo: ${sug.file}"><i class="fas fa-file-alt"></i> ${sourceFile}</span>
28632878
<span class="admin-suggestion-index">#${idx + 1} de ${suggestions.length}</span>
28642879
</div>
28652880
<div class="admin-suggestion-body">
@@ -2917,41 +2932,62 @@ <h3><i class="fas fa-clipboard-check"></i> Revisão da Issue #${issue.number}</h
29172932
}
29182933
}
29192934

2920-
// Busca textos originais para comparação (de mainData E diffData)
2921-
async function fetchOriginalTexts(ids) {
2935+
// Busca textos originais para comparação - CONSIDERA O ARQUIVO DE ORIGEM
2936+
// Recebe array de sugestões (com campo 'file') para buscar no array correto
2937+
async function fetchOriginalTexts(suggestions) {
29222938
const results = [];
29232939

29242940
// Se os dados não foram carregados ainda, aguardar carregamento
29252941
if (mainData.length === 0 && diffData.length === 0) {
2926-
// Tentar carregar agora
29272942
await loadTranslationsIfNeeded();
29282943
}
29292944

2930-
// Buscar em AMBOS os arrays (main e diff)
2931-
// pois a sugestão pode vir de qualquer arquivo
2932-
const allLoadedData = [...mainData, ...diffData];
2945+
// Mapear nome do arquivo para array de dados
2946+
const fileNameToData = {
2947+
'translate_words_map_en.tsv': mainData,
2948+
'translate_words_map_en_diff.tsv': diffData
2949+
};
29332950

2934-
if (allLoadedData.length > 0) {
2935-
ids.forEach(id => {
2936-
const found = allLoadedData.find(item => item.id === id);
2937-
if (found) {
2951+
suggestions.forEach(sug => {
2952+
const id = sug.id;
2953+
const fileName = sug.file;
2954+
2955+
// Determinar em qual array buscar baseado no arquivo da sugestão
2956+
let targetData = fileNameToData[fileName];
2957+
2958+
// Fallback: se não encontrar ou arquivo não especificado, busca em ambos
2959+
if (!targetData || targetData.length === 0) {
2960+
targetData = [...mainData, ...diffData];
2961+
}
2962+
2963+
const found = targetData.find(item => item.id === id);
2964+
if (found) {
2965+
results.push({
2966+
id: found.id,
2967+
file: fileName,
2968+
originalText: found.originalText,
2969+
translatedText: found.translatedText
2970+
});
2971+
} else {
2972+
// Não encontrado no arquivo específico - tentar no outro como fallback
2973+
const allData = [...mainData, ...diffData];
2974+
const fallbackFound = allData.find(item => item.id === id);
2975+
if (fallbackFound) {
2976+
results.push({
2977+
id: fallbackFound.id,
2978+
file: fileName,
2979+
originalText: fallbackFound.originalText,
2980+
translatedText: fallbackFound.translatedText
2981+
});
2982+
} else {
2983+
// Realmente não encontrado
29382984
results.push({
2939-
id: found.id,
2940-
originalText: found.originalText,
2941-
translatedText: found.translatedText
2985+
id: id,
2986+
file: fileName,
2987+
originalText: '(não encontrado)',
2988+
translatedText: ''
29422989
});
29432990
}
2944-
});
2945-
}
2946-
2947-
// Se ainda não encontrou, retornar placeholders
2948-
ids.forEach(id => {
2949-
if (!results.find(r => r.id === id)) {
2950-
results.push({
2951-
id: id,
2952-
originalText: '(carregando...)',
2953-
translatedText: ''
2954-
});
29552991
}
29562992
});
29572993

0 commit comments

Comments
 (0)