按模块启用功能

实例级功能组合如何决定门户入口,参数配置、校验步骤与生效范围。

发布与治理 3463 字 ·约 10 分钟读完 ·更新于 2026-10-28

当前交付把 PKG-002 的声明校验接到平台启动、服务端 API、后台执行资格和门户。连接器CLI/client门禁也已另行完成并验证,详见文末链接。控制范围限于所列运行入口;真实外部服务探测、独立证据服务和隐私执行产品不会因此变为可用。

选择与启动

未指定 -product-config 时保留原有平台行为。显式组合只用于 serve;init 等管理命令不接受该声明。仅指定 -product-catalog 而没有部署声明会拒绝启动。

先以 datanous-package validate -catalog profiles/product-packages.json -config profiles/deployment-ingestion-governance.example.json 校验声明。样例只含合成部署声明,不含密钥。校验通过表示目录与声明一致,不表示 PostgreSQL、连接器或外部服务已连通。SCIM 模块必须同时选择并配置 OIDC,不能把 SCIM 当作独立身份入口。

候选构建方式:

go build -o .runtime/pkg003-platform-candidate ./cmd/platform
go build -o .runtime/pkg002-datanous-package ./cmd/datanous-package

启动候选平台时,在已有隔离测试启动命令后添加:

-product-config profiles/deployment-ingestion-governance.example.json
-product-catalog profiles/product-packages.json

以上是候选版本接线,不是运行中 8090 的升级指令。必须使用新建隔离测试库、专属私有密钥目录、空闲非 8090 端口和私有前端产物;不能直接拿旧 bin/platform、实际数据库或运行密钥试验。此次验证没有替换运行中二进制或 web/dist。

预检发生在读取数据库配置文件、打开数据库和加载密钥之前。错误只返回固定诊断码,不回显声明路径、密码或内部端点:

诊断码含义
product_config_serve_only非 serve 命令传入组合声明
product_config_required仅给出产品目录,没有部署声明
product_config_invalid声明、目录、依赖或可用性检查失败
product_startup_feature_disabled未选模块却启用相应运行配置

未选择 ingestion-governance 时,-ingestion-scheduler 拒绝启动;未选择 OIDC、SCIM、EVM 时,相应配置参数或环境配置也拒绝启动。目录中规划中的模块不能靠声明自报服务可用而绕过预检。

服务端边界

组合信息是实例级选择,不替代企业隔离、角色权限、签名、CSRF 或现有租约检查。选择一个模块不会给当前人员增加权限。

  • shared-core 保留身份、人员与空间治理、审计证据、监控及接入状态。
  • ingestion-governance 控制目录、资产、数据源、文件授权、加工、分类分级、发布审核、调度与增量、连接器管理及对应 agent 资产任务入口。
  • collaboration 控制合约、计算任务、结果交付、策略模板与对应 agent 任务入口。
  • identity-oidc、identity-scim、evm-commitment 分别控制其入口;真实外部节点接口仍不属于本次可用组合。

明确组合模式采用方法和完整路径表,未知 API、未选模块和异常路径返回 403 product_module_disabled,在身份/agent 分派和数据库业务处理前结束。工作区在查询前投影关闭模块的列表;能力页不查询未选 EVM 的链表。agent 协商按模块收窄能力,任务服务入口也检查资格,不能仅靠菜单隐藏实现门禁。

后台 Sweep 分开维护采集和协作任务。关闭模块时,对该模块已有任务暂停相关维护,不伪造取消或完成;重新选择模块后,继续受原有租约和代际围栏约束。链 worker、链检查点以及采集准备、批执行、调度入口均有内部禁用保护。

门户行为

登录及 /api/me 返回不含配置秘密的 productComposition:版本为 1,模式为 legacy 或 explicit,后者列出已启用模块。任何已认证角色读取相同实例模块信息,但菜单仍受原有角色权限限制。

门户以这份信息同步处理导航、默认页、刷新请求、治理页签、数据源范围操作和弹窗:

  • evidence/core 组合不请求产品、合约、任务列表,也不展示目录、资产、连接器和协作入口。
  • ingestion-governance 组合保留目录、资产和连接器,不展示申请合约、策略模板或未启用的链页签。
  • 当前页面或跨页入口不再可用时,回到角色可访问的页面;未启用模块的操作弹窗不渲染。
  • 老后端完全没有该字段时保留 legacy 兼容。字段存在但版本未知、结构错误、模块重复/未知时明确显示错误并清空业务会话视图,不能自动全开。
  • 登录与轮询共用会话代际守卫;组合 ref 在刷新请求前同步更新。上一账号的成功、错误或畸形响应不能覆盖新账号的组合。

有界验证与证据

后端最终定向 race 记录为 .runtime/pkg003-gate-final.log,覆盖产品声明/CLI、启动预检、完整路由表及早拒绝。静态源码扫描覆盖 82 个完整 API 路径字面量;动态路径按已登记方法和段模板检查,不宣称覆盖所有业务权限排列。

父任务的隔离 PostgreSQL 验证记录:

  • .runtime/pkg003-projection-platform-replay.jsonl:3 项组合投影/服务资格/Sweep 测试,以及 3 项既有资产、发布清单和租约回归通过。
  • .runtime/pkg003-disabled-chain-projection.jsonl:实际暂时重命名本测试 schema 的链表,禁用链能力仍能返回,证明不会访问禁用模块链表。
  • .runtime/pkg003-worker-admission-final.jsonl:未选采集模块时,准备、批执行和调度在 nil 数据库前拒绝。
  • .runtime/pkg003-session-composition.jsonl:真实合成登录与 me 返回一致的组合信息。

门户定向测试 .runtime/pkg003-portal-tests.log 共 15 项通过(8 项组合测试、7 项既有会话代际测试),类型检查通过,私有前端构建目录 .runtime/pkg003-portal-web-dist。新增已知依赖检查初次出现 TypeScript 闭包类型收窄错误,已修复并保留 .runtime/pkg003-portal-typecheck-dependency-initial.log;最终检查成功。

独立并行任务已完成 ingestion/evidence 两套私有 schema 的管理员浏览器烟测,结果在 .runtime/pkg003-ui-smoke-result.json,日志在 .runtime/pkg003-ui-smoke.log。两个场景均验证默认页、菜单、治理页签、数据源范围按钮、品牌导航回退和一次自动刷新;登录后没有未选模块请求。evidence 的工作区隐藏了 fixture 中确实存在的连接器,返回数量为 0。预登录 OIDC 状态正常返回 200/false,登录动作仍按身份模块门禁。四张最终截图以 .runtime/pkg003-ui- 开头。fixture、专属 schema 和临时凭据已清理。本轮只覆盖这两个组合的核心管理员操作,不扩展为全角色或全业务流程验收。

首轮编译曾发现 Products 字段与已有方法同名,修复为 Composition,原失败日志保留。最终证据使用修复后的源码,不隐去这次失败,也不重复运行全平台漫长测试。

连接器补充:cmd/connector现已支持显式组合启动预检、协作能力/领取/执行限制,以及上传监听与处理双门禁,见连接器记录。这是运行入口控制,不是商业许可校验,也不隔离所有独立CLI和公开纯函数。

这一步卡住了?请通过首页客服微信沟通。 ← 返回文档中心