ForcePilot/backend/package/yuxi/channels/contract/dtos/identity_merge.py
Kris b8ac375e8e feat: 新增多渠道客服会话、身份合并与重试能力等功能
本次提交包含多项核心功能迭代与优化:
1. 新增KF客服会话类型,完善聊天类型枚举
2. 新增消息撤回操作类型与身份置信度排序方法
3. 新增控制面结果DTO与敏感字段注册表端口
4. 新增身份合并回滚、重试失败投递目标等业务能力
5. 优化Outbox投递逻辑与熔断器状态判断
6. 修复部分代码冗余与类型不匹配问题
7. 新增数据库索引并发创建与路由绑定清理逻辑
8. 优化会话关闭服务与插件重载并发控制
2026-07-09 04:21:28 +08:00

89 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""身份合并回滚 DTOC-13
定义身份合并回滚用例的命令与结果值对象,供 ``IdentityMergeService`` 与
``identity/rollback-merge`` 控制面操作使用。所有 DTO 均为
``dataclass(frozen=True)``,仅依赖标准库,用于坏合并的回滚编排。
"""
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True)
class MergeRollbackCmd:
"""合并回滚命令。
将已合并的 sibling 从 canonical 分离,恢复 sibling 独立身份。
操作不可逆sibling 的 user_id 仅在 ``restore_user_id`` 非 None 时恢复),
调用方需确保 ``canonical_identity_id`` 与 ``merged_identity_id`` 确实
存在合并关系。
字段:
canonical_identity_id: 规范身份 ID合并目标
merged_identity_id: 被回滚的 sibling identity_id合并来源
restore_user_id: 恢复 sibling 的 user_id``None`` 时不恢复
sibling 保持未绑定系统用户状态)。默认为 ``None``。
"""
canonical_identity_id: str
merged_identity_id: str
restore_user_id: str | None = None
@dataclass(frozen=True)
class MergeRecord:
"""合并回滚结果记录。
描述一次合并回滚操作的产出,供控制面 handler 序列化返回给调用方。
字段:
canonical_identity_id: 规范身份 ID。
merged_identity_id: 被回滚的 sibling identity_id。
removed_bindings: 从 canonical 移除的 bindings结构为
``{channel_type: [peer_id, ...]}``(来自 sibling 的贡献)。
migrated_session_count: 迁移回 sibling 的会话数。
canonical_version: 回滚后 canonical 的内存版本号。
sibling_version: 回滚后 sibling 的内存版本号。
"""
canonical_identity_id: str
merged_identity_id: str
removed_bindings: dict[str, list[str]]
migrated_session_count: int
canonical_version: int
sibling_version: int
@dataclass(frozen=True)
class MergeApproveCmd:
"""合并审批放行命令H-21
放行一个待审批的低置信度合并:将 ``pending_review`` 的 sibling 合并进
canonical清除 ``pending_review`` 标志。
字段:
canonical_identity_id: 规范身份 ID合并目标
merged_identity_id: 待审批的 sibling identity_id合并来源
"""
canonical_identity_id: str
merged_identity_id: str
@dataclass(frozen=True)
class MergeApproveResult:
"""合并审批放行结果记录H-21
字段:
canonical_identity_id: 规范身份 ID。
merged_identity_id: 被放行合并的 sibling identity_id。
canonical_version: 合并后 canonical 的内存版本号。
sibling_version: 清除 pending_review 后 sibling 的内存版本号。
"""
canonical_identity_id: str
merged_identity_id: str
canonical_version: int
sibling_version: int