入口类型与应用清单
配置环境托管前端、平台内路由与普通外链,并迁移不再支持平台授权的历史外部入口。
入口类型决定应用在哪里运行以及如何取得应用身份。需要平台授权的前端使用环境托管;普通外链不签发平台应用 token。所有平台应用仍必须由 Bundle 安装到工作区。
当前项目配置版本为 3.0.0。方法目标使用 {type: "module", bundleId, moduleId},可替换接口使用 {type: "interface", name};manifest.interfaceBindings 的实现值为 {bundleId, moduleId}。模块身份直接来自 Bundle 领域目录,不从模块显示名称推导。
迁移旧项目时,在 Git 源文件中把配置版本改为 3.0.0,从目录重新选择每个模块,替换方法目标和接口绑定,然后预检、提交并发布新应用版本。已有冻结版本保持原样。CLI 发布时自动固定应用源码和 Bundle 绑定项目各自的提交;服务端只按当前 Bundle 源清单及显式依赖闭包解析引用。
当前入口类型与历史迁移
entryType | 适用场景 | 入口要求 | 授权方式 |
|---|---|---|---|
ENVIRONMENT_HOSTED_APP | 由当前环境托管、需要平台身份和能力的前端应用 | 版本内相对根路径,例如 /index.html | 标准 SDK 读取同源环境配置,通过网页授权和 PKCE 取得 token |
PLATFORM_ROUTE | 平台管理端已经内置的页面 | 以 / 开头的平台相对路径 | 继承平台管理端登录态 |
EXTERNAL_URL | 不调用平台能力的普通链接 | http:// 或 https:// 地址,不含安装态或运行态占位符 | 不签发平台应用 token;外部系统自行授权 |
TRUSTED_EXTERNAL_APP(历史类型) | 仅用于识别待迁移应用 | 旧外部地址不再作为平台授权前端入口 | 当前启动和平台授权链路拒绝,须迁移为环境托管应用 |
新开发的 React/Vite 平台应用使用 ENVIRONMENT_HOSTED_APP。普通外链仍可使用 EXTERNAL_URL;
需要平台身份和 Runtime 能力时,应把前端迁入专属平台项目并按环境托管流程发布。
定义服务仍能识别历史 TRUSTED_EXTERNAL_APP,不代表当前环境允许启动或授权。
PLATFORM_ROUTE 的“已经内置”必须由平台管理端源码和对应平台发布事实证明。创建了
PLATFORM_APPLICATION 项目、提交了 React 源码或安装了 Bundle,都不会自动注册 Manager
内置路由。通用平台应用宿主地址 /workspace/{workspaceId}/platform-app/{platformAppId} 也不是可复用的内置页面声明。
环境托管入口
在项目根目录的 baijimu.platform-application.json 中声明:
{
"schemaVersion": "3.0.0",
"entry": {
"type": "ENVIRONMENT_HOSTED_APP",
"urlTemplate": "/index.html",
"openMode": "WORKSPACE_TAB"
},
"methodDefinitions": [],
"configSchema": {
"type": "object"
},
"manifest": {},
"cardDefinitions": [],
"workflowDefinitions": []
}/index.html 相对于该版本构建产物的根目录,不是 Manager 路由或站点域名根目录。
入口必须对应构建产物中的实际文件,不能填写外部 URL、协议相对地址、查询串、hash、占位符或 .. 路径段。
不要在清单中写入域名、发布目录或 {installId};平台在安装、托管后解析实际入口,并在启动 accessUrl 中追加真实 installId。
前端构建产物必须能部署到版本子目录。Vite 设置 base: "./",静态 SPA 使用 HashRouter;
使用 BrowserRouter 时,必须从已验证的部署配置取得 releasePath 并确保服务端支持对应回退规则,不能在构建时写死发布目录。
发布后应通过实际 accessUrl 检查 HTML、JavaScript、CSS 和公共资源,以及业务首页是否渲染;
资源返回 200 但应用进入 NotFound 页面仍属于部署失败。
SDK 从当前 HTTPS 同源的 /.well-known/baijimu-platform-application.json 读取环境配置。
配置由平台托管流程提供,应用归档不能覆盖它;不得从查询参数或某个公共 SaaS 默认地址取得授权服务地址。
完整接入见 Web 接入与运行态调用。
启动地址只携带安装选择器,不携带 token、用户身份、工作区身份或密钥。installId 本身不是权限证明;
平台仍校验当前用户和精确 Bundle 安装。跨工作区分享使用 Manager 的 /bundle-app/{bundleId}/{platformAppId}。
从外部入口迁移
需要平台授权的旧 TRUSTED_EXTERNAL_APP 必须重新发布为 ENVIRONMENT_HOSTED_APP:
把前端源码纳入专属项目,改用版本内入口和同源配置 SDK 初始化,发布新的平台应用版本,
再由新 Bundle 版本引用并升级目标安装。只替换外部域名、修改入口类型或升级 SDK 不会完成迁移。
不需要平台能力的外部站点可以保留普通链接,并使用自己的后台授权。
完整步骤见 发布并纳入 Bundle。
打开方式
openMode 用于声明入口的展示位置:
CURRENT:在当前页面打开。NEW_TAB:在浏览器新标签页打开。WORKSPACE_TAB:在工作区标签中承载。
跨域应用在 WORKSPACE_TAB 中通常由 iframe 承载。应用需要同时验证自身的 frame、安全头、Cookie SameSite 和跨域策略是否允许这种运行方式。
版本清单
项目根目录的 baijimu.platform-application.json 至少要把以下内容作为同一个不可变契约提交:
schemaVersionentry.urlTemplateentry.typeentry.openModemethodDefinitionsconfigSchemamanifest- 可选的
cardDefinitions和workflowDefinitions
这些字段使用原生 JSON 类型,不能把数组或对象序列化成字符串。安装记录引用具体版本。修改入口、权限或配置结构后,应提交项目、从该 commit 发布新版本并升级安装,不能只修改已经发布版本的预期行为。