diff --git a/server/migrations/002_market_news.sql b/server/migrations/002_market_news.sql new file mode 100644 index 0000000..4ca16f3 --- /dev/null +++ b/server/migrations/002_market_news.sql @@ -0,0 +1,22 @@ +-- Migration 002: Market News table +-- Written by n8n workflows, read by the dashboard. + +CREATE TABLE IF NOT EXISTS market_news ( + id SERIAL PRIMARY KEY, + source VARCHAR(200) NOT NULL DEFAULT '', + title TEXT NOT NULL, + url TEXT NOT NULL DEFAULT '', + category VARCHAR(100), + published_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_market_news_published + ON market_news (published_at DESC); + +CREATE INDEX IF NOT EXISTS idx_market_news_category + ON market_news (category); + +-- Record this migration +INSERT INTO schema_version (version, description) +VALUES (2, 'market_news table for n8n-sourced articles') +ON CONFLICT (version) DO NOTHING; diff --git a/web/src/setup/SetupWizard.tsx b/web/src/setup/SetupWizard.tsx index 9ae9e4c..8c7e1bb 100644 --- a/web/src/setup/SetupWizard.tsx +++ b/web/src/setup/SetupWizard.tsx @@ -1,5 +1,4 @@ import { useState } from "react"; -import { useNavigate } from "react-router-dom"; import { Lock, Cloud, Home, ListTodo, Server, Radio, Newspaper, Webhook, ArrowRight, ArrowLeft, SkipForward, CheckCircle2, Loader2, @@ -47,7 +46,6 @@ interface ServerEntry { /* ------------------------------------------------------------------ */ export default function SetupWizard() { - const navigate = useNavigate(); const [step, setStep] = useState(0); const [busy, setBusy] = useState(false); const [error, setError] = useState(""); @@ -164,7 +162,8 @@ export default function SetupWizard() { if (token) { setAuth(token, "admin"); } - navigate("/", { replace: true }); + // Full reload so App.tsx re-checks setup status from server + window.location.href = "/"; } catch (err: any) { setError(err.message); } finally {