690618:1444 237 #02
CI / CD Pipeline / build (push) Successful in 7m5s
CI / CD Pipeline / deploy (push) Failing after 20m14s

This commit is contained in:
2026-06-18 14:44:46 +07:00
parent 037fbb65f5
commit 09e304de84
52 changed files with 4471 additions and 1038 deletions
@@ -0,0 +1,100 @@
// File: frontend/lib/services/admin-ai-prompt.service.ts
// Change Log
// - 2026-06-17: Created adminAiPromptService for prompt management UI (Feature 238)
import client from '../api/client';
export interface AiPromptVersion {
publicId: string;
promptType: string;
versionNumber: number;
version: number;
template: string;
contextConfig?: Record<string, unknown>;
isActive: boolean;
manualNote?: string | null;
activatedAt?: string | null;
createdAt: string;
createdBy?: number;
}
/**
* Service สำหรับจัดการ AI Prompt Versions ใน Admin Console
*/
export const adminAiPromptService = {
/**
* ดึงรายการ prompt versions ทั้งหมดสำหรับ prompt_type ที่กำหนด
*/
async getPrompts(promptType: string): Promise<AiPromptVersion[]> {
const response = await client.get<{ data: AiPromptVersion[] }>(
`/ai/prompts/${promptType}`
);
return response.data.data;
},
/**
* สร้าง prompt version ใหม่
*/
async createPrompt(
promptType: string,
template: string,
contextConfig?: Record<string, unknown>
): Promise<AiPromptVersion> {
const idempotencyKey = crypto.randomUUID();
const response = await client.post<{ data: AiPromptVersion }>(
`/ai/prompts/${promptType}`,
{ template, contextConfig },
{
headers: {
'Idempotency-Key': idempotencyKey,
},
}
);
return response.data.data;
},
/**
* เปิดใช้งาน prompt version ที่กำหนด
*/
async activatePrompt(
promptType: string,
versionNumber: number,
expectedVersion?: number
): Promise<AiPromptVersion> {
const idempotencyKey = crypto.randomUUID();
const response = await client.post<{ data: AiPromptVersion }>(
`/ai/prompts/${promptType}/${versionNumber}/activate`,
expectedVersion !== undefined ? { expectedVersion } : {},
{
headers: {
'Idempotency-Key': idempotencyKey,
},
}
);
return response.data.data;
},
/**
* ลบ prompt version (ห้ามลบ active version)
*/
async deletePrompt(promptType: string, versionNumber: number): Promise<void> {
await client.delete(
`/ai/prompts/${promptType}/${versionNumber}`
);
},
/**
* อัปเดต manual note
*/
async updatePromptNote(
promptType: string,
versionNumber: number,
manualNote: string | null
): Promise<AiPromptVersion> {
const response = await client.patch<{ data: AiPromptVersion }>(
`/ai/prompts/${promptType}/${versionNumber}/note`,
{ manualNote }
);
return response.data.data;
},
};