fix(wa-customers): link 路径 LEFT JOIN 档案带 raw_json——WA 好友列表列空白
用户报 WA 员工列表点「好友列表」数据都不显示。根因:owner 过滤切 customer_account_link 后,link 快照只有客户侧字段;而 WA 客户表格大量列 只存在于档案 raw_json(userName/salePhone/salesNickName/createTime 等 员工侧 camelCase 字段),link 行 raw_json=None → cellText 全部落空,整表 只剩号码可看。 修:_list_owner_links 按 friend_id LEFT JOIN customer 带出 raw_json (+version)。raw_json 全局一人一份、挂谁名下内容相同;已知口径:共享 客户的员工侧字段是「最后写入员工」的记录(1,967/12,578),客户自身字段 不受影响——完美对齐需 link 补员工快照列,另行评估。 647 测试绿(新增 raw_json 透传测试)。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -108,9 +108,14 @@ async def _list_owner_links(
|
||||
.where(*conditions)
|
||||
)
|
||||
).scalar_one()
|
||||
# LEFT JOIN 档案带 raw_json(2026-09-09):WA 客户列表大量列只存在于
|
||||
# raw_json(userName/salePhone/createTime 等员工侧字段),link 快照没存;
|
||||
# raw_json 按 friend_id 全局一份,挂谁名下内容相同。注:共享客户的员工
|
||||
# 侧字段是「最后写入员工」的记录,可能非本员工(客户自身字段不受影响)。
|
||||
rows = (
|
||||
await session.execute(
|
||||
sa.select(CustomerAccountLink)
|
||||
sa.select(CustomerAccountLink, Customer.raw_json, Customer.version)
|
||||
.outerjoin(Customer, Customer.friend_id == CustomerAccountLink.friend_id)
|
||||
.where(*conditions)
|
||||
.order_by(
|
||||
sa.nullslast(CustomerAccountLink.last_chat_time.desc()),
|
||||
@@ -119,8 +124,14 @@ async def _list_owner_links(
|
||||
.limit(page_size)
|
||||
.offset((page - 1) * page_size)
|
||||
)
|
||||
).scalars().all()
|
||||
items = [CustomerOut.model_validate(r) for r in rows]
|
||||
).all()
|
||||
items = []
|
||||
for link, raw_json, version in rows:
|
||||
out = CustomerOut.model_validate(link)
|
||||
out.raw_json = raw_json
|
||||
if version is not None:
|
||||
out.version = version
|
||||
items.append(out)
|
||||
return Page(items=items, total=total, page=page, page_size=page_size)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user