feat: 重命名项目为Boardware Genius并添加运行时环境同步功能

- 将项目品牌从nanobot重命名为Boardware Genius,更新所有相关文档、注释和日志输出
- 在web服务器中添加运行时环境变量同步功能,支持授权和后端身份配置
- 更新create-instance脚本以生成运行时环境文件
- 添加实例后端绑定功能到部署控制服务
- 修改入口脚本以加载运行时环境变量
- 更新前端和认证门户的相关描述文本
This commit is contained in:
2026-03-18 15:45:42 +08:00
parent b6dd0c1623
commit 4e45f8b717
36 changed files with 315 additions and 76 deletions

View File

@ -153,6 +153,28 @@ async def _call_instance_api(base_url: str, path: str, payload: dict[str, Any])
)
async def _sync_instance_backend_binding(username: str, response: dict[str, Any]) -> dict[str, Any] | None:
local_backend = _as_object(response.get("local_backend"))
backend_id = _as_string(local_backend.get("backend_id"))
if not username.strip() or not backend_id:
return None
payload: dict[str, Any] = {
"username": username.strip(),
"backend_id": backend_id,
"authz_base_url": ISSUER,
}
backend_name = _as_string(local_backend.get("name"))
if backend_name:
payload["backend_name"] = backend_name
try:
return await _call_deploy_control("/api/instances/bind-backend", payload)
except HTTPException:
# Registration should not fail only because registry metadata sync failed.
return None
def _normalize_portal_token_response(
response: dict[str, Any],
routing: dict[str, Any],
@ -438,6 +460,11 @@ async def portal_register(req: PortalRegisterRequest) -> dict[str, Any]:
instance_payload["backend_name"] = backend_name
response = await _call_instance_api(api_base_url, "/api/auth/register", instance_payload)
bound_instance = await _sync_instance_backend_binding(username, response)
if isinstance(bound_instance, dict):
synced_record = _as_object(bound_instance.get("instance"))
if synced_record:
routing["instance"] = synced_record
return _normalize_portal_token_response(response, routing)