feat(fns): парсер ФНС бухгалтерской отчетности
- Модели FinancialReport и FinancialReportLine
- FNSExcelParser для файлов fin_{id}_{ogrn}.xlsx
- FNSReportService с дедупликацией по хешу файла
- Celery задачи для мониторинга папки (каждые 5 мин)
- API: POST /fns/upload/, GET /fns/reports/
- Django admin интеграция
- 25 unit-тестов
This commit is contained in:
50
CHANGELOG.md
50
CHANGELOG.md
@@ -6,6 +6,56 @@
|
||||
|
||||
---
|
||||
|
||||
## [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/parsers/fns/upload/` — пакетная загрузка файлов
|
||||
- `GET /api/v1/parsers/fns/reports/` — список отчетов с фильтрацией
|
||||
- `GET /api/v1/parsers/fns/reports/{id}/` — детали отчета со строками
|
||||
|
||||
- **Админка** (`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
|
||||
|
||||
### Добавлено
|
||||
|
||||
Reference in New Issue
Block a user