Пока AURORA-1896 не перенесёт формулы на сервер, временно исправляем
потерю данных в EditCell:
- resolveEditorState/isSameCellValue (formulaUtils.js) — чистые функции:
формула подставляется в редактор только если её результат совпадает
с текущим значением ячейки, иначе она устарела (stale) и удаляется
из localStorage.
- EditCell: открытие и закрытие ячейки без правки больше не шлёт
cell_updated (сверка с initialEditorValue при выходе из редактора;
для обычных значений — дополнительно через isSameCellValue). Если
введённая формула не вычисляется — toast и редактор остаётся открытым,
на сервер ничего не уходит.
- tableColumns.jsx: ключ формулы строится от getRowId(cell.row) (line_id
из данных), а не от cell.row.id (позиционный индекс-путь в дереве,
переезжающий при вставке/удалении строк). Префикс ключа — formula_v2_.
- RealtimeTable: при монтировании once-очистка устаревших ключей
formula_* без суффикса _v2 — они привязаны к позиции строки и стали
недостоверны.
Тесты: web/src/components/RealtimeTable/utils/formulaUtils.test.js,
node --test — 9/9 новых + 5/5 ранее существующих в utils/ зелёные.
Closes#264.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>