fix: Timeline — utiliser axios /api relatif au lieu de fetch localhost:8000

Les appels fetch vers http://localhost:8000 ne fonctionnent pas en déploiement
Docker — remplacé par axios avec baseURL='/api' comme le reste de l'app.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OpenSquared
2026-06-24 18:13:47 +02:00
parent c6178c14d5
commit 37f770a09a

View File

@@ -1,8 +1,9 @@
import { useState, useEffect, useCallback } from 'react' import { useState, useEffect, useCallback } from 'react'
import { ChevronLeft, ChevronRight, Sparkles, Calendar, Clock, Layers, RefreshCw } from 'lucide-react' import { ChevronLeft, ChevronRight, Sparkles, Calendar, Clock, Layers, RefreshCw } from 'lucide-react'
import axios from 'axios'
import clsx from 'clsx' import clsx from 'clsx'
const API = 'http://localhost:8000' const api = axios.create({ baseURL: '/api' })
interface MarketEvent { interface MarketEvent {
id: number id: number
@@ -231,42 +232,42 @@ export default function Timeline() {
const fetchDay = useCallback(async (d: string) => { const fetchDay = useCallback(async (d: string) => {
setLoading(true) setLoading(true)
try { try {
const res = await fetch(`${API}/api/timeline/day/${d}`) const res = await api.get(`/timeline/day/${d}`)
if (res.ok) setCtx(await res.json()) setCtx(res.data)
} finally { } catch { /* ignore */ } finally {
setLoading(false) setLoading(false)
} }
}, []) }, [])
const fetchEvents = useCallback(async () => { const fetchEvents = useCallback(async () => {
const res = await fetch(`${API}/api/timeline/events`) try {
if (res.ok) setAllEvents(await res.json()) const res = await api.get('/timeline/events')
setAllEvents(res.data)
} catch { /* ignore */ }
}, []) }, [])
const bootstrap = useCallback(async () => { const bootstrap = useCallback(async () => {
const res = await fetch(`${API}/api/timeline/bootstrap`, { method: 'POST' }) try {
if (res.ok) { await api.post('/timeline/bootstrap')
setBootstrapped(true) setBootstrapped(true)
await fetchEvents() await fetchEvents()
await fetchDay(refDate) await fetchDay(refDate)
} } catch { /* ignore */ }
}, [refDate, fetchDay, fetchEvents]) }, [refDate, fetchDay, fetchEvents])
const generateAI = useCallback(async () => { const generateAI = useCallback(async () => {
setGenerating(true) setGenerating(true)
try { try {
const res = await fetch(`${API}/api/timeline/generate/${refDate}`, { method: 'POST' }) const res = await api.post(`/timeline/generate/${refDate}`)
if (res.ok) { const data = res.data
const data = await res.json() setCtx(prev => prev ? {
setCtx(prev => prev ? { ...prev,
...prev, long_commentary: data.long_commentary,
long_commentary: data.long_commentary, medium_commentary: data.medium_commentary,
medium_commentary: data.medium_commentary, short_commentary: data.short_commentary,
short_commentary: data.short_commentary, has_commentary: true,
has_commentary: true, } : prev)
} : prev) } catch { /* ignore */ } finally {
}
} finally {
setGenerating(false) setGenerating(false)
} }
}, [refDate]) }, [refDate])