0.11.2: 旗舰版第三轮完善(通用聊天/企微钉钉飞书扫码登录/个人安全策略)
- 门户通用聊天:选择已批准模型直接对话,审批通过后自动开通用户级运行时 API Key(加密落库,限额取批准值),聊天经受管网关统一认证/限流/配额/审计; 会话哈希链完整性 + busy 租约防并发,失败不落库。 - 扫码登录:identity_providers 扩展 wecom/dingtalk/feishu,管理端配置 (AppID/AppSecret/AgentID/回调/自动开户/默认部门),登录页自动展示; one-time state 防 CSRF,provider_uid 全局唯一防多账号绑定,平台端点 固定公网 URL 复用 public-only 拨号。 - 个人安全策略:账号安全页(登录设备管理/吊销非当前会话/登录提醒开关/ 扫码绑定解绑),登录成功发布 security.login_detected 事件按偏好落站内信 (新增 security 类别),会话索引只存令牌摘要并惰性清理。 - 迁移 000038-000041;修复 social update 参数越界/凭据回读/路由挂载缺失; 全量测试 25 包通过,前端 admin/portal 构建通过,端到端验证完成。
This commit is contained in:
@@ -426,3 +426,31 @@ PostgreSQL `text` 列拒绝写入 → 重试循环永远失败;inbox 的 Go `l
|
||||
`POST /v1/channels/{code}/inbound`(企微签名校验/钉钉加签工具),
|
||||
绑定模型应答后按平台协议回复(企微应用消息/钉钉机器人/飞书应用),
|
||||
管理端渠道 CRUD + 连通性测试。
|
||||
|
||||
# 追加:旗舰版功能完善第三轮(0.11.2,2026-08-13)
|
||||
|
||||
1. **门户通用聊天**(迁移 000038 + `internal/portal/chat.go`):
|
||||
门户「通用聊天」页选择已批准模型直接对话。模型权限审批通过后按需自动
|
||||
开通用户级运行时 API Key(`portal_user_runtime_credentials` 加密落库,
|
||||
限额取批准申请值),聊天请求经 `SetGateway` 注入的受管网关执行,与外部
|
||||
Key 同权受审计/配额约束。会话复用哈希链消息完整性与 busy 租约防并发,
|
||||
失败不落库(无孤儿/重复消息)。
|
||||
2. **企微/钉钉/飞书扫码登录**(迁移 000039 + `internal/identity/social*.go`):
|
||||
`identity_providers` 扩展三种 kind;管理端「账号与权限 → 扫码登录」配置;
|
||||
登录页自动展示;`start/callback` 复用 SSO 路由按 kind 分发。安全设计:
|
||||
- state 为 128-bit 一次性令牌(Redis one-time,5 分钟),回调原子消费;
|
||||
- 平台 AppSecret 用 IdP 专用 KEK 加密存储,列表/视图只回 `secret_configured`;
|
||||
- `provider_uid` 全局唯一 → 平台账号不可同时绑定多个本系统账号;
|
||||
- 未绑定且未开自动开户时重定向回登录页提示,不静默开户;
|
||||
- 平台端点全部为固定公网 URL,复用 public-only 拨号客户端(无新增出站面)。
|
||||
3. **个人安全策略**(迁移 000040/000041 + 会话索引):
|
||||
- 「账号安全」页:登录设备列表(IP/UA/时间,索引只存令牌 SHA-256 摘要,
|
||||
惰性清理过期项)、吊销任意非当前会话、扫码绑定/解绑;
|
||||
- 新设备登录提醒:登录成功发布 `security.login_detected` outbox 事件,
|
||||
notification worker 依据 `portal_security_prefs.login_notify`(默认开)
|
||||
落站内信(新增 security 类别),可单独关闭;
|
||||
- 当前会话吊销返回 400(`ErrRevokeCurrentSession`)。
|
||||
4. 修复:`request.patch` → `put`(前端无 patch 方法);社交 provider 更新
|
||||
SQL `$14`→`$13` 参数越界;update 返回视图未回读凭据导致 secret_configured
|
||||
显示失真;`/api/v1/portal/chat/` 与 `/api/v1/admin/social-providers` 挂载缺失;
|
||||
start/callback 用 provider code 而非 kind 查询。
|
||||
|
||||
@@ -174,3 +174,20 @@ MinIO 对象存储与管理端/个人文件仓库;pgvector + Ollama(bge-m3)
|
||||
- **旧 Python 网关**:`llm-gateway.service`(systemd)监听 8080 已 `systemctl disable`,不再开机抢占。
|
||||
- **本机无 go 工具链**:编译/测试用 `docker run --rm -v $PWD:/src -w /src -e GOCACHE=/tmp/gocache golang:1.26.5-alpine sh -c 'go build ./...'`;集成测试加 `--network deploy_default` + `WORKBENCH_TEST_DATABASE_URL=postgres://gateway:gateway@postgres:5432/gateway?sslmode=disable`。
|
||||
- **上线门禁未过**:旧库脱敏快照迁移、影子观察、容量验收、切换/回退演练需真实生产数据与授权后方可执行。
|
||||
|
||||
---
|
||||
|
||||
## 八、0.11.2 完成情况(2026-08-13 第三轮完善)
|
||||
|
||||
| 功能 | 状态 | 说明 |
|
||||
|---|---|---|
|
||||
| 通用聊天 UI | ✅ | 门户「通用聊天」:选模型直接对话、会话管理、审批通过后自动开通用户级 Key |
|
||||
| 企微/钉钉/飞书扫码登录 | ✅ | 身份源配置 + 登录页扫码 + 账号安全绑定/解绑 + 自动开户开关 |
|
||||
| 个人安全策略 | ✅ | 登录设备管理/吊销、新设备登录提醒开关、登录通知站内信(security 类别) |
|
||||
|
||||
剩余依赖外部条件项(已有代码骨架,需真实企业凭据/数据后方可端到端验收):
|
||||
|
||||
- 扫码登录与渠道(企微/钉钉/飞书)真实平台联调:协议实现已单测覆盖(mock 平台端点),
|
||||
需企业开放平台应用凭据完成冒烟。
|
||||
- 多租户数据隔离重构:当前以部门(tenant_id)为租户维度,跨租户物理隔离(独立 schema/库)
|
||||
需明确部署形态后实施。
|
||||
|
||||
Reference in New Issue
Block a user