Files
MCAdroidApp/API_ANALYSIS.md
Viktoria Polyakova 0a9c3f5bc4 Init
2026-01-25 15:57:18 +03:00

189 lines
9.6 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.
# Анализ соответствия API чата между Android приложением и бэкендом
## Обзор
Проанализированы API чата в Android приложении и бэкенд-системе для выявления соответствий и несоответствий.
## Android API (ChatApiService.kt)
### Доступные эндпоинты:
1. **Провайдеры чата**
- `GET /api/chat/providers` - Получение списка провайдеров чата
2. **Чаты**
- `GET /api/chat/chats` - Получение списка чатов
- `GET /api/chat/chats/{chatId}` - Получение конкретного чата
- `DELETE /api/chat/chats/{chatId}` - Удаление чата
3. **Сообщения чата**
- `GET /api/chat/chats/{chatId}/messages` - Получение сообщений чата
- `POST /api/chat/chats/{chatId}/messages` - Отправка сообщения
- `PUT /api/chat/chats/{chatId}/messages/{messageId}/status/{status}` - Обновление статуса сообщения
- `PUT /api/chat/chats/{chatId}/status/read` - Отметка всех сообщений как прочитанных
4. **Непрочитанные сообщения**
- `GET /api/chat/unseen-count` - Получение количества непрочитанных сообщений
## Бэкенд API (NestJS)
### Доступные эндпоинты:
#### ChatController (api/chat/chats)
- `POST /api/chat/chats/personal` - Создание личного чата
- `POST /api/chat/chats/group` - Создание группового чата
- `POST /api/chat/chats/external` - Создание внешнего чата
- `GET /api/chat/chats/group/exists/:entityId` - Проверка существования чата по entity
- `GET /api/chat/chats` - Получение чатов с пагинацией
- `GET /api/chat/chats/find` - Поиск чатов (простой)
- `GET /api/chat/chats/find/full` - Поиск чатов (полный)
- `GET /api/chat/chats/find/full/personal` - Поиск личных чатов
- `GET /api/chat/chats/find/full/by-message-content` - Поиск по содержанию сообщений
- `GET /api/chat/chats/:chatId` - Получение чата по ID
- `PATCH /api/chat/chats/group/:chatId` - Обновление группового чата
- `DELETE /api/chat/chats/:chatId` - Удаление чата
- `PUT /api/chat/chats/:chatId/pin/:messageId` - Закрепление сообщения
- `PUT /api/chat/chats/:chatId/unpin/:messageId` - Открепление сообщения
- `PUT /api/chat/chats/:chatId/status/:status` - Обновление статуса сообщений
- `POST /api/chat/chats/:chatId/contact` - Создание контакта и лида
#### ChatMessageController (api/chat/chats/:chatId/messages)
- `POST /api/chat/chats/:chatId/messages` - Создание сообщения
- `GET /api/chat/chats/:chatId/messages` - Получение сообщений
- `GET /api/chat/chats/:chatId/messages/:messageId` - Получение конкретного сообщения
- `PUT /api/chat/chats/:chatId/messages/:messageId` - Обновление сообщения
- `DELETE /api/chat/chats/:chatId/messages/:messageId` - Удаление сообщения
- `POST /api/chat/chats/:chatId/messages/status/:status` - Обновление статуса сообщений (массовое)
- `PUT /api/chat/chats/:chatId/messages/:messageId/status/:status` - Обновление статуса сообщения
- `PUT /api/chat/chats/:chatId/messages/:messageId/react/:reaction` - Реакция на сообщение
- `PUT /api/chat/chats/:chatId/messages/:messageId/unreact/:reactionId` - Удаление реакции
#### MultichatController (api/chat)
- `GET /api/chat/unseen-count` - Получение количества непрочитанных сообщений
## Соответствия API
### ✅ Полностью соответствующие эндпоинты:
1. **Получение списка провайдеров**
- Android: `GET /api/chat/providers`
- Backend: `GET /api/chat/providers`
2. **Получение списка чатов**
- Android: `GET /api/chat/chats`
- Backend: `GET /api/chat/chats`
3. **Получение конкретного чата**
- Android: `GET /api/chat/chats/{chatId}`
- Backend: `GET /api/chat/chats/:chatId`
4. **Удаление чата**
- Android: `DELETE /api/chat/chats/{chatId}`
- Backend: `DELETE /api/chat/chats/:chatId`
5. **Получение сообщений чата**
- Android: `GET /api/chat/chats/{chatId}/messages`
- Backend: `GET /api/chat/chats/:chatId/messages`
6. **Отправка сообщения**
- Android: `POST /api/chat/chats/{chatId}/messages`
- Backend: `POST /api/chat/chats/:chatId/messages`
7. **Обновление статуса сообщения**
- Android: `PUT /api/chat/chats/{chatId}/messages/{messageId}/status/{status}`
- Backend: `PUT /api/chat/chats/:chatId/messages/:messageId/status/:status`
8. **Получение количества непрочитанных сообщений**
- Android: `GET /api/chat/unseen-count`
- Backend: `GET /api/chat/unseen-count`
## Несоответствия и недостающие функции
### ❌ Отсутствующие в Android API:
1. **Создание чатов**
- Личные чаты: `POST /api/chat/chats/personal`
- Групповые чаты: `POST /api/chat/chats/group`
- Внешние чаты: `POST /api/chat/chats/external`
2. **Поиск чатов**
- Простой поиск: `GET /api/chat/chats/find`
- Полный поиск: `GET /api/chat/chats/find/full`
- Поиск по имени пользователя: `GET /api/chat/chats/find/full/personal`
- Поиск по содержанию сообщений: `GET /api/chat/chats/find/full/by-message-content`
3. **Управление чатами**
- Обновление группового чата: `PATCH /api/chat/chats/group/:chatId`
- Закрепление сообщений: `PUT /api/chat/chats/:chatId/pin/:messageId`
- Открепление сообщений: `PUT /api/chat/chats/:chatId/unpin/:messageId`
- Создание контактов: `POST /api/chat/chats/:chatId/contact`
4. **Расширенное управление сообщениями**
- Массовое обновление статуса: `POST /api/chat/chats/:chatId/messages/status/:status`
- Реакции на сообщения: `PUT /api/chat/chats/:chatId/messages/:messageId/react/:reaction`
- Удаление реакций: `PUT /api/chat/chats/:chatId/messages/:messageId/unreact/:reactionId`
- Удаление сообщений: `DELETE /api/chat/chats/:chatId/messages/:messageId`
5. **Дополнительные функции**
- Проверка существования чата: `GET /api/chat/chats/group/exists/:entityId`
## Рекомендации по улучшению Android API
### 1. Добавить создание чатов
```kotlin
// Добавить в ChatApiService
@POST("api/chat/chats/personal")
suspend fun createPersonalChat(@Body request: CreatePersonalChatRequest): Response<Chat>
@POST("api/chat/chats/group")
suspend fun createGroupChat(@Body request: CreateGroupChatRequest): Response<Chat>
@POST("api/chat/chats/external")
suspend fun createExternalChat(@Body request: CreateExternalChatRequest): Response<Chat>
```
### 2. Добавить поиск чатов
```kotlin
// Добавить в ChatApiService
@GET("api/chat/chats/find")
suspend fun findChats(@QueryMap filters: Map<String, String>): Response<ChatsResponse>
@GET("api/chat/chats/find/full")
suspend fun findChatsFull(@QueryMap filters: Map<String, String>): Response<ChatsResponse>
```
### 3. Добавить управление сообщениями
```kotlin
// Добавить в ChatApiService
@DELETE("api/chat/chats/{chatId}/messages/{messageId}")
suspend fun deleteMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Unit>
@PUT("api/chat/chats/{chatId}/messages/{messageId}/react/{reaction}")
suspend fun reactToMessage(
@Path("chatId") chatId: Long,
@Path("messageId") messageId: Long,
@Path("reaction") reaction: String
): Response<ChatMessage>
@POST("api/chat/chats/{chatId}/messages/status/{status}")
suspend fun updateMessagesStatus(
@Path("chatId") chatId: Long,
@Path("status") status: String,
@Body messageIds: List<Long>
): Response<List<ChatMessage>>
```
### 4. Добавить управление чатами
```kotlin
// Добавить в ChatApiService
@PUT("api/chat/chats/{chatId}/pin/{messageId}")
suspend fun pinMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Chat>
@PUT("api/chat/chats/{chatId}/unpin/{messageId}")
suspend fun unpinMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Chat>
```
## Заключение
Android API имеет хорошее соответствие с бэкендом для базовых операций (получение чатов, сообщений, отправка сообщений), но отсутствует множество функций для полноценного управления чатами. Для создания полноценного чат-клиента рекомендуется расширить Android API в соответствии с доступными бэкенд-эндпоинтами.