/** * 轻量 IM 种子: * 1) 发几条演示系统通知(工单变更/工艺单变更/审批通知) * ⚠️ 说明:原「协作 → 即时通讯」菜单已移除(聊天入口改为右下角浮窗,见 layout 的 ImFloatWindow), * 本脚本不再创建该菜单,仅保留演示通知功能。 * 用法:node server/scripts/seed-im.mjs */ const BASE = process.env.F9MES_API || 'http://localhost:5136'; const PHONE = '13800000000'; const PASSWORD = '123456'; const ME_ID = 1; async function api(h, method, url, body) { const res = await fetch(BASE + url, { method, headers: h, body: body ? JSON.stringify(body) : undefined, }); const text = await res.text(); let json = null; try { json = JSON.parse(text); } catch { /* ignore */ } if (!res.ok || (json && json.code !== 0)) { throw new Error(`HTTP ${res.status} ${url}: ${text.slice(0, 300)}`); } return json; } async function main() { const login = await api({ 'Content-Type': 'application/json' }, 'POST', '/api/auth/login', { phone: PHONE, password: PASSWORD, }); const token = login.data.token; const h = { Authorization: 'Bearer ' + token, 'Content-Type': 'application/json' }; // ============ 1. 演示系统通知 ============ const demos = [ { title: '工单变更', content: '任务工单 GD-20260815-003 的排产时间由 08:30 调整为 09:30,请注意查看。', msgType: 1 }, { title: '工艺单变更', content: '工艺庄口「四川凉山-2026春茧」工艺参数已更新:缫丝车速 95r/min → 100r/min。', msgType: 1 }, { title: '审批通知', content: '您有 1 条原料出库审批待办(CK-20260815-002),请及时处理。', msgType: 2 }, ]; for (const d of demos) { const r = await api(h, 'POST', '/api/im/notify', { userIds: [ME_ID], msgType: d.msgType, title: d.title, content: d.content, }); console.log('通知「' + d.title + '」已发送(' + r.data + ' 条)'); } // ============ 2. 验证 ============ const unread = await api(h, 'GET', '/api/im/unread-count'); console.log('当前未读数:' + unread.data); const sessions = await api(h, 'GET', '/api/im/sessions'); console.log('会话数:' + (sessions.data || []).length); console.log('\n完成。演示通知已就绪。'); } main().catch((e) => { console.error('ERR: ' + e.message); process.exit(1); });