気象データ基盤を実装
- apps/weather 新規作成(WeatherRecord モデル、5種APIエンドポイント) - GET /api/weather/records/ 日次データ一覧 - GET /api/weather/summary/ 月別・年間集計 - GET /api/weather/gdd/ 有効積算温度(GDD)計算 - GET /api/weather/similarity/ 類似年分析(開花・収穫予測の基礎) - POST /api/weather/sync/ Windmill向け日次更新(APIキー認証) - management command: fetch_weather(初回一括・差分取得) - Crop.base_temp フィールド追加(GDD基準温度、default=0.0℃) - docker-compose.yml: MAIL_API_KEY 環境変数を追加(ローカルテスト修正) - requirements.txt: requests>=2.31 追加 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
39
CLAUDE.md
39
CLAUDE.md
@@ -1,7 +1,7 @@
|
||||
# Keina System - Claude 向けガイド
|
||||
|
||||
> **最終更新**: 2026-02-25
|
||||
> **現在のフェーズ**: Phase 1 (MVP) - 基本機能実装完了、試験中
|
||||
> **最終更新**: 2026-02-28
|
||||
> **現在のフェーズ**: Phase 1 (MVP) - 気象データ基盤を追加
|
||||
|
||||
## 📌 このファイルの目的
|
||||
|
||||
@@ -73,8 +73,13 @@ keinasystem_t02/
|
||||
│ │ ├── views.py # インポート機能、CRUD API
|
||||
│ │ └── urls.py
|
||||
│ ├── plans/ # 作付け計画アプリ
|
||||
│ │ ├── models.py # Plan, Crop, Variety
|
||||
│ │ ├── models.py # Plan, Crop(+base_temp), Variety
|
||||
│ │ └── views.py # 作付け計画API、集計API
|
||||
│ ├── weather/ # 気象データアプリ
|
||||
│ │ ├── models.py # WeatherRecord (1日1行)
|
||||
│ │ ├── views.py # sync(APIキー), records, summary, gdd, similarity
|
||||
│ │ ├── urls.py
|
||||
│ │ └── management/commands/fetch_weather.py # 初回一括取得・差分取得
|
||||
│ └── reports/ # 申請書生成アプリ
|
||||
│ ├── views.py # PDF生成API
|
||||
│ └── templates/ # PDF用HTMLテンプレート
|
||||
@@ -126,7 +131,8 @@ Plan (作付け計画)
|
||||
└── unique_together = ['field', 'year']
|
||||
|
||||
Crop (作物マスタ)
|
||||
└── 米、トウモロコシ、エンドウ、野菜、その他
|
||||
├── name(米、トウモロコシ、エンドウ、野菜、その他)
|
||||
└── base_temp (有効積算温度 基準温度℃、default=0.0) ← 2026-02-28 追加
|
||||
|
||||
Variety (品種マスタ)
|
||||
├── crop (FK to Crop)
|
||||
@@ -151,6 +157,16 @@ MailEmail (受信メール記録)
|
||||
MailNotificationToken (フィードバックURL用トークン)
|
||||
├── email (OneToOne FK to MailEmail)
|
||||
└── token (UUID, unique)
|
||||
|
||||
WeatherRecord (日次気象記録)
|
||||
├── date (DateField, unique)
|
||||
├── temp_mean, temp_max, temp_min (気温℃)
|
||||
├── sunshine_h (日照時間h)
|
||||
├── precip_mm (降水量mm)
|
||||
├── wind_max (最大風速m/s)
|
||||
└── pressure_min (最低気圧hPa)
|
||||
※ 観測地点: 窪川 (lat=33.213, lon=133.133)、データソース: Open-Meteo archive API
|
||||
※ 2016-01-01 から蓄積(初回は fetch_weather --full で一括投入)
|
||||
```
|
||||
|
||||
### 重要な設計判断
|
||||
@@ -254,6 +270,20 @@ MailNotificationToken (フィードバックURL用トークン)
|
||||
- Backend: `POST /api/auth/change-password/`(JWT認証、`ChangePasswordView` in `keinasystem/urls.py`)
|
||||
- Frontend: `/settings/password` ページ
|
||||
- Navbar: KeyRound アイコンボタン(ログアウトボタンの左隣)
|
||||
9. **気象データ基盤**(Windmill連携):
|
||||
- Django `apps/weather` アプリ(WeatherRecord: 1日1行、2016-01-01〜)
|
||||
- データソース: Open-Meteo archive API(窪川 lat=33.213, lon=133.133)
|
||||
- Windmill向けAPI(APIキー認証): `POST /api/weather/sync/`(upsert、単一/リスト両対応)
|
||||
- フロントエンド向けAPI(JWT認証):
|
||||
- `GET /api/weather/records/?year=&start=&end=` 日次レコード一覧
|
||||
- `GET /api/weather/summary/?year=` 月別・年間サマリー(猛暑日・冬日数含む)
|
||||
- `GET /api/weather/gdd/?start_date=&base_temp=&end_date=` 有効積算温度(GDD)
|
||||
- `GET /api/weather/similarity/?year=` 類似年分析(月別パターン比較)
|
||||
- 管理コマンド: `python manage.py fetch_weather [--full] [--start-date] [--end-date]`
|
||||
- Windmill フロー: `u/admin/weather_sync.flow`(ローカル作成済み、本番デプロイ要)
|
||||
- `Crop.base_temp`(GDD計算の基準温度、default=0.0℃)をCropモデルに追加
|
||||
- **初回データ投入**: `docker compose exec backend python manage.py fetch_weather --full`
|
||||
- **将来計画**: 開花・収穫予測(品種ごとの目標GDD設定 → 到達日予測)
|
||||
|
||||
### 🚧 既知の課題・技術的負債
|
||||
|
||||
@@ -375,6 +405,7 @@ docker-compose exec backend python manage.py migrate
|
||||
|
||||
## 📝 更新履歴
|
||||
|
||||
- 2026-02-28: 気象データ基盤を実装。`apps/weather` Django app(WeatherRecord, GDD API, 類似年分析API)、Windmill フロー `u/admin/weather_sync.flow`、管理コマンド `fetch_weather`。`Crop.base_temp` 追加(GDD基準温度)。初回データ投入は `fetch_weather --full`
|
||||
- 2026-02-25: CLAUDE.md更新。パスワード変更機能追記。メールフィルタリング機能を本番稼働済みに更新。マスタードキュメント `document/11_マスタードキュメント_メール通知関連編.md` リンク追加。デプロイコマンド(`--env-file .env.production` 必須)をトラブルシューティングに追加
|
||||
- 2026-02-22: メールフィルタリング機能を実装。`apps/mail` Django app、Windmill向けAPI(APIキー認証)、フィードバックページ、ルール管理ページを追加。仕様書: `document/メールフィルタ/mail_filter_spec.md`
|
||||
- 2026-02-21: マスタードキュメント体系を導入。`document/10_マスタードキュメント_圃場管理編.md` を追加。セッション推奨フローにマスタードキュメント参照を追加
|
||||
|
||||
Reference in New Issue
Block a user