Initial clean history
CI/CD / Test (push) Failing after 4m32s
CI/CD / Deploy (push) Has been skipped

This commit is contained in:
User
2026-05-11 16:46:25 +03:00
commit bf89e671d8
33 changed files with 1333 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# Документация разработчика
## Архитектура
Проект построен на **конечном автомате (FSM)**. Диалог управляется классом `DialogManager`.
Состояния: `COLLECT_FI``COLLECT_PHONE``COLLECT_TIME``CONFIRM``FINISHED`.
Поддерживаются возражения и перезапуск.
**Компоненты:**
- `core/fsm.py` логика диалога.
- `core/validator.py` – валидация ФИО, телефона, парсинг времени.
- `core/exporter.py` – работа с Excel (атомарная запись, бэкапы).
- `services/vk_bot.py` – интеграция с VK API, обработка команд.
- `utils/middleware.py` – мидлвары (логирование, аналитика).
## Добавление нового поля в анкету
1. Добавить текст в `config/phrases.py`.
2. Расширить модель `LeadData` в `core/models.py`.
3. Добавить состояние в `DialogState` и методы в `DialogManager`.
4. Добавить валидатор в `core/validator.py`.
5. Обновить `ExcelExporter._init_file` и метод сохранения.
## Тестирование
Установите тестовые зависимости: `pip install pytest pytest-asyncio responses`.
Запуск: `pytest tests/`.
Пример теста для валидатора:
```python
def test_validate_fio():
from core.validator import validate_fio
assert validate_fio("Иванов Иван Иванович").is_valid
assert not validate_fio("John Doe").is_valid