36 Commits

Author SHA1 Message Date
Andrey Epifancev
78227b46c0 AURORA-1980: переименование программы и проекта
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:32:42 +04:00
Andrey Epifancev
ba167c0e48 Merge remote-tracking branch 'origin/test' into feat/284-aurora-1891-cell-click-keyboard-edit
# Conflicts:
#	web/src/components/RealtimeTable/Cell/Cell/Cell.jsx
#	web/src/components/RealtimeTable/RealtimeTable.jsx
#	web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx
#	web/src/components/RealtimeTable/TableHead/TableHead.jsx
#	web/src/components/RealtimeTable/tableColumns.jsx
2026-11-02 22:04:44 +04:00
Andrey Epifancev
733d7a9036 fix(denomination): база разрядности — тыс. руб., масштабировать только денежные колонки
Селектор разрядности (AURORA-1650) считал базой рубли, хотя в базе суммы
хранятся в тыс. руб. (формы 1/4, сателлиты формы 2, лимитные строки АХР
после AURORA-1897). По умолчанию стояло «в руб.», и тысячи показывались
под видом рублей; при выборе «в тыс. руб.» значения делились ещё раз.
Делитель также применялся к количествам, площади, ставке НДС, курсу,
кодам и ID — не только к деньгам. Редактор ячейки не учитывал разрядность.

- web/src/components/RealtimeTable/utils/moneyUtils.js — новый модуль:
  UNIT_IN_RUB, getDisplayFactor(baseUnit, denomination), getMoneyUnit
  (денежная единица колонки по accessorKey/sheetName, с явным
  columnDef.moneyUnit как переопределением), TEXT_COLUMN_IDS (перенесён
  из Cell.jsx), resolveDenomination/DEFAULT_DENOMINATION, AHR_LIMIT_SHEET.
  Модуль не импортирует конфиги форм — работает под node --test.
- useDenomination.js — значение по умолчанию 'thousand', ключ хранения
  со суффиксом _denomination_v2 (старые 'rub'/'thousand' больше не
  читаются со старым смыслом); getDenominationDivisor убран.
- tableColumns.jsx/Cell.jsx — displayDivisor заменён на displayFactor
  (умножение, не деление), множитель считается на колонку через
  getMoneyUnit/getDisplayFactor с учётом sheetName; isEditable запрещает
  редактирование денежной ячейки, если разрядность не базовая; на листе
  AHR_LIMIT множитель всегда 1 (значения в рублях, как есть).
- SettingPanel.jsx — селектор скрыт на листе AHR_LIMIT, рядом с ним
  подсказка «Ввод сумм — в тыс. руб.».
- SvodPage/Svod2Page/ProjectSummariesPage — масштабирование по
  meta.money вместо regex по id/блок-листа текстовых id; построители
  колонок проставляют meta.money на денежных метриках.
- DenominationSelect.jsx — «в млн руб.», «в млрд руб.» без точки.

Тесты: web/src/components/RealtimeTable/utils/moneyUtils.test.js
(node --test), полный набор web/src/components/RealtimeTable/utils —
52/52 зелёных. npm run build проходит.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 16:08:20 +04:00
Andrey Epifancev
d7ab4d170c feat(table): плашка контроля ошибок со счётчиком, переходом к ячейке и подсказкой (AURORA-1893)
- validationUtils.collectInvalidErrors теперь собирает ошибки по ЯЧЕЙКАМ
  (id/ruleId/columnId/lineId/rowLabel/message), а не одну запись на колонку;
  новая groupValidationErrors(errors) группирует их обратно по правилу+колонке
  со счётчиком для меню плашки.
- useValidationRules: getCellErrors(columnId, value, row) отдаёт причины
  конкретной ячейки (для подсказки), isCellInvalid выражен через него;
  сравнение стабильности errors — по id (он уже кодирует правило+колонку+строку).
- RealtimeTable: handleNavigateToError({lineId, columnId}) — находит строку по
  getRowId в table.getRowModel().flatRows (не .rows, т.к. flatRows не фильтруется
  по свёрнутым группам), раскрывает родителей через setExpanded, включает
  скрытую колонку через handleSetColumnsVisibility, выделяет ячейку как
  activeSearchMatch и скроллит к ней — по образцу navigateToSearchMatch.
