Files
danyang-match/docs/Phase-09-Completion-Report.md
T

2.2 KiB
Raw Blame History

Phase 09 Completion Report

Status

✅ Completed

Implemented

P09-T01 ~ P09-T15: 消息核心

  • Conversation + ConversationMember + Message 实体
  • ConversationMapper / ConversationMemberMapper / MessageMapper
  • MessagingService — 发送/历史/已读/未读/创建会话/关闭会话
  • MessageController — 6个API端点
  • V008 迁移(conversations + conversation_members + messages 表)

P09: WebSocket

  • ChatWebSocketHandler — 连接/消息/关闭处理
  • WebSocketConfig — STOMP端点配置(/ws)
  • REST发送 + WebSocket接收架构

Core Invariants 已保护

  • 无Match不可发送消息(服务层校验)
  • Match可发送(通过match_id关联校验)
  • 重复clientMessageId不重复(唯一索引 + 服务端检查)
  • Block即时失效(Conversation canSend字段)
  • Unmatch即时失效(closeConversation关闭canSend)
  • WS恢复(REST可重建会话状态)

Miniapp 页面

  • U23 消息列表 — 会话列表 + 未读数 + 下拉刷新
  • U24 聊天页 — 消息气泡 + 历史分页 + 安全提示 + 发送

Database Changes

  • V008: +3 张表(conversations, conversation_members, messages)
  • 唯一约束:uk_message_client_id(sender_id + client_message_id)

API Changes

新增接口:

Method Path 描述
GET /messages/conversations 会话列表
GET /messages/conversations/{id} 会话详情
POST /messages/conversations/{id}/send 发送消息
GET /messages/conversations/{id}/history 消息历史
PUT /messages/conversations/{id}/read 标记已读
GET /messages/unread-count 未读总数

Tests

  • MessagingServiceTest: 4 个用例

Security Review

  • 消息幂等:sender_id + client_message_id 唯一
  • 发送前校验Match有效 + Block状态
  • 安全提示固定展示在聊天顶部
  • WebSocket需带userId认证

Known Issues

  • WebSocket推送为骨架实现,生产需接入完整STOMP订阅
  • 图片消息上传在Phase 10实现

Next Phase

Phase 10: 图片与安全聊天(图片上传/Magic Number校验/风险关键词/限流)