diff --git a/frontend/src/app/strategy/page.tsx b/frontend/src/app/strategy/page.tsx new file mode 100644 index 0000000..ce4abe9 --- /dev/null +++ b/frontend/src/app/strategy/page.tsx @@ -0,0 +1,90 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { useRouter } from 'next/navigation'; +import Link from 'next/link'; +import Sidebar from '@/components/layout/Sidebar'; +import Header from '@/components/layout/Header'; +import { api } from '@/lib/api'; + +interface User { + id: number; + username: string; +} + +const strategies = [ + { + id: 'multi-factor', + name: '멀티 팩터', + description: '밸류, 퀄리티, 모멘텀 팩터를 조합한 종합 전략', + icon: '📊', + }, + { + id: 'quality', + name: '슈퍼 퀄리티', + description: 'F-Score 기반 우량주 선별 전략', + icon: '⭐', + }, + { + id: 'value-momentum', + name: '밸류 모멘텀', + description: '가치주와 모멘텀을 결합한 전략', + icon: '📈', + }, +]; + +export default function StrategyListPage() { + const router = useRouter(); + const [user, setUser] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const init = async () => { + try { + const userData = await api.getCurrentUser() as User; + setUser(userData); + } catch { + router.push('/login'); + } finally { + setLoading(false); + } + }; + init(); + }, [router]); + + if (loading) { + return ( +
+
Loading...
+
+ ); + } + + return ( +
+ +
+
+
+

퀀트 전략

+ +
+ {strategies.map((strategy) => ( + +
{strategy.icon}
+

+ {strategy.name} +

+

{strategy.description}

+ + ))} +
+
+
+
+ ); +}