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:
@@ -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])
|
||||||
|
|||||||
Reference in New Issue
Block a user