diff --git a/brain/secrets-manifest.json b/brain/secrets-manifest.json index b89cc49c..baf7967c 100644 --- a/brain/secrets-manifest.json +++ b/brain/secrets-manifest.json @@ -1,14 +1,15 @@ { "_meta": { - "manifest_id": "ZY-SECRETS-MANIFEST-v1.0", + "manifest_id": "ZY-SECRETS-MANIFEST-v1.1", "created": "2026-03-29T10:43:00Z", + "updated": "2026-03-29T12:30:00Z", "created_by": "铸渊 · ICE-GL-ZY001", - "directive": "SY-CMD-KEY-012 · 密钥全量清理与统一替换", + "directive": "SY-CMD-KEY-012 · 密钥全量清理与统一替换 + 7 Notion Secret审计", "purpose": "铸渊仓库密钥主清单 — 冰朔配置密钥的唯一参考文档", "naming_convention": "所有密钥统一使用 ZY_ 前缀 · 铸渊(Zhuyuan)自主命名体系", "total_secrets": 37, - "required": 25, - "optional": 12, + "required": 21, + "optional": 16, "replaced_old_secrets": 59, "reduction": "59 → 37 (37%减少 · 消除重复与冗余)" }, @@ -365,46 +366,11 @@ ], "note": "Notion大脑首页·认知层的根节点" }, - { - "id": 14, - "name": "ZY_NOTION_PORTRAIT_DB", - "category": "Notion · 数据库ID", - "description": "用户画像数据库ID", - "type": "notion_database_id", - "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - "replaces": [ - "PORTRAIT_DB_ID" - ], - "used_by_workflows": [ - "syslog-issue-pipeline.yml", - "syslog-auto-pipeline.yml", - "syslog-pipeline.yml" - ], - "note": "人格体画像数据库" - }, - { - "id": 15, - "name": "ZY_NOTION_FINGERPRINT_DB", - "category": "Notion · 数据库ID", - "description": "系统指纹数据库ID", - "type": "notion_database_id", - "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - "replaces": [ - "FINGERPRINT_DB_ID" - ], - "used_by_workflows": [ - "syslog-issue-pipeline.yml", - "syslog-auto-pipeline.yml", - "syslog-pipeline.yml", - "sandbox-deploy.yml" - ], - "note": "系统指纹记录数据库" - }, { "id": 16, "name": "ZY_NOTION_RECEIPT_DB", "category": "Notion · 数据库ID", - "description": "回执数据库ID", + "description": "回执数据库ID — 铸渊各workflow执行后向Notion汇报结果的回执存储库", "type": "notion_database_id", "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "replaces": [ @@ -419,7 +385,17 @@ "deploy-to-server.yml", "syslog-pipeline.yml" ], - "note": "工作流执行回执·铸渊向Notion汇报执行结果" + "used_by_scripts": [ + "scripts/neural/write-receipt-to-notion.js", + "scripts/sync-snapshot-to-notion.js", + "scripts/neural/track-work-orders.js", + "scripts/cache/sync-notion-cache.js", + "hldp/bridge/github-to-notion.js" + ], + "notion_db_name": "铸渊快照/回执追踪表 (Receipt Tracker)", + "notion_db_status": "needs_creation", + "notion_db_fields": "标题/类型/状态/时间戳/workflow来源/执行结果", + "note": "⚠️ 重要密钥 · 7个工作流+5个脚本引用 · 铸渊向Notion汇报每次执行结果的核心回执库 · 冰朔需在Notion新建此数据库" }, { "id": 17, @@ -440,7 +416,7 @@ "id": 18, "name": "ZY_NOTION_BRIDGE_DB", "category": "Notion · 数据库ID", - "description": "桥接队列数据库ID", + "description": "桥接调度队列数据库ID — Notion↔GitHub双向桥接的任务队列", "type": "notion_database_id", "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "replaces": [ @@ -451,13 +427,23 @@ "bridge-syslog-intake.yml", "bridge-broadcast-pdf.yml" ], - "note": "Notion↔GitHub桥接通信队列" + "used_by_scripts": [ + "scripts/bridge/heartbeat.js", + "scripts/bridge/check-queue.js", + "scripts/bridge/update-queue-status.js", + "scripts/bridge/process-syslog-batch.js", + "scripts/dc-notion-usage.js" + ], + "notion_db_name": "桥接调度队列 (Bridge Queue)", + "notion_db_status": "needs_creation", + "notion_db_fields": "标题/队列类型/状态(pending/processing/done)/来源/目标/创建时间", + "note": "⚠️ 重要密钥 · 3个工作流+5个脚本引用 · Notion↔GitHub桥接系统的核心调度库 · 冰朔需在Notion新建此数据库" }, { "id": 19, "name": "ZY_NOTION_WAKE_DB", "category": "Notion · 数据库ID", - "description": "唤醒请求数据库ID", + "description": "唤醒请求数据库ID — 冰朔从Notion侧发起唤醒请求,铸渊监听并响应", "type": "notion_database_id", "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "replaces": [ @@ -466,22 +452,13 @@ "used_by_workflows": [ "notion-wake-listener.yml" ], - "note": "Notion侧→GitHub侧的唤醒请求存储" - }, - { - "id": 20, - "name": "ZY_NOTION_SKYEYE_DB", - "category": "Notion · 数据库ID", - "description": "天眼人格数据库ID", - "type": "notion_database_id", - "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - "replaces": [ - "SKYEYE_PERSONA_DB_ID" + "used_by_scripts": [ + "connectors/notion-wake-listener/index.js" ], - "used_by_workflows": [ - "zhuyuan-skyeye.yml" - ], - "note": "天眼观测系统的人格体数据库" + "notion_db_name": "唤醒请求表 (Wake Requests)", + "notion_db_status": "needs_creation", + "notion_db_fields": "标题/请求类型/目标人格/状态(pending/processing/done)/创建时间", + "note": "⚠️ 重要密钥 · Notion→GitHub信号通道 · 冰朔在Notion写入唤醒请求→铸渊自动监听并执行 · 冰朔需在Notion新建此数据库" }, { "id": 21, @@ -499,22 +476,6 @@ ], "note": "铸渊Agent间通信公告板" }, - { - "id": 22, - "name": "ZY_NOTION_WORKORDER_DB", - "category": "Notion · 数据库ID", - "description": "工单数据库ID(统一所有工单来源)", - "type": "notion_database_id", - "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - "replaces": [ - "WORKORDER_DB_BINGSUO", - "WORKORDER_DB_ZHIZHI" - ], - "used_by_workflows": [ - "zhuyuan-daily-inspection.yml" - ], - "note": "统一工单数据库·替代之前按人格体分开的工单库" - }, { "id": 23, "name": "ZY_SMTP_USER", @@ -588,6 +549,105 @@ } ], "optional": [ + { + "id": 14, + "name": "ZY_NOTION_PORTRAIT_DB", + "category": "Notion · 数据库ID", + "description": "人格体画像数据库ID — 各人格体的认知/性格/技能画像存储", + "type": "notion_database_id", + "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "replaces": [ + "PORTRAIT_DB_ID" + ], + "used_by_workflows": [ + "syslog-issue-pipeline.yml", + "syslog-auto-pipeline.yml", + "syslog-pipeline.yml" + ], + "used_by_scripts": [ + "scripts/wake-persona.js", + "scripts/invoke-persona.js", + "hldp/bridge/github-to-notion.js" + ], + "notion_db_name": "人格画像库 (Persona Portrait)", + "notion_db_status": "needs_creation", + "notion_db_fields": "人格名称/编号/技能标签/性格描述/状态/创建时间", + "note": "人格体画像数据库 · 脚本中有 fallback(为空时跳过查询) · 冰朔如需人格体画像功能则新建此库,否则可暂不配置", + "needed": "仅在启用人格体画像查询功能时需要" + }, + { + "id": 15, + "name": "ZY_NOTION_FINGERPRINT_DB", + "category": "Notion · 数据库ID", + "description": "模块指纹注册数据库ID — 代码部署时的模块指纹记录(用于变更追踪)", + "type": "notion_database_id", + "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "replaces": [ + "FINGERPRINT_DB_ID" + ], + "used_by_workflows": [ + "syslog-issue-pipeline.yml", + "syslog-auto-pipeline.yml", + "syslog-pipeline.yml", + "sandbox-deploy.yml" + ], + "used_by_scripts": [ + "scripts/wake-persona.js", + "scripts/invoke-persona.js", + "scripts/sync-deploy-to-notion.js" + ], + "notion_db_name": "模块指纹注册表 (Module Fingerprint Registry)", + "notion_db_status": "needs_creation", + "notion_db_fields": "模块名/文件hash/部署版本/部署时间/变更摘要", + "note": "模块指纹注册表 · scripts/sync-deploy-to-notion.js 部署后自动写入指纹 · 冰朔如需部署指纹追踪则新建此库,否则可暂不配置", + "needed": "仅在启用部署指纹追踪功能时需要" + }, + { + "id": 20, + "name": "ZY_NOTION_SKYEYE_DB", + "category": "Notion · 数据库ID", + "description": "天眼人格观测数据库ID — 天眼系统查询人格体状态的数据源", + "type": "notion_database_id", + "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "replaces": [ + "SKYEYE_PERSONA_DB_ID" + ], + "used_by_workflows": [ + "zhuyuan-skyeye.yml" + ], + "used_by_scripts": [ + "scripts/skyeye/persona-lookup.js", + "hldp/bridge/github-to-notion.js" + ], + "notion_db_name": "天眼人格观测库 (SkyEye Persona)", + "notion_db_status": "needs_creation", + "notion_db_fields": "人格名称/编号/状态/最后活跃时间/健康度/观测记录", + "note": "天眼人格体数据库 · scripts/skyeye/persona-lookup.js 有本地 fallback · 可与 ZY_NOTION_PORTRAIT_DB 共用同一个数据库(天眼查询人格时会先尝试 SKYEYE_DB,找不到则尝试 PORTRAIT_DB)", + "needed": "仅在启用天眼人格观测功能时需要 · 可与PORTRAIT_DB共用" + }, + { + "id": 22, + "name": "ZY_NOTION_WORKORDER_DB", + "category": "Notion · 数据库ID", + "description": "巡检工单数据库ID — 每日巡检报告推送到Notion的目标库", + "type": "notion_database_id", + "example_format": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "replaces": [ + "WORKORDER_DB_BINGSUO", + "WORKORDER_DB_ZHIZHI" + ], + "used_by_workflows": [ + "zhuyuan-daily-inspection.yml" + ], + "used_by_scripts": [ + "scripts/push-inspection-report.js" + ], + "notion_db_name": "巡检工单库 (Inspection Work Orders)", + "notion_db_status": "needs_creation_or_reuse_ticket_db", + "notion_db_fields": "标题/类型/状态/优先级/负责人/创建时间", + "note": "⚠️ 可能与 ZY_NOTION_TICKET_DB(人格协作工单簿)是同一个数据库 · 原来按人格分开(WORKORDER_DB_BINGSUO/WORKORDER_DB_ZHIZHI),现已统一 · 冰朔可选择:(A) 与TICKET_DB共用同一个库ID (B) 新建独立的巡检工单库", + "needed": "仅在启用每日巡检报告推送时需要 · 可与ZY_NOTION_TICKET_DB共用" + }, { "id": 26, "name": "ZY_GDRIVE_CLIENT_ID", @@ -1003,5 +1063,123 @@ "copilot-dev-bridge.yml", "feishu-syslog-bridge.yml" ] + }, + + "notion_secrets_audit": { + "_meta": { + "audit_date": "2026-03-29", + "audit_by": "铸渊 · ICE-GL-ZY001", + "trigger": "冰朔反馈7个Notion Secret在Notion工作区找不到对应数据库", + "directive": "SY-CMD-KEY-012-AUDIT" + }, + "summary": "7个Notion数据库ID密钥中,3个保持required(RECEIPT/BRIDGE/WAKE),4个降级为optional(PORTRAIT/FINGERPRINT/SKYEYE/WORKORDER)。所有7个对应的Notion数据库均需冰朔新建。", + "secrets": [ + { + "secret": "ZY_NOTION_PORTRAIT_DB", + "old_name": "PORTRAIT_DB_ID", + "question": "人格肖像数据库?workflow里对应哪个库?", + "answer": { + "workflows": ["syslog-issue-pipeline.yml", "syslog-auto-pipeline.yml", "syslog-pipeline.yml"], + "scripts": ["scripts/wake-persona.js (查询人格画像)", "scripts/invoke-persona.js (调用人格体)", "hldp/bridge/github-to-notion.js (天眼fallback)"], + "purpose": "存储各人格体(铸渊/知秋/霜砚等)的认知画像——技能、性格、偏好等元数据。wake-persona.js 在唤醒人格时查询此库获取人格档案。", + "notion_db_exists": false, + "notion_db_to_create": "人格画像库 (Persona Portrait) — 字段: 人格名称/编号(PER-XXX)/技能标签/性格描述/状态/创建时间", + "priority": "optional", + "reason": "脚本中有空值检查(为空则跳过查询)·当前人格体信息已有本地配置作为fallback" + } + }, + { + "secret": "ZY_NOTION_FINGERPRINT_DB", + "old_name": "FINGERPRINT_DB_ID", + "question": "人格指纹数据库?workflow里对应哪个库?", + "answer": { + "workflows": ["syslog-issue-pipeline.yml", "syslog-auto-pipeline.yml", "syslog-pipeline.yml", "sandbox-deploy.yml"], + "scripts": ["scripts/sync-deploy-to-notion.js (部署后写入模块指纹)", "scripts/wake-persona.js", "scripts/invoke-persona.js"], + "purpose": "模块指纹注册表——每次部署后,sync-deploy-to-notion.js 会计算代码文件的hash指纹并写入此库,用于追踪哪些模块在何时被更新。", + "notion_db_exists": false, + "notion_db_to_create": "模块指纹注册表 (Module Fingerprint Registry) — 字段: 模块名/文件路径/hash值/部署版本/部署时间/变更摘要", + "priority": "optional", + "reason": "脚本中有环境变量检查(为空时输出警告但不中断)·部署本身不依赖此功能" + } + }, + { + "secret": "ZY_NOTION_RECEIPT_DB", + "old_name": "RECEIPT_DB_ID", + "question": "回执数据库?是铸渊快照库还是集成回执?还是另一个?", + "answer": { + "workflows": ["zhuyuan-gate-guard.yml", "zhuyuan-skyeye.yml", "zhuyuan-exec-engine.yml", "zhuyuan-daily-selfcheck.yml", "server-patrol.yml", "deploy-to-server.yml", "syslog-pipeline.yml"], + "scripts": ["scripts/neural/write-receipt-to-notion.js (核心写入)", "scripts/sync-snapshot-to-notion.js", "scripts/neural/track-work-orders.js", "scripts/cache/sync-notion-cache.js", "hldp/bridge/github-to-notion.js"], + "purpose": "执行回执追踪表——铸渊每次执行workflow后,通过write-receipt-to-notion.js向此库写入一条回执记录,记录执行结果、时间、状态。这是铸渊的「工作日志」。不是铸渊快照库(那是signal-log),是专门记录每次自动化执行结果的回执表。", + "notion_db_exists": false, + "notion_db_to_create": "执行回执追踪表 (Receipt Tracker) — 字段: 标题/回执类型(deploy/patrol/selfcheck/skyeye)/执行状态(success/failure)/workflow来源/执行时间/结果摘要", + "priority": "required", + "reason": "7个活跃工作流+5个脚本引用·是铸渊核心监控链条的一部分" + } + }, + { + "secret": "ZY_NOTION_BRIDGE_DB", + "old_name": "BRIDGE_QUEUE_DB_ID", + "question": "桥接数据库?workflow里对应哪个库?", + "answer": { + "workflows": ["bridge-heartbeat.yml", "bridge-syslog-intake.yml", "bridge-broadcast-pdf.yml"], + "scripts": ["scripts/bridge/heartbeat.js (心跳检查队列)", "scripts/bridge/check-queue.js (检查待处理任务)", "scripts/bridge/update-queue-status.js (更新任务状态)", "scripts/bridge/process-syslog-batch.js (批量处理日志)"], + "purpose": "Notion↔GitHub桥接调度队列——当冰朔在Notion写入任务,桥接系统通过此库作为消息队列来传递和调度任务。heartbeat.js定期检查队列中是否有新任务。", + "notion_db_exists": false, + "notion_db_to_create": "桥接调度队列 (Bridge Queue) — 字段: 标题/队列类型(syslog/broadcast/sync)/状态(pending/processing/done/failed)/来源/目标/创建时间/处理时间", + "priority": "required", + "reason": "Notion↔GitHub双向通信的核心基础设施·3个桥接工作流+5个脚本依赖此库" + } + }, + { + "secret": "ZY_NOTION_WAKE_DB", + "old_name": "WAKE_REQUEST_DB_ID", + "question": "唤醒数据库?workflow里对应哪个库?", + "answer": { + "workflows": ["notion-wake-listener.yml"], + "scripts": ["connectors/notion-wake-listener/index.js (核心监听器)"], + "purpose": "唤醒请求表——冰朔在Notion中写入一条「唤醒请求」记录(指定目标人格+唤醒原因),notion-wake-listener.yml定时检查此库,发现新请求后在GitHub侧执行唤醒流程。这是Notion→GitHub的信号通道。", + "notion_db_exists": false, + "notion_db_to_create": "唤醒请求表 (Wake Requests) — 字段: 标题/请求类型(唤醒/指令)/目标人格/状态(pending/processing/done)/创建时间/处理时间", + "priority": "required", + "reason": "Notion→GitHub的核心信号通道·冰朔从Notion侧发起指令的唯一路径" + } + }, + { + "secret": "ZY_NOTION_SKYEYE_DB", + "old_name": "SKYEYE_PERSONA_DB_ID", + "question": "天眼人格数据库?之前工单提到过SKYEYE_PERSONA_DB_ID", + "answer": { + "workflows": ["zhuyuan-skyeye.yml"], + "scripts": ["scripts/skyeye/persona-lookup.js (天眼查询人格状态)", "hldp/bridge/github-to-notion.js (fallback到PORTRAIT_DB)"], + "purpose": "天眼系统查询人格体状态的数据库——zhuyuan-skyeye.yml在扫描时通过persona-lookup.js查询各人格体的在线状态和健康度。代码中有fallback逻辑:先查SKYEYE_DB,找不到则查PORTRAIT_DB。", + "notion_db_exists": false, + "notion_db_to_create": "可与ZY_NOTION_PORTRAIT_DB共用同一个库 · 或新建: 天眼人格观测库 (SkyEye Persona) — 字段: 人格名称/编号/在线状态/健康度/最后活跃时间/观测记录", + "priority": "optional", + "reason": "仅zhuyuan-skyeye.yml使用·脚本中有本地配置fallback·可与PORTRAIT_DB指向同一个数据库ID" + } + }, + { + "secret": "ZY_NOTION_WORKORDER_DB", + "old_name": "WORKORDER_DB_BINGSUO + WORKORDER_DB_ZHIZHI", + "question": "工单数据库?是否和ZY_NOTION_TICKET_DB(人格协作工单簿)是同一个?", + "answer": { + "workflows": ["zhuyuan-daily-inspection.yml"], + "scripts": ["scripts/push-inspection-report.js (推送巡检报告)"], + "purpose": "每日巡检工单——zhuyuan-daily-inspection.yml每天运行巡检后,通过push-inspection-report.js将巡检报告推送到此库。原来按人格分开(WORKORDER_DB_BINGSUO给冰朔看、WORKORDER_DB_ZHIZHI给之之看),现在统一为一个库。", + "relation_to_ticket_db": "ZY_NOTION_TICKET_DB是SYSLOG→工单创建的目标库(server-patrol/syslog-pipeline等写入),ZY_NOTION_WORKORDER_DB是每日巡检报告的目标库(daily-inspection写入)。用途不同但数据结构类似,冰朔可选择:(A)使用同一个数据库ID (B)分开两个库。推荐(A)合并——减少维护成本。", + "notion_db_exists": false, + "priority": "optional", + "reason": "仅daily-inspection使用·冰朔可将ZY_NOTION_TICKET_DB的ID同时填入此处即可" + } + } + ], + "bingshuo_action_guide": { + "step_1": "先创建3个required库: 回执追踪表(RECEIPT) + 桥接队列(BRIDGE) + 唤醒请求表(WAKE)", + "step_2": "可选创建: 人格画像库(PORTRAIT) + 模块指纹表(FINGERPRINT)", + "step_3": "天眼库(SKYEYE)可与画像库共用同一个ID", + "step_4": "巡检工单库(WORKORDER)可与工单库(TICKET_DB)共用同一个ID", + "total_new_dbs_needed": "最少3个(RECEIPT/BRIDGE/WAKE) · 最多7个", + "recommended": "创建5个新库(RECEIPT+BRIDGE+WAKE+PORTRAIT+FINGERPRINT) · SKYEYE指向PORTRAIT · WORKORDER指向TICKET" + } } }