Initial clean history
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
|
||||
@@ -0,0 +1,22 @@
|
||||
# Руководство оператора "Сотрудник первой линии"
|
||||
|
||||
## Быстрый старт
|
||||
1. Убедитесь, что установлен Python 3.11+ и все зависимости (`pip install -r requirements.txt`).
|
||||
2. Скопируйте `.env.example` в `.env` и укажите токен группы VK.
|
||||
3. Запустите бота: `python main.py`
|
||||
4. Проверьте статус: напишите боту `/status` (только для администраторов, указанных в ADMIN_IDS).
|
||||
|
||||
## Управление
|
||||
- `/status` – проверить, работает ли бот.
|
||||
- `/export` – создать копию файла лидов с меткой времени.
|
||||
- `/backup` – вручную создать резервную копию.
|
||||
- `/stats` – показать статистику (всего лидов, за сегодня, по статусам).
|
||||
- `/reload` – перезагрузить текстовые фразы без перезапуска.
|
||||
|
||||
## Просмотр данных
|
||||
Файл с лидами находится в `data/leads.xlsx`. Резервные копии – в `data/backups/`.
|
||||
|
||||
## Решение проблем
|
||||
- Бот не отвечает: проверьте токен и права доступа группы (нужны `messages` и `groups`).
|
||||
- Ошибка записи в файл: убедитесь, что папка `data` существует и доступна для записи.
|
||||
- Бот не видит сообщения: группа должна быть публичной или добавьте бота в беседу.
|
||||
Reference in New Issue
Block a user