feat(lessons): тема занятия в отчёте о занятии
В модалку #lessonModal добавлено текстовое поле «Тема занятия» (#lessonTopic) между датой/временем и текстом отчёта. Поле необязательное, лимит 300 символов. Протянуто по всему срезу: - колонка lesson_reports.topic в db/init.sql, db/migration.sql и ensureLessonReportsTable() — миграция идемпотентная, ALTER IF NOT EXISTS - POST /api/lesson-reports принимает topic, PUT обновляет; в GET-списке колонка добавлена в явный SELECT (там не SELECT *, без правки не пришла бы) - тема в normalizeRestoreData, чтобы бэкап/restore её не теряли - тема уходит в ИИ-контекст воркера строкой «Тема занятия: ...» - вывод в списке отчётов (lessons.js + .lesson-topic в admin.css) В PUT пустая строка очищает тему, а отсутствие поля в теле запроса её не трогает: CASE WHEN $6::boolean THEN $3::text ELSE topic END, а не COALESCE — при COALESCE пустая тема затиралась бы старым значением и поле нельзя было бы очистить. Версии не трогаем: lesson_report_versions хранит только text. Тесты: +5 проверок (создание, список, редактирование, очистка, >300 символов), api.smoketest.js — 76 PASS / 0 FAIL.
This commit is contained in:
@@ -809,7 +809,7 @@ function createLessonReportChecker({ pool, getSetting, logAudit, aiUrl, model, d
|
||||
try {
|
||||
await client.query('BEGIN');
|
||||
const { rows } = await client.query(
|
||||
`SELECT lr.id, lr.text, lr.text_original, lr.lesson_date, lr.lesson_time, lr.author_id,
|
||||
`SELECT lr.id, lr.text, lr.text_original, lr.lesson_date, lr.lesson_time, lr.topic, lr.author_id,
|
||||
g.name AS group_name, g.branch_id
|
||||
FROM lesson_reports lr
|
||||
JOIN groups g ON g.id = lr.group_id
|
||||
@@ -928,10 +928,12 @@ async function finish(row, status, text, error, aiText) {
|
||||
const date = String(row.lesson_date).slice(0, 10);
|
||||
const time = row.lesson_time ? String(row.lesson_time).slice(0, 5) : '';
|
||||
const input = original.length > MAX_INPUT_CHARS ? original.slice(0, MAX_INPUT_CHARS) : original;
|
||||
const topic = String(row.topic || '').trim();
|
||||
const context = [
|
||||
`Группа: ${row.group_name || '—'}`,
|
||||
`Дата занятия: ${date}`,
|
||||
time ? `Время занятия: ${time}` : '',
|
||||
topic ? `Тема занятия: ${topic}` : '',
|
||||
'',
|
||||
'Текст отчёта:',
|
||||
input,
|
||||
|
||||
Reference in New Issue
Block a user