1047 Commits

Author SHA1 Message Date
aep
b003eda7c5 Merge pull request 'AURORA-1883: справочник ВСП — просмотр закрытых ВСП (статус, период закрытия), подпись закрытых ВСП в формах (поверх #328)' (#332) from feat/330-aurora-1883-closed-vsp into test 2026-11-12 17:04:46 +03:00
Andrey Epifancev
39ba9763a3 Merge origin/test в feat/330-aurora-1883-closed-vsp
Конфликты после #323/#331/#334: импорты в Cell.jsx и тесты в конце
test_vsp.py — оставлены обе стороны. Дерево совпадает с пробным
слиянием всех PR (backend 1041 passed / 10 известных, фронт 263/263).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 18:04:24 +04:00
aep
f459819109 Merge pull request 'AURORA-1886: снятие или перенос даты закрытия возвращает ВСП в действующие (поверх #328, мерж после #323)' (#331) from feat/329-aurora-1886-vsp-reopen into test 2026-11-12 17:03:52 +03:00
aep
2b780f5267 Merge pull request 'feat: формулы ячеек на сервере, маркер fx для всех пользователей (AURORA-1896)' (#323) from feat/320-aurora-1896-cell-formulas into test 2026-11-12 17:03:41 +03:00
aep
741ffbfc75 Merge pull request 'AURORA-1881: фильтры и сортировка в окне «Этапы» (поверх #317)' (#319) from feat/318-aurora-1881-stages-filters into test 2026-11-12 17:03:14 +03:00
aep
30e4c4bf78 Merge pull request 'AURORA-1880: окно «Этапы» — этап с направлением в строке, правке и удалении (поверх #315)' (#317) from feat/316-aurora-1880-stages-direction-ui into test 2026-11-12 17:03:00 +03:00
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
d42cce510c docs(vsp): решения исполнения AURORA-1883 в design.md (R-1…R-6) (#330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 12:28:14 +04:00
Andrey Epifancev
a4a674fe60 fix(vsp): архивные ССП в фильтре и выгрузке для «Закрытые»/«Все» — закрытые ВСП архивного ССП выгружаются (AURORA-1883, #330, I-1)
Окно создания и правки ВСП по-прежнему предлагает только активные ССП.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 12:28:04 +04:00
Andrey Epifancev
f1fca5d12c fix(vsp): поля периода закрытия — slotProps.inputLabel вместо удалённого в MUI 9 InputLabelProps (AURORA-1883, #330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 12:23:16 +04:00
Andrey Epifancev
c39bbbfd06 feat(vsp): справочник ВСП — статус «Действующие/Закрытые/Все», период закрытия, бейдж и выгрузка по фильтру (AURORA-1883, #330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:52:18 +04:00
Andrey Epifancev
a561939a66 feat(forms): подпись закрытого ВСП «(закрыт)» в листах форм, выбор только действующих (AURORA-1883, #330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:49:36 +04:00
Andrey Epifancev
ca79fdedcf feat(vsp): выгрузка по статусу и периоду, закрытые ВСП в dropdown по include_inactive (AURORA-1883, #330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:47:52 +04:00
Andrey Epifancev
972dce8994 feat(vsp): фильтр справочника по статусу и периоду закрытия (AURORA-1883, #330)
GET /dict/info: status=active|closed|all (по умолчанию active), close_date_start/end;
закрытые сортируются по дате закрытия по убыванию. Удалён неиспользуемый
close_date_is_null и мёртвый return в VSPRepository.get_list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:46:19 +04:00
Andrey Epifancev
99ab7598c9 docs(vsp): OpenSpec change и план AURORA-1883 — просмотр закрытых ВСП (#330)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:27:51 +04:00
Andrey Epifancev
7f6641e21a fix(vsp): снятие или перенос даты закрытия возвращает ВСП в действующие (AURORA-1886, #329)
Миграция 0062: v3.upd_vsp получает p_clear_closed_at (DROP + CREATE), снятие
даты пишется в аудит. Репозиторий передаёт флаг при closed_at=null, сервис
ставит is_active=True при null или будущей дате.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:23:55 +04:00
Andrey Epifancev
72b57a0c53 test(vsp): красные тесты возврата ВСП в действующие (AURORA-1886, #329)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 11:23:21 +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
Andrey Epifancev
38036b31af chore(formulas): миграция 0060 → 0061 поверх 0060_form_phase_direction_fix (#315) (AURORA-1896)
Порядок мержа фиксирован: #315 → #317 → #319 → #323. design.md #22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 01:08:21 +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
baa5f4e8cd docs(openspec): решения #19–#21 по итогам финального ревью (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 21:14:18 +04:00
Andrey Epifancev
54e60dcf8e test(formulas): GET formulas без доступа, спека приведена к коду (AURORA-1896, M-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 21:06:53 +04:00
Andrey Epifancev
e107fa418d perf(formulas): равенство по владельцу вместо IS NOT DISTINCT FROM, отказ на Infinity (AURORA-1896, M-1, M-2, M-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 21:06:53 +04:00
Andrey Epifancev
e569d18624 fix(formulas): нормализация пробелов выражения перед отправкой и текст ошибки invalid_formula (AURORA-1896, I-2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 21:06:53 +04:00
Andrey Epifancev
ecef6eb247 fix(formulas): рассылка WS не несёт формулу клиента при отказе в доступе (AURORA-1896, I-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 21:06:53 +04:00
Andrey Epifancev
683e12c52f chore(formulas): номер миграции 0060 после rebase на test (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:10:55 +04:00
Andrey Epifancev
18573d6dc4 test(formulas): правки WS-тестов T5.1–T5.3 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:42 +04:00
Andrey Epifancev
aebaaa4ab7 docs(openspec): решение контроллера #18 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:42 +04:00
Andrey Epifancev
3bee5e795f feat(formulas): маркер fx у ячейки, формула с сервера в редакторе, без localStorage (AURORA-1896)
- RealtimeContext: стор карты формул (formulaStore), загрузка при открытии листа и
  переподключении (формы и отчёты проектов), обновление на каждом cell_updated,
  защита от устаревших ответов при смене листа; useCellFormula; updateCell(..., { formula })
- Cell: маркер fx только при актуальной формуле, подсказка с единицей при displayFactor != 1
- EditCell: начальный текст «=выражение», выражение уходит в data.formula, без localStorage;
  ввод «100+50» без «=» не отправляется (тост «Формула начинается с =»)
- удалены resolveEditorState и clearLegacyFormulaKeys; T6.1/T6.2 в cellFormulaUtils

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:42 +04:00
Andrey Epifancev
b93e22080e docs(openspec): решение контроллера #17 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
6ba677cd39 feat(formulas): утилиты карты формул и API чтения формул (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
af687a7e22 feat(formulas): formula и formula_meta в cell_updated по WebSocket (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
c1e21e7cd6 docs(openspec): решение контроллера #16 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
84dbaaf361 test(formulas): правки minor-находок T1.1–T4.2 (AURORA-1896)
T1.1 каскад hard_delete проверяется по AHR_LIMIT; T1.2 тесты триггеров
rent/utility/security/fixed_asset_report; T1.3 NaN в set_cell_formulas
отклоняется (0059 правится на месте); T3.1 unit-кейсы asyncpg-обёртки;
T3.2 предусловие SAVEPOINT-теста и комментарий к 403; T4.1 проверка
незаписи значения при 422 отчёта проекта; T4.2 убрана мёртвая логика.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
17e7d46859 docs(openspec): решение контроллера #15 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
187988bd76 feat(formulas): формулы в отчётах проектов — запись и GET formulas (AURORA-1896)
PATCH cell/cells отчёта проекта пишут формулу в той же транзакции, GET
.../report/{year}/{report_type}/formulas возвращает формулы отчёта.
Тесты: roundtrip, снятие формулы, каскад удаления проекта, триггер
rf_project_report_line (del_form3_line и прямой DELETE).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
f707130ff0 docs(openspec): решение контроллера #14 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
5bc6a755bc feat(formulas): запись формулы при правке ячейки формы и GET formulas листа (AURORA-1896)
SheetService.update_cell_with_formula/update_cells пишут формулу после значения в одной
транзакции, GET /form/{id}/sheet/{sheet}/formulas. Ошибки БД с обёрткой asyncpg
"<class ...>: invalid_formula: ..." теперь корректно мапятся в 422.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
2bf1aba536 docs(openspec): решение контроллера #13 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
1d6d95db9f feat(formulas): CellFormulaRepository, invalid_formula → 422, схемы (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
725b994afa docs(openspec): решения контроллера #10–#12 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
a29207f814 feat(formulas): таблица cell_formula, set/v_cell_formulas, триггеры очистки, миграция 0059 (AURORA-1896)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
1187ac2f8f docs(plan): план реализации AURORA-1896 — формулы ячеек на сервере
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00
Andrey Epifancev
8e294e2899 docs(openspec): change aurora-1896-cell-formulas — формулы ячеек на сервере (AURORA-1896)
proposal, дельта спеки cell-formula, design.md со сверкой дизайна Jira
с кодом test 5a91f35 и разделом решений без обсуждения.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:07:04 +04:00