WP-CHAT-CALL-LOCK-01 — Cuộc gọi: nhỡ, lock-screen path, UI nhật ký
Domain: D-CHAT · D-NOTIF · Surfaces: CON · API · 2026-08-22 · Status: IMP (signaling + notif path). Media P2P / CallKit: Dev Client + OWNER.
AC
| # | Tiêu chí | Kết quả |
|---|---|---|
| 1 | RINGING quá 45s → MISSED + inbox/push callee |
BE timer + sweep listCalls/getCall |
| 2 | Tap push / inbox CALL_INCOMING → Call (callee) |
deepLinkFor + openNotifDeepLink |
| 3 | Tap CALL_MISSED → CallDetail |
deep-link + GET /chat/calls/:id |
| 4 | Android channels welife-calls/chat/rides/orders |
registerExpoPushToken |
| 5 | Nút Trả lời / Từ chối trên push (EAS) | category welife-call-incoming |
| 6 | Đang mở thread → không spam push tin | isUserInConversation + skipPush |
| 7 | Nhật ký tên peer + live call:ended |
serialize initiator/callee + WS refresh |
| 8 | CallScreen đồng hồ / countdown 45s / getUserMedia nếu có RTC | Expo Go = signaling |
Không làm — BLOCKED (cấm thiết bị thật)
react-native-webrtc/ TURN / CallKit / PushKit / ConnectionService (WP-NOTIF-VOIP-01)- Bundle
.cafringtone APK (WP-NOTIF-SFX-BUNDLE-01) — EAS, không smoke device - Verify cuộc gọi = unit + API + Expo Go simulator/Metro, không phone
Files
api/src/modules/chat/call-ring.util.ts+chat.service.ts+chat.controller.tsapi/src/modules/notifications/notif-catalog.ts+notifications.service.tsmobile/src/services/push.ts·notifDeepLink.ts·CallScreen.tsx·CallDetailScreen.tsx·ConversationsScreen.tsx