fix(mobile): preserve assistant IDs and scope state
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
export const normalizeBackendId = (value: string) => {
|
||||
const id = value.trim();
|
||||
if (!/^[1-9]\d*$/.test(id)) throw new Error('PERSONAL_ID_INVALID');
|
||||
return id;
|
||||
};
|
||||
|
||||
export const personalItemApiPath = (id: string, suffix = '') =>
|
||||
`/api/aihr/personal-assistant/items/${encodeURIComponent(normalizeBackendId(id))}${suffix}`;
|
||||
|
||||
export const personalSessionApiPath = (id: string) =>
|
||||
`/api/aihr/personal-assistant/sessions/${encodeURIComponent(normalizeBackendId(id))}`;
|
||||
|
||||
export const personalItemRoute = (id: string) =>
|
||||
`/pages/user/assistant/item?id=${encodeURIComponent(normalizeBackendId(id))}`;
|
||||
@@ -10,6 +10,7 @@ import type {
|
||||
PersonalSpace
|
||||
} from '@/types/api';
|
||||
import { apiRequest, apiUrl, authHeaders, readTextPayload } from './api';
|
||||
import { personalItemApiPath, personalSessionApiPath } from './personal-assistant-id';
|
||||
|
||||
export type KnowledgeScope = PersonalKnowledgeScope;
|
||||
|
||||
@@ -31,12 +32,12 @@ const queryString = (query: PersonalItemQuery) => {
|
||||
};
|
||||
|
||||
export const askPersonalAssistant = (payload: {
|
||||
sessionId?: number;
|
||||
sessionId?: string;
|
||||
queryText: string;
|
||||
scope: KnowledgeScope[];
|
||||
dateFrom?: string;
|
||||
dateTo?: string;
|
||||
itemIds?: number[];
|
||||
itemIds?: string[];
|
||||
outputFormat?: 'ANSWER' | 'ACTION_PLAN' | 'OUTLINE';
|
||||
}) => apiRequest<PersonalAskResponse>({
|
||||
url: '/api/aihr/personal-assistant/ask',
|
||||
@@ -46,7 +47,7 @@ export const askPersonalAssistant = (payload: {
|
||||
});
|
||||
|
||||
export const mergePersonalRows = (current: PersonalItem[], incoming: PersonalItem[]) => {
|
||||
const rows = new Map<number, PersonalItem>();
|
||||
const rows = new Map<string, PersonalItem>();
|
||||
[...current, ...incoming].forEach((item) => rows.set(item.id, item));
|
||||
return Array.from(rows.values());
|
||||
};
|
||||
@@ -61,8 +62,8 @@ export const loadPersonalItems = (query: PersonalItemQuery = {}) => apiRequest<P
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
export const loadPersonalItem = (id: number) => apiRequest<PersonalItem>({
|
||||
url: `/api/aihr/personal-assistant/items/${id}`,
|
||||
export const loadPersonalItem = (id: string) => apiRequest<PersonalItem>({
|
||||
url: personalItemApiPath(id),
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
@@ -128,19 +129,19 @@ export const uploadPersonalFile = (file: PersonalSelectedFile, title?: string, c
|
||||
});
|
||||
});
|
||||
|
||||
export const retryPersonalItem = (id: number) => apiRequest<PersonalItem>({
|
||||
url: `/api/aihr/personal-assistant/items/${id}/retry`,
|
||||
export const retryPersonalItem = (id: string) => apiRequest<PersonalItem>({
|
||||
url: personalItemApiPath(id, '/retry'),
|
||||
method: 'POST'
|
||||
});
|
||||
|
||||
export const deletePersonalItem = (id: number) => apiRequest<{ cleanupJobId: number }>({
|
||||
url: `/api/aihr/personal-assistant/items/${id}`,
|
||||
export const deletePersonalItem = (id: string) => apiRequest<{ cleanupJobId: string }>({
|
||||
url: personalItemApiPath(id),
|
||||
method: 'DELETE',
|
||||
timeout: 15000
|
||||
});
|
||||
|
||||
export const downloadPersonalItem = (id: number) => apiRequest<{ url: string; expiresAt?: string }>({
|
||||
url: `/api/aihr/personal-assistant/items/${id}/download-url`,
|
||||
export const downloadPersonalItem = (id: string) => apiRequest<{ url: string; expiresAt?: string }>({
|
||||
url: personalItemApiPath(id, '/download-url'),
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
@@ -149,12 +150,12 @@ export const loadPersonalSessions = () => apiRequest<PersonalSession[]>({
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
export const loadPersonalSession = (id: number) => apiRequest<PersonalSessionDetail>({
|
||||
url: `/api/aihr/personal-assistant/sessions/${id}`,
|
||||
export const loadPersonalSession = (id: string) => apiRequest<PersonalSessionDetail>({
|
||||
url: personalSessionApiPath(id),
|
||||
method: 'GET'
|
||||
});
|
||||
|
||||
export const deletePersonalSession = (id: number) => apiRequest<void>({
|
||||
url: `/api/aihr/personal-assistant/sessions/${id}`,
|
||||
export const deletePersonalSession = (id: string) => apiRequest<void>({
|
||||
url: personalSessionApiPath(id),
|
||||
method: 'DELETE'
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user