skill-schedule 0.3.3 → 0.3.13
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 +12 -3
- package/dist/.gen-inputs.json +4 -4
- package/dist/admin/adminDocs.d.ts +57 -0
- package/dist/admin/adminDocs.d.ts.map +1 -0
- package/dist/admin/adminDocs.js +190 -0
- package/dist/admin/adminDocs.js.map +1 -0
- package/dist/admin/adminParts.d.ts +37 -0
- package/dist/admin/adminParts.d.ts.map +1 -0
- package/dist/admin/adminParts.js +83 -0
- package/dist/admin/adminParts.js.map +1 -0
- package/dist/admin/handlers.d.ts.map +1 -1
- package/dist/admin/handlers.js +196 -6
- package/dist/admin/handlers.js.map +1 -1
- package/dist/admin/routes.d.ts +10 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +2 -0
- package/dist/admin/routes.js.map +1 -1
- package/dist/analyze/analyzeDocs.d.ts +51 -0
- package/dist/analyze/analyzeDocs.d.ts.map +1 -0
- package/dist/analyze/analyzeDocs.js +442 -0
- package/dist/analyze/analyzeDocs.js.map +1 -0
- package/dist/analyze/analyzeParts.d.ts +53 -0
- package/dist/analyze/analyzeParts.d.ts.map +1 -0
- package/dist/analyze/analyzeParts.js +229 -0
- package/dist/analyze/analyzeParts.js.map +1 -0
- package/dist/analyze/handlers.d.ts.map +1 -1
- package/dist/analyze/handlers.js +41 -4
- package/dist/analyze/handlers.js.map +1 -1
- package/dist/cli/cmd_read.js +8 -2
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +0 -9
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +20 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/fetch/feishu.d.ts +6 -0
- package/dist/fetch/feishu.d.ts.map +1 -1
- package/dist/fetch/feishu.js +18 -7
- package/dist/fetch/feishu.js.map +1 -1
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +1 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/health.d.ts +11 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +48 -22
- package/dist/health.js.map +1 -1
- package/dist/help/index.d.ts +1 -0
- package/dist/help/index.d.ts.map +1 -1
- package/dist/help/index.js +3 -0
- package/dist/help/index.js.map +1 -1
- package/dist/plan/discussDocs.d.ts +8 -0
- package/dist/plan/discussDocs.d.ts.map +1 -0
- package/dist/plan/discussDocs.js +321 -0
- package/dist/plan/discussDocs.js.map +1 -0
- package/dist/plan/feishuDocs.d.ts +19 -0
- package/dist/plan/feishuDocs.d.ts.map +1 -0
- package/dist/plan/feishuDocs.js +257 -0
- package/dist/plan/feishuDocs.js.map +1 -0
- package/dist/plan/handlers.d.ts.map +1 -1
- package/dist/plan/handlers.js +107 -3
- package/dist/plan/handlers.js.map +1 -1
- package/dist/plan/index.d.ts +2 -0
- package/dist/plan/index.d.ts.map +1 -1
- package/dist/plan/index.js +16 -9
- package/dist/plan/index.js.map +1 -1
- package/dist/plan/iso.d.ts +2 -0
- package/dist/plan/iso.d.ts.map +1 -1
- package/dist/plan/iso.js +6 -2
- package/dist/plan/iso.js.map +1 -1
- package/dist/plan/planDocs.d.ts +47 -0
- package/dist/plan/planDocs.d.ts.map +1 -0
- package/dist/plan/planDocs.js +159 -0
- package/dist/plan/planDocs.js.map +1 -0
- package/dist/plan/planParts.d.ts +38 -0
- package/dist/plan/planParts.d.ts.map +1 -0
- package/dist/plan/planParts.js +96 -0
- package/dist/plan/planParts.js.map +1 -0
- package/dist/plan/probe.d.ts +28 -0
- package/dist/plan/probe.d.ts.map +1 -0
- package/dist/plan/probe.js +114 -0
- package/dist/plan/probe.js.map +1 -0
- package/dist/plan/receipt.d.ts +12 -0
- package/dist/plan/receipt.d.ts.map +1 -1
- package/dist/plan/receipt.js +17 -0
- package/dist/plan/receipt.js.map +1 -1
- package/dist/plan/receiptDocs.d.ts +26 -0
- package/dist/plan/receiptDocs.d.ts.map +1 -0
- package/dist/plan/receiptDocs.js +341 -0
- package/dist/plan/receiptDocs.js.map +1 -0
- package/dist/plan/replayDocs.d.ts +165 -0
- package/dist/plan/replayDocs.d.ts.map +1 -0
- package/dist/plan/replayDocs.js +226 -0
- package/dist/plan/replayDocs.js.map +1 -0
- package/dist/plan/replaySections.d.ts +5 -0
- package/dist/plan/replaySections.d.ts.map +1 -0
- package/dist/plan/replaySections.js +471 -0
- package/dist/plan/replaySections.js.map +1 -0
- package/dist/plan/reviewDocs.d.ts +4 -0
- package/dist/plan/reviewDocs.d.ts.map +1 -0
- package/dist/plan/reviewDocs.js +130 -0
- package/dist/plan/reviewDocs.js.map +1 -0
- package/dist/plan/sync.d.ts.map +1 -1
- package/dist/plan/sync.js +5 -0
- package/dist/plan/sync.js.map +1 -1
- package/dist/policy/index.d.ts +1 -1
- 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 +8 -0
- package/dist/policy/plan.d.ts.map +1 -1
- package/dist/policy/plan.js +20 -0
- package/dist/policy/plan.js.map +1 -1
- package/dist/query/handlers.d.ts +3 -0
- package/dist/query/handlers.d.ts.map +1 -1
- package/dist/query/handlers.js +86 -12
- package/dist/query/handlers.js.map +1 -1
- package/dist/query/queryDocs.d.ts +64 -0
- package/dist/query/queryDocs.d.ts.map +1 -0
- package/dist/query/queryDocs.js +554 -0
- package/dist/query/queryDocs.js.map +1 -0
- package/dist/query/routes.d.ts +11 -1
- package/dist/query/routes.d.ts.map +1 -1
- package/dist/query/routes.js +5 -1
- package/dist/query/routes.js.map +1 -1
- package/dist/render/copyArea.d.ts +61 -0
- package/dist/render/copyArea.d.ts.map +1 -0
- package/dist/render/copyArea.js +80 -0
- package/dist/render/copyArea.js.map +1 -0
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +3 -1
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +3 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +2 -0
- package/dist/render/index.js.map +1 -1
- package/dist/shared/dayPage.d.ts +67 -0
- package/dist/shared/dayPage.d.ts.map +1 -0
- package/dist/shared/dayPage.js +92 -0
- package/dist/shared/dayPage.js.map +1 -0
- package/dist/shared/detailPage.d.ts +55 -0
- package/dist/shared/detailPage.d.ts.map +1 -0
- package/dist/shared/detailPage.js +65 -0
- package/dist/shared/detailPage.js.map +1 -0
- package/dist/shared/docPage.d.ts +22 -0
- package/dist/shared/docPage.d.ts.map +1 -0
- package/dist/shared/docPage.js +52 -0
- package/dist/shared/docPage.js.map +1 -0
- package/dist/shared/overviewPage.d.ts +52 -0
- package/dist/shared/overviewPage.d.ts.map +1 -0
- package/dist/shared/overviewPage.js +65 -0
- package/dist/shared/overviewPage.js.map +1 -0
- package/dist/shared/pageNav.d.ts +24 -0
- package/dist/shared/pageNav.d.ts.map +1 -0
- package/dist/shared/pageNav.js +70 -0
- package/dist/shared/pageNav.js.map +1 -0
- package/dist/shared/pageParts.d.ts +45 -0
- package/dist/shared/pageParts.d.ts.map +1 -0
- package/dist/shared/pageParts.js +154 -0
- package/dist/shared/pageParts.js.map +1 -0
- package/dist/shared/planPage.d.ts +49 -0
- package/dist/shared/planPage.d.ts.map +1 -0
- package/dist/shared/planPage.js +48 -0
- package/dist/shared/planPage.js.map +1 -0
- package/dist/shared/rangePage.d.ts +44 -0
- package/dist/shared/rangePage.d.ts.map +1 -0
- package/dist/shared/rangePage.js +50 -0
- package/dist/shared/rangePage.js.map +1 -0
- package/dist/shared/weekPage.d.ts +36 -0
- package/dist/shared/weekPage.d.ts.map +1 -0
- package/dist/shared/weekPage.js +42 -0
- package/dist/shared/weekPage.js.map +1 -0
- package/dist/triggers/routes.generated.d.ts +23 -1
- package/dist/triggers/routes.generated.d.ts.map +1 -1
- package/dist/triggers/routes.generated.js +4 -1
- package/dist/triggers/routes.generated.js.map +1 -1
- package/dist/write/handlers.d.ts.map +1 -1
- package/dist/write/handlers.js +101 -5
- package/dist/write/handlers.js.map +1 -1
- package/dist/write/writeDocs.d.ts +27 -0
- package/dist/write/writeDocs.d.ts.map +1 -0
- package/dist/write/writeDocs.js +423 -0
- package/dist/write/writeDocs.js.map +1 -0
- package/dist/write/writeParts.d.ts +54 -0
- package/dist/write/writeParts.d.ts.map +1 -0
- package/dist/write/writeParts.js +117 -0
- package/dist/write/writeParts.js.map +1 -0
- package/package.json +3 -3
package/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-schedule
|
|
3
|
-
description: "「作息管家HELP」/「作息管家 HELP」→schedule.help.lookup 缺省即落一份能打开的 HELP 文件(5 类别/34 唤醒词/85 场景,走共享 help 模板);唯一出口 schedule-cmd-read。触发词:作息管家HELP、作息管家help、作息管家 HELP
|
|
3
|
+
description: "「作息管家HELP」/「作息管家 HELP」→schedule.help.lookup 缺省即落一份能打开的 HELP 文件(5 类别/34 唤醒词/85 场景,走共享 help 模板);唯一出口 schedule-cmd-read。触发词:作息管家HELP、作息管家help、作息管家 HELP、作息管家帮助、作息管家能做什么、作息管家使用说明、今天总结、今日作息、今日总结、今天作息、查作息时间轴、查作息状态、初始化数据库、首次使用、查作息、汇总作息、查作息范围、查作息游标、周视图、查作息详情、按ID查记录、按 ID 查记录、补一条作息、录作息、修正作息、改作息、这条记错了、写作息摘要、记作息、对比两个月、月份对比、跨月对比、类别深挖、异常检测、查多日计划、24h 概览、查日程、看日程、商量计划、一起规划、规划明天、规划一天、讨论计划、补计划、改计划、删计划、复盘今日、复盘本周、复盘本月、复盘区间、日程管家同步、飞书探测、复盘"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 作息管家(schedule)SKILL
|
|
@@ -46,6 +46,12 @@ schedule-cmd-read schedule.record.write --params '{"op":"add","date":"2026-09-06
|
|
|
46
46
|
- 单天 `op=ensure` 按 `date+time_start+time_end` 三元组幂等(`title` 只展示);多天批量把每天的对象装进 `dates[]`,逐天走同一条单天合成写(本地幂等+远端查一趟再判),回执 `items[]` 逐天分字段、失败逐条前缀日期点名且退出码非 0。`op=sync` 整天口径不动。
|
|
47
47
|
- 照抄即跑(2 天示例;7 天同形,只是数组更长):`schedule-cmd-read schedule.plan.write --params '{"op":"ensure","dates":[{"date":"2026-09-21","time_start":"09:00","time_end":"10:00","title":"晨会"},{"date":"2026-09-22","time_start":"09:00","time_end":"10:00","title":"晨会"}]}'`
|
|
48
48
|
|
|
49
|
+
## 批量导入作息(记作息 · `records[]`,#783)
|
|
50
|
+
|
|
51
|
+
- 一条一条记=`op=add` 走多遍;一次导入多条=**同一条命令**带 `records[]`(每条自带 `date`/`time_start`/`time_end`/`activity`/`category`):逐条走同一套校验与写库函数,**单条不过不打断其余**;回执给 `total`/`success`/`failed` 三个读数 + `items[]` 逐条分字段,有一条没通过即退出码非 0(合成写没达成,页照出)。
|
|
52
|
+
- 产物=一份「批量导入回执」整页(逐条结果 + 汇总),地址读回执的 `delivery.path`。
|
|
53
|
+
- 照抄即跑(2 条示例):`schedule-cmd-read schedule.record.write --params '{"op":"add","records":[{"date":"2026-09-22","time_start":"09:00","time_end":"10:00","activity":"写代码","category":"工作.开发"},{"date":"2026-09-22","time_start":"10:00","time_end":"10:30","activity":"散步","category":"调整.散步"}]}'`
|
|
54
|
+
|
|
49
55
|
## 联动速查(构建期注入,勿手改)
|
|
50
56
|
|
|
51
57
|
<!-- HELP-AUTO-START -->
|
|
@@ -61,7 +67,7 @@ schedule-cmd-read schedule.record.write --params '{"op":"add","date":"2026-09-06
|
|
|
61
67
|
| 今天作息 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
62
68
|
| 查作息时间轴 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
63
69
|
| 查作息状态 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
64
|
-
| 初始化数据库 | schedule.
|
|
70
|
+
| 初始化数据库 | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup --params '{"view":"init"}'` |
|
|
65
71
|
| 查作息 | schedule.record.today | list | `schedule-cmd-read schedule.record.today` |
|
|
66
72
|
| 汇总作息 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"start":"2026-09-01","end":"2026-09-01"}'` |
|
|
67
73
|
| 查作息范围 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"start":"2026-09-01","end":"2026-09-01"}'` |
|
|
@@ -99,6 +105,9 @@ schedule-cmd-read schedule.record.write --params '{"op":"add","date":"2026-09-06
|
|
|
99
105
|
| 日程管家同步 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"sync"}'` |
|
|
100
106
|
| 飞书探测 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"sync","dryRun":true}'` |
|
|
101
107
|
| 复盘 | schedule.plan.write | receipt | `schedule-cmd-read schedule.plan.write --params '{"op":"review"}'` |
|
|
108
|
+
| 周视图 | schedule.record.range | stat | `schedule-cmd-read schedule.record.range --params '{"view":"week"}'` |
|
|
109
|
+
| 按 ID 查记录 | schedule.record.detail | detail | `schedule-cmd-read schedule.record.detail --params '{"id":1}'` |
|
|
110
|
+
| 首次使用 | schedule.help.lookup | list | `schedule-cmd-read schedule.help.lookup --params '{"view":"firstUse"}'` |
|
|
102
111
|
|
|
103
112
|
相关场景:schedule.help.lookup、schedule.plan.today、schedule.plan.write、schedule.record.compare、schedule.record.detail、schedule.record.range、schedule.record.today、schedule.record.write(8 联动,key 字符串后续票落表时冻结)。
|
|
104
113
|
<!-- HELP-AUTO-END -->
|
|
@@ -110,7 +119,7 @@ schedule-cmd-read schedule.record.write --params '{"op":"add","date":"2026-09-06
|
|
|
110
119
|
- **落点**:页面落**产物根** `<库目录>/<产物目录>`;`作息管家HELP` 落它的 `help` 子目录。`<库目录>`=配置文件 `~/.ilife/schedule.yaml` 的 `db.dir`(空串=数据目录 `~/.ilife/data/`);`<产物目录>`=同文件的 `html.dir`(默认 `schedule_html`,段间用 `/` 或 `\` 分隔),HELP 那一支=`html.helpDir`(默认 `help`)。
|
|
111
120
|
- **命名**:`〈主体〉_<YYYYMMDD_HHMMSS>[_N].html`。主体=`作息管家_〈页名〉`,页名就是该命令的标题(今日作息/汇总作息/作息详情/作息对比/查日程/写计划/记作息);HELP 的主体恒为 `作息管家_HELP`(老名字逐字不变;5 类别/34 唤醒词/85 场景,走共享 help 模板)。**同名不覆盖**:同一秒落第二份时递补 `_2`、`_3`……任何时候都不覆盖已有产物。
|
|
112
121
|
- **产物是整页**:`<!DOCTYPE html>` 起、`</html>` 收;7 个命令页里放真内容(`<section data-skill="schedule"…`),`作息管家HELP` 是完整 HELP 壳页(载荷在 `<script id="help-data">`)。
|
|
113
|
-
- **要现找才加参数**:`--params '{"q":"查作息"}'` 回命中条目(**按定义不落盘**:这一支顶层没有 `delivery`;`q` 留空=走上面的文件交付那一支)。全量速查表读上「联动速查」块(
|
|
122
|
+
- **要现找才加参数**:`--params '{"q":"查作息"}'` 回命中条目(**按定义不落盘**:这一支顶层没有 `delivery`;`q` 留空=走上面的文件交付那一支)。全量速查表读上「联动速查」块(49 条路由词,构建期注入,与 `q` 同一张表)。
|
|
114
123
|
- **`--html <路径>`=显式落点**:逐字使用、覆盖写、缺父目录自动建(不参与同秒 `_N` 递补)。8 个 key 都认它;`q` 支带上它写的是该键的分节页。
|
|
115
124
|
- **反复读不再涨目录(#245)**:同一主体**一天内只留一份**——24 小时内再读就**复用已有那份**(不新建、不改写;回执给的就是它)。要别的窗口给 `--params '{"reuseHours":3}'`(小时);要**每次都要一份最新的**给 `{"reuseHours":0}`。窗口内若已有一份、而你刚改过 HELP 内容,那份旧产物**不会被自动刷新**(窗口语义如此)——真要新的就带 `reuseHours:0`。
|
|
116
125
|
- **看帮助不开库**:`作息管家HELP` 在开库之前分派,跑完不建 `schedule_data.db`(库还没建出来时也看得到帮助);DB 文件已存在时,页首的首次使用横幅隐藏(判定只看文件在不在,不开库)。
|
package/dist/.gen-inputs.json
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"dist": "c7b0133b7d3464ce8e27769d7f29a03f9c6c6233d96009841818354fc32c51f6"
|
|
7
7
|
},
|
|
8
8
|
"packages\\skill-schedule\\src\\admin\\routes.ts": {
|
|
9
|
-
"src": "
|
|
10
|
-
"dist": "
|
|
9
|
+
"src": "b4851dd6cb70586c81bdf7926e19d6ad7a8d763b57493b265a685fbe477740dd",
|
|
10
|
+
"dist": "f3a3187cda22fd19cfa5ea992d5e03234790317ece24983f5dcf53b07d0f8eca"
|
|
11
11
|
},
|
|
12
12
|
"packages\\skill-schedule\\src\\analyze\\commands.ts": {
|
|
13
13
|
"src": "fa2821f39c95c7121b4797e913d591f004ddaffa3d78528ba7fdc032f7052f4e",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"dist": "d2fc80595fdf065ddc955332d185aefb791dabbb8ab95ad4fd9f821cdb952981"
|
|
31
31
|
},
|
|
32
32
|
"packages\\skill-schedule\\src\\query\\routes.ts": {
|
|
33
|
-
"src": "
|
|
34
|
-
"dist": "
|
|
33
|
+
"src": "7de15e83cbf0e1f76b99167741cfcb6d3ba620032bfbabf414268a1ec1809b90",
|
|
34
|
+
"dist": "385d824b91a54145d6e0f519588079fe70ec72fdd2fa6611807c00e69b766a59"
|
|
35
35
|
},
|
|
36
36
|
"packages\\skill-schedule\\src\\write\\commands.ts": {
|
|
37
37
|
"src": "7a283c8056df789e938609979636ea7ee6a89b5cd8ab48aac1e3c51d8bc77512",
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** 步骤状态(三态,说人话)。 */
|
|
2
|
+
export type AdminStepStatus = 'ok' | 'todo' | 'do';
|
|
3
|
+
/** 落点(只算好的绝对路径,调用方给)。 */
|
|
4
|
+
export interface AdminPaths {
|
|
5
|
+
readonly dbDir: string;
|
|
6
|
+
readonly dbFile: string;
|
|
7
|
+
readonly pagesRoot: string;
|
|
8
|
+
readonly helpDir: string;
|
|
9
|
+
}
|
|
10
|
+
/** 库内读数(读不到的那一格给 null,页上印横线,不断整页)。 */
|
|
11
|
+
export interface AdminCounts {
|
|
12
|
+
readonly records: number | null;
|
|
13
|
+
readonly days: number | null;
|
|
14
|
+
readonly plans: number | null;
|
|
15
|
+
readonly summaries: number | null;
|
|
16
|
+
readonly firstDate: string | null;
|
|
17
|
+
readonly lastDate: string | null;
|
|
18
|
+
}
|
|
19
|
+
/** 初始化回执的输入(调用方摆好,本件只管画)。 */
|
|
20
|
+
export interface InitReceiptInput {
|
|
21
|
+
readonly created: boolean;
|
|
22
|
+
readonly paths: AdminPaths;
|
|
23
|
+
readonly counts: AdminCounts;
|
|
24
|
+
}
|
|
25
|
+
/** 初始化回执:本次新建还是沿用已有 + 三张表 + 库路径 + 下一步。 */
|
|
26
|
+
export declare function renderInitReceiptPage(input: InitReceiptInput): string;
|
|
27
|
+
/** 向导的一步(调用方排好 6 步,含状态与一句话说明)。 */
|
|
28
|
+
export interface FirstUseStep {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly status: AdminStepStatus;
|
|
31
|
+
readonly statusText: string;
|
|
32
|
+
readonly desc: string;
|
|
33
|
+
}
|
|
34
|
+
/** 向导的一条待办(标题 + 怎么做)。 */
|
|
35
|
+
export interface FirstUseTodo {
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly steps: readonly string[];
|
|
38
|
+
}
|
|
39
|
+
/** 飞书强引导位(结论只此一处:三道门全过就随时可跑,否则先跳过并醒目标注)。 */
|
|
40
|
+
export interface FirstUseFeishu {
|
|
41
|
+
readonly note: string;
|
|
42
|
+
readonly unavailable: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** 首次使用向导的输入(调用方摆好 6 步与报告三件套)。 */
|
|
45
|
+
export interface FirstUseInput {
|
|
46
|
+
readonly created: boolean;
|
|
47
|
+
readonly paths: AdminPaths;
|
|
48
|
+
readonly counts: AdminCounts;
|
|
49
|
+
readonly steps: readonly FirstUseStep[];
|
|
50
|
+
readonly todos: readonly FirstUseTodo[];
|
|
51
|
+
readonly verify: readonly string[];
|
|
52
|
+
readonly prompt: string;
|
|
53
|
+
readonly feishu: FirstUseFeishu;
|
|
54
|
+
}
|
|
55
|
+
/** 首次使用向导:老侧 6 步 + 飞书强引导 + 初始化报告 + 完成。 */
|
|
56
|
+
export declare function renderFirstUsePage(input: FirstUseInput): string;
|
|
57
|
+
//# sourceMappingURL=adminDocs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminDocs.d.ts","sourceRoot":"","sources":["../../src/admin/adminDocs.ts"],"names":[],"mappings":"AAwDA,oBAAoB;AACpB,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;AAEnD,yBAAyB;AACzB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAID,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,0CAA0C;AAC1C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA+DrE;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA0E/D"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/** #790 · 「辅助与管理」域的**页数据与页装配**(口径层):两张页各自要什么。
|
|
2
|
+
*
|
|
3
|
+
* 为什么口径住这里、不住共用位:共用位不许出现任何一个能力的名字,而「初始化回执报哪三张表、
|
|
4
|
+
* 向导分哪六步、飞书强引导说什么」全是**本域的口径**——摆好再交给 `src/shared/` 的整页装配与
|
|
5
|
+
* 本域的族级件(`./adminParts.ts`)。
|
|
6
|
+
*
|
|
7
|
+
* 两张页(清单 admin 域 → 哪一句唤醒词):
|
|
8
|
+
* · **初始化回执**(老侧无家族:建表无产物,清单 `family_null_reason` 原文「建表无产物」)
|
|
9
|
+
* ←「初始化数据库」(`view=init` 预设):本次新建还是沿用已有 + 三张表行数 + 库路径 + 下一步;
|
|
10
|
+
* · **首次使用向导**(老侧 setup 首次使用工作流,不计 18 家族)←「首次使用」(`view=firstUse`
|
|
11
|
+
* 预设):老侧 6 步(环境检测 → 路径确认 → 建库 → 状态确认 → 初始化报告 → 完成)+
|
|
12
|
+
* 飞书强引导 + 初始化报告(`items`/`todos`/`verify`,对标备忘录 init-report)+ 完成。
|
|
13
|
+
*
|
|
14
|
+
* **载荷即页面**:本票只把「真页 HTML」交回出口,`data` 载荷只装机器读的读数
|
|
15
|
+
* (`mode`/`created`/计数),页是给人读的那一份。
|
|
16
|
+
*
|
|
17
|
+
* **页上文案纪律**:不出现命令键、库列名、参数名、英文裸词;并列关系一律用版面表达
|
|
18
|
+
* (卡片格/对照行/框),不拿 `、`/`·`/`|`/`;`/`~` 这些符号顶替设计——范围一律写「至」,
|
|
19
|
+
* 不用波浪号。正文位不出现内部命令名(照 #895 推翻 #788 旧判语:上屏一律写「飞书命令行」;老侧 HELP 与本仓
|
|
20
|
+
* SKILL.md 里命令名照旧,载荷位原文不动);页上其余文案零命令键、零库列名、零参数名、零票号。
|
|
21
|
+
*
|
|
22
|
+
* #891 补的**页内定位**(不动件序列,只给已有的段名加锚点与页首目录):判据(小节数 ≥ 3 出目录)
|
|
23
|
+
* 与装配的唯一一处定义地在 `shared/pageNav.ts` 的 `SECTION_TOC_MIN`。两张页都恒 ≥4 小节(长页):
|
|
24
|
+
* 初始化回执 4 颗(`这一趟的读数`/`三张表`/`下一步`/`复制初始化结果`)、向导 7 颗。
|
|
25
|
+
*/
|
|
26
|
+
import { renderCaliberLine, renderConclusionBar, renderDataTable, renderKpiGrid, renderProseBlock, } from 'base-paint/blocks';
|
|
27
|
+
import { renderActionBar } from 'base-paint';
|
|
28
|
+
import { scheduleCopyArea, scheduleCopyLog, scheduleNowStamp } from '../render/copyArea.js';
|
|
29
|
+
import { assembleDocPage } from '../shared/docPage.js';
|
|
30
|
+
import { pageSections } from '../shared/pageNav.js';
|
|
31
|
+
import { adminPartsCss, renderSectionTitle, renderSteps, renderVerifyList, } from './adminParts.js';
|
|
32
|
+
/** 页眉那一行域词(两张页同一句)。 */
|
|
33
|
+
const EYEBROW = '作息管家 辅助与管理';
|
|
34
|
+
/** 本域两张页的 key:初始化与首次使用都落在 `schedule.help.lookup` 上(路由表逐字),
|
|
35
|
+
* 形状 `list` ⇒ 复制数据位是一份报告(逐条 `name`/`value`)。 */
|
|
36
|
+
const HELP_KEY = 'schedule.help.lookup';
|
|
37
|
+
/** 一处落点的复制按钮(#887):完整路径只进按钮的 `data-t`,页上只印确认语。
|
|
38
|
+
*
|
|
39
|
+
* **为什么不是「复制区里的自定义按钮」**:`CopyBlockInput.buttons` 收的 `ActionBarButton` 没有
|
|
40
|
+
* 载荷位(公共层自己的注释就是这么写的:「动作条按钮没有 `data-t` 载荷位」),今天给不出
|
|
41
|
+
* 「把某一串文本交给它复制」的按钮。故按票面那一条停档:**每个落点各一枚按钮、不再成对**,
|
|
42
|
+
* 按钮走公共层动作条的数据位(`renderActionBar({ copyData })`,兄弟技能同一条公开面),
|
|
43
|
+
* 技能侧不手搓按钮 HTML、不另造样式;这一处缺口在 #887 票面留言里点名。 */
|
|
44
|
+
function pathCopyRow(name, path, actionId) {
|
|
45
|
+
return renderCaliberLine(name + '已确认')
|
|
46
|
+
+ renderActionBar({ copyData: { actionId, label: '复制' + name + '路径', text: path } });
|
|
47
|
+
}
|
|
48
|
+
const countText = (n) => (n === null ? '—' : String(n));
|
|
49
|
+
/** 初始化回执:本次新建还是沿用已有 + 三张表 + 库路径 + 下一步。 */
|
|
50
|
+
export function renderInitReceiptPage(input) {
|
|
51
|
+
const head = {
|
|
52
|
+
docTitle: '初始化回执',
|
|
53
|
+
eyebrow: EYEBROW,
|
|
54
|
+
title: '初始化回执',
|
|
55
|
+
subtitle: input.created ? '库是这一趟新建的,已经就绪' : '库早就在了,这一趟没有动它',
|
|
56
|
+
};
|
|
57
|
+
const conclusion = input.created
|
|
58
|
+
? '本次新建了三张表,库已就绪'
|
|
59
|
+
: '三张表都在,库是就绪的';
|
|
60
|
+
const cards = [
|
|
61
|
+
{ label: '本次动作', value: input.created ? '新建' : '沿用已有' },
|
|
62
|
+
{ label: '作息记录', value: countText(input.counts.records), unit: '条' },
|
|
63
|
+
{ label: '日程计划', value: countText(input.counts.plans), unit: '条' },
|
|
64
|
+
{ label: '每日摘要', value: countText(input.counts.summaries), unit: '组' },
|
|
65
|
+
];
|
|
66
|
+
const tableRows = [
|
|
67
|
+
{ 表: '作息记录', 行数: countText(input.counts.records), 管什么: '记下来的每一段作息' },
|
|
68
|
+
{ 表: '每日摘要', 行数: countText(input.counts.summaries), 管什么: '按天按类汇总的分钟数' },
|
|
69
|
+
{ 表: '日程计划', 行数: countText(input.counts.plans), 管什么: '未来排布的事件' },
|
|
70
|
+
];
|
|
71
|
+
const { toc, body } = pageSections([
|
|
72
|
+
{ html: renderConclusionBar(conclusion) },
|
|
73
|
+
{ navText: '这一趟的读数', html: renderKpiGrid(cards, { title: '这一趟的读数' }) },
|
|
74
|
+
{ navText: '三张表', html: renderSectionTitle('三张表') + renderDataTable({
|
|
75
|
+
columns: [
|
|
76
|
+
{ key: '表', label: '表' },
|
|
77
|
+
{ key: '行数', label: '行数', align: 'right' },
|
|
78
|
+
{ key: '管什么', label: '管什么' },
|
|
79
|
+
],
|
|
80
|
+
rows: tableRows,
|
|
81
|
+
emptyText: '三张表一行没有',
|
|
82
|
+
}) },
|
|
83
|
+
{ html: renderCaliberLine('再跑一次只会补齐缺的表,已有数据一条不动') },
|
|
84
|
+
// #887:这一处原先是「库文件路径」那个复制区(一页里的第二处复制按钮排),现在收成一行确认语 +
|
|
85
|
+
// 单颗复制按钮——完整路径进 `data-t`,页上不印路径(落点名只写人话)。
|
|
86
|
+
{ html: pathCopyRow('库文件', input.paths.dbFile, 'ilife-sch-init-copy-path') },
|
|
87
|
+
{ navText: '下一步', html: renderSectionTitle('下一步')
|
|
88
|
+
+ renderProseBlock({ text: '刚装好就说「首次使用」,向导带你走完六步。平时记一条作息只说一句话就行。' }) },
|
|
89
|
+
// #887:一页**一个**复制区(数据=初始化回执整份、日志=这一趟六段),原先的第二对按钮合并到这里。
|
|
90
|
+
{ navText: '复制初始化结果', html: scheduleCopyArea({
|
|
91
|
+
title: '复制初始化结果',
|
|
92
|
+
dataActionId: 'ilife-sch-init-copy-data',
|
|
93
|
+
logActionId: 'ilife-sch-init-copy-log',
|
|
94
|
+
key: HELP_KEY,
|
|
95
|
+
payload: {
|
|
96
|
+
items: [
|
|
97
|
+
{ name: '本次动作', value: input.created ? '新建' : '沿用已有' },
|
|
98
|
+
{ name: '作息记录', value: countText(input.counts.records) + ' 条' },
|
|
99
|
+
{ name: '日程计划', value: countText(input.counts.plans) + ' 条' },
|
|
100
|
+
{ name: '每日摘要', value: countText(input.counts.summaries) + ' 组' },
|
|
101
|
+
{ name: '库文件路径', value: input.paths.dbFile },
|
|
102
|
+
],
|
|
103
|
+
total: 5,
|
|
104
|
+
},
|
|
105
|
+
log: scheduleCopyLog({
|
|
106
|
+
command: 'schedule-cmd-read schedule.help.lookup --params {"view":"init"}',
|
|
107
|
+
source: '建库与三张表(辅助与管理)',
|
|
108
|
+
actionAt: scheduleNowStamp(),
|
|
109
|
+
}),
|
|
110
|
+
}) },
|
|
111
|
+
]);
|
|
112
|
+
return assembleDocPage({ head, content: toc + body, extraCss: adminPartsCss() });
|
|
113
|
+
}
|
|
114
|
+
/** 首次使用向导:老侧 6 步 + 飞书强引导 + 初始化报告 + 完成。 */
|
|
115
|
+
export function renderFirstUsePage(input) {
|
|
116
|
+
const pending = input.steps.filter((s) => s.status !== 'ok').length;
|
|
117
|
+
const head = {
|
|
118
|
+
docTitle: '首次使用向导',
|
|
119
|
+
eyebrow: EYEBROW,
|
|
120
|
+
title: '首次使用向导',
|
|
121
|
+
subtitle: pending === 0 ? '六步已跑完,作息管家就绪' : '六步跑完,有 ' + String(pending) + ' 项要你动手',
|
|
122
|
+
};
|
|
123
|
+
const conclusion = pending === 0
|
|
124
|
+
? '六步向导已跑完,作息管家就绪'
|
|
125
|
+
: '向导跑完,有 ' + String(pending) + ' 项要你动手(下面标着动手的那几步)';
|
|
126
|
+
const views = input.steps.map((s) => ({ ...s }));
|
|
127
|
+
const todoBlock = input.todos.length === 0
|
|
128
|
+
? renderProseBlock({ text: '这一趟没有待办,装完就能用。' })
|
|
129
|
+
: renderDataTable({
|
|
130
|
+
columns: [
|
|
131
|
+
{ key: '待办', label: '待办' },
|
|
132
|
+
{ key: '怎么做', label: '怎么做' },
|
|
133
|
+
],
|
|
134
|
+
rows: input.todos.map((t) => ({ 待办: t.title, 怎么做: t.steps.join('/') })),
|
|
135
|
+
emptyText: '这一趟没有待办',
|
|
136
|
+
});
|
|
137
|
+
const { toc, body } = pageSections([
|
|
138
|
+
{ html: renderConclusionBar(conclusion) },
|
|
139
|
+
{ navText: '六步向导', html: renderSectionTitle('六步向导') + renderSteps(views) },
|
|
140
|
+
{ navText: '路径确认', html: renderSectionTitle('路径确认')
|
|
141
|
+
+ renderProseBlock({ text: '四处落点都在下面,点一下就复制完整路径。落点由配置文件决定,改动去改配置,不用重装。' })
|
|
142
|
+
// #887:四处落点各**一枚**复制按钮(原先四个复制区=四对按钮,现各收成一行确认语 + 一颗按钮)。
|
|
143
|
+
+ pathCopyRow('库目录', input.paths.dbDir, 'ilife-sch-firstuse-copy-dbdir')
|
|
144
|
+
+ pathCopyRow('库文件', input.paths.dbFile, 'ilife-sch-firstuse-copy-dbfile')
|
|
145
|
+
+ pathCopyRow('产物根目录', input.paths.pagesRoot, 'ilife-sch-firstuse-copy-pages')
|
|
146
|
+
+ pathCopyRow('帮助页', input.paths.helpDir, 'ilife-sch-firstuse-copy-help') },
|
|
147
|
+
{ navText: '初始化报告', html: renderSectionTitle('初始化报告')
|
|
148
|
+
+ renderCaliberLine('建库动作 | ' + (input.created ? '三张表本次新建' : '三张表沿用已有'))
|
|
149
|
+
+ renderCaliberLine('库内现状 | 作息记录 ' + countText(input.counts.records)
|
|
150
|
+
+ ' 条,日程计划 ' + countText(input.counts.plans) + ' 条')
|
|
151
|
+
+ todoBlock },
|
|
152
|
+
{ navText: '完成验证清单', html: renderSectionTitle('完成验证清单') + renderVerifyList(input.verify) },
|
|
153
|
+
{ navText: '飞书强引导', html: renderSectionTitle('飞书强引导')
|
|
154
|
+
+ renderProseBlock({ text: '配合飞书效果最好,日程能出现在飞书日历上。只有你明确说不用,才跳过这一步。' })
|
|
155
|
+
+ renderProseBlock({ text: input.feishu.note })
|
|
156
|
+
+ (input.feishu.unavailable
|
|
157
|
+
? renderConclusionBar('飞书同步不可用(先把上面那几道门补上)')
|
|
158
|
+
: renderCaliberLine('飞书三道门都过了,想看档位就说「飞书探测」')) },
|
|
159
|
+
{ navText: '完成', html: renderSectionTitle('完成')
|
|
160
|
+
+ renderProseBlock({ text: '下一句说「作息管家 HELP」看全部功能,现在就可以记下第一条作息。' }) },
|
|
161
|
+
// #887:一页**一个**复制区(数据=向导报告整份、日志=这一趟六段)——原先五对按钮合并到这里。
|
|
162
|
+
// 报告里带 `初始化 prompt` 那一条:复制出去的文本里就有与 HELP 单源的那一句(探针量的是标记面)。
|
|
163
|
+
{ navText: '复制初始化 prompt', html: scheduleCopyArea({
|
|
164
|
+
title: '复制初始化 prompt',
|
|
165
|
+
dataActionId: 'ilife-sch-firstuse-copy-data',
|
|
166
|
+
logActionId: 'ilife-sch-firstuse-copy-log',
|
|
167
|
+
key: HELP_KEY,
|
|
168
|
+
payload: {
|
|
169
|
+
items: [
|
|
170
|
+
...input.steps.map((s) => ({ name: s.name, value: s.statusText + ',' + s.desc })),
|
|
171
|
+
{ name: '待办', value: input.todos.length === 0 ? '这一趟没有待办' : String(input.todos.length) + ' 项' },
|
|
172
|
+
{ name: '完成验证清单', value: input.verify.join(',') },
|
|
173
|
+
{ name: '库目录路径', value: input.paths.dbDir },
|
|
174
|
+
{ name: '库文件路径', value: input.paths.dbFile },
|
|
175
|
+
{ name: '产物根目录路径', value: input.paths.pagesRoot },
|
|
176
|
+
{ name: '帮助页路径', value: input.paths.helpDir },
|
|
177
|
+
{ name: '初始化 prompt', value: input.prompt },
|
|
178
|
+
],
|
|
179
|
+
total: input.steps.length + 7,
|
|
180
|
+
},
|
|
181
|
+
log: scheduleCopyLog({
|
|
182
|
+
command: 'schedule-cmd-read schedule.help.lookup --params {"view":"firstUse"}',
|
|
183
|
+
source: '六步向导与四处落点(辅助与管理)',
|
|
184
|
+
actionAt: scheduleNowStamp(),
|
|
185
|
+
}),
|
|
186
|
+
}) },
|
|
187
|
+
]);
|
|
188
|
+
return assembleDocPage({ head, content: toc + body, extraCss: adminPartsCss() });
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=adminDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminDocs.js","sourceRoot":"","sources":["../../src/admin/adminDocs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** #790 · 「辅助与管理」域的族级页内自造件(本域页内自造件与样式常量的唯一住处)。
|
|
2
|
+
*
|
|
3
|
+
* 为什么住这里(写得出哪几处在用):本票两张页上有三处公共层给不出的形状——
|
|
4
|
+
* · **步骤列表**(首次使用向导的六步):序号 + 状态徽章 + 一句话说明。
|
|
5
|
+
* 公共层 `renderDataTable` 是给二维读数的,步骤不是表;
|
|
6
|
+
* `renderDistributionRows` 是「行即件」,序号与徽章摆不进去。
|
|
7
|
+
* · **状态徽章**(通过/待办/动手):小圆角标签,颜色走冻结 token。
|
|
8
|
+
* · **勾选清单**(初始化报告的完成验证清单):可勾选的复选框行,老侧那张向导页同款。
|
|
9
|
+
* 三处都只在本域用,故照 `src/write/writeParts.ts` 的先例落在本域族级件里,
|
|
10
|
+
* **不往共用位塞**(共用位不是各域的样式收容所)。
|
|
11
|
+
*
|
|
12
|
+
* **只认形状,不认领域**:进来的是摆好的字串与状态,出去是 HTML 串——
|
|
13
|
+
* 本件不引 `policy`,也不认库表名与飞书那三道门。
|
|
14
|
+
*
|
|
15
|
+
* **样式纪律(本票的代码层窄判据)**:本文件是族级样式常量的唯一住处——CSS 里的长度一律取
|
|
16
|
+
* 下面那组具名常量(`px()` 是唯一的拼接处)、颜色一律取公共层冻结 token(`var(--…)`),
|
|
17
|
+
* `px` 字面量一处也不写。断点只用仓内既有值 **820**(页内自造件那一档),不新造。
|
|
18
|
+
*/
|
|
19
|
+
import type { AdminStepStatus } from './adminDocs.js';
|
|
20
|
+
/** 族级样式(只给 `sch-ad-` 前缀的类,不碰 `.ilife-block-*` 与页壳)。 */
|
|
21
|
+
export declare function adminPartsCss(): string;
|
|
22
|
+
/** 域内段名(页上一段的标题)。老侧每个区块都有自己的名字,出页门与探针按名字认块,
|
|
23
|
+
* 故段名由一处产出:本件。 */
|
|
24
|
+
export declare function renderSectionTitle(text: string): string;
|
|
25
|
+
/** 状态徽章(说人话的三态:通过/待办/动手)。 */
|
|
26
|
+
export declare function renderBadge(status: AdminStepStatus, label: string): string;
|
|
27
|
+
export interface AdminStepView {
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly status: AdminStepStatus;
|
|
30
|
+
readonly statusText: string;
|
|
31
|
+
readonly desc: string;
|
|
32
|
+
}
|
|
33
|
+
/** 步骤列表(序号 + 徽章 + 说明;第几步由调用方排好序传进来)。 */
|
|
34
|
+
export declare function renderSteps(steps: readonly AdminStepView[]): string;
|
|
35
|
+
/** 勾选清单(完成验证清单:用户可勾选;名字固定 `sch-ad-verify`)。 */
|
|
36
|
+
export declare function renderVerifyList(items: readonly string[]): string;
|
|
37
|
+
//# sourceMappingURL=adminParts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminParts.d.ts","sourceRoot":"","sources":["../../src/admin/adminParts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAqCtD,uDAAuD;AACvD,wBAAgB,aAAa,IAAI,MAAM,CAgBtC;AAED;mBACmB;AACnB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,6BAA6B;AAC7B,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAYnE;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMjE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* ─────────────────────────── 风格常量(本域 CSS 所有长度的出处) ─────────────────────────── */
|
|
2
|
+
const FS_TITLE = 15;
|
|
3
|
+
const FS_BODY = 13;
|
|
4
|
+
const FS_SMALL = 12;
|
|
5
|
+
const GAP = 8;
|
|
6
|
+
const ROW_GAP = 10;
|
|
7
|
+
const PAD_Y = 12;
|
|
8
|
+
const PAD_X = 14;
|
|
9
|
+
const RADIUS = 12;
|
|
10
|
+
const HAIRLINE = 1;
|
|
11
|
+
const NUM_W = 26;
|
|
12
|
+
/* 触摸下限 44px(PAGE_LIMITS.touchMinPx):与公共层同值是刻意的(本件不引区块层内部件,见件头)。 */
|
|
13
|
+
const HIT = 44;
|
|
14
|
+
const NARROW = 820;
|
|
15
|
+
const COLOR_OK = 'var(--green)';
|
|
16
|
+
const COLOR_TODO = 'var(--orange)';
|
|
17
|
+
const COLOR_DO = 'var(--red)';
|
|
18
|
+
const COLOR_MUTED = 'var(--fg3)';
|
|
19
|
+
const px = (n) => n + 'px';
|
|
20
|
+
const LF = String.fromCharCode(10);
|
|
21
|
+
/** 五字符转义(与公共层 `blocks.ts` 同口径;本件不引区块层内部件)。 */
|
|
22
|
+
function esc(value) {
|
|
23
|
+
return value.replace(/[&<>"']/g, (ch) => {
|
|
24
|
+
if (ch === '&')
|
|
25
|
+
return '&';
|
|
26
|
+
if (ch === '<')
|
|
27
|
+
return '<';
|
|
28
|
+
if (ch === '>')
|
|
29
|
+
return '>';
|
|
30
|
+
if (ch === '"')
|
|
31
|
+
return '"';
|
|
32
|
+
return ''';
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** 族级样式(只给 `sch-ad-` 前缀的类,不碰 `.ilife-block-*` 与页壳)。 */
|
|
36
|
+
export function adminPartsCss() {
|
|
37
|
+
return [
|
|
38
|
+
'.sch-ad-h2{font-size:' + px(FS_TITLE) + ';margin:' + px(ROW_GAP) + ' 0 ' + px(GAP) + '}',
|
|
39
|
+
'.sch-ad-step{display:flex;gap:' + px(GAP) + ';align-items:flex-start;padding:' + px(PAD_Y) + ' ' + px(PAD_X) + '}',
|
|
40
|
+
'.sch-ad-num{flex:0 0 ' + px(NUM_W) + ';text-align:center;font-size:' + px(FS_SMALL) + ';color:' + COLOR_MUTED + '}',
|
|
41
|
+
'.sch-ad-step-body{flex:1;min-width:0}',
|
|
42
|
+
'.sch-ad-step-name{font-size:' + px(FS_BODY) + '}',
|
|
43
|
+
'.sch-ad-step-desc{font-size:' + px(FS_SMALL) + ';color:' + COLOR_MUTED + '}',
|
|
44
|
+
'.sch-ad-badge{display:inline-block;font-size:' + px(FS_SMALL) + ';padding:0 ' + px(GAP) + ';border:' + px(HAIRLINE) + ' solid;border-radius:' + px(RADIUS) + '}',
|
|
45
|
+
'.sch-ad-badge-ok{color:' + COLOR_OK + ';border-color:' + COLOR_OK + '}',
|
|
46
|
+
'.sch-ad-badge-todo{color:' + COLOR_TODO + ';border-color:' + COLOR_TODO + '}',
|
|
47
|
+
'.sch-ad-badge-do{color:' + COLOR_DO + ';border-color:' + COLOR_DO + '}',
|
|
48
|
+
'.sch-ad-check{display:flex;gap:' + px(GAP) + ';align-items:center;min-height:' + px(HIT) + ';padding:' + px(GAP) + ' ' + px(PAD_X) + '}',
|
|
49
|
+
'.sch-ad-check input{width:' + px(HIT) + ';height:' + px(HIT) + ';margin:0;flex:0 0 auto}',
|
|
50
|
+
'@media (max-width:' + px(NARROW) + '){.sch-ad-step{flex-wrap:wrap}}',
|
|
51
|
+
].join(LF);
|
|
52
|
+
}
|
|
53
|
+
/** 域内段名(页上一段的标题)。老侧每个区块都有自己的名字,出页门与探针按名字认块,
|
|
54
|
+
* 故段名由一处产出:本件。 */
|
|
55
|
+
export function renderSectionTitle(text) {
|
|
56
|
+
return '<h2 class="sch-ad-h2">' + esc(text) + '</h2>';
|
|
57
|
+
}
|
|
58
|
+
/** 状态徽章(说人话的三态:通过/待办/动手)。 */
|
|
59
|
+
export function renderBadge(status, label) {
|
|
60
|
+
const cls = status === 'ok' ? 'sch-ad-badge-ok' : status === 'todo' ? 'sch-ad-badge-todo' : 'sch-ad-badge-do';
|
|
61
|
+
return '<span class="sch-ad-badge ' + cls + '">' + esc(label) + '</span>';
|
|
62
|
+
}
|
|
63
|
+
/** 步骤列表(序号 + 徽章 + 说明;第几步由调用方排好序传进来)。 */
|
|
64
|
+
export function renderSteps(steps) {
|
|
65
|
+
if (steps.length === 0)
|
|
66
|
+
return '';
|
|
67
|
+
const items = steps.map((s, i) => '<div class="sch-ad-step">'
|
|
68
|
+
+ '<span class="sch-ad-num">' + String(i + 1) + '</span>'
|
|
69
|
+
+ '<div class="sch-ad-step-body">'
|
|
70
|
+
+ '<div class="sch-ad-step-name">' + esc(s.name) + ' ' + renderBadge(s.status, s.statusText) + '</div>'
|
|
71
|
+
+ '<div class="sch-ad-step-desc">' + esc(s.desc) + '</div>'
|
|
72
|
+
+ '</div>'
|
|
73
|
+
+ '</div>');
|
|
74
|
+
return '<div class="sch-ad-steps">' + items.join('') + '</div>';
|
|
75
|
+
}
|
|
76
|
+
/** 勾选清单(完成验证清单:用户可勾选;名字固定 `sch-ad-verify`)。 */
|
|
77
|
+
export function renderVerifyList(items) {
|
|
78
|
+
if (items.length === 0)
|
|
79
|
+
return '';
|
|
80
|
+
const rows = items.map((text) => '<label class="sch-ad-check"><input type="checkbox" name="sch-ad-verify">' + esc(text) + '</label>');
|
|
81
|
+
return '<div class="sch-ad-verify">' + rows.join('') + '</div>';
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=adminParts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adminParts.js","sourceRoot":"","sources":["../../src/admin/adminParts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/admin/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/admin/handlers.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AA8MxD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAsBnE"}
|