Init
This commit is contained in:
188
API_ANALYSIS.md
Normal file
188
API_ANALYSIS.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Анализ соответствия 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 в соответствии с доступными бэкенд-эндпоинтами.
|
||||
Reference in New Issue
Block a user