feat(personal-assistant): add confirmed project memory

This commit is contained in:
2026-07-19 08:19:24 +08:00
parent 151cc26caf
commit 24da833fa6
31 changed files with 4037 additions and 60 deletions
+74
View File
@@ -97,9 +97,14 @@ export interface KnowledgeSnippet {
docTitle: string;
content: string;
source?: string;
docId?: string | null;
fragmentId?: number | null;
spaceCode?: string | null;
sourceType?: 'DOCUMENT' | 'DATA_TOOL' | string;
domain?: 'PERSONAL' | 'PROJECT_SERVICE' | 'ENTERPRISE' | string | null;
status?: string | null;
occurredAt?: string | null;
updatedAt?: string | null;
}
export interface KnowledgeDoc {
@@ -131,6 +136,7 @@ export interface KnowledgeSearchResponse {
intent?: 'QA' | 'FILE' | 'VIDEO' | 'DATA_TOOL' | string;
rewrittenQuery?: string;
resources?: KnowledgeResource[];
memoryCandidate?: MemoryCandidate | null;
}
export interface KnowledgeMediaSelectedFile {
@@ -147,6 +153,10 @@ export interface KnowledgeCitation {
title: string;
snippet: string;
fragmentId?: number | null;
domain?: 'PERSONAL' | 'PROJECT_SERVICE' | 'ENTERPRISE' | string | null;
status?: string | null;
occurredAt?: string | null;
updatedAt?: string | null;
}
export interface KnowledgeResource {
@@ -178,6 +188,70 @@ export interface UnifiedKnowledgeResponse {
intent?: 'QA' | 'FILE' | 'VIDEO' | 'DATA_TOOL' | string;
rewrittenQuery?: string;
resources?: KnowledgeResource[];
memoryCandidate?: MemoryCandidate | null;
}
export type MemoryCandidateStatus = 'DRAFT' | 'NEEDS_INPUT' | 'CONFIRMED' | 'DISMISSED' | 'EXPIRED' | string;
export type MemoryTargetDomain = 'PERSONAL' | 'PROJECT_SERVICE' | string;
export interface MemoryCandidateDraft {
projectCode: string | null;
occurredAt: string | null;
followUpAt: string | null;
buildingName: string;
unitName: string;
roomNo: string;
category: string;
title: string;
summary: string;
detail: string;
status: string;
}
export interface MemoryCandidate {
id: number;
version: number;
status: MemoryCandidateStatus;
memoryType: string;
targetDomain: MemoryTargetDomain;
draft: MemoryCandidateDraft;
missingFields: string[];
expiresAt: string | null;
}
export interface MemoryConfirmRequest {
expectedVersion: number;
idempotencyKey: string;
draft: MemoryCandidateDraft;
enableReminder: boolean;
}
export interface MemoryConfirmResult {
targetDomain: MemoryTargetDomain;
targetId: number;
version: number;
}
export interface ServiceMemory {
id: number;
version: number;
currentVersion?: number;
projectCode?: string | null;
memoryType: string;
subjectType?: string;
category: string;
title?: string;
summary: string;
detail?: string;
status: string;
occurredAt: string | null;
followUpAt: string | null;
createdAt?: string | null;
updatedAt?: string | null;
buildingName?: string;
unitName?: string;
roomNo?: string;
}
export interface CaseCapabilities {