- Создан FilerFileField для сериализации filer.File объектов
- При чтении: возвращает URL файла через filer.url
- При записи: создает filer.File из UploadedFile с валидацией размера
- Обновлены serializers для работы с FilerFileField
- Обновлены тесты API: _filer_file() helper, mak_document() использует filer
- Удален устаревший mock documents.notification
- Удален validate_file() (валидация перенесена в FilerFileField)
WIP: Некоторые тесты не проходят, требуется отладка permissions
- Добавлены Next.js артефакты в .gitignore:
* .next/ - папка с dev/production builds
* out/ - папка статического экспорта
* .turbo/ - кэш Turbopack
* *.tsbuildinfo - TypeScript build info
* next-env.d.ts - автогенерируемые типы
- Удалены все .next файлы из git tracking
Эти файлы генерируются автоматически при разработке и сборке,
не должны быть в репозитории
- Добавлены Next.js артефакты в .gitignore:
* .next/ - папка с dev/production builds
* out/ - папка статического экспорта
* .turbo/ - кэш Turbopack
* *.tsbuildinfo - TypeScript build info
* next-env.d.ts - автогенерируемые типы
- Удалены все .next файлы из git tracking
Эти файлы генерируются автоматически при разработке и сборке,
не должны быть в репозитории
- Add birth_date, created_at/updated_at to Employee; remove username field
- Introduce EmployeeAction for tracking HR events and is_actually_active/status properties
- Create BotSubscriber model (OneToOne relation) for TG/WA binding
- Implement Aiogram-based Telegram bot:
• request contact to bind by phone or @username
• department selection keyboard from DEPARTMENTS dict
• async ORM via sync_to_async, custom filters for bound & active employees
- Update profile view & template:
• show “Bind Telegram/WhatsApp” button only when not already bound
• preview avatar on upload
- Remove registration tokens in favor of contact-based auth
- Clean up templates, forms and add avatar validation mixin