feat(tarot): useTarotReading hook + api helper 6종 (T10)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
46
src/api.js
46
src/api.js
@@ -55,6 +55,22 @@ export async function apiPut(path, body) {
|
||||
return res.json();
|
||||
}
|
||||
|
||||
export async function apiPatch(path, body) {
|
||||
const res = await fetch(toApiUrl(path), {
|
||||
method: "PATCH",
|
||||
headers: {
|
||||
"Accept": "application/json",
|
||||
...(body ? { "Content-Type": "application/json" } : {}),
|
||||
},
|
||||
body: body ? JSON.stringify(body) : undefined,
|
||||
});
|
||||
if (!res.ok) {
|
||||
const text = await res.text().catch(() => "");
|
||||
throw new Error(`HTTP ${res.status} ${res.statusText}: ${text}`);
|
||||
}
|
||||
return res.json();
|
||||
}
|
||||
|
||||
export function getLatest() {
|
||||
return apiGet("/api/lotto/latest");
|
||||
}
|
||||
@@ -723,3 +739,33 @@ export async function triggerEvolverEvaluate() {
|
||||
if (!r.ok) throw new Error(`evaluate-now ${r.status}`);
|
||||
return r.json();
|
||||
}
|
||||
|
||||
// --- Tarot Lab ---
|
||||
|
||||
export function tarotInterpret(body) {
|
||||
return apiPost('/api/agent-office/tarot/interpret', body);
|
||||
}
|
||||
|
||||
export function tarotSaveReading(body) {
|
||||
return apiPost('/api/agent-office/tarot/readings', body);
|
||||
}
|
||||
|
||||
export function tarotListReadings({ page = 1, size = 20, favorite, spread_type, category } = {}) {
|
||||
const qs = new URLSearchParams({ page: String(page), size: String(size) });
|
||||
if (favorite !== undefined) qs.set('favorite', favorite ? 'true' : 'false');
|
||||
if (spread_type) qs.set('spread_type', spread_type);
|
||||
if (category) qs.set('category', category);
|
||||
return apiGet(`/api/agent-office/tarot/readings?${qs.toString()}`);
|
||||
}
|
||||
|
||||
export function tarotGetReading(id) {
|
||||
return apiGet(`/api/agent-office/tarot/readings/${id}`);
|
||||
}
|
||||
|
||||
export function tarotPatchReading(id, body) {
|
||||
return apiPatch(`/api/agent-office/tarot/readings/${id}`, body);
|
||||
}
|
||||
|
||||
export function tarotDeleteReading(id) {
|
||||
return apiDelete(`/api/agent-office/tarot/readings/${id}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user