1.7 KiB
1.7 KiB
Документация разработчика
Архитектура
Проект построен на конечном автомате (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– мидлвары (логирование, аналитика).
Добавление нового поля в анкету
- Добавить текст в
config/phrases.py. - Расширить модель
LeadDataвcore/models.py. - Добавить состояние в
DialogStateи методы вDialogManager. - Добавить валидатор в
core/validator.py. - Обновить
ExcelExporter._init_fileи метод сохранения.
Тестирование
Установите тестовые зависимости: pip install pytest pytest-asyncio responses.
Запуск: pytest tests/.
Пример теста для валидатора:
def test_validate_fio():
from core.validator import validate_fio
assert validate_fio("Иванов Иван Иванович").is_valid
assert not validate_fio("John Doe").is_valid