- ValidationErrorsAlert: красная плашка (#FDEDED/#D32F2F) со счётчиком
  «Ошибок: N», кнопками ‹›  для прохода по всем ошибкам и меню, сгруппированным
  по правилу+колонке (до 20 строк, дальше «и ещё N»); перенесена в начало
  SettingPanel, перед группами настроек.
- tableColumns/Cell: invalidMessage (из getCellErrors) доходит до Cell и
  показывается подсказкой (MUI Tooltip) при наведении на невалидную ячейку.

Тесты (node --test .../validationUtils.test.js): 12/12, включая 5 существующих
тестов nonNegativeRule из AURORA-1892 (не менялись, подтверждают отсутствие
регрессии) и 7 новых для collectInvalidErrors/groupValidationErrors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 15:11:26 +04:00
Andrey Epifancev
df6ec795a3 feat(table): визуально отличать редактируемые ячейки от расчётных и закрытых (AURORA-1890)
- utils/cellEditability.js: isCellEditable/isComputedColumn — чистые функции,
  isComputedColumn повторяет часть v3._apply_form_cell/_apply_form3_cell
  (0023_apply_cell_empty_string.sql), чтобы админ не видел вычисляемые
  колонки как редактируемые. tableColumns.jsx использует isCellEditable
  вместо инлайновой проверки.
- useRealtimeData.js: возвращает stageColumnDeadlines (closes_at по колонке
  текущего этапа) рядом с columnsCurStage.
- Cell.jsx: редактируемая ячейка — белый фон, рамка 1px #7FA7C9 (2px при
  наведении), курсор text; нередактируемая ячейка строки INPUT — фон
  #F4F5F7, текст #5F6B7A; занятая коллегой — пунктирная оранжевая рамка
  2px #F0A030 без изменения фона. Строки ITEM/GROUP/ROOT не затронуты.
  Сохранён порядок стилей из AURORA-1894 (INVALID_STYLES последним) и
  спред fontWeight для отрицательных чисел из AURORA-1892.
- TableHead.jsx: метка срока ввода «✎ до DD.MM HH:mm» в заголовке колонки
  текущего этапа, только для исполнителя (utils/deadlineFormat.js).
- SettingPanel/CellLegend.jsx: иконка "?" с легендой (можно вводить /
  расчёт или закрыто) рядом с плашкой контроля ошибок, без новой панели
  и без новых цветов в palettes columnColors.js.

node --test: cellEditability.test.js, deadlineFormat.test.js — 18/18.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 13:00:40 +04:00
PotapovaA
6c3cd5b2e0 добавление селекта для изменения разрядности в твблицах 2026-10-16 14:41:19 +03:00
PotapovaA
3e7f44f8d4 правки для таблицы 2026-09-10 16:33:25 +03:00
PotapovaA
c754dc2b0b icon project program 2026-09-04 11:43:58 +03:00
PotapovaA
ee3b87c69a fix: ограничить управление строками и этапами по правам доступа 2026-09-01 15:14:43 +03:00
PotapovaA
54b3bfdc42 feat: обновить отображение задач и элементы интерфейса 2026-08-26 12:25:30 +03:00
PotapovaA
278c65c324 hedden rows : модернизивовала кнопку скрытия колонок (теперь можно скрывать и раскрывать колонки до любой вложенности) 2026-08-21 16:09:28 +03:00
PotapovaA
ab2ad7fe06 settingPanel fix: исправление ошибок с поискам + переделывания поиска с фильтра на скролл 2026-08-21 15:24:52 +03:00
PotapovaA
d9511ae7c5 fix 2026-08-19 18:38:54 +03:00
PotapovaA
d347023211 fix 2026-08-19 18:26:29 +03:00
PotapovaA
336e4123e5 fix 2026-08-19 18:24:59 +03:00
PotapovaA
6b564fc34b готово 2026-08-14 15:23:41 +03:00
PotapovaA
e11661a26b иконки новые 2026-08-13 17:14:23 +03:00
PotapovaA
cf42e23fcb fix 2026-08-13 16:49:38 +03:00
PotapovaA
adb91d1e29 fix 2026-08-12 11:20:30 +03:00
PotapovaA
ca6e0be255 fix 2026-08-11 18:34:24 +03:00
PotapovaA
5634a16143 add column of stage for table 2026-08-10 18:43:05 +03:00
PotapovaA
72f2c67bdc исправления от линтера 2026-08-06 17:44:49 +03:00
65ecb164f3 [AURORA-1225] - логические ограничения для столбцов (требования №1 и требования №2) 2026-08-03 11:15:34 +03:00
PotapovaA
8c978b4e33 добавлене программ, проектов в 4 форме 2026-07-28 16:03:52 +03:00
PotapovaA
944fbe4d7e fix-setting panel 2026-07-02 17:57:35 +03:00
PotapovaA
40c373b5ed projects 2026-07-02 15:35:44 +03:00
f26691805a [AURORA-1148] - стили для таблицы 2026-06-29 11:10:14 +03:00
PotapovaA
c6502e59a7 fix этапов 2026-06-24 11:08:40 +03:00
PotapovaA
bafae2ca58 формула для исполнителей 2026-06-22 13:33:32 +03:00
PotapovaA
d1d1f90268 фикс плывущей таблицы 2026-06-22 10:19:12 +03:00
PotapovaA
10909a1122 new stage 2026-06-18 15:55:15 +03:00
e2bd55e5b1 [AURORA-1057] - добавлен экспорт таблиц 2026-06-05 13:04:47 +03:00
PotapovaA
56833f454b исправила иерархию, блокировка ячеек, виртуализация строк 2026-05-29 18:38:05 +03:00
PotapovaA
fcece07c64 удаление строки 2026-05-29 13:51:47 +03:00
PotapovaA
99e7a445cf добавление строки 2026-05-29 11:23:25 +03:00
PotapovaA
24a59fb853 front new 2026-05-18 17:33:45 +03:00