Files
vk-sales-bot/docs/developer_guide.md
T
User bf89e671d8
CI/CD / Test (push) Failing after 4m32s
CI/CD / Deploy (push) Has been skipped
Initial clean history
2026-05-11 16:46:25 +03:00

1.7 KiB
Raw Blame History

Документация разработчика

Архитектура

Проект построен на конечном автомате (FSM). Диалог управляется классом DialogManager.
Состояния: COLLECT_FICOLLECT_PHONECOLLECT_TIMECONFIRMFINISHED.
Поддерживаются возражения и перезапуск.

Компоненты:

  • 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/.
Пример теста для валидатора:

def test_validate_fio():
    from core.validator import validate_fio
    assert validate_fio("Иванов Иван Иванович").is_valid
    assert not validate_fio("John Doe").is_valid