diff --git a/services/ingest-service/README.md b/services/ingest-service/README.md index 3889568..07ad648 100644 --- a/services/ingest-service/README.md +++ b/services/ingest-service/README.md @@ -16,17 +16,24 @@ ingest-service/ ├── app/ │ ├── __init__.py -│ ├── main.py # Главный файл приложения -│ ├── database.py # Конфигурация БД -│ ├── models.py # SQLAlchemy модели -│ ├── crud.py # CRUD операции -│ └── api/ +│ ├── main.py # Главный файл приложения +│ ├── crud.py # CRUD операции +│ ├── api/ +│ │ ├── __init__.py +│ │ └── uis.py # API endpoints для UIS +│ ├── infrastructure/ +│ │ ├── __init__.py +│ │ └── database.py # Конфигурация БД +│ └── models/ │ ├── __init__.py -│ └── uis.py # API endpoints для UIS -├── docker-compose.yaml +│ └── call_event.py # SQLAlchemy модели +├── alembic/ # Миграции БД +│ ├── env.py +│ └── versions/ +├── alembic.ini ├── Dockerfile ├── requirements.txt -└── .env.example +└── .env ``` ## Быстрый старт @@ -63,8 +70,7 @@ pip install -r requirements.txt # Запустить только PostgreSQL через Docker docker-compose up -d postgres -# Создать файл .env -cp .env.example .env +# Убедиться, что файл .env настроен правильно # Запустить приложение uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 @@ -79,7 +85,7 @@ Webhook для приема событий звонков от UIS ```json { "eventType": "call_completed", - "call_session_id": "12345-abcde", + "call_session_id": 12345, "direction": "in", "employee_id": 100, "employee_full_name": "Иванов Иван Иванович", @@ -94,45 +100,49 @@ Webhook для приема событий звонков от UIS } ``` -### GET /v1/uis/events +### GET /v1/uis/events (TODO) Получить список всех событий звонков **Query параметры:** - `skip` - количество пропускаемых записей (пагинация) - `limit` - максимальное количество записей (по умолчанию 100) -### GET /v1/uis/events/{call_session_id} +_Примечание: Endpoint запланирован к реализации_ + +### GET /v1/uis/events/{call_session_id} (TODO) Получить конкретное событие звонка по session_id -### GET /v1/uis/events/employee/{employee_id} +_Примечание: Endpoint запланирован к реализации_ + +### GET /v1/uis/events/employee/{employee_id} (TODO) Получить все звонки конкретного сотрудника **Query параметры:** - `skip` - количество пропускаемых записей - `limit` - максимальное количество записей +_Примечание: Endpoint запланирован к реализации_ + ## База данных ### Модель данных CallEvent Таблица `call_events` содержит следующие поля: -- `id` - уникальный идентификатор (автоинкремент) -- `event_type` - тип события -- `call_session_id` - уникальный ID сессии звонка +- `id` - уникальный идентификатор (UUID) +- `call_session_id` - уникальный ID сессии звонка (BigInteger, индексируется) - `direction` - направление звонка (in/out) +- `notification_mnemonic` - мнемоника уведомления (тип события) +- `last_answered_employee_full_name` - ФИО сотрудника, ответившего на звонок - `employee_id` - ID сотрудника -- `employee_full_name` - ФИО сотрудника -- `contact_phone_number` - телефон контакта -- `called_phone_number` - набранный телефон -- `communication_group_name` - название группы коммуникации -- `start_time` - время начала звонка -- `finish_time` - время окончания звонка +- `finish_time` - время окончания звонка (Unix timestamp) +- `total_time_duration` - общая длительность звонка (в секундах) +- `wait_time_duration` - длительность ожидания (в секундах) +- `total_wait_time_duration` - общая длительность ожидания (в секундах) - `talk_time_duration` - длительность разговора (в секундах) +- `clean_talk_time_duration` - чистая длительность разговора (в секундах) - `full_record_file_link` - ссылка на запись звонка -- `campaign_name` - название кампании -- `created_at` - дата создания записи -- `updated_at` - дата последнего обновления +- `tcm_topcrm_notification_name` - название уведомления TCM/TopCRM (название кампании) ### Подключение к PostgreSQL