ForcePilot/backend/package/yuxi/channels/contract/dtos/credential_result.py
Kris 00092c818e chore: 批量代码优化与规范完善
本次提交包含多项代码优化与规范修正:
1. 文档与注释优化:修正注释术语、补充注解与FR编号
2. 代码格式调整:统一空格、换行与缩进规范
3. 类型与接口完善:补充__all__导出、修正返回类型注解
4. 错误处理增强:新增领域错误类与校验逻辑
5. 依赖与导入调整:修复路径引用、统一时区导入
6. 协议与契约更新:完善接口文档与一致性注解
2026-07-03 19:18:13 +08:00

50 lines
2.0 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.

"""凭据落库结果 DTO。
供扫码登录 finalize 阶段返回统一携带最终落库的渠道账户、onboarding
状态与失败原因,供应用层驱动后续 onboarding 流转与控制面响应
(渠道账号运营流程优化 Task 1 契约层扩展)。
"""
from __future__ import annotations
from dataclasses import dataclass
from yuxi.channels.contract.dtos.channel import ChannelAccount, OnboardingStatus
from yuxi.channels.contract.errors import ValidationError
@dataclass(frozen=True)
class FinalizeResult:
"""扫码登录 finalize 结果。
描述扫码登录凭据落库finalize阶段的返回结果携带最终落库的
渠道账户与 onboarding 状态,供应用层决定下一步 onboarding 流转
(如触发配置校验、连接测试或直接置为 ACTIVE
字段:
account: 已落库的渠道账户(``ChannelAccount``)。成功时携带
加密后的配置;失败时仍可能携带已创建的占位账户以便上游
重试或清理。
onboarding_status: 账户 onboarding 状态(``OnboardingStatus``)。
成功落库通常为 ``CONFIGURED`` 或 ``VERIFIED``;接入失败为
``FAILED``。``StrEnum`` 兼容 JSON 序列化,可直接用于控制面
响应与持久化层字符串字段。
failure_reason: 失败原因(失败时填充,成功时为 ``None``)。
关联约束INV-8必填字段在 ``__post_init__`` 中校验,端口 @pre
"""
account: ChannelAccount
onboarding_status: OnboardingStatus
failure_reason: str | None = None
def __post_init__(self) -> None:
"""校验 ``account`` 不可为 ``None``INV-8 / 端口 @pre
``account`` 为 finalize 流程的核心载体,``None`` 表示上游未
正确构造账户对象,在契约层即拦截,避免空值流入应用层
onboarding 管道后才暴露。
"""
if self.account is None:
raise ValidationError("account", "must not be None")