feat: full-field display for group/call/sms (raw_json + drawers)
Mirrors the Customer/Message/Staff/Accounts pattern: backend exposes the
verbatim upstream record on the response schema; the frontend list shows
source-matching columns and a row-click opens an all-fields el-drawer with
Chinese-labeled camelCase keys (unknown keys roll up under 其他).
Backend (yunke-server/app/api/schemas.py)
- GroupOut / PhoneCallOut / SmsOut: add raw_json: dict[str, Any] | None
(Pydantic v2 from_attributes picks up the existing ORM column).
- Tests: extend tests/test_api_{groups,calls,sms}.py with a per-schema
raw_json round-trip assertion (phone_call + voice_call payload shapes
both covered for calls).
Frontend (yunkes)
- src/utils/{groupFields,callFields,smsFields}.ts: 中文 label map +
grouped sections + readField (structured-column preference) +
toDisplayField (image / time / audio / bool / status / direction).
- src/api/types.ts: add raw_json to Group / PhoneCall / Sms.
- src/views/GroupList.vue: richer columns (群名/群ID/成员数/群主/归属微信/
消息数/最近聊天/渠道) + all-fields drawer (chatRoomId/chatRoomName,
memberCount/memberIds, headImageUrl, wechatId/wechatNickName,
userName/userPhone/userId, messageCount/ownMessageCount,
lossMembers/addMembers, lastChatTime/updateTime).
- src/views/CallList.vue: keeps existing columns + adds all-fields drawer
(id/startCallTime, callDuration/callSeconds/ringTime, callStatus/
incomingCall, userId/userIdName/departmentId, callNumber/simPhone/
simNumber/imei, recordFile/isUpload/downloadCount/aiAsr/qcStatus/
planCustomerName/version + voice-call extras ossFileName/duration/
startTime/endTime/remark). Drawer plays recording inline via audio
render kind; existing play-record dialog retained.
- src/views/SmsList.vue: keeps existing columns + adds all-fields drawer
(id/customerPhone, sms/smsSub, sender, direction, userId/
senderDepartment, receiveName, createTime, simPhone/simNumber, source)
with a full-body preview block at the top.
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -92,6 +92,14 @@ export interface Group {
|
||||
message_count?: number | null
|
||||
/** ms-epoch of most recent message */
|
||||
last_chat_time?: number | null
|
||||
/**
|
||||
* Verbatim upstream chatroom record (camelCase keys: chatRoomId/chatRoomName,
|
||||
* memberCount/memberIds, headImageUrl, wechatId/wechatNickName, userName/
|
||||
* userPhone, userId, messageCount/ownMessageCount, lossMembers/addMembers,
|
||||
* lastChatTime/updateTime, ...). Surfaced so the all-fields drawer can
|
||||
* render every column the 云客 群管理 page shows.
|
||||
*/
|
||||
raw_json?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
/** Member of a chat group (mirrors backend GroupMemberOut). */
|
||||
@@ -126,6 +134,14 @@ export interface PhoneCall {
|
||||
sim_phone?: string | null
|
||||
/** OSS URL of the recording — present only when a recording exists. */
|
||||
record_file?: string | null
|
||||
/**
|
||||
* Verbatim upstream call record (camelCase keys: id/startCallTime,
|
||||
* callDuration/callSeconds/ringTime, callStatus/incomingCall, userId/
|
||||
* userIdName/departmentId, callNumber, simPhone/simNumber/imei, recordFile,
|
||||
* isUpload/downloadCount/aiAsr/qcStatus/planCustomerName/version; voice-call
|
||||
* records also carry ossFileName/duration/startTime/endTime/remark).
|
||||
*/
|
||||
raw_json?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
/** SMS log row (mirrors backend SmsOut). */
|
||||
@@ -143,6 +159,13 @@ export interface Sms {
|
||||
/** ms-epoch */
|
||||
create_time?: number | null
|
||||
sim_phone?: string | null
|
||||
/**
|
||||
* Verbatim upstream SMS record (camelCase keys: id/customerPhone, sms/smsSub,
|
||||
* sender, direction, userId, senderDepartment, receiveName, createTime,
|
||||
* simPhone/simNumber, source, ...). Surfaced so the all-fields drawer can
|
||||
* render every column the 云客 短信记录 page shows.
|
||||
*/
|
||||
raw_json?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
/** Resumable sync cursor (mirrors backend SyncStateOut). */
|
||||
|
||||
Reference in New Issue
Block a user