新增完整的 channels 限界上下文模块,包含契约层、领域核心层、应用服务、管道编排、插件体系、基础设施组合根等全层级代码,新增飞书与微信 iLink 渠道插件基础结构,补充各类 DTO、端口协议与领域服务实现。
68 lines
1.7 KiB
Python
68 lines
1.7 KiB
Python
"""栅栏 DTO。
|
||
|
||
定义并发回复栅栏相关的不可变值对象,包括栅栏裁决、栅栏代际与栅栏
|
||
上下文。所有 DTO 均为 ``dataclass(frozen=True)``,仅依赖标准库,
|
||
用于并发回复栅栏的代际控制与过期裁决(FR-23)。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from dataclasses import dataclass
|
||
from datetime import datetime
|
||
|
||
|
||
@dataclass(frozen=True)
|
||
class FenceVerdict:
|
||
"""栅栏裁决。
|
||
|
||
描述栅栏对一次回复的过期裁决,包括是否过期、当前代际与可选的
|
||
过期代际,用于决定是否抑制过期回复。
|
||
|
||
字段:
|
||
is_stale: 是否过期。
|
||
current_generation: 当前代际。
|
||
stale_generation: 过期代际(可选)。
|
||
"""
|
||
|
||
is_stale: bool
|
||
current_generation: int
|
||
stale_generation: int | None = None
|
||
|
||
|
||
@dataclass(frozen=True)
|
||
class FenceGeneration:
|
||
"""栅栏代际。
|
||
|
||
描述会话的栅栏代际状态,包括当前代际与可见代际,用于代际比较与
|
||
过期判定。
|
||
|
||
字段:
|
||
conversation_id: 会话 ID。
|
||
current_generation: 当前代际。
|
||
visible_generation: 可见代际。
|
||
"""
|
||
|
||
conversation_id: str
|
||
current_generation: int
|
||
visible_generation: int
|
||
|
||
|
||
@dataclass(frozen=True)
|
||
class FenceContext:
|
||
"""栅栏上下文。
|
||
|
||
描述栅栏的执行上下文,包括会话 ID、代际、起始时间与 TTL,用于
|
||
栅栏生命周期管理与过期清理。
|
||
|
||
字段:
|
||
conversation_id: 会话 ID。
|
||
generation: 代际。
|
||
started_at: 起始时间。
|
||
ttl_seconds: TTL(秒,默认 120,与配置项 ``fence_ttl_seconds`` 一致)。
|
||
"""
|
||
|
||
conversation_id: str
|
||
generation: int
|
||
started_at: datetime
|
||
ttl_seconds: int = 120
|