diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..4a7df2d --- /dev/null +++ b/.cursorrules @@ -0,0 +1,13 @@ +# D-Watch プロジェクトルール + +- TypeScript strict モードを維持する。anyを避ける +- Next.js App Router規約に従う(pages routerは使わない) +- DBカラム名はテーブル定義書の物理カラム名(snake_case)に従う。Prisma経由でのフロント/API側はcamelCaseに変換して扱う +- schema.prisma は `prisma db pull` による自動生成物。手動で編集しない +- 判定ロジック(◎○△×、KPI計算等)を実装する前に、期待値表(入力→期待出力)をテストとして先に書く +- APIエンドポイント・スキーマを変更する場合は、必ず `d-watch-api.yaml` を先に更新してからコードに反映する +- 画面のレイアウト・文言・遷移は `d-watch-mock.jsx` を正とする。独自判断で変更しない +- 秘密情報(DB接続情報、トークン等)はハードコードせず環境変数(`.env`、コミット対象外)を使う +- コミットメッセージは Conventional Commits 形式(`feat:`, `fix:`, `chore:`, `refactor:`, `test:`)に従う +- タスク完了とみなす前に `npm run lint` と `npm run typecheck` を実行し、エラーがないことを確認する +- develop ブランチへの直接pushは避け、featureブランチ + Pull Requestでのレビューを経由する diff --git a/CLAUDE.md b/CLAUDE.md index 43c994c..e43cd43 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1 +1,45 @@ -@AGENTS.md +# D-Watch 開発ガイド(AIエージェント向け) + +## プロジェクト概要 +清掃ロボット監視ダッシュボード「D-Watch」。ドン・キホーテ/MEGAドンキ等の店舗に設置された清掃ロボット・D-S制御盤の稼働状況を監視するWebアプリ。 + +## 体制・責任分界 +- DFA内製2名(環境担当/ダッシュボード担当) + Cursor / Claude Code +- **TeamWorks側の責任**: DB・データ収集・サマリバッチ +- **DFA側の責任**: APIサーバー・ビューアー・点検記録 + +## 技術スタック +- Next.js(App Router)+ TypeScript。フロントとAPIは1リポジトリ・1デプロイで完結 +- Prisma(`prisma db pull`でTeamWorks構築のMySQLスキーマを自動取込。schema.prismaは自動生成物として扱い手動編集しない) +- MySQL 8(参照用+アラート更新用の2アカウント) +- 点検記録は独自ストア(SQLite + オブジェクトストレージ、メインDBと分離) +- 認証: 簡易トークン + IP制限(P1は社内利用のみ) +- APIモック: Prism(OpenAPI YAMLから自動起動、DB完成を待たずフロント開発を進める) + +## リポジトリ・運用 +- ソース管理: **GitBucket**(`https://git.d-sec.dfarobotics.com/git/develop/client_dwatch.git`)。GitHubではない +- デフォルトブランチ: `develop`。作業はfeatureブランチを切ってPull Request経由でマージ +- CI: サーバー側CIは無し。git hook(husky)でローカル強制 + - `pre-commit`: lint-staged(変更ファイルのみLint) + - `pre-push`: 型チェック+テスト +- **相互PRレビュー必須**: AIが書いたコードも含め、必ずもう1名がレビューしてからマージする + +## 参照資料の優先順位(矛盾があった場合) +1. `d-watch-mock.jsx`(画面レイアウト・文言・遷移の正) +2. `d-watch-api.yaml`(API契約の正。エンドポイント・JSONスキーマ・enum・エラー形式) +3. 清掃ロボット監視テーブル定義書(DBスキーマの正、28テーブル) + +領域をまたぐ矛盾は都度このマップを更新して解消する。 + +## 開発の原則(5箇条) +1. **モックファースト**: フロントはPrismモックAPI相手に開発し、実DBの完成を待たない。接続先の切替だけで本番化する +2. **判定ロジックは期待値表で固定**: ◎○△×・L1〜L3・KPI計算・整数丸めは、入力→出力の期待値表を先に作りテストで固定する。生成コードの目視確認だけで済ませない +3. **APIの変更はYAMLが先**: 実装中に契約を変えたくなったら、まず`d-watch-api.yaml`を直してからコードに反映する +4. **相互PRレビュー**: AIが書いたコードこそ、もう1人が必ずレビューしてからmainにマージする +5. **TeamWorks待ちでブロックしない**: 各フェーズの「依存」列にある待ち項目は、モック・スタブで先行しておき解消後に差し替える + +## 開発フェーズ(P0→P1は順序必須、P2以降は基本この順、P6は並走可) +P0 環境準備 → P1 基盤(共通レイアウト・API共通実装・判定ロジック) → P2 コア画面 → P3 アラート系 → P4 レポート → P5 マスタ/Viewer → P6 点検記録(並走可) → P7 仕上げ(本番デプロイ) + +## 本番インフラ +さくらのクラウドVM(Linux、systemd管理、nginx リバースプロキシ想定)。さくらのレンタルサーバーは利用不可(Node.js常駐プロセスを稼働できないため)。