chore(textbooks): убрать сторонних авторов — все учебники наши (author=LearnSpace)

Политика «все учебники наши»: нигде не упоминаются сторонние авторы.
- Миграции (15 файлов): колонка author → 'LearnSpace'; из описаний убран оборот
  «по учебнику <автор>:»; авторские фамилии вычищены из комментариев. Покрыты
  Арефьева/Пирютко, Казаков, Латотин/Чеботаревский/Горбунова/Цыбулько, Исаченкова,
  Жилко/Маркович/Сокольский, Герасимов/Лобанов.
- HTML: physics_9_ch5 («по канве учебника Исаченковой» → «по учебной программе»),
  physics_11_hub (hdr-sub с авторами → описание курса), mocks-redesign (карточки-авторы → LearnSpace).
- Генераторы gen_phys9_ch.js/gen_phys11_stubs.js — шаблоны без авторов.
- НОВОЕ: update_textbook_authors.js — идемпотентный апдейтер ЖИВОЙ БД (миграции уже
  применены): author→'LearnSpace' у всех 107 учебников + чистка описаний. DRY-RUN по умолч.

⚠️ Живую БД правит ПОЛЬЗОВАТЕЛЬ: node backend/scripts/update_textbook_authors.js --apply
(в БД сейчас author пуст у всех, видимые упоминания были в описаниях «по учебнику …»).
review_geom10/11.js не тронуты — там фамилии как поисковые шаблоны детектора, не атрибуция.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-20 11:52:06 +03:00
parent fec638135f
commit c0af5502bf
21 changed files with 122 additions and 52 deletions
+6 -6
View File
@@ -1456,12 +1456,12 @@ body::after{
<div class="cat">Алгебра · 9 класс</div>
<div class="deco"></div>
<h4>Алгебра в <em>задачах и&nbsp;примерах</em></h4>
<div class="au"><span>Е.&nbsp;П.&nbsp;Кузнецова</span><span>2024 · 304&nbsp;стр.</span></div>
<div class="au"><span>LearnSpace</span><span>2024 · 304&nbsp;стр.</span></div>
</div>
<div class="book">
<div class="cat">Физика · 10</div>
<h4>Механика, <em>энергия, поле</em></h4>
<div class="au"><span>Жилко В.&nbsp;В.</span><span>2023</span></div>
<div class="au"><span>LearnSpace</span><span>2023</span></div>
</div>
<div class="book v">
<div class="cat">★ Подборка</div>
@@ -1471,23 +1471,23 @@ body::after{
<div class="book">
<div class="cat">Геометрия · 10</div>
<h4>Стереометрия. <em>Введение</em></h4>
<div class="au"><span>Шлыков В.&nbsp;В.</span><span>2024</span></div>
<div class="au"><span>LearnSpace</span><span>2024</span></div>
</div>
<div class="book">
<div class="cat">Химия · 11</div>
<h4>Органические <em>соединения</em></h4>
<div class="au"><span>Колевич Т.&nbsp;А.</span><span>2024</span></div>
<div class="au"><span>LearnSpace</span><span>2024</span></div>
</div>
<div class="book ink">
<div class="cat">Биология · 11</div>
<div class="deco"></div>
<h4>Генетика и&nbsp;<em>эволюция</em></h4>
<div class="au"><span>Лисов Н.&nbsp;Д.</span><span>2024</span></div>
<div class="au"><span>LearnSpace</span><span>2024</span></div>
</div>
<div class="book">
<div class="cat">Геометрия · 11</div>
<h4>Векторы <em>в&nbsp;пространстве</em></h4>
<div class="au"><span>Латотин Л.&nbsp;А.</span><span>2023</span></div>
<div class="au"><span>LearnSpace</span><span>2023</span></div>
</div>
</div>
</div>
+1 -1
View File
@@ -90,7 +90,7 @@ main{max-width:1180px;margin:0 auto;padding:32px 24px 60px}
</div>
<div>
<h1>Физика — 11 класс</h1>
<div class="hdr-sub">Жилко · Маркович · Сокольский (2021) · 8 глав · 45 параграфов</div>
<div class="hdr-sub">Полный курс физики 11 класса · 8 глав · 45 параграфов</div>
</div>
</div>
</header>
+11 -11
View File
@@ -949,7 +949,7 @@ function build_lr1(){
let html = '';
html += makeCard('theory', "Определение абсолютной и относительной погрешностей прямых измерений", "ЛР 1", `
<p><b>Определение абсолютной и относительной погрешностей прямых измерений</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -966,7 +966,7 @@ function build_lr2(){
let html = '';
html += makeCard('theory', "Измерение ускорения при равноускоренном движении", "ЛР 2", `
<p><b>Измерение ускорения при равноускоренном движении</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -983,7 +983,7 @@ function build_lr3(){
let html = '';
html += makeCard('theory', "Изучение движения тела по окружности", "ЛР 3", `
<p><b>Изучение движения тела по окружности</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1000,7 +1000,7 @@ function build_lr4(){
let html = '';
html += makeCard('theory', "Проверка закона Гука", "ЛР 4", `
<p><b>Проверка закона Гука</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1017,7 +1017,7 @@ function build_lr5(){
let html = '';
html += makeCard('theory', "Измерение коэффициента трения скольжения", "ЛР 5", `
<p><b>Измерение коэффициента трения скольжения</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1034,7 +1034,7 @@ function build_lr6(){
let html = '';
html += makeCard('theory', "Изучение движения тела, брошенного горизонтально", "ЛР 6", `
<p><b>Изучение движения тела, брошенного горизонтально</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1051,7 +1051,7 @@ function build_lr7(){
let html = '';
html += makeCard('theory', "Проверка условия равновесия рычага", "ЛР 7", `
<p><b>Проверка условия равновесия рычага</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1068,7 +1068,7 @@ function build_lr8(){
let html = '';
html += makeCard('theory', "Изучение неподвижного и подвижного блоков", "ЛР 8", `
<p><b>Изучение неподвижного и подвижного блоков</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1085,7 +1085,7 @@ function build_lr9(){
let html = '';
html += makeCard('theory', "Изучение наклонной плоскости и измерение её КПД", "ЛР 9", `
<p><b>Изучение наклонной плоскости и измерение её КПД</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1102,7 +1102,7 @@ function build_lr10(){
let html = '';
html += makeCard('theory', "Изучение выталкивающей силы", "ЛР 10", `
<p><b>Изучение выталкивающей силы</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>
@@ -1295,7 +1295,7 @@ function build_lr12(){
let html = '';
html += makeCard('theory', "Проверка закона сохранения механической энергии", "ЛР 12", `
<p><b>Проверка закона сохранения механической энергии</b> — лабораторная работа в разработке (Phase 5+).</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по канве учебника Исаченковой 2019.</p>
<p>Здесь появятся: <b>Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание</b> — по учебной программе.</p>
<p style="margin-top:10px;padding:10px 14px;background:var(--sec-acc-soft);border-radius:9px;font-size:.92rem">
<b>Phase 0:</b> создан скелет. <b>Phase 5:</b> наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
</p>