@wendongfly/myhi 1.3.197 → 1.3.199
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat.html +259 -28
- package/dist/index.html +165 -7
- package/dist/index.js +1 -1
- package/dist/index.min.js +172 -170
- package/dist/lib/attn.js +46 -0
- package/package.json +1 -1
package/dist/lib/attn.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// 任务「要不要你看一眼」的判定,首页卡片 / 会话页切换面板 / 其他任务提醒共用。
|
|
2
|
+
// wait:AI 在等你回答提问 / 审批方案(最优先)
|
|
3
|
+
// busy:正在执行
|
|
4
|
+
// done:你上次看过之后又有了新动静(本设备未读)
|
|
5
|
+
// 「看过」记在本机 localStorage(myhi_seen:{会话id: 毫秒}),不跨设备同步——手机上看过不代表电脑上看过。
|
|
6
|
+
(function () {
|
|
7
|
+
const KEY = 'myhi_seen';
|
|
8
|
+
let seen = null;
|
|
9
|
+
function load() {
|
|
10
|
+
if (seen) return seen;
|
|
11
|
+
try { seen = JSON.parse(localStorage.getItem(KEY) || 'null'); } catch { seen = null; }
|
|
12
|
+
return seen;
|
|
13
|
+
}
|
|
14
|
+
function save() { try { localStorage.setItem(KEY, JSON.stringify(seen)); } catch {} }
|
|
15
|
+
const ts = (s) => {
|
|
16
|
+
const v = s.lastActivityAt || 0;
|
|
17
|
+
return typeof v === 'number' ? v : (new Date(v).getTime() || 0);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
window.myhiAttn = {
|
|
21
|
+
// 首次使用(本机还没有记录):把现有任务全当已读,免得一上来满屏未读
|
|
22
|
+
init(list) {
|
|
23
|
+
if (load() || !(list && list.length)) return;
|
|
24
|
+
seen = {};
|
|
25
|
+
for (const s of list || []) seen[s.id] = Date.now();
|
|
26
|
+
save();
|
|
27
|
+
},
|
|
28
|
+
markSeen(id) {
|
|
29
|
+
load(); if (!seen) seen = {};
|
|
30
|
+
seen[id] = Date.now();
|
|
31
|
+
// 顺手清掉早已不存在的老记录(只留最近 200 个)
|
|
32
|
+
const ids = Object.keys(seen);
|
|
33
|
+
if (ids.length > 200) ids.sort((a, b) => seen[a] - seen[b]).slice(0, ids.length - 200).forEach((k) => delete seen[k]);
|
|
34
|
+
save();
|
|
35
|
+
},
|
|
36
|
+
of(s) {
|
|
37
|
+
if (s.pending > 0) return 'wait';
|
|
38
|
+
if (s.busy) return 'busy';
|
|
39
|
+
const t = ts(s); const v = (load() || {})[s.id];
|
|
40
|
+
return v != null && t > v + 1000 ? 'done' : '';
|
|
41
|
+
},
|
|
42
|
+
rank(a) { return { wait: 0, busy: 1, done: 2 }[a] ?? 3; },
|
|
43
|
+
label: { wait: '等你回复', busy: '执行中', done: '新完成' },
|
|
44
|
+
color: { wait: 'var(--orange, #db6d28)', busy: 'var(--blue, #2f81f7)', done: 'var(--green, #3fb950)' },
|
|
45
|
+
};
|
|
46
|
+
})();
|
package/package.json
CHANGED