feat(api): staff-chat-stats 聚合端点(微信员工 5 数字 + 客户明细,全本地 message)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -290,3 +290,38 @@ class SyncStatusOut(BaseModel):
|
||||
|
||||
states: list[SyncStateOut]
|
||||
recent_runs: list[SyncRunOut]
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Staff chat stats (WeChat staff 5-number summary + customer detail)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
class StaffChatCustomerOut(BaseModel):
|
||||
"""单个客户在日期窗内的私聊聚合行(本地 message 表派生)。"""
|
||||
|
||||
talker_id: str
|
||||
friend_name: str # remark > nickname > real_name > talker_id
|
||||
send_count: int # 员工发出(is_send True)
|
||||
receive_count: int # 客户发出(is_send False)
|
||||
interaction_days: int # 窗口内不同日期数
|
||||
last_is_send: int | None # 1=员工最后发, 0=客户最后发, None=最后一条方向未知(不计入两率)
|
||||
last_time: int | None = None # ms-epoch,最后一条时间
|
||||
|
||||
|
||||
class StaffChatStatsSummary(BaseModel):
|
||||
"""5 个汇总数字(从 customers 派生)。"""
|
||||
|
||||
chat_count: int # 沟通人数:窗口内 ≥1 条消息的去重客户数
|
||||
effective_count: int # 有效沟通数:send≥1 且 receive≥1 的客户数
|
||||
follow_count: int # 跟进客户数:interaction_days≥2 的客户数(近似口径)
|
||||
last_reply_count: int # 员工最后回复数:last_is_send=1 的客户数
|
||||
no_reply_count: int # 未回复客户数:last_is_send=0 的客户数
|
||||
|
||||
|
||||
class StaffChatStatsOut(BaseModel):
|
||||
owner_account_id: str
|
||||
start: int # ms-epoch
|
||||
end: int # ms-epoch
|
||||
summary: StaffChatStatsSummary
|
||||
customers: list[StaffChatCustomerOut]
|
||||
|
||||
Reference in New Issue
Block a user