Files
vk-sales-bot/docs/developer_guide.md
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

30 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Документация разработчика
## Архитектура
Проект построен на **конечном автомате (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