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:
2026-02-01 14:44:19 +01:00
parent eb0d6f2600
commit cd0e21350b
17 changed files with 1537 additions and 10 deletions

View File

@@ -34,6 +34,11 @@ app.conf.beat_schedule = {
"task": "apps.parsers.tasks.parse_manufactures",
"schedule": 86400.0, # Every 24 hours
},
# Сканирование папки FNS - каждые 5 минут
"scan-fns-directory": {
"task": "apps.parsers.tasks.scan_fns_directory",
"schedule": 300.0, # Every 5 minutes
},
}
app.conf.timezone = "Europe/Moscow"

View File

@@ -383,3 +383,16 @@ LOGGING = {
},
},
}
# =============================================================================
# FNS Parser Settings
# =============================================================================
# Directory for watching incoming FNS files
FNS_WATCH_DIRECTORY = BASE_DIR / "input" / "fns"
# Directory for processed files (moved after successful processing)
FNS_PROCESSED_DIRECTORY = BASE_DIR / "input" / "fns" / "processed"
# Directory for failed files (moved after failed processing)
FNS_FAILED_DIRECTORY = BASE_DIR / "input" / "fns" / "failed"