Initial commit: VK Sales Bot project structure
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user