chore: консолидация незакоммиченной работы (биохимия + System Health + lab/textbooks)
Зафиксирована накопленная незакоммиченная работа рабочего дерева, КРОМЕ файлов учебника «Химия 7» (migration 046, chemistry_7_*.html, chem7_svg.js, тест — оставлены незакоммиченными по запросу). Включает: модуль биохимии (ядро BIO, 3D VSEPR, химдвижок, баланс, challenges, пути из БД), System Health Level 1 (вердикт/мониторинг), а также frontend- страницы и lab/textbooks-правки параллельной сессии. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
/*
|
||||
* Сид метаболических путей в bio_pathways.
|
||||
* Источник данных — backend/scripts/data/biochem_pathways.json (изначально
|
||||
* извлечён из инлайн-объекта PATHWAYS; теперь это самодостаточный источник
|
||||
* правды, не зависящий от фронта). Каждый путь — документ data_json.
|
||||
* Идемпотентно (upsert по slug): повторный запуск синхронизирует данные.
|
||||
*
|
||||
* Запуск: node backend/scripts/seed_biochem_pathways.js
|
||||
*/
|
||||
const db = require('../src/db/db');
|
||||
const P = require('./biochem_pathways_data');
|
||||
|
||||
const upsert = db.prepare(`INSERT INTO bio_pathways (slug, name, color, ord, data_json)
|
||||
VALUES (@slug, @name, @color, @ord, @data_json)
|
||||
ON CONFLICT(slug) DO UPDATE SET
|
||||
name=excluded.name, color=excluded.color, ord=excluded.ord, data_json=excluded.data_json`);
|
||||
|
||||
const slugs = Object.keys(P);
|
||||
let n = 0;
|
||||
db.exec('BEGIN');
|
||||
try {
|
||||
slugs.forEach((slug, idx) => {
|
||||
const p = P[slug];
|
||||
upsert.run({
|
||||
slug,
|
||||
name: p.name || slug,
|
||||
color: p.color || '#9B5DE5',
|
||||
ord: idx,
|
||||
data_json: JSON.stringify(p),
|
||||
});
|
||||
n++;
|
||||
});
|
||||
db.exec('COMMIT');
|
||||
} catch (e) {
|
||||
db.exec('ROLLBACK');
|
||||
throw e;
|
||||
}
|
||||
|
||||
console.log(`biochem pathways seed: ${n} путь(ей) — ${slugs.join(', ')}`);
|
||||
console.log('в БД:', db.prepare('SELECT slug, name, LENGTH(data_json) AS bytes FROM bio_pathways ORDER BY ord').all()
|
||||
.map(r => `${r.slug}(${r.bytes}b)`).join(' '));
|
||||
Reference in New Issue
Block a user