feat(biochem): Фаза 2.1/2.2/2.4 — серверный chem.js + /analyze + подсказки валентности
- biochem-core.js dual-export (browser window.BIO + Node module.exports), без дублей - BIO.valency: подробные подсказки валентности (2.4), общие для редактора и сервера - services/chem.js: серверный анализ поверх того же ядра (analyze/validate) - POST /api/biochem/analyze (2.2); /validate переведён на ядро (+фикс формата связей) - api.js: LS.biochemAnalyze Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -74,14 +74,19 @@
|
||||
|
||||
Считать химию, а не хранить класс строкой.
|
||||
|
||||
- [ ] 2.1 `backend/src/services/chem.js`:
|
||||
- Полярность связей по разнице электроотрицательностей; **дипольный момент** молекулы (вектор-сумма с учётом 3D-геометрии из Фазы 1) → polar/nonpolar обоснованно.
|
||||
- Частичные заряды (упрощённый Gasteiger / EN-метод) для раскраски атомов.
|
||||
- DBE (степень ненасыщенности), молярная масса, массовые доли элементов.
|
||||
- Гибридизация центра, классификация функциональных групп через SMARTS-подобные паттерны (вынести из хардкода фронта).
|
||||
- [ ] 2.2 API `POST /api/biochem/analyze` (atoms,bonds → {formula, mass, dbe, dipole, polarity, charges, groups, hybridization}). Заменить фронтовую эвристику.
|
||||
- [ ] 2.3 В редакторе: тепловая карта частичных зарядов (toggle), стрелка диполя в 3D, панель «геометрия и полярность».
|
||||
- [ ] 2.4 Расширенная валидация: вместо «лимит превышен» — подсказки («у C занято 5 связей, максимум 4», «кислород обычно 2 связи»).
|
||||
> Серверный срез (тег `biochem-phase2-server`): `backend/src/services/chem.js`
|
||||
> **переиспользует то же ядро** `biochem-core.js` (сделан dual-export: браузер
|
||||
> `window.BIO` + Node `module.exports`) — без дублирования химии. Эндпоинт
|
||||
> `POST /api/biochem/analyze` отдаёт {formula, mass, dbe, geometry, polarity,
|
||||
> dipole, charges, groups, massFractions, valency}; `/validate` переведён на
|
||||
> ядро (плюс чинит баг формата связей b.o/order). 2.4: `BIO.valency` с
|
||||
> подсказками («Углерод (C): занято 5 связей, максимум 4 — убери 1»),
|
||||
> используется и в редакторе, и на сервере.
|
||||
|
||||
- [x] 2.1 `backend/src/services/chem.js`: переиспользует ядро `BIO` (полярность/диполь по 3D-VSEPR, частичные заряды, DBE/масса/массовые доли, гибридизация, функциональные группы) — без дубля логики на сервере.
|
||||
- [x] 2.2 API `POST /api/biochem/analyze` (atoms,bonds → {formula, mass, dbe, dipole, polarity, charges, groups, hybridization, valency}). Живой анализ в редакторе оставлен client-side (мгновенно); сервер — авторитетный расчёт + валидация на сохранении.
|
||||
- [x] 2.3 В редакторе: тепловая карта частичных зарядов (toggle), стрелка диполя в 3D, панель «геометрия и полярность».
|
||||
- [x] 2.4 Расширенная валидация: `BIO.valency` даёт подсказки («Углерод (C): занято 5 связей, максимум 4 — убери 1») вместо «лимит превышен»; единая логика в редакторе и на сервере.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user