76 lines
2.3 KiB
Markdown
76 lines
2.3 KiB
Markdown
# 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`
|