@lasting-beauty/chat-hub 0.1.0-beta.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/LICENSE +74 -0
- package/README.md +170 -0
- package/bin/chat-hub.mjs +1794 -0
- package/cli/data-lifecycle.mjs +203 -0
- package/cli/deploy.mjs +569 -0
- package/cli/external-verification.mjs +219 -0
- package/cli/ip-certificate.mjs +331 -0
- package/cli/platform.mjs +173 -0
- package/cli/runtime.mjs +115 -0
- package/cli/server-maintenance.mjs +207 -0
- package/cli/server-verification.mjs +562 -0
- package/cli/windows-data-migration.mjs +145 -0
- package/dist/assets/AiSummaryPage-BUT43KuZ.js +1 -0
- package/dist/assets/index-BNCcoLmC.js +312 -0
- package/dist/assets/index-cxklu1ib.css +1 -0
- package/dist/index.html +14 -0
- package/dist/server/index.js +14796 -0
- package/package.json +118 -0
- package/scripts/install-platform-clis.mjs +163 -0
- package/skills/chat-hub-setup/scripts/gateway.mjs +360 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Chat Hub Proprietary Use License
|
|
2
|
+
Version 1.0, September 18, 2026
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Lasting Beauty. All rights reserved.
|
|
5
|
+
|
|
6
|
+
This license governs the Chat Hub software and accompanying materials distributed
|
|
7
|
+
by the copyright holder under the Lasting Beauty name (the "Software").
|
|
8
|
+
|
|
9
|
+
1. Permitted Use
|
|
10
|
+
|
|
11
|
+
Subject to this license, the copyright holder grants each individual or legal
|
|
12
|
+
entity that obtains the Software from an authorized distribution channel a
|
|
13
|
+
limited, non-exclusive, non-transferable, revocable, royalty-free right to:
|
|
14
|
+
|
|
15
|
+
a. download and install unmodified copies of the Software;
|
|
16
|
+
b. run unmodified copies of the Software for personal use or the entity's own
|
|
17
|
+
internal business operations; and
|
|
18
|
+
c. make only the copies reasonably necessary for installation, internal
|
|
19
|
+
deployment, and backup within that same entity.
|
|
20
|
+
|
|
21
|
+
2. Restrictions
|
|
22
|
+
|
|
23
|
+
Except where applicable law does not permit the restriction, you may not:
|
|
24
|
+
|
|
25
|
+
a. modify, adapt, translate, or create derivative works of the Software;
|
|
26
|
+
b. redistribute, republish, sublicense, sell, rent, lease, or otherwise make
|
|
27
|
+
the Software available to another person or legal entity;
|
|
28
|
+
c. offer the Software, or a substantial part of it, as a hosted, managed,
|
|
29
|
+
service-bureau, or other service for third parties;
|
|
30
|
+
d. reverse engineer, decompile, or disassemble the Software;
|
|
31
|
+
e. remove or alter copyright, license, trademark, or other proprietary
|
|
32
|
+
notices; or
|
|
33
|
+
f. use the Software in violation of applicable law or third-party rights.
|
|
34
|
+
|
|
35
|
+
3. Ownership and Trademarks
|
|
36
|
+
|
|
37
|
+
The Software is licensed, not sold. The copyright holder retains all rights,
|
|
38
|
+
title, and interest in and to the Software not expressly granted by this
|
|
39
|
+
license. No trademark or brand license is granted.
|
|
40
|
+
|
|
41
|
+
4. Third-Party Software
|
|
42
|
+
|
|
43
|
+
Third-party components included with or used by the Software remain governed by
|
|
44
|
+
their respective licenses. This license does not replace or limit rights granted
|
|
45
|
+
under those third-party licenses.
|
|
46
|
+
|
|
47
|
+
5. Termination
|
|
48
|
+
|
|
49
|
+
This license terminates automatically if you breach its terms. Upon termination,
|
|
50
|
+
you must stop using the Software and delete all copies in your possession or
|
|
51
|
+
control, except copies that applicable law requires you to retain.
|
|
52
|
+
|
|
53
|
+
6. Disclaimer of Warranty
|
|
54
|
+
|
|
55
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" AND
|
|
56
|
+
WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY,
|
|
57
|
+
INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
|
|
58
|
+
TITLE, AND NON-INFRINGEMENT.
|
|
59
|
+
|
|
60
|
+
7. Limitation of Liability
|
|
61
|
+
|
|
62
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE COPYRIGHT HOLDER AND CONTRIBUTORS
|
|
63
|
+
WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR
|
|
64
|
+
PUNITIVE DAMAGES, OR FOR ANY LOSS OF DATA, PROFITS, REVENUE, OR BUSINESS,
|
|
65
|
+
ARISING FROM OR RELATED TO THE SOFTWARE OR THIS LICENSE, EVEN IF ADVISED OF THE
|
|
66
|
+
POSSIBILITY OF SUCH DAMAGES.
|
|
67
|
+
|
|
68
|
+
8. Separate Written Agreements
|
|
69
|
+
|
|
70
|
+
A separate written agreement signed by the copyright holder may grant additional
|
|
71
|
+
rights or replace these terms for the parties to that agreement.
|
|
72
|
+
|
|
73
|
+
For licensing inquiries, contact the owner of the repository identified in the
|
|
74
|
+
Software's package metadata.
|
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Chat Hub
|
|
2
|
+
|
|
3
|
+
Chat Hub 把飞书与钉钉中的工作信息汇到一个响应式网页,提取需要当前使用者回复、行动、决策或确认的事项。飞书的会议记录产品称“妙记”,钉钉称“听记”;跨平台统称“会议记录”。产品不限定使用者岗位,当前仍按单使用者部署单元开发和验证,不等同于已经具备多租户平台能力。
|
|
4
|
+
|
|
5
|
+
## 命令行安装
|
|
6
|
+
|
|
7
|
+
公开 beta 使用 `next` 标签,首个版本为 `0.1.0-beta.1`。发布候选可以从本仓库生成 tarball,并在独立目录完成安装和生产构建验证:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm run verify:package
|
|
11
|
+
npm run package:internal
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`verify:package` 使用隔离 HOME、隔离 npm 缓存和临时全局前缀安装,核验固定平台 CLI 后再启动、访问并停止服务,最后清理;`package:internal` 在执行相同黑盒验证后,把已经验证的 `.tgz`、SHA-256 文件和机器可读清单保存在已忽略的 `artifacts/cli/`。制品名包含内容哈希且不会覆盖不同内容,清单会记录源码提交和工作区是否 dirty。dirty 制品只能用于受控测试,不能作为可追溯的正式发布件。
|
|
15
|
+
|
|
16
|
+
Chat Hub 已把 `@larksuite/cli@1.0.92` 和 `dingtalk-workspace-cli@1.0.60` 锁为运行依赖;安装 Chat Hub 时会同时安装这两个固定版本,运行时直接使用包内 JavaScript 入口,不依赖全局 PATH。钉钉依赖自己的 `postinstall` 在仓库策略中被明确拒绝,在全局安装命令中也不进入脚本白名单;改由 Chat Hub 校验随包归档 SHA-256、只解压 `dws` 二进制并核对版本,不会安装或改写用户的 Agent Skills。`LARK_CLI_PATH`/`DINGTALK_CLI_PATH` 仍可用于显式诊断覆盖,但服务器部署和 `doctor` 会校验实际入口版本。
|
|
17
|
+
|
|
18
|
+
推荐的服务器入口是一条 setup 命令:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
sudo npx --yes @lasting-beauty/chat-hub-installer@next setup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
也可以使用以下底层安装命令;显式脚本白名单是飞书二进制与 `better-sqlite3` 原生模块完成安装所必需的安全边界,钉钉二进制由 Chat Hub 校验归档后安装:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx --yes npm@12.0.2 install -g @lasting-beauty/chat-hub@next --allow-scripts="@lasting-beauty/chat-hub,@larksuite/cli@1.0.92,better-sqlite3@13.0.3"
|
|
28
|
+
chat-hub start
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
安装后的基础命令包括:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
chat-hub doctor
|
|
35
|
+
chat-hub diagnose
|
|
36
|
+
sudo chat-hub platform login lark --new-app
|
|
37
|
+
sudo chat-hub platform login dingtalk
|
|
38
|
+
sudo chat-hub platform status
|
|
39
|
+
chat-hub start
|
|
40
|
+
chat-hub status
|
|
41
|
+
chat-hub logs
|
|
42
|
+
chat-hub stop
|
|
43
|
+
chat-hub deploy --domain chat.example.com
|
|
44
|
+
sudo chat-hub deploy --domain chat.example.com --apply
|
|
45
|
+
|
|
46
|
+
# 没有域名时的正式 IP HTTPS(Certbot 5.4+)
|
|
47
|
+
chat-hub deploy --ip <稳定公网IPv4>
|
|
48
|
+
sudo chat-hub deploy --ip <稳定公网IPv4> --email <联系邮箱> --apply --install-dependencies
|
|
49
|
+
|
|
50
|
+
# 没有域名时的临时受控方案(HTTP 明文,高风险)
|
|
51
|
+
chat-hub deploy --http-ip <ECS公网IPv4>
|
|
52
|
+
sudo chat-hub deploy --http-ip <ECS公网IPv4> --apply
|
|
53
|
+
sudo chat-hub verify-server
|
|
54
|
+
chat-hub verify-external --domain chat.example.com
|
|
55
|
+
chat-hub verify-external --ip <稳定公网IPv4>
|
|
56
|
+
sudo chat-hub backup
|
|
57
|
+
sudo chat-hub restore <备份目录名>
|
|
58
|
+
sudo chat-hub admin-reset
|
|
59
|
+
sudo chat-hub upgrade --to 0.1.0-beta.1
|
|
60
|
+
sudo chat-hub uninstall
|
|
61
|
+
sudo chat-hub purge
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`start` 默认只提供本机回环入口,`start --lan` 才启用可信局域网 HTTP 和一次性配对。Windows 发现旧版 `~/Library/Application Support/Chat Hub` 且新目录不存在时,会先建立两份逐文件 SHA-256 校验副本并执行 SQLite 快速检查,再切换到 LocalAppData;新旧目录同时存在时停止。`deploy` 默认仍是只读计划;只有显式添加 `--apply`,且运行于 root 权限的 Ubuntu 24.04 x64 或 Alibaba Cloud Linux 4 x64 时,才会写入专用用户、systemd、Caddy 和 systemd credentials。`--domain` 启用域名 HTTPS;无域名正式入口使用 `--ip` 和 Certbot `shortlived` IP 证书,配置每 4 小时续期 timer、随机延迟、证书/私钥成对原子发布及失败回滚,并由 runner 记录完整续期命令结果,失败不会降级 HTTP。`--http-ip` 仍是显式临时例外,只监听公网 80,管理员 Cookie 不带 `Secure`,密码、会话和业务数据均以明文传输。使用该模式必须把阿里云安全组 TCP 80 来源限制为管理员固定公网 IP,不能开放 `0.0.0.0/0`,也不应接入真实工作数据或真实凭证。应用 4310 和网关 8080 在全部服务器模式下都只监听回环地址。Ubuntu 通过官方 apt 仓库安装 Caddy;Alibaba Cloud Linux 4 固定并校验官方 Caddy 静态发布资产后创建受限 systemd 服务。管理员密码至少 15 个字符,会话固定 7 天且可撤销;`admin-reset` 会立即撤销旧密码和全部会话。`verify-server` 和 `verify-external` 会按部署清单验收 HTTPS 域名、正式 IP HTTPS 或临时 HTTP IP 入口,并继续确认 4310/8080 不可公网连接。备份、恢复和显式升级已经实现停服一致性备份、SQLite 校验、失败回滚和最近 3 份升级备份保留;`upgrade --to` 只核对当前执行安装包的精确版本,不会自行联网下载。`uninstall` 会移除 IP 证书自动化和 Caddy 专用证书副本,但保留 Certbot 原始证书、应用数据、凭证和备份;`purge` 会先展示绝对删除路径并要求使用 10 分钟令牌二次确认。正式 IP HTTPS 和安装器已有代码与本地自动化,但尚未完成真实 ECS 证书、续期、重启验收;这些实机证据阻塞提升为 `latest`,不冒充公开 beta 已完成的验证。当前实现进度见[命令行分发与服务器部署方案](docs/cli-distribution-and-server-deployment.md)和[服务器部署复盘与简化方案](docs/server-deployment-simplification-plan.md)。
|
|
65
|
+
|
|
66
|
+
`npm run verify:release` 是只读的 `next` 发布门禁,同时检查主包与安装器的专有许可证、beta/rc 版本、公开发布配置、版本一致性和文件白名单。仓库还包含 Windows x64、Ubuntu 24.04 x64、macOS Apple Silicon 的 tarball GitHub Actions 矩阵;它只做安装与生命周期验证,不执行 npm 发布。
|
|
67
|
+
|
|
68
|
+
`.github/workflows/npm-next-release.yml` 是独立的手工发布入口,只允许与包版本匹配的 `cli-v*` 标签,在全量检查、隔离安装和发布门禁全部通过后依次发布主包与安装器的 `next` 版本。首次创建 npm 包仍需 2FA 或短期 bootstrap token;包存在后改用 npm trusted publishing,并删除长期发布 secret。工作流文件存在不代表 registry 已经收到该版本。
|
|
69
|
+
|
|
70
|
+
Chat Hub 使用仓库根目录的[专有许可证](LICENSE):允许下载、安装和运行未修改版本,不授予修改、再分发、转售或向第三方提供托管服务的权利。第三方组件继续适用其各自许可证。
|
|
71
|
+
|
|
72
|
+
## 当前基础能力与已知缺口
|
|
73
|
+
|
|
74
|
+
2026-09-18 根据部署后的真实页面复核发现的身份、工作台、总结范围和表格发现缺口已经由任务 21 完成本地修复;下列结果仍需区分本地实现和真实平台样本:
|
|
75
|
+
|
|
76
|
+
- 使用者身份档案以平台稳定 ID 为权威,钉钉首选名称和飞书/历史别名已进入事项与总结分析;身份或偏好变化触发有界重分析并显示进度。
|
|
77
|
+
- AI 总结页面已恢复始终可见的来源选择;新草稿默认选择具有可用内容的 `ready` 和 `partial` 来源,报告详细依据仍可独立折叠。
|
|
78
|
+
- 表格已支持飞书/钉钉电子表格和数据表的最近访问、名称搜索、平台链接发现、一键选择和自动安全验证。按真实 CLI 输出 Schema 修复解析后,当前开发机绑定账号的最近资源只读发现得到飞书多维表格 5 个数据表、钉钉 AI 表格 15 个数据表和钉钉在线电子表格 10 个工作表;飞书电子表格仍为 0。目标服务器身份、选择后的内容预览和总结质量仍单独验收。
|
|
79
|
+
- 工作台已分为待处理、待确认、关注动态和接下来安排;任一平台日历可用即展示日程,失败平台只进入覆盖说明。
|
|
80
|
+
|
|
81
|
+
统一修复范围和验证边界见[任务 21](.scratch/message-hub/issues/21-identity-workbench-summary-table-corrections.md)。
|
|
82
|
+
|
|
83
|
+
- 来源信息、工作台事项和 AI 总结历史统一每页 20 条,支持上一页/下一页、全范围搜索统计和按需详情;返回页面保留浏览位置,完成或删除后补齐当前页。分页不会触发平台同步。验证证据见[列表性能验收](.scratch/list-pagination/verification.md)。
|
|
84
|
+
|
|
85
|
+
- React + TypeScript + Ant Design 响应式工作台,提供完整合成模式和真实模式。
|
|
86
|
+
- 完整合成模式默认生成 180 条记录,覆盖飞书与钉钉各 6 类来源(12 / 12 就绪),可操作来源详情、模拟原平台页、事项状态与提醒、连接登录/退出/同步、AI 总结、通知去重与免打扰、故障演练和一键重置。
|
|
87
|
+
- 合成工作区使用源码和真实数据库之外的独立 SQLite,状态跨重启保存;不会调用真实平台、真实模型或真实通知。
|
|
88
|
+
- Node.js/Fastify 本地 API、HttpOnly 会话、SQLite 有序迁移、账号隔离和不透明分页。
|
|
89
|
+
- 飞书聊天真实分页采集、持久化游标、幂等保存、后台任务去重与重启恢复。
|
|
90
|
+
- 本地规则只用于基础事项整理;按需 AI 总结必须先在网页配置真实兼容模型和密钥。模型地址只接受 HTTPS,发送前拒绝本机/私网/链路本地/特殊用途/保留地址并禁止跟随重定向;实际 TLS 连接固定到同一次安全检查得到的 IP,证书按原始主机名校验,避免 DNS 重绑定。内网自建模型只能由服务器管理员用精确 HTTPS Origin 允许列表开放。模型密钥按操作系统保存:Windows 使用当前用户 DPAPI,macOS 使用钥匙串;网页、SQLite 和日志不回显明文。
|
|
91
|
+
- 按需 AI 快速总结的服务端范围校验、时间与栏目、命名方案和自动草稿、始终可见的来源选择、预检、持久化分块任务、失败重试、来源依据及 90 天报告历史已有本地可验证闭环。未配置真实模型时服务端明确阻止生成,不返回本地规则伪装的 AI 结果。
|
|
92
|
+
- 工作台已接入 AI 早间/晚间简报:按变化窗口、当前未完成事项、待确认、独立关注动态、事项状态历史、未来日程和上一份有效报告冻结本地快照,经分块分析与全局综合后保存不可变报告。根快照同时冻结使用者身份和关注动态,同链 V2/V3 不读取后续变化。未配置模型、未确认外发、生成中、部分结果、失败和旧报告均独立显示;合成环境的本地规则结果明确标为测试简报,不冒充真实 AI。
|
|
93
|
+
- 工作台事项已具备“上下文 → 分析事实 → 确定性投影”的链路,稳定使用者身份、别名、关注原因、四区投影、重分析进度和单项责任纠正均已接通。聊天只把平台返回的真实线程 ID 作为线程上下文;普通会话回退到同会话时间邻近窗口。单上下文使用 12,000 Token 安全预算,每次远程运行再限制为最多 10 次请求、累计估算 120,000 输入 Token 和 5 分钟,超额来源保持等待分析。当前配置供应商已通过 6 个纯合成上下文校准;未配置供应商单价,因此只记录可复算的 Token 用量,不伪造精确金额上限。
|
|
94
|
+
- 按需总结和工作台完整简报支持 V1/V2/V3 同快照版本:可切换、对比、追加二次总结提示词,或使用最新数据创建新的根报告;所有版本保留原始冻结来源、表格引用和数据截止时间,明确要求读取新数据或未选来源/字段的二次提示词会被拒绝。
|
|
95
|
+
- 表格分析资料已完成四类账号元数据发现、一键选择、自动预览、完整快照、报告证据、部分失败和撤权清理,并按当前 CLI 契约实现严格只读适配器。2026-09-18 修复飞书嵌套 `result_meta.token`/`title_highlighted`、钉钉 `baseName`/`tableName` 和在线电子表格 URL 识别后,当前开发机绑定账号已取得三类非空候选;飞书电子表格仍为空。此前两个非空手工登记范围只证明内容读取契约,目标服务器身份、敏感对象、跨页和撤权仍按独立样本验收。
|
|
96
|
+
- 飞书邮件在当前测试账号不可用;妙记、任务和审批查询成功但当前无样本。飞书日历已验证未来查询为空,但非空事件契约仍缺样本,因此明确保持“未验证”,不冒充完整覆盖。
|
|
97
|
+
- 钉钉 CLI 登录有效;聊天、未读邮件摘要、听记和日历已真实接入。日历按过去 7 天至未来 30 天同步,工作台展示进行中及未来 7 天的最近 5 场;待办仍只有空结果证据。邮件当前是未读快照,缺少真实时间的记录不进入按时间 AI 总结;常规考勤打卡通知保留在来源信息中,但默认不进入工作台和 AI 总结。审批权限和本人通知仍待处理。
|
|
98
|
+
- 连接页已接入本机真实 CLI 登录、定向退出、状态检测和固定身份确认。首次使用须确认绑定当前有效账号;登录、退出与信息同步互斥,身份不一致时同步会被阻止。
|
|
99
|
+
|
|
100
|
+
页面中未知的未读、缺权限和未验证来源会明确显示,不会用 0 或演示内容替代。
|
|
101
|
+
|
|
102
|
+
## 运行完整合成工作区
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npm ci
|
|
106
|
+
npm run dev
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
打开 [完整合成数据页面](http://127.0.0.1:8080)。`npm run dev` 会同时启动本地合成后端,首次创建或在设置页重置时按当前日期生成标准数据。默认数据库位于 `%USERPROFILE%\.chat-hub-synthetic\chat-hub-synthetic.sqlite`,可用 `CHAT_HUB_SYNTHETIC_DATA_DIR` 改到其他源码外目录;合成后端默认端口为 `4311`,可用 `CHAT_HUB_SYNTHETIC_PORT` 调整。
|
|
110
|
+
|
|
111
|
+
如 `8080` 已被占用,可运行 `npm run dev -- --port 5180 --strictPort`。合成模式的登录、同步、原平台页、总结和通知均为本机模拟,不访问飞书、钉钉或外部模型。
|
|
112
|
+
|
|
113
|
+
## 运行真实模式
|
|
114
|
+
|
|
115
|
+
分别在两个终端运行:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npm run server:start
|
|
119
|
+
npm run dev:live
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
打开 [真实数据页面](http://127.0.0.1:8080)。首次启动会自动生成本地访问凭证,并用当前系统用户的安全存储保护;本机回环页面自动建立 HttpOnly 会话,不需要查看或反复输入密钥。设置页可重置凭证,重置不会影响平台登录和已采集数据。`CHAT_HUB_API_TOKEN` 仅作为空安全存储的可选首次初始化值,既有安全存储优先,服务不会回显明文。
|
|
123
|
+
|
|
124
|
+
首次采集也可运行 `npm run sync:lark-chat`;需要覆盖数据目录或 CLI 路径时,由进程守护器或当前终端注入对应环境变量。
|
|
125
|
+
|
|
126
|
+
钉钉听记真实只读烟测运行 `npm run smoke:dingtalk-minutes`。它使用临时 SQLite,只输出数量、完整性和幂等状态,结束后删除临时库,不输出真实标题、ID、链接、正文或人员信息。
|
|
127
|
+
|
|
128
|
+
日历真实只读契约烟测运行 `npm run smoke:calendar`。它读取当前已绑定 profile,只输出事件数量、分页完整性、字段类型和安全枚举,不输出标题、时间、ID、链接、描述或人员信息。
|
|
129
|
+
|
|
130
|
+
下面的表格命令只用于开发者验证 CLI 契约,不是最终用户的选表流程,也不能用于判断账号是否“有表格”。表格非空契约烟测必须在明确授权后运行:`npm run smoke:table-materials -- --platform <lark|dingtalk> --base-id <ID> --table-id <ID> --field-ids <ID1,ID2> --allow-real-table-read`。它复用当前已确认账号绑定,只读取一页最多 5 行和指定字段,仅输出安全结构键、类型、数量与分页状态;不输出 Base/Table/记录/字段 ID、游标、链接或单元格值。没有显式确认参数时不会读取真实表格。
|
|
131
|
+
|
|
132
|
+
字段目录响应结构用同一入口的 `--observation fields` 模式单独观察,例如 `npm run smoke:table-materials -- --observation fields --platform <lark|dingtalk> --base-id <ID> --table-id <ID> --field-ids <ID1,ID2> --allow-real-table-read`。钉钉请求只投影列出的最多 10 个字段;飞书当前字段目录命令不支持字段投影,因此只读取第一页最多 10 个字段。输出只保留字段集合路径、数量、键名和类型,不包含字段 ID 或名称,也不会登记目录或直接判定字段删除。
|
|
133
|
+
|
|
134
|
+
确认真实结构后,可复制[飞书目录登记模板](docs/examples/table-material-selection.example.json)或[钉钉目录登记模板](docs/examples/dingtalk-table-material-selection.example.json)到源码目录之外,填入稳定 ID、展示名称和字段类型,再运行 `npm run smoke:table-materials -- --selection-file <外部绝对路径> --allow-real-table-read --register-verified-catalog`。钉钉模板不接受不可执行的 `viewId`,视图范围须转换成已验证的结构化 `filters`/`sort`;需要比较值的条件不能为空。登记模式同样最多读取 5 行;只有严格解析、权限和完整性检查通过后才写入当前账户及 profile 的本地目录。真实 ID 只保存在外部 selection 文件和运行数据库,不应写回仓库。明确撤权会删除目录项、快照及引用报告,普通网络失败不会误删。
|
|
135
|
+
|
|
136
|
+
跨页与空表要单独验收,且不会登记目录。把外部 selection 的 `recordLimit` 分别固定为 `6` 和 `1` 后,运行 `npm run smoke:table-materials -- --verification cross-page --selection-file <外部绝对路径> --allow-real-table-read` 或 `npm run smoke:table-materials -- --verification empty --selection-file <外部绝对路径> --allow-real-table-read`。跨页模式把单页上限强制降为 5,只有恰好发起 2 次读取并取得 6 行才通过;空表模式只允许 1 次读取且必须得到 0 行。两种模式都拒绝敏感、附件、图片、联系方式和未知类型字段,只输出平台、页数、记录数、字段数/类型、完整性和数据截止时间,不输出真实 ID、游标或单元格值;失败时同样只输出稳定错误码和固定文案,不透传底层字段、值、CLI 输出或外部文件路径。
|
|
137
|
+
|
|
138
|
+
`npm run check` 会执行格式、lint、业务测试、类型检查和生产构建。默认测试只使用合成数据,不访问平台。运行数据应放在源码外;详见[部署手册](docs/deployment.md)。
|
|
139
|
+
|
|
140
|
+
安装启动辅助工具单独使用 `npm run test:setup` 验证,需要允许本地端口监听和 macOS 系统进程管理;测试使用独立临时合成环境。
|
|
141
|
+
|
|
142
|
+
AI 总结的固定 `smoke` 数据可用 `npm run data:validate` 校验,或用 `npm run data:generate` 重新生成。需要灌入 SQLite 时运行 `npm run data:seed -- --db <绝对测试数据库路径>`;命令会拒绝源码目录内、疑似真实运行库或含非合成账户数据的目标。
|
|
143
|
+
|
|
144
|
+
个性化责任判断的真实模型校准使用 `npm run calibrate:analysis-model -- --allow-external-model`。该命令只发送内置合成上下文,必须已安全配置模型和密钥;默认检查不会运行。结果写入已忽略的 `artifacts/analysis-calibrations/`,只包含标签、误报/漏报、上下文错误、时延、Token 和可选费用估算,不保存正文、来源 ID 或密钥。
|
|
145
|
+
|
|
146
|
+
## 文档入口
|
|
147
|
+
|
|
148
|
+
- [AGENTS.md](AGENTS.md):代码组织、TypeScript、组件与样式、数据接入、测试和交付规范。
|
|
149
|
+
- [实施计划](.scratch/message-hub/implementation.md):各项实施任务、依赖和验收顺序。
|
|
150
|
+
- [产品需求初稿](.scratch/message-hub/spec.md):已确认方向、候选需求、待决策问题及讨论记录。
|
|
151
|
+
- [技术方案 v0.1](docs/technical-plan.md):架构、采集同步、存储、基础 AI、通知、本地测试与部署步骤;工程建议尚待实现验证。
|
|
152
|
+
- [AI 快速总结需求与设计](docs/ai-summary-design.md):已确认的范围矩阵、时间、提示词、后台任务、报告历史、安全边界、当前实现与验收基线。
|
|
153
|
+
- [AI 每日简报需求与设计](docs/ai-daily-brief-design.md):早晚简报、变化窗口、只读 Agent、全局综合、调度、通知和验收基线;2026-09-18 的输出结构、独立关注动态和表格范围修订已由任务 21 落地。
|
|
154
|
+
- [个性化事项分析、报告版本与表格资料设计](docs/personalized-analysis-and-report-revisions.md):记录身份、偏好、上下文责任判断、报告版本和表格资料基线;底层能力与用户闭环状态分开标记。
|
|
155
|
+
- [产品原型规格(PPTX)](docs/prototypes/Chat-Hub-产品原型规格-v2.pptx):主要评审交付,包含可编辑页面原型、编号标注、功能说明、字段字典、状态与权限规则。
|
|
156
|
+
- [产品结构与交互基线](docs/product-prototype-spec.md):记录原型背后的需求、信息架构、核心流程和交互规则;已纳入 2026-09-18 修订。
|
|
157
|
+
- [身份、工作台、总结与表格纠偏任务](.scratch/message-hub/issues/21-identity-workbench-summary-table-corrections.md):统一跟踪部署反馈与验收边界。
|
|
158
|
+
- [听记/妙记来源接入任务](.scratch/message-hub/issues/10-minutes-source-integration.md):钉钉真实契约、统一记录、产物状态、重试、撤权清理与分平台验收方案。
|
|
159
|
+
- [全功能模拟工作区任务](.scratch/message-hub/issues/13-full-synthetic-workspace.md):完整合成环境的范围、隔离边界与验收证据。
|
|
160
|
+
- [AI 每日简报实施任务](.scratch/message-hub/issues/14-ai-daily-brief.md):复用总结报告、接入工作台、定时生成及只读 Agent 的实施顺序。
|
|
161
|
+
- [界面原型说明](docs/ui-preview.md):样式、组件、可演示交互和当前限制。
|
|
162
|
+
- [界面规范](docs/ui-design-system.md):用户已认可的视觉方向,后续正式功能沿用。
|
|
163
|
+
- [领域术语](CONTEXT.md):统一业务概念,不存放实现方案。
|
|
164
|
+
- [CLI 能力核查](docs/research/cli-capabilities.md):已查证命令、限制和待实测内容。
|
|
165
|
+
- [部署手册](docs/deployment.md):安装、凭证、备份、恢复与目标机验收。
|
|
166
|
+
- [服务器部署复盘与简化方案](docs/server-deployment-simplification-plan.md):真实 ECS 问题、目标命令、公网 IP HTTPS、自动续期和分批实施计划。
|
|
167
|
+
- [需求与任务管理约定](docs/agents/issue-tracker.md):本地 Markdown 的存放规则。
|
|
168
|
+
- [领域文档约定](docs/agents/domain.md):术语与重要决策的维护规则。
|
|
169
|
+
|
|
170
|
+
开发账号验证通过不替代正式使用者账号授权;未登录、无样本和未写入统一记录的来源都仍是明确缺口。
|