Files
keinasystem/CLAUDE.md
2026-04-09 14:54:12 +09:00

5.7 KiB
Raw Blame History

Keina System - Claude 向けガイド

プロジェクト概要

農業生産者向けの作付け計画管理システム。圃場管理、作付け計画、申請書自動生成を行う。 ユーザーは65歳の農家元プログラマー、シングルユーザー、39筆の圃場を管理。

技術スタック: Django 5.2 + DRF + PostGIS / Next.js 14 (App Router) + TypeScript + Tailwind / PostgreSQL 16 + PostGIS 3.4

開発方針: シンプルさ最優先、段階的な機能追加、過度な複雑化を避ける


絶対に守るべき制約

  1. Field ↔ OfficialKyosaiField / OfficialChusankanField は M:N — 決してFK (1:N) に戻さない
  2. 年度+圃場の組み合わせは1つの Plan のみ (unique_together)
  3. 面積: 表示=反(tan)、計算・保存=m2、変換: 1反=1000m2
  4. FertilizationEntry.fertilizer は PROTECT — 使用中の肥料は削除不可
  5. 3回同じコードを書くまでは抽象化しない
  6. ドキュメントドリブン: 仕様変更時はまず関連ドキュメントから更新する

コーディング規約

  • Backend: Django ベストプラクティス、日本語フィールドは verbose_name で対応
  • Frontend: TypeScript strict mode、ESLint に従う
  • API: REST原則、エンドポイントは複数形 (/api/fields/, /api/plans/)

プロジェクト構造

keinasystem_t02/
├── CLAUDE.md              # このファイル
├── TASK_CONTEXT.md        # 実装状況・課題・次のマイルストーン
├── document/              # 設計書・マスタードキュメント
├── backend/
│   ├── keinasystem/       # Django設定 (settings.py, urls.py)
│   └── apps/
│       ├── fields/        # 圃場管理Field, OfficialKyosaiField, OfficialChusankanField
│       ├── plans/         # 作付け計画Plan, Crop, Variety
│       ├── weather/       # 気象データWeatherRecord
│       ├── reports/       # 申請書PDF生成
│       ├── fertilizer/    # 施肥計画・散布実績・運搬計画
│       ├── workrecords/   # 作業記録索引
│       └── mail/          # メールフィルタリングWindmill連携
└── frontend/src/app/
    ├── allocation/        # 作付け計画編集(メイン画面)
    ├── fields/            # 圃場一覧・詳細
    ├── fertilizer/        # 施肥計画・散布実績
    ├── distribution/      # 運搬計画
    ├── weather/           # 気象データ
    ├── reports/           # 申請書DL
    ├── import/            # データ取込
    ├── mail/              # メール管理
    └── settings/          # パスワード変更

よくある作業パターン

新しいモデルを追加する場合

  1. apps/<app>/models.py → 2. makemigrations → 3. migrate → 4. admin.py 登録
  2. Serializer → 6. ViewSet → 7. URL登録

新しいAPI / 画面を追加する場合

  • API: views.pyurls.py → フロントの型定義 (lib/types.ts) → API呼び出し
  • 画面: frontend/src/app/<page>/page.tsx → ローディング/エラー状態を処理

デプロイ・トラブルシューティング

# 本番デプロイgit pull → build → up -d を一括実行)
ssh keinafarm-claude 'sudo -u keinasystem bash /home/keinasystem/keinasystem_t02/deploy.sh'

# 本番ヘルスチェック9項目、curlベース
bash scripts/check_prod.sh claude keina1234

# 本番マイグレーション(バックエンド変更時のみ)
ssh keinafarm-claude 'cd /home/keinasystem/keinasystem_t02 && \
  sudo -u keinasystem docker compose build backend && \
  sudo -u keinasystem docker compose up -d && sleep 5 && \
  sudo -u keinasystem docker compose exec backend python manage.py migrate'
  • Docker Compose: docker-compose.yml=本番、docker-compose.develop.yml=開発
  • CORS: settings.pyCORS_ALLOWED_ORIGINSlocalhost:3000 許可済み)
  • JWT: アクセストークン24h、リフレッシュ: /api/auth/jwt/refresh/

マスタードキュメント(機能別リファレンス)

特定機能の詳細を知りたい場合、まずマスタードキュメントを参照すること。 データモデル・API仕様・画面仕様がソースコード参照不要なレベルで記載されている。

機能 ドキュメント
圃場管理 document/10_マスタードキュメント_圃場管理編.md
メール通知 document/11_マスタードキュメント_メール通知関連編.md
気象データ document/12_マスタードキュメント_気象データ編.md
施肥計画 document/13_マスタードキュメント_施肥計画編.md
運搬計画 document/14_マスタードキュメント_分配計画編.md
田植え計画 document/16_マスタードキュメント_田植え計画編.md
農薬散布管理 document/18_マスタードキュメント_農薬散布管理編.md
データモデル全体 document/03_データ仕様書.md

セッション開始・終了フロー

開始時

  1. この CLAUDE.md を読む
  2. HANDOVER.md で前回の引き継ぎを確認する
  3. TASK_CONTEXT.md で現在の状況を把握する
  4. タスク対象のマスタードキュメントを読む

終了時(または作業の区切りで必ず実行)

  1. HANDOVER.md を定型フォーマットで更新する
  2. 重要な設計判断があれば CLAUDE.md と該当マスタードキュメントを更新
  3. 実装状況に変化があれば TASK_CONTEXT.md を更新