Day 8 完了

実装内容:
1. frontend/src/types/index.ts - 型定義(Field, Crop, Variety, Plan)
2. frontend/src/components/Navbar.tsx - ナビゲーションバー(ログアウトボタン)
3. backend/apps/fields/views.py - FieldViewSet追加
4. backend/apps/fields/serializers.py - 新規作成(Fieldシリアライザー)
5. backend/apps/fields/urls.py - ViewSetルート追加
6. frontend/src/app/allocation/page.tsx - 作付け計画画面(作物・品種選択可能)
7. frontend/src/app/page.tsx - 自動リダイレクト(ログイン状態による)
API動作確認:
- /api/fields/ → HTTP 200(圃場データなし)
- /api/plans/crops/ → HTTP 200(2作物:水稲・大豆)
- /api/plans/?year=2025 → HTTP 200
テスト: http://localhost:3000/ → 自動リダイレクトで /login または /allocation
※ 現在圃場データがないため、画面には「圃場データがありません。インポートを実行してください。」と表示されます。
次の工程に移りますか?
This commit is contained in:
Akira
2026-02-15 13:23:40 +09:00
parent d7ab48772e
commit afd434cd4c
7 changed files with 410 additions and 29 deletions

View File

@@ -0,0 +1,35 @@
'use client';
import { useRouter } from 'next/navigation';
import { LogOut } from 'lucide-react';
import { logout } from '@/lib/api';
export default function Navbar() {
const router = useRouter();
const handleLogout = () => {
logout();
};
return (
<nav className="bg-white shadow-sm border-b border-gray-200">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between h-16">
<div className="flex items-center">
<h1 className="text-xl font-bold text-green-700">KeinaSystem</h1>
<span className="ml-2 text-sm text-gray-500"></span>
</div>
<div className="flex items-center">
<button
onClick={handleLogout}
className="flex items-center px-4 py-2 text-sm text-gray-700 hover:text-gray-900 hover:bg-gray-100 rounded-md transition-colors"
>
<LogOut className="h-4 w-4 mr-2" />
</button>
</div>
</div>
</div>
</nav>
);
}