1000 Commits

Author SHA1 Message Date
aep
ea69099540 Merge pull request 'AURORA-1879: одноимённые этапы «Поддержки» и «Развития» — раздельно в списке, правке, удалении и аудите' (#315) from feat/312-aurora-1879-form-phase-direction into test 2026-11-12 17:02:34 +03:00
aep
ab7d25ed2d Merge pull request 'AURORA-1900 (возврат 12.11): единицы у всех денежных колонок, комментарии без денежных подписей, НДС шапки плана в Excel как на экране' (#334) from feat/333-aurora-1900-units-rework into test 2026-11-12 17:01:47 +03:00
aep
5009dc114c Merge pull request 'AURORA-1885: админ получает ВСП по id включая удалённые; прошедшая дата закрытия сразу закрывает ВСП' (#328) from feat/327-aurora-1885-vsp-get-and-close into test 2026-11-12 16:02:11 +03:00
Andrey Epifancev
f5e9ff37a4 fix(export): единицы и НДС шапки плана в Excel как на экране; collegial.approved — денежная (AURORA-1900)
Возврат тестировщика 12.11.

- Шапка «План {year} (тыс. руб.) {vat_plan}» подставляла текст подколонок:
  Ф.1 АХР и все листы Ф.4 выгружались «без НДС», а на экране — «с учётом
  складского НДС» (Ф.4 КВ — «с учётом НДС»). Теперь у шапки своя подпись
  по экрану (FORM1/FORM4_SHEET_PLAN_VAT_WORDING), подколонки не менялись.
- Раскладки Excel (FORM1/FORM2 depth, АХР-сателлиты, проекты, SMETA формы 2/4,
  патчи формы 4): «тыс. руб.» по тому же правилу, что на экране; у комментариев
  убран подзаголовок «Сумма, тыс. руб. (…)».
- «Коллегиальные органы → Сумма (без НДС)» (collegial.approved,
  collegial_approval.approved_amount NUMERIC) считалась текстом (AURORA-1899):
  не масштабировалась разрядностью и не получала единицу. Теперь денежная.
- test_export_unit_labels.py: на реальных раскладках выгрузки форм 1/2/4 у каждой
  денежной колонки есть «тыс. руб.», у текстовых нет, шапка плана — как на экране.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 14:44:43 +04:00
Andrey Epifancev
45b23b2547 fix(labels): единицы у всех денежных колонок, без денежных подписей у комментариев (AURORA-1900)
Возврат тестировщика 12.11. В #291 существовавший текст «тыс. руб.» заменили на
{unit}, но там, где единицы не было, её не добавили. Не было её у договоров,
секвестирования, резерва, итоговой сметы, закрытия кварталов, платежей,
переносов, брони, факта; у «Сумма (без НДС)» формы 4; на основных листах и
листе «Смета» формы РФ; в своде 2 и на странице сводов проектов. Комментарии в
кварталах форм 1/4 и на «Структуре» были подписаны «Сумма, {unit} (…)».

- Конфиги колонок (кодмод на AST): единица ставится в самый верхний заголовок
  группы, где все колонки денежные; если в группе есть текст — в заголовок
  самой колонки. Подписи вида «Сумма (без НДС)» получают единицу в колонке:
  «Сумма, {unit} (без НДС)». Подзаголовок комментария — пустой.
- Свод 2 — {unit} в группах и колонках по тому же правилу; страница сводов
  проектов — фиксированное «тыс. руб.» (селектора разрядности там нет).
- Журнал аудита: {unit} в пути колонки подставляется как «тыс. руб.».
- Импорт columnColors в конфигах с расширением .js, чтобы node --test мог
  загрузить конфиги.
- columnUnitLabels.test.js: у каждой денежной колонки всех конфигов есть
  единица, у текстовых денежной подписи нет.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 14:31:12 +04:00
Andrey Epifancev
744b71fbe7 fix(vsp): админ получает ВСП по id включая удалённые; прошедшая дата закрытия сразу закрывает ВСП (AURORA-1885, #327)
- VSPRepository.get: with_deleted=True означает «включая удалённые», а не «только удалённые»
- VSPService.update: ключ closed_at (имя поля модели) вместо close_date (входной alias)
- тесты: integration test_vsp.py, unit test_vsp_service_close_date.py

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:11:50 +04:00
Andrey Epifancev
ac686991a8 openspec: архив aurora-1848-sheet-json и aurora-1850-upd-form-cells-subtree
Обе задачи влиты в test 01.11 (PR #239/#242, #244/#274), архив пропущен.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 01:29:46 +04:00
aep
fb45e8ddca Merge pull request 'AURORA-1887: открытый АХР пересчитывает итоги после удаления записи аренды/коммуналки/охраны' (#325) from feat/324-aurora-1887-ahr-delete-refresh into test 2026-11-12 00:01:16 +03:00
Andrey Epifancev
551ef0ec14 fix(form2): открытый АХР пересчитывает итоги после удаления записи аренды/коммуналки/охраны (AURORA-1887, #324)
notify_ahr_about_satellite_change рассылал на АХР row_deleted по скрытой
(AURORA-1887) строке сателлита с пустым result: фронт не находил строку
и не получал пересчитанных заголовков — итоги статьи, раздела и сметы
оставались прежними до перезагрузки.

Теперь в result — заголовки ROOT/GROUP/ITEM/SUB_ITEM/SUB_SUB_ITEM по пути
статьи удалённой строки (как del_budget_line для обычных листов). Поиск
строки по аудиту и выборка заголовков вынесены в
SheetRepository/SheetService.get_form2_ahr_satellite_delete_delta.
Протокол WS и фронт не меняются.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 23:51:48 +04:00
Andrey Epifancev
7a5c89eca6 AURORA-1879: миграция 0059 → 0060 (0059 занята AURORA-1984, PR #306)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 19:36:40 +04:00
Andrey Epifancev
525f801187 Merge remote-tracking branch 'origin/test' into feat/312-aurora-1879-form-phase-direction 2026-11-11 19:35:11 +04:00
Andrey Epifancev
f0470313c1 openspec: архив aurora-1839-cell-memo и aurora-1984-pd-standalone-projects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 19:33:14 +04:00
aep
4dc111a0ce Merge pull request 'AURORA-1984: проекты ПД без программы (+1979, 1980, 1989)' (#306) from feat/305-aurora-1984-pd-standalone-projects into test 2026-11-11 18:12:22 +03:00
aep
90e4084e7d Merge pull request 'AURORA-1978: удаление пустой программы и проекта на форме 4' (#304) from feat/303-aurora-1978-pd-delete-program-project into test 2026-11-11 18:12:05 +03:00
aep
d702e9d5aa Merge pull request 'AURORA-1839: мемоизация ячеек таблицы листа' (#240) from feat/234-aurora-1839-cell-memo into test 2026-11-11 18:11:32 +03:00
aep
f4f9c325e2 Merge pull request 'AURORA-1882: явная метка «На удаление» у задач в списке и на странице задачи' (#314) from feat/313-aurora-1882-deletion-mark-chip into test 2026-11-11 18:11:09 +03:00
13ab6fcdbc Merge pull request 'добавление крестиков у поиска по столбцам' (#321) from aourora-2023_2 into test
Reviewed-on: #321
2026-11-11 17:22:39 +03:00
PotapovaA
32e697193e добавление крестиков у поиска по столбцам 2026-11-11 17:12:59 +03:00
Andrey Epifancev
8798f092c4 fix(stages): именованный dollar-тег в DO-блоке 0059, правка интеграционных тестов этапов (AURORA-1879)
- sql_migration._split_statements узнаёт только $tag$, пустой $$ ломал разбиение:
  DO $$ … $$ → DO $do$ … $do$.
- test_form_phases_delete_removes_only_named_phase: ?sheet= без direction
  фильтрует direction IS NULL — читаем весь список и отбираем AHR в тесте.
- test_form_phases_duplicate_without_direction_rejected: после ошибки
  сессия клиента откатывается, число строк не проверяем; защиту БД
  проверяет новый test_form_phase_nodir_unique_index_blocks_duplicate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 16:53:42 +04:00
Andrey Epifancev
92f6049a73 fix(stages): FormPhaseService.create отклоняет дубль этапа на листе и направлении (AURORA-1879)
Интеграционные тесты одноимённых этапов, PATCH/DELETE одного этапа, дубль без направления, direction в аудите.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 16:39:24 +04:00
Andrey Epifancev
9e15fad226 fix(stages): direction в первичном ключе ORM FormPhase, детерминированный порядок списка, миграция 0059 (AURORA-1879)
- ORM: direction входит в PK (nullable), одноимённые этапы Support/Development больше не склеиваются
- get_list: ORDER BY sheet, direction (NULL первыми), opens_at, phase_code
- 0059: del_form_phase фильтрует по phase_code, direction в v_phase_id (add/upd/del) и в payload upd,
  чистка дублей без направления и частичный уникальный индекс form_phase_nodir_uidx

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 16:39:24 +04:00
Andrey Epifancev
21b4e93008 feat(tasks): чип «На удаление» в списке и на странице задачи, «Пользователь удалён» (AURORA-1882)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 16:36:18 +04:00
Andrey Epifancev
f8d14194f9 feat(tasks): formatDeletionHint — текст подсказки пометки на удаление (AURORA-1882)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 16:35:17 +04:00
aep
5a91f35ab2 Merge pull request 'AURORA-1902: возврат тестирования — цветные заливки на листах Операц/АХР/КВ выгрузки Сметы РФ' (#310) from feat/309-aurora-1902-export-colors into test 2026-11-11 15:16:32 +03:00
aep
dd40b9f341 Merge pull request 'AURORA-1899: возврат тестирования — разрядность не трогает неденежные и текстовые колонки' (#308) from feat/285-aurora-1899-non-money-fix into test 2026-11-11 15:15:41 +03:00
Andrey Epifancev
3b5f6025aa fix(export): заливки колонок на листах Операц/АХР/КВ Сметы РФ (AURORA-1902)
Возврат тестирования 10.11: в выгрузке формы 2 не было цветных заливок.
XlsxDepthSheetWriter._set_palette искал цвет только по пути ключей дерева
колонок (section_code, god.….q2), а FORM2_COLORS ключуется путём данных
(header.section_code, booking.y2026.q2) — совпадений 0 из 162. Теперь, если
по пути дерева цвета нет, он берётся по плоскому ключу данных колонки.
Форма 1 не меняется (её цвета находятся по пути дерева, как раньше).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 15:40:03 +04:00
Andrey Epifancev
44e6afc774 fix(table): разрядность не трогает неденежные и текстовые колонки (AURORA-1899)
Возврат тестирования 11.11:
- tableColumns считал множитель по MRT column, у которого нет accessorKey, —
  getMoneyUnit видел пустой ключ и считал денежной любую колонку (НДС, курс,
  сумма в валюте, площадь масштабировались). getMoneyUnit теперь берёт
  column.columnDef ?? column.
- текстовые колонки (комментарии, обоснования, реквизиты договоров, коды)
  попадали в правило «иначе thousand»: «123» в комментарии делилось, а при
  «млн»/«млрд» редактор обоснования закрывался как денежный. Добавлен
  isTextColumn: такие колонки не масштабируются и не форматируются как числа
  (внутренний заказ 10123 и комментарий «123» показываются как есть).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 15:34:08 +04:00
d5eb70e004 Merge pull request 'крестик для очистки строки поиска' (#307) from aurora-2023 into test
Reviewed-on: #307
2026-11-09 14:15:18 +03:00
PotapovaA
a2b132e9dc крестик для очистки строки поиска 2026-11-09 14:13:23 +03:00
Andrey Epifancev
e5660add7a AURORA-1984: правки по итоговому ревью (M-5, M-6, M-7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:16:20 +04:00
Andrey Epifancev
77db9cb02f AURORA-1984: рулинги R-8 и R-9 в design.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:06:28 +04:00
Andrey Epifancev
f5ce14fd11 AURORA-1984: самостоятельный проект — уровень программы в дереве и в выгрузке
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 23:05:59 +04:00
Andrey Epifancev
b87b12f980 AURORA-1989: номер статьи, сортировка и поиск в окне выбора расхода
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:38:04 +04:00
Andrey Epifancev
321943db56 AURORA-1979: подпись программы и проекта в третьем столбце и выгрузке
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:35:02 +04:00
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
9218d2f7f5 AURORA-1984: рулинг R-7 в design.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:31:17 +04:00
Andrey Epifancev
374ac4bd9e AURORA-1984: добавление проекта в разделе на фронте
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:29:42 +04:00
Andrey Epifancev
69c4a8f9c9 AURORA-1984: событие project_added без программы
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:27:16 +04:00
Andrey Epifancev
209d36e832 AURORA-1984: создание, переименование и удаление проекта без программы в SQL
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-08 22:23:28 +04:00
Andrey Epifancev
836e812bad AURORA-1984: самостоятельный проект в модели и листе формы 4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:18:22 +04:00
Andrey Epifancev
551066bb05 AURORA-1984: перепроверка дизайна и план реализации
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:14:29 +04:00
Andrey Epifancev
e500c85e81 AURORA-1984: OpenSpec change — проекты ПД без программы (+1979, 1980, 1989)
Refs #305

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:28:34 +04:00
Andrey Epifancev
1aec5d2c2d AURORA-1978: удаление пустой программы и проекта на форме 4
«Удалить строку» на строке программы (GROUP) или проекта (ITEM) ничего не
делала: у этих строк нет line_id, окно подтверждения не открывалось, а
события program_deleted / project_deleted, которые сервер уже поддерживает,
фронт не отправлял.

- getDeleteTarget: по выделенной строке выбирает программу, проект или
  строку бюджета; для непустых программы/проекта сразу показывает причину.
- RealtimeContext: deleteProgram / deleteProject и обработка ответов.
- useRealtimeData: строка убирается из дерева, пересчёт ROOT/GROUP из
  ответа сопоставляется по section_code / program_id / project_id
  (alignNodeRows), а не по sort_order — сервер нумерует строки заново, и у
  листа без строк бюджета нет ROOT (найдено при проверке на стенде).
- Окно подтверждения называет удаляемую программу/проект.
- getWsErrorMessage срезает префикс "<class 'asyncpg...'>: " — иначе отказ
  сервера (программа с проектами у устаревшего клиента) показывался с ним.

Refs #303

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:02:41 +04:00
aep
244c03ac14 Merge pull request 'AURORA-1892: доработка по сверке с исходным перечнем 02.11.2026' (#293) from feat/276-aurora-1892-negative-amounts into test 2026-11-08 17:12:34 +03:00
Andrey Epifancev
f61647d16c Merge remote-tracking branch 'origin/test' into feat/276-aurora-1892-negative-amounts 2026-11-08 18:11:36 +04:00
aep
bc9bd1b5e5 Merge pull request 'AURORA-1893: доработка по возврату тестирования — агрегаты в счётчике, переход и прокрутка к ячейке, {year}/{unit}' (#300) from feat/282-aurora-1893-error-alert-rework into test 2026-11-08 17:11:23 +03:00
aep
bf449c5754 Merge pull request 'fix(form2): дельта АХР пуста для статей глубины 4 после правки лимита (AURORA-1850, часть #296)' (#301) from feat/296-ahr-delta-depth4 into test 2026-11-08 17:11:12 +03:00
aep
1965f2a939 Merge pull request 'fix(tests): test_form2_ahr_limit падает KeyError после null-strip (AURORA-1897, часть #296)' (#299) from feat/296-ahr-limit-tests-null-strip into test 2026-11-08 17:10:01 +03:00
Andrey Epifancev
d341d21ec6 fix(form2): дельта АХР после правки лимита пуста для статей глубины 4 (AURORA-1850, #296)
0053 пересоздала v3.get_form2_ahr_satellite_delta по телу из 0031 с
сопоставлением лимитного шаблона «ei.depth = 3 AND (item_id OR
num_group_id)» и откатила правку 0037. Лимиты с кодом num_group_id статьи
глубины 4 (принтеры / МФУ / копиры) не попадали в target_lines, дельта
была пустой, и открытый АХР не обновлял сумму до перезагрузки.

Миграция 0058 пересоздаёт функцию с матчером 0037
((depth = 3 AND item_id = code) OR num_group_id = code); остальное тело —
как в 0053.

Тест-защита 0037 ждал в дельте INPUT-строку, которую AURORA-1887 скрыл на
листе AHR, — теперь проверяет заголовок SUB_SUB_ITEM статьи глубины 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 17:24:28 +04:00
Andrey Epifancev
20f1bed336 fix(table): минус красный и в нередактируемых ячейках строки ввода (AURORA-1892)
Возврат тестирования 06.11, критерий «любое отрицательное число выделено
цветом»: NOT_EDITABLE_INPUT_STYLES (AURORA-1890) разворачивался после цвета
текста и перекрашивал минус в серый #5F6B7A — в расчётных колонках вне
перечня отрицательные значения оставались серыми. Цвет текста теперь
решает resolveCellTextColor (utils/cellTextColor.js, с тестами): минус —
красный всегда, серый — только для неотрицательных значений.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 17:09:29 +04:00