Initial clean history
CI/CD / Test (push) Failing after 4m32s
CI/CD / Deploy (push) Has been skipped

This commit is contained in:
User
2026-05-11 16:46:25 +03:00
commit bf89e671d8
33 changed files with 1333 additions and 0 deletions
+30
View File
@@ -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
+22
View File
@@ -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` существует и доступна для записи.
- Бот не видит сообщения: группа должна быть публичной или добавьте бота в беседу.