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

9.6 KiB
Raw Blame History

Анализ соответствия 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. Добавить создание чатов

// Добавить в 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. Добавить поиск чатов

// Добавить в 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. Добавить управление сообщениями

// Добавить в 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. Добавить управление чатами

// Добавить в 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 в соответствии с доступными бэкенд-эндпоинтами.