在庫管理機能実装案をレビュー反映し、CODEX実装指示書を追加

- StockTransaction から冗長フィールド除外(unit, reference_type/id, created_by, inventory_count)
- フロントエンド画面構成を変更(入出庫登録をモーダル化、マスタ管理をタブ統合)
- レビュー記録セクション22を追加
- CODEX.md: Phase 1 実装指示書を作成(モデル・API・画面の詳細仕様)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Akira
2026-03-14 15:03:09 +09:00
parent 1b619c44a0
commit 67d4197b7f
2 changed files with 1004 additions and 17 deletions

View File

@@ -146,23 +146,28 @@
- `material` `ForeignKey(Material)`
- `transaction_type`
- `quantity`
- `unit`
- `occurred_on`
- `reference_type`
- `reference_id`
- `note`
- `created_by`
- `created_at`
以下のフィールドは初期実装では **除外** する:
- ~~`unit`~~ → `Material.stock_unit` から取得すれば十分。トランザクションごとに単位を持つと不整合の元になる
- ~~`reference_type`~~ / ~~`reference_id`~~ → Generic FK パターンは複雑化の元。将来の施肥計画連携時に必要なら追加する
- ~~`created_by`~~ → シングルユーザーシステムのため不要。マルチユーザー対応時に追加する
`transaction_type` の候補:
- `purchase`
- `use`
- `adjustment_plus`
- `adjustment_minus`
- `inventory_count`
- `discard`
以下は初期実装では除外する:
- ~~`inventory_count`~~ → `adjustment_plus` / `adjustment_minus` で棚卸差異を十分表現できる
`quantity` は正の数で持ち、増減方向は `transaction_type` で判定する方式を推奨する。
#### MaterialStockSnapshot
@@ -237,15 +242,13 @@ class StockTransaction(models.Model):
USE = 'use', '使用'
ADJUSTMENT_PLUS = 'adjustment_plus', '棚卸増'
ADJUSTMENT_MINUS = 'adjustment_minus', '棚卸減'
INVENTORY_COUNT = 'inventory_count', '棚卸記録'
DISCARD = 'discard', '廃棄'
material = models.ForeignKey(Material, on_delete=models.PROTECT, related_name='stock_transactions')
transaction_type = models.CharField(max_length=30, choices=TransactionType.choices)
quantity = models.DecimalField(max_digits=10, decimal_places=3)
occurred_on = models.DateField()
note = models.TextField(blank=True, null=True)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
note = models.TextField(blank=True, default='')
created_at = models.DateTimeField(auto_now_add=True)
```
@@ -425,15 +428,14 @@ backend/apps/materials/
### 9.1 新規画面
- `/materials`
- 資材一覧
- `/materials/fertilizers`
- 肥料マスタ管理
- `/materials/pesticides`
- 農薬マスタ管理
- `/materials/stock`
- 在庫一覧
- `/materials/stock/new`
- 入出庫登録
- 在庫一覧(メイン画面)。在庫集計表 + 入出庫登録モーダル
- `/materials/masters`
- 資材マスタ管理(肥料/農薬/その他をタブ切り替え、インライン編集テーブル)
**設計判断**: 入出庫登録は独立ページではなくモーダル方式にする。
理由: 既存の肥料マスタ画面(`/fertilizer/masters`)のインライン編集パターンに合わせ、
画面遷移を減らして操作効率を上げるため。
肥料マスタと農薬マスタを別ページに分けず、1画面でタブ切り替えにする。
### 9.2 一覧画面の基本列
@@ -1550,3 +1552,32 @@ alias 例:
- 補助: `alias辞書`
この構成であれば、コストを抑えつつ、現場名・ブランド名・保証票名の差異にも対応しやすい。
---
## 22. レビュー記録2026-03-14
既存コードとの整合性レビューを実施し、以下の修正を反映した。
### 22.1 StockTransaction フィールドの簡素化
以下のフィールドを初期実装から除外した。
| 除外フィールド | 理由 |
|----------------|------|
| `unit` | `Material.stock_unit` から取得すれば十分。トランザクションごとに単位を持つと不整合の元 |
| `reference_type` / `reference_id` | Generic FK パターンは複雑化の元。将来の施肥計画連携時に必要なら追加 |
| `created_by` | シングルユーザーシステムのため不要。マルチユーザー対応時に追加 |
| `inventory_count` | `adjustment_plus` / `adjustment_minus` で棚卸差異を十分表現可能 |
### 22.2 フロントエンド画面構成の変更
- 入出庫登録を独立ページ (`/materials/stock/new`) → モーダル方式に変更
- 肥料マスタ・農薬マスタを別ページ → 1画面タブ切り替え (`/materials/masters`) に統合
- 理由: 既存の `/fertilizer/masters` のインライン編集パターンに合わせ、画面遷移を減らす
### 22.3 実装フェーズの整理
- セクション1〜16: Phase 1初期実装
- セクション17〜21: Phase 2公式データ同期、alias辞書、LLM調査支援
- CODEX への初回作業指示は Phase 1 のみを対象とする