All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.4.0 - 2026-01-24
- Major project structure refactoring: All application code moved to
backend/namespace (instead of scattered across the root). - CI/CD and security improvements: Added separate pipelines for coverage, docker, docs, release, and security scanning.
- Packaging cleanup: Version in
pyproject.tomlnow properly aligned with release tags.
backend/package structure as a single entry point for application and modules:backend/core/- Dependency injection container and middlewarebackend/domain/- Domain models (invoices, drafts)backend/services/- Business logic layer (draft_service, invoice_service, async_utils)backend/storage/- Async database layer with mappers and drafts persistencebackend/ocr/- OCR engine with providers and async clientbackend/handlers/- Telegram handlers (commands, callbacks, FSM, DI middleware)backend/alembic/- Database migrationsbackend/healthcheck.py- Health check endpoint
- Development scripts (
scripts/):- Python scripts for setup, testing, linting, formatting, migration, and running
- Platform-specific wrappers (Linux shell, Windows PowerShell)
- Quality and content checking:
.lycheeignore- Link checker ignore patterns.markdownlint.json- Markdown linting configuration
- Project structure:
- Moved all modules from root (
handlers/,ocr/,storage/,services/,domain/,core/,alembic/) intobackend/ - Updated all imports to use
backend.*namespace
- Moved all modules from root (
- GitHub Actions workflows:
- Split single CI into multiple specialized workflows:
ci.yml- Tests and lintingcoverage.yml- Code coverage reportingdocker.yml- Docker image build and testdocker-compose.yml- Docker Compose integration testsdocs.yml- Documentation link checkingrelease.yml- Docker image publishing (releases only for major versions)security.yml- Security scanning (bandit, pip-audit, Trivy)
- Split single CI into multiple specialized workflows:
- Package version in
pyproject.tomlnow correctly matches release0.4.0(previously inconsistent in0.3.0) - Fixed import paths in test files (corrected
patch()calls to usebackend.*namespace) - Fixed code formatting and indentation issues across test files
- Fixed import sorting in
backend/alembic/env.pyandbackend/storage/db.py
- Old root-level directories (moved to
backend/):handlers/,ocr/,storage/,services/,domain/,core/,alembic/
- Root-level configuration files (now in
backend/):config.py,healthcheck.py,alembic.ini
- Full drafts system: Interactive editing workflow via Telegram callbacks
- Database migrations: Alembic-based schema management
- Mature architecture: Dependency injection, middleware, and command separation
- Drafts functionality:
domain/drafts.py- Domain entities and structures for draftsservices/draft_service.py- Business logic for draft managementhandlers/commands_drafts.py- Draft-related commandshandlers/callbacks_edit.py- Interactive editing callbacks
- Async storage layer:
storage/db_async.py- Async database operationsstorage/drafts_async.py- Async draft persistencestorage/mappers.py- Domain-to-storage conversion layer
- Database migrations:
alembic/directory with migration configurationalembic/versions/0001_initial_schema.py- Initial database schema
- Application architecture:
core/container.py- Dependency injection containerhandlers/di_middleware.py- DI middleware for handlershandlers/callback_registry.py- Callback handler registryhandlers/commands_common.py,handlers/commands_invoices.py- Separated command handlershandlers/fsm.py- Finite state machine management
- OCR improvements:
ocr/async_client.py- Async OCR client wrapper
- Documentation:
README.ru.md- Russian READMECONTRIBUTING.md- Contribution guidelines
- DevSecOps:
.pre-commit-config.yaml- Pre-commit hooks configurationbandit.yaml- Security linting configuration- Expanded test coverage across all modules
- Refactored modules:
handlers/- Restructured command/callback architecture with FSM and DI integrationocr/- Transitioned to modular provider approach with async supportstorage/- Added async operations and mappersdocs/- Updated structure and content
- Packaging:
- Migrated from
requirements.txttopyproject.tomlfor dependency management - Consolidated linting configs (removed
.ruff.toml,mypy.ini)
- Migrated from
- Multiple fixes in tests and handlers for stability after feature expansion
- Stabilized draft and callback functionality
- Old configuration files:
.ruff.toml,mypy.inirequirements.txt,requirements-dev.txt
- Modular architecture: Introduced domain, service, and storage layers
- OCR provider abstraction: Modular OCR system with provider pattern
- Docker support: Containerization and deployment automation
- Bilingual documentation: English and Russian documentation structure
- Documentation:
docs/directory with language separation (docs/en/,docs/ru/)docs/assets/- Screenshots and visual assets
- Architectural layers:
domain/- Invoice domain models and structuresservices/- Service layer (invoice_service.py)
- OCR providers:
ocr/providers/base.py- Base provider interfaceocr/providers/mindee_provider.py- Mindee provider implementation- Proper package structure in
ocr/
- Docker:
Dockerfile- Container image definitiondocker-compose.yml- Docker Compose configuration.dockerignore- Docker build exclusions
- Tooling:
pyproject.toml- Centralized project configuration.ruff.toml,mypy.ini- Initial quality tooling setup
- Storage package:
storage/__init__.py- Package initialization
- OCR engine:
- Refactored
ocr/engine/*,ocr/extract.py,ocr/mindee_client.pyfor provider pattern
- Refactored
- Handlers:
- Added
handlers/callbacks.pywith improved command/state management
- Added
- Configuration:
- Updated
bot.py,config.py,.env.example,.gitignore
- Updated
- Tests:
- Expanded test suite (parsing, storage dates, engine utilities)
- Improved stability of file processing and OCR field extraction
0.1.0 - 2025
- Initial MVP release: Basic bot functionality with OCR and storage
- Telegram bot:
bot.py- Main bot entry point
- Configuration:
config.py- Configuration managementrequirements.txt,requirements-dev.txt- Dependency management
- OCR layer:
ocr/extract.py- OCR extraction logicocr/mindee_client.py- Mindee API clientocr/engine/*- OCR engine (router, types, utilities)
- Handlers:
handlers/commands.py- Bot commandshandlers/file.py- File upload handlinghandlers/state.py- State managementhandlers/utils.py- Utility functions
- Storage:
storage/db.py- SQLite database operations
- CI/CD:
.github/workflows/ci.yml- Basic CI pipeline
- Tests:
- Basic unit tests for OCR utilities, parsing, and storage dates