Andrey Epifancev daed54d436 fix(export): Смета РФ — выгрузка Операц/АХР/КВ своей раскладкой, не формы 1
Листы Операц/АХР/КВ формы «Смета РФ» (FORM_2) выгружались раскладкой формы 1
(FORM1_DEPTH_COLUMNS, 180 колонок формы 1) — из 163 колонок экрана совпадали
по ключу только 83, 97 колонок выгрузки были всегда пустыми (блоки формы 1,
которых нет в данных формы 2), заголовки групп — от формы 1. Также на экране
был лишний столбец «Адрес ВСП», которого нет в исходной форме РФ, и ВСП
выгружался бы числовым id вместо номера, который виден на экране.

- FORM2_DEPTH_COLUMNS/FORM2_COLORS (export_mappings.py) — сгенерированы из
  web/src/.../FORM_2/{OPER,AHR,CAP}.js (колонки идентичны у всех трёх листов,
  проверено программно; различаются только цвета). 162 листа дерева —
  байт-в-байт тот же порядок, что на экране, минус header.vsp_address.
  Каждая группа — чисто визуальная обёртка ("key": None), каждый лист несёт
  полный путь данных как "key" (например "booking.y2027.q1"), поэтому порядок
  вложенности групп для Excel-заголовков не завязан на реальный путь к данным.
- Form2DepthRowNormalizer (export_normalizers.py) — в отличие от
  Form1DepthRowNormalizer, не поднимает header.* на верхний уровень: FORM_2
  ожидает их как header.section_code, header.vsp_id и т.д.
- _create_xlsxwriter_sheet_writers: отдельная ветка для FormTypeEnum.FORM_2
  (раньше FORM_2 попадала в общий else вместе с FORM_1). Сателлиты АХР
  (AHR_RENT/UTILITY/SECURITY, AURORA-1904) и STRUCTURE не трогал.
- VSPRepository.get_reg_numbers_by_ids + ExportService._resolve_form2_vsp_numbers:
  один запрос резолвит все встретившиеся header.vsp_id (включая закрытые ВСП)
  в registration_number перед записью в Excel, как уже показывает экран.
- web/.../FORM_2/{OPER,AHR,CAP}.js: убран столбец «Адрес ВСП» (E1) и его цвет —
  по умолчанию, т.к. его нет в исходной форме РФ (см. Rulings в PR). Убрана
  мёртвая ссылка на него в Stages/constants.js.

Issue: #252 (AURORA-1902, эпик AURORA-1876, Высокий приоритет)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 21:47:24 +04:00
2026-04-16 11:52:18 +03:00
2026-04-16 11:52:18 +03:00
2026-04-16 11:52:18 +03:00
2026-04-23 12:48:48 +03:00
2026-04-16 11:52:18 +03:00
2026-04-16 11:52:18 +03:00

Code style: black Imports: isort linting: pylint


test_for_know_empt_repo, v 0.0.1

test

Исполнитель Заказчик
Сотрудник raykov-mse test1
Отдел aurora aurora
Контакты raykovmse@rshb.ru test1@g.co

Шаблон FastAPI

Описание

Данное шаблон предоставляет проект, в котором приложение состоит из API и UI. При использовании данного типа проекта, Вы можете разрабатывать, как отдельные API сервисы, так и WEB приложения с интерфейсом. Для построения WEB интерфейса используется React. Далее описаны основные иснтрументы предустановленные данным шаблоном:

Подготовка к разработке

Для удобной настройки проекта под разработку. Перейдите в каталог setup и выполните слудеющие команды:

cd setup
chmod +x setup.sh
./setup.sh

По итогу успешного выполнения Вы получите сообщение следующего

complete setup web application
To start api, cd to api directory, and use venv, start run_server.py
To start api, cd to web directory, and use command npm run start!
Happy Hacking! :)

Далее просто запускайте проекты и приступайте к разработке

Backend

Исходный код API находится в каталоге api. После клонирования репозитория требуется создать виртуальное окружение и установить зависимости, это достигается следующими командами:

