40 Commits

Author SHA1 Message Date
Andrey Epifancev
e755272787 Merge remote-tracking branch 'origin/test' into feat/289-aurora-1900-unit-vat-labels
# Conflicts:
#	web/src/components/RealtimeTable/constants/FORM_1/SMETA.js
2026-11-02 21:47:53 +04:00
aep
12aae02504 Merge pull request 'AURORA-1903: лист «Смета» — своя раскладка колонок для каждой формы' (#287) from feat/286-aurora-1903-smeta-export-layout into test 2026-11-02 20:36:59 +03:00
aep
5317c04d3a Merge pull request 'AURORA-1906: колонка «СПОД» в листах аренды, коммуналки и охраны АХР' (#263) from feat/254-aurora-1906-spod-column into test 2026-11-02 20:30:23 +03:00
Andrey Epifancev
24ca4410f4 feat(labels): единые подписи «тыс. руб.» и НДС на экране и в выгрузке (AURORA-1900)
Экран: {unit}-плейсхолдер (formatHeaderUnit, переиспользует разрядность из
useDenomination/moneyUtils AURORA-1899) в TableHead.jsx, CollapsibleTree.jsx,
templateColumns.js; литерал «тыс. руб.» → {unit} в заголовках FORM_1/FORM_2/
FORM_4/PROJECT (кроме AHR_LIMIT.js — рублёвое исключение не трогаем) и в
своих колонках Свод1/Свод2 (SummaryTable.scaleColumns, Svod2Page.
scaleNumericColumns). Текст НДС на экране не менялся.

Выгрузка: «с учетом НДC» (латинская C, 96 мест в FORM1_DEPTH_COLUMNS и
производных FORM4_*) → плейсхолдер {vat}/{vat_plan}, резолвится по листу
через render_column_years(..., extra=...) — Ф.1 OPER/CAP «с учётом НДС»,
Ф.1 AHR и все листы Ф.4 «без НДС» (соответствует экрану). SMETA_COLUMNS —
«, тыс. руб.» у сумм. Своды — строка метаданных «Единица: тыс. руб.».

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 20:16:27 +04:00
Andrey Epifancev
72f48cc559 fix(export): лист "Смета" выгружается по раскладке экрана каждой формы (AURORA-1903)
До этой правки лист "Смета" всех форм выгружался одной плоской
раскладкой SMETA_COLUMNS (41 колонка) — для FORM_2/FORM_4 в выгрузке
были лишние колонки другого направления (поддержка/развитие), которых
нет на экране. Добавлена SMETA_COLUMNS_BY_FORM{"FORM_1","FORM_2","FORM_4"}
с раскладкой колонок строго в порядке экрана каждой формы;
_create_xlsxwriter_sheet_writers теперь выбирает нужный список по
form_type_code. SMETA_COLUMNS остаётся алиасом на FORM_1-раскладку для
обратной совместимости (неиспользуемый openpyxl-словарь, старый тест).

Также TabularSheetWriter.write и XlsxTabularSheetWriter.write теперь
пропускают служебную строку META (как уже делают depth-писатели) —
раньше она давала пустую вторую строку на листе "Смета".

На экране FORM_1/SMETA.js добавлены "Утверждено ИТОГО Год" (Z) и
"Факт ИТОГО Год" (AL) — SQL (v_form_view) всегда их отдавал и
выгрузка Excel их писала, но экран их терял.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 16:01:25 +04:00
Andrey Epifancev
a34ccdcb9c perf(api): лист и своды без null-полей в data (jsonb_strip_nulls)
row_json_select(strip_nulls) оборачивает data в jsonb_strip_nulls внутри json_build_object;
флаг пробрасывается через get_json/get_svod1_json/get_svod2_json, роутеры листа и сводов
включают его. Проекты, PATCH/POST/DELETE не затронуты.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 12:14:49 +04:00
aep
15c6402ad3 Merge pull request 'AURORA-1832: aware-даты этапов форм и проектов (часовой пояс)' (#228) from feat/208-aurora-1832-phase-dates-tz into test 2026-11-01 09:43:46 +03:00
aep
f1b4f6d306 Merge pull request 'AURORA-1848: тяжёлые GET — готовый JSON из Postgres без pydantic-модели на строку (A)' (#239) from feat/233-aurora-1848-sheet-json-no-pydantic into test 2026-11-01 09:42:06 +03:00
aep
dc82239770 Merge pull request 'AURORA-1845: кэш user/формы на время WS-соединения' (#238) from feat/237-aurora-1845-ws-connection-cache into test 2026-11-01 09:41:43 +03:00
aep
8b081a4b42 Merge pull request 'AURORA-1833: явно ставить greenlet в dev-окружении' (#225) from feat/209-aurora-1833-greenlet-dev into test 2026-11-01 09:39:59 +03:00
aep
6ff979ae57 Merge pull request 'AURORA-1830: /users/me не падает на email .local' (#224) from feat/206-aurora-1830-users-me-local-email into test 2026-11-01 09:39:44 +03:00
Andrey Epifancev
d41668dc27 feat(form2): колонка «СПОД» в сателлитах АХР (аренда/коммуналка/охрана)
Добавлен столбец «СПОД» между «Декабрь» и «Итог IV кв.» на листах
AHR_RENT/AHR_UTILITY/AHR_SECURITY формы 2, с переносом значения в
budget_line_quarter.actual_spod синхронизируемой строки АХР (Support)
и, через уже существующую логику, в итог 4 кв. и года АХР/Смет/сводов.

- rent_detail/utility_detail/security_detail: колонка actual_spod
  (ALTER TABLE + ORM).
- v3.v_form2_view: fact_q4.spod и fact_q4.total с учётом spod в ветках
  AHR_RENT/AHR_UTILITY/AHR_SECURITY.
- v3._apply_form_cell: fact_q4.spod разрешён как обычное поле месяца.
- v3._upsert_form2_ahr_detail_sync_values: DROP+CREATE с новым
  параметром p_actual_spod (DROP обязателен из-за неоднозначности
  перегрузки с DEFAULT).
- v3.sync_form2_ahr_satellite_lines/line: actual_spod передаётся из
  rd/ud/sd в апсерт.
- v3.v_svod2_go: строка аренды также считается заполненной по
  actual_spod.
- Data-миграция: 'fact_q4.spod' добавлен в column_keys этапов, где уже
  есть 'fact_q4.dec' (phase_template/form_phase), идемпотентно.
- Тело CREATE OR REPLACE для v_form2_view/sync_form2_ahr_satellite_*
  собрано вручную по миграциям 0033/0034 + regexp-патчам из 0037
  (pg_get_functiondef на живой БД недоступен в этой среде — см.
  Rulings в PR).

Тесты: node --test на новых accessorKey в конфигах фронта + unit-тест
на 0049/0050 (v_svod2_go теперь засчитывает actual_spod для аренды).
Интеграционные тесты добавлены, но не выполнены — нет доступа к
Postgres в этой рабочей среде (см. Rulings в PR).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-31 00:24:56 +04:00
Andrey Epifancev
7094fe839f perf(api): хелпер ответа из готовых JSON-строк и SQL-выражение строки
Добавлены list_json_response (обёртка BaseListResponse из готовых строк),
ROW_COLUMNS, row_json_select и fetch_row_texts для тяжёлых GET (AURORA-1848).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:07:40 +04:00
Andrey Epifancev
4dae72da2b test(ws): кэш соединения - unit и интеграционный через websocket_connect
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:17:56 +04:00
Andrey Epifancev
d73333705c test(stages): aware-даты этапов форм и проектов
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 18:13:13 +04:00
Andrey Epifancev
b0dcc0b0f5 fix(deps): явно ставить greenlet в dev-окружении через sqlalchemy[asyncio]
SQLAlchemy не объявляет greenlet без extra asyncio. На arm64 (macOS)
и на Python >= 3.13 greenlet не ставится, и async-движок падает с
"the greenlet library is required". Тест фиксирует наличие greenlet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 18:11:10 +04:00
Andrey Epifancev
2dc9b4df03 fix(users): выходные схемы пользователя без входных ограничений (/users/me 500 на .local)
UserInDB наследует новую UserReadBase (email/username/full_name без
валидации формата). Вход (UserBase/UserCreate/UserUpdate) не менялся.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 18:11:06 +04:00
Andrey Epifancev
5e7ac886aa test(alembic): регрессия на подзапросы в FROM без алиаса (PostgreSQL 15)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-28 18:10:13 +04:00
744c8962cd Merge pull request 'svod2-filter-fix2: если заполнен только всп не берем в свод 2' (#197) from svod2-filter-fix2 into test
Reviewed-on: #197
2026-10-21 17:33:12 +03:00
8d6e7ba51b svod2-filter-fix2: если заполнен только всп не берем в свод 2 2026-10-21 17:31:34 +03:00
18b834e1f8 Merge pull request 'indent-export: отсупы в экспорте по глубине вложенности' (#196) from indent-export into test
Reviewed-on: #196
2026-10-21 15:48:42 +03:00
669e352980 indent-export: отсупы в экспорте по глубине вложенности 2026-10-21 15:46:08 +03:00
f92c0e8d32 svod2-filter-fix: строки совсем без значений не попадают в свод 2 2026-10-21 15:38:48 +03:00
1463b3ad8b export-hierarchy: иерархия expense-item при выгрузке 2026-10-21 11:44:24 +03:00
9095cad992 project-back-fix: экпорт проектов, нельзя ставить отрицательные числа в полях проектов, создание года только на следующий год 2026-08-20 21:27:08 +03:00
b9d109bd23 AURORA-1096-back: поправил фильтры в журнале аудита 2026-06-18 16:42:41 +03:00
d292b2fbb0 Merge pull request 'excel-fix: пофиксил экспорт первой формы' (#48) from excel-fix into test
Reviewed-on: #48
Reviewed-by: Raykov-MS <RaykovMS@avt.rshb.ru>
2026-06-16 15:49:05 +03:00
Raykov-MS
5210f1d6f7 еще правки 2026-06-16 15:22:39 +03:00
c247536278 excel-fix: пофиксил экспорт первой формы 2026-06-16 14:56:55 +03:00
Raykov-MS
2f5cb21dc0 Поправил некорректное отбраженеи ошибок 2026-06-16 12:52:39 +03:00
098efcb497 create-form-back: в ручку создания задач передается список ссп, поправил падающий тест 2026-06-08 16:09:11 +03:00
Raykov-MS
fc55a7b042 Правки 2026-05-25 18:46:11 +03:00
Raykov-MS
ad6eae9c0b Export 2026-05-25 17:31:29 +03:00
Raykov-MS
411773b6e9 Ушли от уровня орм к уровню бд, позже добавлю функции в rnd репо 2026-05-21 11:08:36 +03:00
Raykov-MS
bea8eb6240 Add audit read api and remove python audit writes 2026-05-19 14:37:43 +03:00
Raykov-MS
a718827c12 add and fix validations on forms 2026-05-15 18:42:05 +03:00
Raykov-MS
539bd8c0f9 Refactor for specs requirements 2026-05-14 11:21:26 +03:00
Raykov-MS
280dabfd95 Refactor contract of errors 2026-05-14 11:16:35 +03:00
Raykov-MS
3d134fb7f9 srez 2026-05-08 13:16:31 +03:00
Raykov-MS
1a92df79ac Add based code 2026-05-05 18:07:16 +03:00