Files
akmon/doc_chat/mock_chat.sql
2026-01-20 08:04:15 +08:00

142 lines
10 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Mock chat data for local development and demos
-- Uses deterministic UUIDs so the dataset can be reapplied safely
-- Assumes chat schema from doc_chat/create_chat_tables.sql is already deployed
-- Primary tester account (parent side): eed3824b-bba1-4309-8048-19d17367c084
-- Homeroom teacher account: e95b36ab-6cc8-4b69-8d23-286f98fe79ce
-- Demo student account: 0122a2e6-c412-4e9a-9ad5-403e0048333c
begin;
-- Optional cleanup so script is idempotent
delete from chat_notifications where conversation_id = any(array[
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101'::uuid,
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202'::uuid
]);
delete from chat_messages where conversation_id = any(array[
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101'::uuid,
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202'::uuid
]);
delete from chat_participants where conversation_id = any(array[
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101'::uuid,
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202'::uuid
]);
delete from chat_conversations where id = any(array[
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101'::uuid,
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202'::uuid
]);
delete from chat_mqtt_downlinks where conversation_id = any(array[
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101'::uuid,
'0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202'::uuid
]);
delete from chat_gateway_heartbeats where gateway_id = '7f8e2e9c-62c3-4fb5-9a4f-18aa0a118001';
delete from chat_gateway_nodes where id = '7f8e2e9c-62c3-4fb5-9a4f-18aa0a118001';
-- Conversations
insert into chat_conversations (id, title, is_group, owner_id, last_message_at, metadata, created_at, updated_at)
values
('0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', null, false, 'e95b36ab-6cc8-4b69-8d23-286f98fe79ce',
'2025-09-27 09:05:00+08'::timestamptz, '{"context":"direct_support"}'::jsonb,
'2025-09-26 08:55:00+08'::timestamptz, '2025-09-27 09:05:00+08'::timestamptz),
('0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '体能训练筹备群', true, '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004',
'2025-09-28 08:10:45+08'::timestamptz, '{"sport":"basketball","tags":["training","weekly"]}'::jsonb,
'2025-09-26 12:10:00+08'::timestamptz, '2025-09-28 08:10:45+08'::timestamptz);
-- Participants
insert into chat_participants (id, conversation_id, user_id, role, joined_at, settings)
values
('8a111111-2222-4333-8444-555555555501', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', 'e95b36ab-6cc8-4b69-8d23-286f98fe79ce', 'owner',
'2025-09-26 08:55:00+08'::timestamptz, '{"notifications":"all"}'::jsonb),
('8a111111-2222-4333-8444-555555555502', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', 'eed3824b-bba1-4309-8048-19d17367c084', 'member',
'2025-09-26 08:55:30+08'::timestamptz, '{"notifications":"mentions"}'::jsonb),
('8a111111-2222-4333-8444-555555555503', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004', 'owner',
'2025-09-26 12:10:00+08'::timestamptz, '{"pin":true}'::jsonb),
('8a111111-2222-4333-8444-555555555504', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '0122a2e6-c412-4e9a-9ad5-403e0048333c', 'member',
'2025-09-26 12:10:30+08'::timestamptz, '{"color":"teal"}'::jsonb),
('8a111111-2222-4333-8444-555555555505', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', 'eed3824b-bba1-4309-8048-19d17367c084', 'admin',
'2025-09-26 12:11:00+08'::timestamptz, '{"notifications":"digest"}'::jsonb);
-- Messages (chronological order per conversation)
insert into chat_messages (id, conversation_id, sender_id, content, content_type, ingress_type, reply_to, metadata, created_at, updated_at)
values
('6c70f6a3-87f0-4685-b83f-99180a220101', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', 'e95b36ab-6cc8-4b69-8d23-286f98fe79ce',
'早上好 Bob下午的体能课记得提前 10 分钟到场。', 'text', 'manual', null, '{"tone":"reminder"}'::jsonb,
'2025-09-27 09:02:00+08'::timestamptz, '2025-09-27 09:02:00+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220102', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', 'eed3824b-bba1-4309-8048-19d17367c084',
'收到!我会提前去热身,还需要带什么器材吗?', 'text', 'manual', '6c70f6a3-87f0-4685-b83f-99180a220101', null,
'2025-09-27 09:03:00+08'::timestamptz, '2025-09-27 09:03:00+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220103', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', 'e95b36ab-6cc8-4b69-8d23-286f98fe79ce',
'自备护腕就行,训练结束后我们复盘数据。', 'text', 'manual', '6c70f6a3-87f0-4685-b83f-99180a220102', '{"follow_up":true}'::jsonb,
'2025-09-27 09:05:00+08'::timestamptz, '2025-09-27 09:05:00+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220201', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004',
'本周训练安排:周二体能、周四对抗、周六拉伸,附件里有详细指标。', 'markdown', 'manual', null,
'{"attachments":[{"type":"sheet","name":"week39-plan.xlsx"}]}'::jsonb,
'2025-09-28 07:30:00+08'::timestamptz, '2025-09-28 07:30:00+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220202', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '0122a2e6-c412-4e9a-9ad5-403e0048333c',
'收到训练表,周二我带上心率带。', 'text', 'manual', '6c70f6a3-87f0-4685-b83f-99180a220201', '{"reaction":"thumbs_up"}'::jsonb,
'2025-09-28 08:00:00+08'::timestamptz, '2025-09-28 08:00:00+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220203', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '0122a2e6-c412-4e9a-9ad5-403e0048333c',
'http://ak3.oulog.com:8000/storage/v1/object/public/chat-audio/voices/bluetooth/2025/09/28/voice-bt-080512.ogg', 'audio', 'bluetooth', null,
'{"storage_bucket":"chat-audio","object_path":"voices/bluetooth/2025/09/28/voice-bt-080512.ogg","public_url":"http://ak3.oulog.com:8000/storage/v1/object/public/chat-audio/voices/bluetooth/2025/09/28/voice-bt-080512.ogg","duration_sec":32,"codec":"opus"}'::jsonb,
'2025-09-28 08:05:12+08'::timestamptz, '2025-09-28 08:05:12+08'::timestamptz),
('6c70f6a3-87f0-4685-b83f-99180a220204', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '0122a2e6-c412-4e9a-9ad5-403e0048333c',
'http://ak3.oulog.com:8000/storage/v1/object/public/chat-audio/voices/gateway/2025/09/28/voice-gw-081045.ogg', 'audio', 'school_gateway', null,
'{"gateway_id":"chat-gw-sports-a","storage_bucket":"chat-audio","object_path":"voices/gateway/2025/09/28/voice-gw-081045.ogg","public_url":"http://ak3.oulog.com:8000/storage/v1/object/public/chat-audio/voices/gateway/2025/09/28/voice-gw-081045.ogg","duration_sec":27,"codec":"aac"}'::jsonb,
'2025-09-28 08:10:45+08'::timestamptz, '2025-09-28 08:10:45+08'::timestamptz);
-- Notifications (unread + read samples)
insert into chat_notifications (id, user_id, conversation_id, message_id, type, is_read, created_at)
values
('4f3a0a10-1b84-4f7e-8ec3-111100000001', 'eed3824b-bba1-4309-8048-19d17367c084', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', '6c70f6a3-87f0-4685-b83f-99180a220101', 'message', true,
'2025-09-27 09:02:05+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000002', 'e95b36ab-6cc8-4b69-8d23-286f98fe79ce', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', '6c70f6a3-87f0-4685-b83f-99180a220102', 'message', true,
'2025-09-27 09:03:10+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000003', 'eed3824b-bba1-4309-8048-19d17367c084', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20101', '6c70f6a3-87f0-4685-b83f-99180a220103', 'message', false,
'2025-09-27 09:05:05+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000004', '0122a2e6-c412-4e9a-9ad5-403e0048333c', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220201', 'message', false,
'2025-09-28 07:30:15+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000005', 'eed3824b-bba1-4309-8048-19d17367c084', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220201', 'message', false,
'2025-09-28 07:30:15+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000006', '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220202', 'message', true,
'2025-09-28 08:00:10+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000007', '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220203', 'message', false,
'2025-09-28 08:05:15+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000008', 'eed3824b-bba1-4309-8048-19d17367c084', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220203', 'message', false,
'2025-09-28 08:05:15+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-111100000009', '05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220204', 'message', false,
'2025-09-28 08:10:50+08'::timestamptz),
('4f3a0a10-1b84-4f7e-8ec3-11110000000a', 'eed3824b-bba1-4309-8048-19d17367c084', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', '6c70f6a3-87f0-4685-b83f-99180a220204', 'message', false,
'2025-09-28 08:10:50+08'::timestamptz);
-- Sample MQTT downlink tied to training reminder
insert into chat_mqtt_downlinks (id, conversation_id, target_user_id, topic, payload, payload_encoding, qos, retain, status,
scheduled_at, expires_at, created_by, created_at, updated_at, metadata)
values
('3d8e9956-1f35-4d34-a1f4-8d061df30001', '0f2c8f30-9f0a-4a7b-8b75-9d41c4f20202', 'eed3824b-bba1-4309-8048-19d17367c084',
'device/guardian-eed3824b/down', '{"type":"reminder","title":"周二体能课","start":"2025-09-30T14:00:00+08:00"}',
'json', 1, false, 'pending',
'2025-09-29 09:00:00+08'::timestamptz, '2025-09-30 12:00:00+08'::timestamptz,
'05b40c9c-6b2d-4f1a-9d84-d1f4db1a0004', '2025-09-28 08:05:00+08'::timestamptz, '2025-09-28 08:05:00+08'::timestamptz,
'{"priority":"high"}'::jsonb);
-- Gateway node + latest heartbeat for dashboard demos
insert into chat_gateway_nodes (id, name, mqtt_client_id, version, region, tags)
values
('7f8e2e9c-62c3-4fb5-9a4f-18aa0a118001', '体育馆边缘网关 A', 'chat-gw-sports-a', '1.4.2', 'cn-south', '{"rack":"gym-east","roles":["mqtt","kafka"]}'::jsonb);
insert into chat_gateway_heartbeats (id, gateway_id, created_at, uptime_sec, mem_rss_mb, heap_used_mb,
mqtt_connected, kafka_connected, redis_connected,
msgs_in, msgs_out, msgs_dropped, errors, acl_denied, kafka_produced, extra)
values
('9a3f5c12-2c6f-4b92-9e36-81f2f1010001', '7f8e2e9c-62c3-4fb5-9a4f-18aa0a118001',
'2025-09-28 08:02:00+08'::timestamptz, 86400, 612, 248,
true, true, true,
1280, 1264, 3, 1, 0, 1248,
'{"cpu_load":0.53,"latency_ms":42}'::jsonb);
commit;