Refactor project structure and update configurations for State Corp backend
- Updated project description in __init__.py - Enhanced .gitignore to exclude additional data files - Modified User model to remove first_name and last_name fields - Improved instance save method in services.py to include updated_at field - Added API tokens to .env.example for external services - Cleaned up test files for better readability - Updated Dockerfile and docker-compose.yml for improved setup - Revised README.md to reflect project changes and added changelog
This commit is contained in:
114
CHANGELOG.md
114
CHANGELOG.md
@@ -6,6 +6,120 @@
|
||||
|
||||
---
|
||||
|
||||
## [0.4.1] - 2026-02-02
|
||||
|
||||
### Исправлено
|
||||
|
||||
#### CI/CD Pipeline
|
||||
- Удалена зависимость от GitHub Actions (сеть блокирует доступ к GitHub)
|
||||
- `actions/checkout@v4` → `git clone` с переменными Gitea
|
||||
- `actions/setup-python@v4` → установка через `apt-get`
|
||||
- `docker/build-push-action@v5` → чистые `docker build/push` команды
|
||||
- Тесты используют `config.settings.test` (SQLite in-memory) вместо PostgreSQL service
|
||||
|
||||
#### Code Quality
|
||||
- Исправлены ошибки ruff lint:
|
||||
- Сортировка импортов (I001)
|
||||
- Удалены неиспользуемые импорты и переменные (F401, F841)
|
||||
- Добавлены noqa для тестового кода (S106, S314)
|
||||
|
||||
---
|
||||
|
||||
## [0.4.0] - 2026-01-28
|
||||
|
||||
### Добавлено
|
||||
|
||||
#### Парсер ФНС бухгалтерской отчетности (`apps.parsers.clients.fns`)
|
||||
- **FNSExcelParser** — парсер Excel файлов бухгалтерской отчетности:
|
||||
- Формат файла: `fin_{external_id}_{ogrn}.xlsx`
|
||||
- Поддержка форм: №1 (Баланс), №2 (Прибыль/Убыток), №3 (Капитал), №4 (Денежные потоки), №6 (Целевое использование)
|
||||
- Автоматическое определение года и формы по структуре листа
|
||||
- Извлечение значений period_start/period_end для каждой строки
|
||||
|
||||
- **Модели** (`models.py`):
|
||||
- `FinancialReport` — отчет с метаданными (external_id, ogrn, file_hash, status, source)
|
||||
- `FinancialReportLine` — строки отчета (form_code, line_code, year, period_start, period_end)
|
||||
- SHA256 хэш файла для дедупликации
|
||||
- Индексы: ogrn, year, form_code+line_code
|
||||
|
||||
- **Сервисный слой** (`services.py`):
|
||||
- `FNSReportService` — сохранение отчетов, проверка дубликатов по хешу
|
||||
- Поиск по ОГРН
|
||||
- Bulk-сохранение строк отчета
|
||||
|
||||
- **Celery задачи** (`tasks.py`):
|
||||
- `scan_fns_directory` — периодическое сканирование папки каждые 5 минут
|
||||
- `process_fns_file` — обработка одного файла
|
||||
- `process_fns_files_batch` — пакетная обработка через API
|
||||
- Перемещение файлов в `processed/` или `failed/`
|
||||
|
||||
- **API endpoints** (`views.py`, `urls.py`):
|
||||
- `POST /api/v1/fns/upload/` — пакетная загрузка файлов
|
||||
- `GET /api/v1/fns/reports/` — список отчетов с фильтрацией
|
||||
- `GET /api/v1/fns/reports/{id}/` — детали отчета со строками
|
||||
- Swagger теги для группировки в документации
|
||||
|
||||
- **Админка** (`admin.py`):
|
||||
- `FinancialReportAdmin` с inline для строк
|
||||
- Цветовая индикация статусов
|
||||
- Фильтры: status, source, ogrn
|
||||
|
||||
#### Тестирование
|
||||
- 25 unit-тестов для парсера, схем и сервиса
|
||||
- Покрытие: валидация имени файла, парсинг значений, сохранение отчетов
|
||||
|
||||
### Конфигурация
|
||||
- `FNS_WATCH_DIRECTORY` — папка для мониторинга (`/src/input/fns`)
|
||||
- `FNS_PROCESSED_DIRECTORY` — папка обработанных файлов
|
||||
- `FNS_FAILED_DIRECTORY` — папка с ошибками
|
||||
- Celery Beat: `scan-fns-directory` каждые 5 минут
|
||||
|
||||
---
|
||||
|
||||
## [0.3.0] - 2026-01-27
|
||||
|
||||
### Добавлено
|
||||
|
||||
#### Парсер zakupki.gov.ru (`apps.parsers.clients.zakupki`)
|
||||
- **ZakupkiClient** — клиент для получения данных о закупках:
|
||||
- Интеграция через SOAP API (FTP закрыт с 01.01.2025)
|
||||
- Методы: `getDocsByOrgRegionRequest`, `getDocsByReestrNumberRequest`
|
||||
- Парсинг XML/ZIP архивов с поддержкой множественных кодировок (UTF-8, Windows-1251)
|
||||
- Поддержка прокси-серверов
|
||||
- Маппинг 80+ регионов РФ
|
||||
|
||||
- **Модель ProcurementRecord** (`models.py`):
|
||||
- 18 полей: номер закупки, ИНН/КПП/ОГРН заказчика, НМЦ, тип закона (44-ФЗ/223-ФЗ), статус
|
||||
- Поля региона, года, месяца для фильтрации
|
||||
- `load_batch` для отслеживания пакетной загрузки
|
||||
- 3 индекса для оптимизации запросов
|
||||
|
||||
- **Сервисный слой** (`services.py`):
|
||||
- `ProcurementService` — сохранение, поиск, отслеживание загрузок
|
||||
- `ParserLoadLogService` — логирование результатов парсинга
|
||||
- Bulk-операции с chunking и обработкой дубликатов
|
||||
|
||||
- **Celery задачи** (`tasks.py`):
|
||||
- `parse_procurements` — загрузка по региону/году/месяцу с BackgroundJob tracking
|
||||
- `sync_procurements` — синхронизация помесячно с автопродолжением
|
||||
|
||||
- **Админка** (`admin.py`):
|
||||
- Цветовая индикация статусов
|
||||
- Поиск по номеру закупки, ИНН, ОГРН, названию заказчика
|
||||
- Фильтры: тип закона, статус, регион, batch, дата создания
|
||||
- Read-only режим
|
||||
|
||||
#### Тестирование
|
||||
- 71 тест (66 unit + 5 E2E)
|
||||
- `ProcurementRecordFactory` с Faker("ru_RU")
|
||||
- E2E тесты с реальными HTTP-запросами (активация: `RUN_E2E_TESTS=1`)
|
||||
- Покрытие: клиент, сервисы, задачи
|
||||
|
||||
### Требования для работы
|
||||
- Токен SOAP API (получается через Госуслуги на `https://zakupki.gov.ru/pmd/auth/welcome`)
|
||||
|
||||
---
|
||||
|
||||
## [0.2.0] - 2026-01-21
|
||||
|
||||
### Добавлено
|
||||
|
||||
Reference in New Issue
Block a user