diff --git a/src/api/settings/workflow/session.ts b/src/api/settings/workflow/session.ts
index 0c319c5..eda2978 100644
--- a/src/api/settings/workflow/session.ts
+++ b/src/api/settings/workflow/session.ts
@@ -54,7 +54,8 @@ export function deleteSessionV2(id: string, requestOptions?: RequestOptions) {
}
// 删除会话内的对话记录(AI 回复 / 用户问题单条或多条),传 Ids 数组,每项为 { id, type }
-export function deleteSessionRecord(ids: { id: number; type: string }[], requestOptions?: RequestOptions) {
+// 注意:记录 id 为 19 位雪花大整数,超出 JS Number 安全范围,必须用 string 形式传递,否则精度丢失
+export function deleteSessionRecord(ids: { id: string; type: string }[], requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/session/deleteRecord',
method: 'post',
diff --git a/src/views/home/components/ChatList.vue b/src/views/home/components/ChatList.vue
index 5340a4c..c374789 100644
--- a/src/views/home/components/ChatList.vue
+++ b/src/views/home/components/ChatList.vue
@@ -55,6 +55,12 @@
+
+
+
+
{{ msg.time }}
@@ -343,6 +349,10 @@ onMounted(() => {
.message-row:hover & {
opacity: 1;
}
+ /* 用户消息在右侧,操作栏右对齐 */
+ .message-row.is-user & {
+ align-self: flex-end;
+ }
}
.msg-action {
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 1a9a637..64335a5 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -344,8 +344,8 @@ const currentSessionResultsLoading = computed(() => {
return !!id && !!sessionResultsLoading[id];
});
-// session/get 分页:打开会话详情默认只拿最近 3 条对话,更早的通过滚动加载更多(下一页更早的记录)
-const SESSION_PAGE_SIZE = 3;
+// session/get 分页:打开会话详情默认只拿最近 10 条对话(约一屏),更早的通过滚动加载更多(下一页更早的记录)
+const SESSION_PAGE_SIZE = 10;
const sessionPage = reactive>({});
const sessionLoadingMore = reactive>({});
const currentSessionHasMore = computed(() => {
@@ -523,22 +523,19 @@ const handleDeleteMessage = async (msg: ChatMessage) => {
const idx = list.findIndex((m) => m.id === msg.id);
if (idx < 0) return;
// 收集后端记录 id(type 传记录类型:chat/workflow)
- const ids: { id: number; type: string }[] = [];
+ // 记录 id 为 19 位雪花大整数,超出 JS Number 安全范围(2^53-1),必须保留字符串形式,
+ // Number() 转换会导致精度丢失,删除请求发出后与后端实际 id 对不上
+ const ids: { id: string; type: string }[] = [];
const pushId = (m: ChatMessage | undefined | null) => {
if (!m?.recordId) return;
- const id = Number(m.recordId);
- if (!Number.isFinite(id)) return;
+ const id = String(m.recordId).trim();
+ if (!id) return;
if (ids.some((d) => d.id === id)) return;
ids.push({ id, type: m.recordType || 'chat' });
};
+ // 后端一条记录同时承载用户问题与 AI 回复(rq- / ra- 共享同一 recordId),
+ // 删除该记录即删除整组对话,无需向相邻消息扩展查找,避免误删相邻记录
pushId(msg);
- // 向上找最近一条用户消息,一并删除(同一后端记录时自动去重)
- for (let i = idx - 1; i >= 0; i--) {
- if (list[i].isUser) {
- pushId(list[i]);
- break;
- }
- }
if (ids.length === 0) {
ElMessage.warning('该对话记录尚未生成(执行中),可刷新后再删除');
return;