v3 debug panel + more course header variants

This commit is contained in:
Dauren777 2026-06-19 06:04:58 +00:00
parent 4466c3ddb0
commit 0fadb006d7
3 changed files with 51 additions and 0 deletions

View File

@ -28,6 +28,13 @@
</div> </div>
</section> </section>
<section id="debug" class="debug-section hidden">
<div class="debug-box">
<h3>Распознанные столбцы:</h3>
<p id="debugColumns"></p>
</div>
</section>
<section id="dashboard" class="dashboard hidden"> <section id="dashboard" class="dashboard hidden">
<div class="stats-row"> <div class="stats-row">
<div class="stat-card"> <div class="stat-card">

View File

@ -16,6 +16,20 @@ document.getElementById('excelFile').addEventListener('change', function(e) {
return; return;
} }
const sampleRow = jsonData[0] || {};
const rawCols = Object.keys(sampleRow);
const normalized = normalizeHeaders([sampleRow])[0];
const mapping = rawCols.map(k => {
const nk = k.toLowerCase().trim();
const mapped = headerMap[nk] || nk;
const val = normalized[mapped] || '(пусто)';
return `<b>${k}</b> → ${mapped} = "${val}"`;
}).join('<br>');
document.getElementById('debug').classList.remove('hidden');
document.getElementById('debugColumns').innerHTML =
`<strong>Оригинальные столбцы:</strong> ${rawCols.join(', ')}<br><br>${mapping}`;
processAndRender(jsonData); processAndRender(jsonData);
}; };
reader.readAsArrayBuffer(file); reader.readAsArrayBuffer(file);
@ -26,6 +40,8 @@ function normalizeHeaders(rows) {
'фио': 'name', 'ф.и.о': 'name', 'сотрудник': 'name', 'employee': 'name', 'имя': 'name', 'фио': 'name', 'ф.и.о': 'name', 'сотрудник': 'name', 'employee': 'name', 'имя': 'name',
'дивизион': 'division', 'подразделение': 'division', 'отдел': 'division', 'division': 'division', 'department': 'division', 'дивизион': 'division', 'подразделение': 'division', 'отдел': 'division', 'division': 'division', 'department': 'division',
'курс': 'course', 'обучение': 'course', 'training': 'course', 'программа': 'course', 'курс': 'course', 'обучение': 'course', 'training': 'course', 'программа': 'course',
'тренинг': 'course', 'тренинг/курс': 'course', 'название тренинга': 'course', 'название курса': 'course',
'what': 'course', 'название': 'course', 'тема': 'course', 'дисциплина': 'course', 'module': 'course', 'модуль': 'course',
'статус': 'status', 'status': 'status', 'состояние': 'status', 'статус': 'status', 'status': 'status', 'состояние': 'status',
'оценка': 'score', 'ball': 'score', 'score': 'score', 'рейтинг': 'score', 'балл': 'score', 'оценка': 'score', 'ball': 'score', 'score': 'score', 'рейтинг': 'score', 'балл': 'score',
'тренер': 'trainer', 'trainer': 'coach', 'преподаватель': 'trainer', 'coach': 'trainer', 'тренер': 'trainer', 'trainer': 'coach', 'преподаватель': 'trainer', 'coach': 'trainer',

View File

@ -95,6 +95,34 @@ main {
margin-top: 16px !important; margin-top: 16px !important;
} }
.debug-section {
margin-bottom: 24px;
}
.debug-section.hidden {
display: none;
}
.debug-box {
background: #1a2a3a;
border: 1px solid #ff9800;
border-radius: 12px;
padding: 16px 24px;
}
.debug-box h3 {
color: #ff9800;
font-size: 14px;
margin-bottom: 8px;
}
.debug-box p {
color: #e0e0e0;
font-size: 13px;
font-family: monospace;
word-break: break-all;
}
.dashboard.hidden { .dashboard.hidden {
display: none; display: none;
} }