cd api
python -m venv ./.venv
cp ./../setup/pip.conf ./.venv/pip.conf
source ./.venv/bin/python
pip install -r requirements.txt

Запуск приложения осуществляется через файл: run_server.py

В качестве фреймворка ля api используется FastAPI. (Как понятно из названия шаблона) Подробнее ознакомится с возможностями Fast API вы можете в официальной документации: Fast API документация

Вы можете дополнительно устанавливать библиотеки необходимые для разработки. Настоятельно не рекомендуется изменять базовые предустановки из файла requirements.txt

Базовый шаблон предоставляет минимальный функционал по работе с данными. Далее описаны основные моменты влияющие на работу приложения.

Основная структура проекта

api
├── requirements.txt
├── run_server.py
├── src
│   ├── app.py
│   ├── __init__.py
│   ├── settings
│   │   ├── __init__.py
│   │   ├── models.py
│   │   └── settings.py
└── web

Вы можете придерживатся любой структуры проекта, главное, чтобы у Вас присутствовал файл run_server.py. Который запускает web сервер uvicorn или gunicorn. Также обязательно Ваш сервер должен подниматся на определенном хосте и порте. Требуемый хост и порт передаются внутрь через переменные окружения SERVER_HOST, SERVER_PORT

uvicorn.run(
        app,
        host=settings.server.HOST,
        port=settings.server.PORT,
        lifespan="on"
    )

Отказ от ui (react)

Если внутри вашего приложения не требуется добавлять визуальный интерфейс, а Вам требуется исключительно разработать API, то в таком случае не стоит удалять директорию web находящуюся на уровне с директорией api. ТРебуется внести небольшие правки в конфигурацию приложения, в частности в файл: /api/src/app.py, удалив следующее содержимое. В таком случае Fast API сервис не будет обрабатывать статические файлы, от web приложения.

#Подключение собранного web приложения
app.mount("/", StaticFiles(directory="web", html=True), name="web")

Frontend

Исходный код UI находится в каталоге web. После клонирования репозитория требуется установить зависимости, это достигается следующими командами:

cd web
npm install

Запуск приложения осуществляется через файл команду:

npm run start

В качестве фреймворка для ui используется React. Подробнее ознакомится с возможностями React вы можете в официальной документации: React документация

Вы можете дополнительно устанавливать библиотеки необходимые для разработки. Настоятельно не рекомендуется изменять базовые предустановки из файла package.json

Базовый шаблон предоставляет минимальный интерфейс по работе с данными. Далее описаны основные моменты влияющие на работу web приложения.

Основная структура проекта

web
├── biome.json
├── .npmrc
├── dist
├── package.json
├── postcss.config.cjs
├── public
│   └── index.html
├── README.md
├── rsbuild.config.ts
├── src
│   ├── App.tsx
│   ├── config.ts
│   ├── env.d.ts
│   ├── index.css
│   └── index.tsx
├── tailwind.config.js
└── tsconfig.json

Вы можете придерживатся любой структуры проекта, внутри src. Но на верхнем уровне находятся файлы конфигурации и сборки их требуется изменять только в крайнем случае. Для сборки приложения используется RSBuild

Для создания UI настоятельно рекомендуется использовать предустановленную библиотеку компонентови стилей:

  • tailwindcss
  • daisy-ui
  • react-daisy-ui
  • raisa-ui

!!! Важно, если внутри web приложения Вы хотите обращатся к API данного проекта, используйте следующую конструкцию:


fetch(`${Config.API_URL}/api`, {
	headers: {
		'Accept': 'application/json',
		'Content-Type': 'application/json'
	},
	method: 'GET'
})
	

Речь идет об вызываемом эндпоинте ${Config.API_URL}/api, Обязательно используйте конструкцию данного вида т.к. при сборке приложения статический сайт обращается относительно api и вместо запросов вида http://localhost:8000/api должно быть так: /api

Description
No description provided
Readme 6.2 MiB
Languages
Python 90.1%
TypeScript 4.9%
JavaScript 2.3%
Shell 1.1%
CSS 0.8%
Other 0.8%