skill-schedule 0.1.0 → 0.2.1
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/SKILL.md +105 -0
- package/dist/cli/cmd_read.js +174 -116
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +16 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +84 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +32 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/config.d.ts +43 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/fetch/db.d.ts +4 -0
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +10 -0
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/errors.d.ts +1 -1
- package/dist/fetch/errors.d.ts.map +1 -1
- package/dist/fetch/errors.js.map +1 -1
- package/dist/fetch/feishu.d.ts +33 -9
- package/dist/fetch/feishu.d.ts.map +1 -1
- package/dist/fetch/feishu.js +137 -23
- package/dist/fetch/feishu.js.map +1 -1
- package/dist/fetch/index.d.ts +4 -4
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +3 -3
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +5 -3
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +19 -24
- package/dist/fetch/paths.js.map +1 -1
- package/dist/health.d.ts +41 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +580 -0
- package/dist/health.js.map +1 -0
- package/dist/help/helpFile.d.ts +69 -0
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/help/helpFile.js +136 -0
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/helpPaths.d.ts +14 -0
- package/dist/help/helpPaths.d.ts.map +1 -0
- package/dist/help/helpPaths.js +40 -0
- package/dist/help/helpPaths.js.map +1 -0
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +8 -1
- package/dist/help/lookup.js.map +1 -1
- package/dist/help/output.d.ts +22 -0
- package/dist/help/output.d.ts.map +1 -0
- package/dist/help/output.js +79 -0
- package/dist/help/output.js.map +1 -0
- package/dist/help/scenes/help-assets.d.ts +97 -0
- package/dist/help/scenes/help-assets.d.ts.map +1 -0
- package/dist/help/scenes/help-assets.js +2148 -0
- package/dist/help/scenes/help-assets.js.map +1 -0
- package/dist/plan/check.d.ts +3 -0
- package/dist/plan/check.d.ts.map +1 -0
- package/dist/plan/check.js +71 -0
- package/dist/plan/check.js.map +1 -0
- package/dist/plan/context.d.ts +18 -0
- package/dist/plan/context.d.ts.map +1 -0
- package/dist/plan/context.js +4 -0
- package/dist/plan/context.js.map +1 -0
- package/dist/plan/ensure.d.ts +4 -0
- package/dist/plan/ensure.d.ts.map +1 -0
- package/dist/plan/ensure.js +140 -0
- package/dist/plan/ensure.js.map +1 -0
- package/dist/plan/index.d.ts +8 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +56 -0
- package/dist/plan/index.js.map +1 -0
- package/dist/plan/iso.d.ts +27 -0
- package/dist/plan/iso.d.ts.map +1 -0
- package/dist/plan/iso.js +55 -0
- package/dist/plan/iso.js.map +1 -0
- package/dist/plan/overview.d.ts +23 -0
- package/dist/plan/overview.d.ts.map +1 -0
- package/dist/plan/overview.js +38 -0
- package/dist/plan/overview.js.map +1 -0
- package/dist/plan/pull.d.ts +25 -0
- package/dist/plan/pull.d.ts.map +1 -0
- package/dist/plan/pull.js +83 -0
- package/dist/plan/pull.js.map +1 -0
- package/dist/plan/receipt.d.ts +52 -0
- package/dist/plan/receipt.d.ts.map +1 -0
- package/dist/plan/receipt.js +57 -0
- package/dist/plan/receipt.js.map +1 -0
- package/dist/plan/remoteDay.d.ts +62 -0
- package/dist/plan/remoteDay.d.ts.map +1 -0
- package/dist/plan/remoteDay.js +102 -0
- package/dist/plan/remoteDay.js.map +1 -0
- package/dist/plan/single.d.ts +4 -0
- package/dist/plan/single.d.ts.map +1 -0
- package/dist/plan/single.js +176 -0
- package/dist/plan/single.js.map +1 -0
- package/dist/plan/sync.d.ts +14 -0
- package/dist/plan/sync.d.ts.map +1 -0
- package/dist/plan/sync.js +158 -0
- package/dist/plan/sync.js.map +1 -0
- package/dist/plan/upsert.d.ts +5 -0
- package/dist/plan/upsert.d.ts.map +1 -0
- package/dist/plan/upsert.js +102 -0
- package/dist/plan/upsert.js.map +1 -0
- package/dist/policy/index.d.ts +2 -2
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +1 -1
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/plan.d.ts +16 -1
- package/dist/policy/plan.d.ts.map +1 -1
- package/dist/policy/plan.js +51 -1
- package/dist/policy/plan.js.map +1 -1
- package/dist/policy/wakewords.js +4 -4
- package/dist/policy/wakewords.js.map +1 -1
- package/dist/render/html.d.ts +0 -6
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +0 -17
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +3 -1
- package/dist/render/index.js.map +1 -1
- package/dist/shared/templateFill.d.ts +4 -0
- package/dist/shared/templateFill.d.ts.map +1 -0
- package/dist/shared/templateFill.js +20 -0
- package/dist/shared/templateFill.js.map +1 -0
- package/package.json +7 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PlanEvent } from '../fetch/index.js';
|
|
2
|
+
import { type PlanOpCtx, type PlanOpResult } from './context.js';
|
|
3
|
+
import { type RemoteSnapshot } from './remoteDay.js';
|
|
4
|
+
export interface ReconcileOutcome {
|
|
5
|
+
backfilled: {
|
|
6
|
+
id: number;
|
|
7
|
+
remoteId: string;
|
|
8
|
+
}[];
|
|
9
|
+
skipped: string[];
|
|
10
|
+
}
|
|
11
|
+
/** 阶段 0:远端 → 本地回填标识。唯一命中才回填;多候选记「需手工处理」并跳过。 */
|
|
12
|
+
export declare function reconcileIds(snap: RemoteSnapshot, locals: PlanEvent[]): ReconcileOutcome;
|
|
13
|
+
export declare function runSync(ctx: PlanOpCtx): PlanOpResult;
|
|
14
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/plan/sync.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAuE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE1H,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAmBxF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CA4GpD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// 日程与计划·#20 日程管家同步(op=sync):反向对账(阶段 0)+ 全量 diff + 两侧兜底清理。
|
|
2
|
+
//
|
|
3
|
+
// 阶段 0 · 反向对账(S-11):远端有、本地缺标识的,按 `(起, 止, 标题)` 索引回填;**多条候选不猜**(跳过并记账)。
|
|
4
|
+
// 阶段 A · 按本地存的标识配对:远端那条若被手动改了时段,尊重用户,把时段同步回本地(老口径);
|
|
5
|
+
// 题/备注与本地不一致则以本地为准改远端。
|
|
6
|
+
// 阶段 B · 本地没标识的按四元组认;认不出才建。**过去日期默认不补建**(避免死灰复燃,老口径 `feishu_sync.py:756-759`)。
|
|
7
|
+
// 阶段 C · 远端有、本地没有、且**带归属锚**的 → 孤儿,删;不带锚的一律不动(S-12)。
|
|
8
|
+
// 收口 · 同一时间槽里带锚的冗余对象(历史重复建的残留)有兜底清理(S-12 同槽一侧)。
|
|
9
|
+
//
|
|
10
|
+
// 远端不可用即阻断(S-09/老家唯一「不可用就阻断」的入口):回执标 `unavailable`,退出码非 0。
|
|
11
|
+
import { listPlanEvents, setFeishuEventId, updatePlanEvent, larkUpdateEvent, composeFeishuDescription } from '../fetch/index.js';
|
|
12
|
+
import { resolveDateParam, todayStr } from '../policy/index.js';
|
|
13
|
+
import { receiptResult } from './context.js';
|
|
14
|
+
import { buildReceipt } from './receipt.js';
|
|
15
|
+
import { takeSnapshot, alignOne, matchIn, orphansOf, removeRemote, cleanSlot } from './remoteDay.js';
|
|
16
|
+
/** 阶段 0:远端 → 本地回填标识。唯一命中才回填;多候选记「需手工处理」并跳过。 */
|
|
17
|
+
export function reconcileIds(snap, locals) {
|
|
18
|
+
const index = new Map();
|
|
19
|
+
for (const e of snap.events) {
|
|
20
|
+
if (!e.owned)
|
|
21
|
+
continue;
|
|
22
|
+
const k = e.slotStart + '|' + e.slotEnd + '|' + e.summary;
|
|
23
|
+
index.set(k, [...(index.get(k) ?? []), e.eventId]);
|
|
24
|
+
}
|
|
25
|
+
const out = { backfilled: [], skipped: [] };
|
|
26
|
+
for (const e of locals) {
|
|
27
|
+
if (e.feishu_event_id) {
|
|
28
|
+
// 已绑标识的也认领一下:免得阶段 C 把它们当成孤儿删掉。
|
|
29
|
+
if (snap.events.some((r) => r.eventId === e.feishu_event_id))
|
|
30
|
+
snap.claimed.add(e.feishu_event_id);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const hit = index.get(e.time_start + '|' + e.time_end + '|' + e.title) ?? [];
|
|
34
|
+
if (hit.length === 1)
|
|
35
|
+
out.backfilled.push({ id: e.id, remoteId: hit[0] });
|
|
36
|
+
else if (hit.length > 1)
|
|
37
|
+
out.skipped.push('本地 #' + e.id + '「' + e.title + '」远端有 ' + hit.length + ' 条撞键候选,跳过(需手工处理)');
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
export function runSync(ctx) {
|
|
42
|
+
const date = resolveDateParam(ctx.params);
|
|
43
|
+
if (!ctx.cli) {
|
|
44
|
+
const why = ctx.remoteWhy ?? '远端不可用';
|
|
45
|
+
return receiptResult(buildReceipt({
|
|
46
|
+
op: 'sync',
|
|
47
|
+
message: '重同步阻断:远端不可用(' + why + ')',
|
|
48
|
+
local: 'unchanged', remote: 'unavailable', remoteId: null,
|
|
49
|
+
errors: [why], date,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
const errors = [];
|
|
53
|
+
const notes = [];
|
|
54
|
+
let snap;
|
|
55
|
+
try {
|
|
56
|
+
snap = takeSnapshot(ctx.cli, date);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
const m = e instanceof Error ? e.message : String(e);
|
|
60
|
+
return receiptResult(buildReceipt({
|
|
61
|
+
op: 'sync', message: '重同步阻断:' + m, local: 'unchanged', remote: 'unavailable',
|
|
62
|
+
remoteId: null, errors: [m], date,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
errors.push(...snap.pullErrors);
|
|
66
|
+
// 阶段 0:反向对账
|
|
67
|
+
const rec = reconcileIds(snap, listPlanEvents(ctx.handle, date));
|
|
68
|
+
for (const m of rec.backfilled)
|
|
69
|
+
setFeishuEventId(ctx.handle, m.id, m.remoteId);
|
|
70
|
+
notes.push(...rec.skipped);
|
|
71
|
+
const isPast = date < todayStr();
|
|
72
|
+
const counts = { backfilled: rec.backfilled.length, created: 0, updated: 0, deleted: 0, timeSynced: 0, pastSkipped: 0, duplicates: 0, failed: 0 };
|
|
73
|
+
// 阶段 A/B:本地 → 远端
|
|
74
|
+
for (const e of listPlanEvents(ctx.handle, date)) {
|
|
75
|
+
const spec = {
|
|
76
|
+
date, timeStart: e.time_start, timeEnd: e.time_end,
|
|
77
|
+
title: e.title, notes: e.notes, remoteId: e.feishu_event_id,
|
|
78
|
+
};
|
|
79
|
+
const hit = matchIn(snap, spec);
|
|
80
|
+
if (!hit) {
|
|
81
|
+
if (isPast) {
|
|
82
|
+
counts.pastSkipped++;
|
|
83
|
+
continue;
|
|
84
|
+
} // 过去日期:本地有、远端无 → 默认不补建
|
|
85
|
+
const made = alignOne(snap, spec);
|
|
86
|
+
errors.push(...made.errors);
|
|
87
|
+
notes.push(...made.notes);
|
|
88
|
+
if (made.remote === 'unavailable' || !made.remoteId) {
|
|
89
|
+
counts.failed++;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
setFeishuEventId(ctx.handle, e.id, made.remoteId);
|
|
93
|
+
counts.created++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
snap.claimed.add(hit.eventId);
|
|
97
|
+
if (hit.eventId !== e.feishu_event_id)
|
|
98
|
+
setFeishuEventId(ctx.handle, e.id, hit.eventId);
|
|
99
|
+
// 飞书侧被手动改了时段 → 尊重用户,把时段同步回本地
|
|
100
|
+
if (hit.slotStart !== e.time_start || hit.slotEnd !== e.time_end) {
|
|
101
|
+
updatePlanEvent(ctx.handle, e.id, { time_start: hit.slotStart, time_end: hit.slotEnd });
|
|
102
|
+
counts.timeSynced++;
|
|
103
|
+
}
|
|
104
|
+
const want = composeFeishuDescription(e.notes);
|
|
105
|
+
if (hit.summary !== e.title || hit.description !== want) {
|
|
106
|
+
try {
|
|
107
|
+
larkUpdateEvent(ctx.cli, hit.eventId, { summary: e.title, description: want });
|
|
108
|
+
counts.updated++;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
counts.failed++;
|
|
112
|
+
errors.push('远端改失败:' + hit.eventId + '(' + (err instanceof Error ? err.message : String(err)) + ')');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 阶段 C:孤儿(带锚、无人认领)→ 删
|
|
117
|
+
for (const orphan of orphansOf(snap)) {
|
|
118
|
+
const r = removeRemote(snap, orphan.eventId);
|
|
119
|
+
if (r.ok)
|
|
120
|
+
counts.deleted++;
|
|
121
|
+
else {
|
|
122
|
+
counts.failed++;
|
|
123
|
+
errors.push('孤儿清理失败:' + orphan.eventId + '(' + r.error + ')');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// 收口:同槽冗余(带锚)兜底清理——留一条(优先认领过的那条),其余删。
|
|
127
|
+
const owned = snap.events.filter((e) => e.owned);
|
|
128
|
+
const bySlot = new Map();
|
|
129
|
+
for (const e of owned) {
|
|
130
|
+
const k = e.slotStart + '|' + e.slotEnd;
|
|
131
|
+
bySlot.set(k, [...(bySlot.get(k) ?? []), e]);
|
|
132
|
+
}
|
|
133
|
+
for (const [, group] of bySlot) {
|
|
134
|
+
if (group.length < 2)
|
|
135
|
+
continue;
|
|
136
|
+
counts.duplicates += group.length - 1;
|
|
137
|
+
const keeper = group.find((g) => snap.claimed.has(g.eventId)) ?? group[0];
|
|
138
|
+
const slot = cleanSlot(snap, {
|
|
139
|
+
date, timeStart: keeper.slotStart, timeEnd: keeper.slotEnd,
|
|
140
|
+
title: keeper.summary, notes: null, keepId: keeper.eventId,
|
|
141
|
+
});
|
|
142
|
+
counts.deleted += slot.deleted.length;
|
|
143
|
+
errors.push(...slot.errors);
|
|
144
|
+
}
|
|
145
|
+
const remote = counts.failed > 0 ? 'unavailable'
|
|
146
|
+
: counts.created > 0 ? 'created_feishu'
|
|
147
|
+
: counts.updated > 0 ? 'updated_feishu'
|
|
148
|
+
: counts.deleted > 0 ? 'deleted_feishu' : 'found_feishu';
|
|
149
|
+
const message = '已同步 ' + date + ':回填 ' + counts.backfilled + '/新增 ' + counts.created
|
|
150
|
+
+ '/更新 ' + counts.updated + '/清理 ' + counts.deleted + '/时段回写 ' + counts.timeSynced
|
|
151
|
+
+ (counts.pastSkipped ? '/过去日期跳过 ' + counts.pastSkipped : '')
|
|
152
|
+
+ (counts.duplicates ? '/同槽冗余 ' + counts.duplicates : '')
|
|
153
|
+
+ (errors.length ? '/错误 ' + errors.length : '');
|
|
154
|
+
return receiptResult(buildReceipt({
|
|
155
|
+
op: 'sync', message, local: 'updated', remote, remoteId: null, errors, notes, date, counts,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/plan/sync.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,sEAAsE;AACtE,oDAAoD;AACpD,iCAAiC;AACjC,+EAA+E;AAC/E,oDAAoD;AACpD,gDAAgD;AAChD,EAAE;AACF,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACjI,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAqC,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAO1H,+CAA+C;AAC/C,MAAM,UAAU,YAAY,CAAC,IAAoB,EAAE,MAAmB;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,SAAS;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,GAAG,GAAqB,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YACtB,+BAA+B;YAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,eAAe,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAClG,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAc;IACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;QACrC,OAAO,aAAa,CAAC,YAAY,CAAC;YAChC,EAAE,EAAE,MAAM;YACV,OAAO,EAAE,cAAc,GAAG,GAAG,GAAG,GAAG;YACnC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI;YACzD,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAoB,CAAC;IACzB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,aAAa,CAAC,YAAY,CAAC;YAChC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa;YAC5E,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAEhC,YAAY;IACZ,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU;QAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAElJ,iBAAiB;IACjB,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ;YAClD,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,eAAe;SAC5D,CAAC;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,MAAM,EAAE,CAAC;gBAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC,CAAC,uBAAuB;YACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnF,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,eAAe;YAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACvF,6BAA6B;QAC7B,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/E,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACtB,CAAC;YAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAAC,CAAC;IAC1F,CAAC;IAED,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE;YAC3B,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;YAC1D,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO;SAC3D,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;QAC9C,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB;YACrC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB;gBACrC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;IAC/D,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO;UAChF,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,UAAU;UAChF,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;UAC3D,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;UACvD,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,YAAY,CAAC;QAChC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;KAC3F,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type PlanOpCtx, type PlanOpResult } from './context.js';
|
|
2
|
+
/** `op=preview`:只校验不落盘(24h 覆盖 + 字段合法),不碰远端。 */
|
|
3
|
+
export declare function runPreview(ctx: PlanOpCtx): PlanOpResult;
|
|
4
|
+
export declare function runUpsert(ctx: PlanOpCtx): PlanOpResult;
|
|
5
|
+
//# sourceMappingURL=upsert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../src/plan/upsert.ts"],"names":[],"mappings":"AASA,OAAO,EAAiB,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAIhF,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAUvD;AAYD,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAyDtD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// 日程与计划·#17 商量计划(整日覆盖式写入)与它的预览档。
|
|
2
|
+
//
|
|
3
|
+
// 两种语义分得开(S-13):
|
|
4
|
+
// `op=upsert`=**覆盖**:整日先软删再整批落,本地以 (日期, 起, 止) 为身份;
|
|
5
|
+
// `op=ensure`=**缺则补**:命中即认,不改既有字段。
|
|
6
|
+
// 覆盖的那一侧还要把远端也覆盖掉:逐条对齐(建/认)+ 该日**带归属锚**却已无本地对应的远端对象删掉
|
|
7
|
+
// (S-12 的孤儿一侧;老实现把这一步留在 `diff_and_sync`,本实现随合成写一起做掉)。
|
|
8
|
+
import { upsertPlanEvents, setFeishuEventId } from '../fetch/index.js';
|
|
9
|
+
import { validateUpsertInput } from '../policy/index.js';
|
|
10
|
+
import { receiptResult } from './context.js';
|
|
11
|
+
import { buildReceipt, REMOTE_LABEL } from './receipt.js';
|
|
12
|
+
import { takeSnapshot, alignOne, orphansOf, removeRemote } from './remoteDay.js';
|
|
13
|
+
/** `op=preview`:只校验不落盘(24h 覆盖 + 字段合法),不碰远端。 */
|
|
14
|
+
export function runPreview(ctx) {
|
|
15
|
+
const { date, events } = validateUpsertInput(ctx.params);
|
|
16
|
+
return receiptResult(buildReceipt({
|
|
17
|
+
op: 'preview',
|
|
18
|
+
message: '预览通过:' + date + ' ' + events.length + ' 个事件 00:00~24:00 连续(确认后 op=upsert 落盘)',
|
|
19
|
+
local: 'preview',
|
|
20
|
+
remote: 'none',
|
|
21
|
+
remoteId: null,
|
|
22
|
+
date,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
/** 一整日里逐条动作合起来算哪一档:只要有一条没成,就是「远端没成」。 */
|
|
26
|
+
function dominantRemote(counts) {
|
|
27
|
+
if (counts.failed > 0)
|
|
28
|
+
return 'unavailable';
|
|
29
|
+
if (counts.created > 0)
|
|
30
|
+
return 'created_feishu';
|
|
31
|
+
if (counts.deleted > 0)
|
|
32
|
+
return 'deleted_feishu';
|
|
33
|
+
return 'found_feishu';
|
|
34
|
+
}
|
|
35
|
+
export function runUpsert(ctx) {
|
|
36
|
+
const { date, events } = validateUpsertInput(ctx.params);
|
|
37
|
+
const rows = upsertPlanEvents(ctx.handle, date, events);
|
|
38
|
+
const errors = [];
|
|
39
|
+
const notes = [];
|
|
40
|
+
const counts = { created: 0, found: 0, deleted: 0, failed: 0 };
|
|
41
|
+
let remote;
|
|
42
|
+
if (ctx.cli) {
|
|
43
|
+
let snap = null;
|
|
44
|
+
try {
|
|
45
|
+
snap = takeSnapshot(ctx.cli, date);
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
errors.push(e instanceof Error ? e.message : String(e));
|
|
49
|
+
}
|
|
50
|
+
if (snap) {
|
|
51
|
+
errors.push(...snap.pullErrors);
|
|
52
|
+
for (const row of rows) {
|
|
53
|
+
const out = alignOne(snap, {
|
|
54
|
+
date,
|
|
55
|
+
timeStart: row.time_start,
|
|
56
|
+
timeEnd: row.time_end,
|
|
57
|
+
title: row.title,
|
|
58
|
+
notes: row.notes,
|
|
59
|
+
remoteId: row.feishu_event_id,
|
|
60
|
+
});
|
|
61
|
+
errors.push(...out.errors);
|
|
62
|
+
notes.push(...out.notes);
|
|
63
|
+
if (out.remote === 'created_feishu')
|
|
64
|
+
counts.created++;
|
|
65
|
+
else if (out.remote === 'found_feishu')
|
|
66
|
+
counts.found++;
|
|
67
|
+
else
|
|
68
|
+
counts.failed++;
|
|
69
|
+
if (out.remoteId && out.remoteId !== row.feishu_event_id)
|
|
70
|
+
setFeishuEventId(ctx.handle, row.id, out.remoteId);
|
|
71
|
+
}
|
|
72
|
+
// 覆盖语义的第二半:本地这一日已没有的、带归属锚的远端对象,删掉。
|
|
73
|
+
for (const orphan of orphansOf(snap)) {
|
|
74
|
+
const r = removeRemote(snap, orphan.eventId);
|
|
75
|
+
if (r.ok)
|
|
76
|
+
counts.deleted++;
|
|
77
|
+
else {
|
|
78
|
+
counts.failed++;
|
|
79
|
+
errors.push('孤儿清理失败:' + orphan.eventId + '(' + r.error + ')');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
remote = dominantRemote(counts);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
remote = 'unavailable';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (ctx.remoteWhy) {
|
|
89
|
+
errors.push(ctx.remoteWhy);
|
|
90
|
+
remote = 'unavailable';
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
remote = 'skipped';
|
|
94
|
+
}
|
|
95
|
+
const message = '已落盘(覆盖):' + date + ' ' + rows.length + ' 个事件;远端新增 ' + counts.created
|
|
96
|
+
+ '/认出 ' + counts.found + '/清理 ' + counts.deleted + '(' + REMOTE_LABEL[remote] + ')';
|
|
97
|
+
return receiptResult(buildReceipt({
|
|
98
|
+
op: 'upsert', message, local: 'upserted', remote,
|
|
99
|
+
remoteId: null, errors, notes, date, counts: { ...counts, events: rows.length },
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=upsert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../src/plan/upsert.ts"],"names":[],"mappings":"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"}
|
package/dist/policy/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export type { Anomaly } from './category.js';
|
|
|
3
3
|
export { todayStr, relativeToDate, relativeToRange, recentNDays, RELATIVE_DATES, RELATIVE_RANGES, } from './routing.js';
|
|
4
4
|
export { DATE_RE, TIME_RE, MONTH_RE, normalizeDate, normalizeMonth, normalizeTime, toMinutes, resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, } from './record.js';
|
|
5
5
|
export type { AddInput, CompareKind } from './record.js';
|
|
6
|
-
export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateUpdateInput, parsePlanOp, parseRecordOp, } from './plan.js';
|
|
7
|
-
export type { PlanEventInput, PlanWriteOp, RecordWriteOp } from './plan.js';
|
|
6
|
+
export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateEnsureBatchInput, validateUpdateInput, parsePlanOp, parseRecordOp, parseFeishuMode, parsePlanView, PLAN_WRITE_OPS_OVERWRITE, PLAN_WRITE_OPS_FILL, } from './plan.js';
|
|
7
|
+
export type { PlanEventInput, EnsureBatchItem, PlanWriteOp, RecordWriteOp, PlanFeishuMode, PlanView } from './plan.js';
|
|
8
8
|
export { routeWakeword, WAKE_TABLE } from './wakewords.js';
|
|
9
9
|
export type { ScheduleKey, WakeRoute, WakeEntry } from './wakewords.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EACvF,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAC1D,wBAAwB,EAAE,mBAAmB,GAC9C,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/policy/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { LEVEL1_WHITELIST, DEFAULT_WHITELIST, parseCategory, normalizeCategory, listLevel1, listLevel2, getEmojiPrefix, l1Of, fmtDur, fmtDurShort, fmtPct, HEALTH_TARGETS, healthDimScore, computeHealthScore, detectAnomalies, } from './category.js';
|
|
2
2
|
export { todayStr, relativeToDate, relativeToRange, recentNDays, RELATIVE_DATES, RELATIVE_RANGES, } from './routing.js';
|
|
3
3
|
export { DATE_RE, TIME_RE, MONTH_RE, normalizeDate, normalizeMonth, normalizeTime, toMinutes, resolveDateParam, resolveRangeParam, validateAddInput, validateAmendInput, validateSummaryInput, validateCompareInput, } from './record.js';
|
|
4
|
-
export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateUpdateInput, parsePlanOp, parseRecordOp, } from './plan.js';
|
|
4
|
+
export { VALID_COMPLETIONS, validateEvent, assertCoverage24h, validateUpsertInput, validateEnsureInput, validateEnsureBatchInput, validateUpdateInput, parsePlanOp, parseRecordOp, parseFeishuMode, parsePlanView, PLAN_WRITE_OPS_OVERWRITE, PLAN_WRITE_OPS_FILL, } from './plan.js';
|
|
5
5
|
export { routeWakeword, WAKE_TABLE } from './wakewords.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/policy/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACzE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,GACpE,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,GACxF,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EACnF,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EACzE,oBAAoB,EAAE,oBAAoB,GAC3C,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EACnD,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EACvF,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAC1D,wBAAwB,EAAE,mBAAmB,GAC9C,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/policy/plan.d.ts
CHANGED
|
@@ -15,12 +15,27 @@ export declare function validateUpsertInput(params: Record<string, unknown>): {
|
|
|
15
15
|
export declare function validateEnsureInput(params: Record<string, unknown>): PlanEventInput & {
|
|
16
16
|
date: string;
|
|
17
17
|
};
|
|
18
|
+
export interface EnsureBatchItem extends PlanEventInput {
|
|
19
|
+
date: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function validateEnsureBatchInput(params: Record<string, unknown>): {
|
|
22
|
+
items: EnsureBatchItem[];
|
|
23
|
+
};
|
|
18
24
|
export declare function validateUpdateInput(params: Record<string, unknown>): {
|
|
19
25
|
id: number;
|
|
20
26
|
patch: Record<string, unknown>;
|
|
21
27
|
};
|
|
22
|
-
export type PlanWriteOp = 'preview' | 'upsert' | 'ensure' | 'update' | 'deactivate' | 'review' | 'sync';
|
|
28
|
+
export type PlanWriteOp = 'preview' | 'upsert' | 'ensure' | 'update' | 'deactivate' | 'review' | 'sync' | 'check';
|
|
23
29
|
export declare function parsePlanOp(params: Record<string, unknown>): PlanWriteOp;
|
|
30
|
+
/** 写命令的两档语义(S-13):`upsert`=整段覆盖,`ensure`=缺则补。 */
|
|
31
|
+
export declare const PLAN_WRITE_OPS_OVERWRITE: PlanWriteOp[];
|
|
32
|
+
export declare const PLAN_WRITE_OPS_FILL: PlanWriteOp[];
|
|
33
|
+
/** 远端开关(合成写的参数面):`ensure`(缺省)=把这条事实对齐到两侧;`skip`=这一趟只要本地。 */
|
|
34
|
+
export type PlanFeishuMode = 'ensure' | 'skip';
|
|
35
|
+
export declare function parseFeishuMode(params: Record<string, unknown>): PlanFeishuMode;
|
|
36
|
+
/** 日程查询的两种视图:`list`(缺省,全字段)与 `aggregate`(24h 聚合视图,丢 notes/同步态/ID)。 */
|
|
37
|
+
export type PlanView = 'list' | 'aggregate';
|
|
38
|
+
export declare function parsePlanView(params: Record<string, unknown>): PlanView;
|
|
24
39
|
export type RecordWriteOp = 'add' | 'amend' | 'summary';
|
|
25
40
|
export declare function parseRecordOp(params: Record<string, unknown>): RecordWriteOp;
|
|
26
41
|
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAuBrE;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAQ/G;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGtG;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAsCnH;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAuBrE;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAoBhE;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAQ/G;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGtG;AAKD,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CA0BtG;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAsCnH;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAElH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAOxE;AAED,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,EAAE,WAAW,EAAe,CAAC;AAClE,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAAe,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAO/E;AAED,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5C,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAOvE;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAM5E"}
|
package/dist/policy/plan.js
CHANGED
|
@@ -65,6 +65,35 @@ export function validateEnsureInput(params) {
|
|
|
65
65
|
const date = normalizeDate(params.date, 'date');
|
|
66
66
|
return { date, ...validateEvent(params, -1) };
|
|
67
67
|
}
|
|
68
|
+
export function validateEnsureBatchInput(params) {
|
|
69
|
+
const raw = params.dates;
|
|
70
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
71
|
+
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'ensure 批量须给非空 dates 数组(每条含 date/time_start/time_end/title)');
|
|
72
|
+
}
|
|
73
|
+
if (params.date !== undefined) {
|
|
74
|
+
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'date 与 dates 不可同给(单天走 date,多天走 dates[])');
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
items: raw.map((e, i) => {
|
|
78
|
+
try {
|
|
79
|
+
if (typeof e !== 'object' || e === null || Array.isArray(e)) {
|
|
80
|
+
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'dates[' + i + '] 须为对象');
|
|
81
|
+
}
|
|
82
|
+
const o = e;
|
|
83
|
+
const date = normalizeDate(o.date, 'dates[' + i + '].date');
|
|
84
|
+
return { date, ...validateEvent(o, i) };
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (err instanceof SchedulePolicyError) {
|
|
88
|
+
if (err.message.startsWith('dates[' + i + ']'))
|
|
89
|
+
throw err;
|
|
90
|
+
throw new SchedulePolicyError(err.code, 'dates[' + i + ']:' + err.message);
|
|
91
|
+
}
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
}),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
68
97
|
// #18 改计划:id + 至少一字段;completion 须 6 态之一。
|
|
69
98
|
export function validateUpdateInput(params) {
|
|
70
99
|
const id = params.id;
|
|
@@ -108,12 +137,33 @@ export function validateUpdateInput(params) {
|
|
|
108
137
|
}
|
|
109
138
|
export function parsePlanOp(params) {
|
|
110
139
|
const op = params.op === undefined ? 'preview' : params.op;
|
|
111
|
-
const ops = ['preview', 'upsert', 'ensure', 'update', 'deactivate', 'review', 'sync'];
|
|
140
|
+
const ops = ['preview', 'upsert', 'ensure', 'update', 'deactivate', 'review', 'sync', 'check'];
|
|
112
141
|
if (typeof op !== 'string' || !ops.includes(op)) {
|
|
113
142
|
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'op 非法(期望 ' + ops.join('/') + '):' + JSON.stringify(op));
|
|
114
143
|
}
|
|
115
144
|
return op;
|
|
116
145
|
}
|
|
146
|
+
/** 写命令的两档语义(S-13):`upsert`=整段覆盖,`ensure`=缺则补。 */
|
|
147
|
+
export const PLAN_WRITE_OPS_OVERWRITE = ['upsert'];
|
|
148
|
+
export const PLAN_WRITE_OPS_FILL = ['ensure'];
|
|
149
|
+
export function parseFeishuMode(params) {
|
|
150
|
+
const v = params.feishu;
|
|
151
|
+
if (v === undefined || v === null)
|
|
152
|
+
return 'ensure';
|
|
153
|
+
if (v !== 'ensure' && v !== 'skip') {
|
|
154
|
+
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'feishu 非法(期望 ensure/skip):' + JSON.stringify(v));
|
|
155
|
+
}
|
|
156
|
+
return v;
|
|
157
|
+
}
|
|
158
|
+
export function parsePlanView(params) {
|
|
159
|
+
const v = params.view;
|
|
160
|
+
if (v === undefined || v === null)
|
|
161
|
+
return 'list';
|
|
162
|
+
if (v !== 'list' && v !== 'aggregate') {
|
|
163
|
+
throw new SchedulePolicyError('POLICY_BAD_INPUT', 'view 非法(期望 list/aggregate):' + JSON.stringify(v));
|
|
164
|
+
}
|
|
165
|
+
return v;
|
|
166
|
+
}
|
|
117
167
|
export function parseRecordOp(params) {
|
|
118
168
|
const op = params.op === undefined ? 'add' : params.op;
|
|
119
169
|
if (op !== 'add' && op !== 'amend' && op !== 'summary') {
|
package/dist/policy/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/policy/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/policy/wakewords.js
CHANGED
|
@@ -37,9 +37,9 @@ export const WAKE_TABLE = [
|
|
|
37
37
|
{ phrase: '跨月对比', key: 'schedule.record.compare', preset: { kind: 'months' } },
|
|
38
38
|
{ phrase: '类别深挖', key: 'schedule.record.compare', preset: { kind: 'category' } },
|
|
39
39
|
{ phrase: '异常检测', key: 'schedule.record.compare', preset: { kind: 'anomaly' } },
|
|
40
|
-
// plan.today(#12/#15/#16:查日程 + 概览 +
|
|
41
|
-
{ phrase: '查多日计划', key: 'schedule.plan.today' },
|
|
42
|
-
{ phrase: '24h 概览', key: 'schedule.plan.today' },
|
|
40
|
+
// plan.today(#12/#15/#16:查日程 + 概览 + 多日)。后两条走 24h 聚合视图(分桶),#12 走全字段 list。
|
|
41
|
+
{ phrase: '查多日计划', key: 'schedule.plan.today', preset: { view: 'aggregate' }, needs: ['dates'] },
|
|
42
|
+
{ phrase: '24h 概览', key: 'schedule.plan.today', preset: { view: 'aggregate' } },
|
|
43
43
|
{ phrase: '查日程', key: 'schedule.plan.today' },
|
|
44
44
|
{ phrase: '看日程', key: 'schedule.plan.today' },
|
|
45
45
|
// plan.write(#13/#14/#17/#18/#19/#20/#21 + 复盘 4 粒度)。
|
|
@@ -48,7 +48,7 @@ export const WAKE_TABLE = [
|
|
|
48
48
|
{ phrase: '规划明天', key: 'schedule.plan.write', preset: { op: 'preview' } },
|
|
49
49
|
{ phrase: '规划一天', key: 'schedule.plan.write', preset: { op: 'preview' } },
|
|
50
50
|
{ phrase: '讨论计划', key: 'schedule.plan.write', preset: { op: 'preview' } },
|
|
51
|
-
{ phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' } },
|
|
51
|
+
{ phrase: '补计划', key: 'schedule.plan.write', preset: { op: 'ensure' }, needs: ['date', 'time_start', 'time_end', 'title'] },
|
|
52
52
|
{ phrase: '改计划', key: 'schedule.plan.write', preset: { op: 'update' }, needs: ['id'] },
|
|
53
53
|
{ phrase: '删计划', key: 'schedule.plan.write', preset: { op: 'deactivate' }, needs: ['id'] },
|
|
54
54
|
{ phrase: '复盘今日', key: 'schedule.plan.write', preset: { op: 'review', granularity: 'day' } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wakewords.js","sourceRoot":"","sources":["../../src/policy/wakewords.ts"],"names":[],"mappings":"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"}
|
package/dist/render/html.d.ts
CHANGED
|
@@ -4,10 +4,4 @@ export declare function escapeHtml(s: string): string;
|
|
|
4
4
|
export declare function renderEnvelopeHtml(env: Envelope): string;
|
|
5
5
|
export declare function estimateBytes(html: string): number;
|
|
6
6
|
export declare function assertHtmlSize(html: string, max?: number): void;
|
|
7
|
-
export declare const SHARED_CSS_MARKER = "<!--SHARED-CSS-->";
|
|
8
|
-
export declare const SHARED_HELPERS_MARKER = "<!--SHARED-HELPERS-->";
|
|
9
|
-
export declare const CONTENT_MARKER = "<!--CONTENT-->";
|
|
10
|
-
export declare const SHARED_CSS = ".page{font-family:system-ui,sans-serif;max-width:720px;margin:0 auto;padding:12px}.item{border:1px solid #ddd;border-radius:8px;padding:8px;margin:8px 0}.item-head{display:flex;gap:8px;align-items:center}.badge{background:#eee;border-radius:4px;padding:0 6px}.receipt{background:#f0fff0;border:1px solid #090;border-radius:8px;padding:12px}.stat{display:flex;gap:8px}.analysis{white-space:pre-wrap}.hm-empty{color:#888}";
|
|
11
|
-
export declare const SHARED_HELPERS = "<script>function copyItem(id){var e=document.getElementById(id);if(e&&navigator.clipboard){navigator.clipboard.writeText(e.innerText);}}</script>";
|
|
12
|
-
export declare function fillTemplate(template: string, contentHtml: string): string;
|
|
13
7
|
//# sourceMappingURL=html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAexD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA4C;AAG/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAA0B,GAAG,IAAI,CAIhF
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAexD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA4C;AAG/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAA0B,GAAG,IAAI,CAIhF"}
|
package/dist/render/html.js
CHANGED
|
@@ -48,21 +48,4 @@ export function assertHtmlSize(html, max = SCHEDULE_HTML_MAX_BYTES) {
|
|
|
48
48
|
throw new ScheduleRenderError('SCHEDULE_HTML_TOO_LARGE', 'HTML 超体积:' + estimateBytes(html) + ' > ' + max);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
// 共享标记填充(老家离线注入壳对应):CSS/HELPERS/CONTENT 三标记各恰出现 1 次,否则 throw。
|
|
52
|
-
export const SHARED_CSS_MARKER = '<!--SHARED-CSS-->';
|
|
53
|
-
export const SHARED_HELPERS_MARKER = '<!--SHARED-HELPERS-->';
|
|
54
|
-
export const CONTENT_MARKER = '<!--CONTENT-->';
|
|
55
|
-
export const SHARED_CSS = '.page{font-family:system-ui,sans-serif;max-width:720px;margin:0 auto;padding:12px}.item{border:1px solid #ddd;border-radius:8px;padding:8px;margin:8px 0}.item-head{display:flex;gap:8px;align-items:center}.badge{background:#eee;border-radius:4px;padding:0 6px}.receipt{background:#f0fff0;border:1px solid #090;border-radius:8px;padding:12px}.stat{display:flex;gap:8px}.analysis{white-space:pre-wrap}.hm-empty{color:#888}';
|
|
56
|
-
export const SHARED_HELPERS = '<script>function copyItem(id){var e=document.getElementById(id);if(e&&navigator.clipboard){navigator.clipboard.writeText(e.innerText);}}</script>';
|
|
57
|
-
export function fillTemplate(template, contentHtml) {
|
|
58
|
-
for (const m of [SHARED_CSS_MARKER, SHARED_HELPERS_MARKER, CONTENT_MARKER]) {
|
|
59
|
-
if (template.split(m).length - 1 !== 1) {
|
|
60
|
-
throw new ScheduleRenderError('SCHEDULE_MARKER_INVALID', '标记须恰出现 1 次:' + m);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return template
|
|
64
|
-
.split(SHARED_CSS_MARKER).join('<style>' + SHARED_CSS + '</style>')
|
|
65
|
-
.split(SHARED_HELPERS_MARKER).join(SHARED_HELPERS)
|
|
66
|
-
.split(CONTENT_MARKER).join(contentHtml);
|
|
67
|
-
}
|
|
68
51
|
//# sourceMappingURL=html.js.map
|
package/dist/render/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
|