完善设备端体验与微信校验支持

This commit is contained in:
stu2not
2026-07-07 16:58:05 +08:00
parent b4fef6d2e0
commit 937e3023fc
38 changed files with 3377 additions and 51 deletions

View File

@@ -0,0 +1,75 @@
# Alarm And Notification Flow
## Device Alarm To User Notification
```mermaid
sequenceDiagram
autonumber
participant Device as TalkingQ device
participant MQTT as MQTT broker
participant Handler as TalkingQMQTTService
participant Alarm as Alarm service
participant Location as Location snapshot
participant DB as device_alarm_events
participant Banner as system banner polling
participant Mini as banban-mini
participant WxMP as WeChat Official Account
participant SMS as SMS provider
Device->>MQTT: alarm event msg_id=010
MQTT->>Handler: deliver alarm payload
Handler->>Alarm: create alarm event
Alarm->>Location: attach current location snapshot if available
Alarm->>DB: insert device_alarm_events
Alarm->>WxMP: schedule/send template notification if bound
Alarm->>SMS: send SMS if phone notification is enabled
Banner->>DB: poll latest/new alarm
Mini->>Banner: show banner / alarm history on device home
Handler-->>MQTT: alarm event_resp
```
## Supporting Notification Bind
```mermaid
flowchart TD
Mini["banban-mini management page"]
Phone["WeChat phone authorization"]
WxBind["WeChat MP bind start/status"]
Backend["talkingq-url wechat-mp routers/services"]
Parent["parents / parent_wechat_* tables"]
Notify["wechat_mp_notification_service"]
Mini --> Phone --> Backend --> Parent
Mini --> WxBind --> Backend --> Parent
Parent --> Notify
```
## Key Tables
```mermaid
erDiagram
device_auth ||--o{ device_alarm_events : reports
children ||--o{ device_alarm_events : alarm_owner
parents ||--o{ parent_wechat_accounts : mp_account
parents ||--o{ parent_wechat_identities : wx_identity
parents ||--o{ wechat_mp_bind_states : bind_state
device_alarm_events {
int id PK
varchar device_id FK
int child_id FK
varchar source_msg_id
decimal location_lat
decimal location_lng
datetime location_updated_at
datetime created_at
}
```
## Source Anchors
- Alarm schema: `database/talkingq_shared_schema.sql`
- Alarm location refresh tests: `talkingq-url/tests/test_alarm_gps_location_refresh.py`
- System banner client: `banban-mini/src/services/system-banner.ts`
- Device home alarm UI: `banban-mini/src/pages/device/index.tsx`
- WeChat MP notification service: `talkingq-url/banban/service/wechat_mp_notification.py`