リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: YieldTracker - 歩留まり・不良率リアルタイム集計&改善提案システム
不良実績の一覧表示・削除・編集機能の追加
## 1. 目的
現状、不良実績の入力フォーム(record_form)はあるが、過去に登録した実績を一覧で確認・修正・削除する画面が存在しない(pages/delete.php と pages/edit.php はいずれも redirect_to のみ)。入力ミスの訂正や誤記録の削除ができないため、データの信頼性が損なわれる恐れがある。本改善で実績の閲覧・削除・編集を可能にする。
## 2. 具体的な仕様
### 2-1. 実績一覧ページ(pages/records.php を新規作成)
- ナビゲーションに「実績一覧」リンクを追加(page=records)
- 表示列:ID/記録日時/製品名/工程名/投入数/不良数/不良率/原因カテゴリ/担当者/操作
- フィルタ(GETパラメータ):`from`(開始日)、`to`(終了日)、`product_id`、`process_id`。デフォルトは当月
- ページネーション:1ページ20件、前後リンク(`offset` パラメータ)
- 各行に「編集」ボタン(page=record_form&id=xxx)と「削除」ボタン(POSTフォーム、CSRF付き)
- スマホ時はテーブルを横スクロール可能にする(既存の `.table-wrap` クラスを流用)
### 2-2. 削除処理
- pages/records.php 内でPOSTを受け取り、mode=delete で処理
- CSRF検証 → `DELETE FROM defect_records WHERE id = ?` を実行
- 削除後 flash('実績を削除しました。') → redirect_to('records', 同フィルタ条件)
- 削除ボタンはJSの `confirm()` で確認ダイアログを表示(二重削除防止)
### 2-3. 編集機能(pages/record_form.php の拡張)
- GETパラメータ `id` が渡された場合、該当レコードをDBから取得してフォームに初期値をセット
- POSTのmode判定:`id` がある場合は UPDATE、ない場合は INSERT(既存の新規登録ロジックを保持)
- UPDATE文:`UPDATE defect_records SET product_id=?, process_id=?, input_qty=?, good_qty=?, defect_qty=?, category_id=?, operator_name=?, memo=?, recorded_at=? WHERE id=?`
- 存在しないIDが渡された場合は 404 相当のエラーメッセージを表示してフォームを非表示にする
- 更新後 flash('実績を更新しました。') → redirect_to('records')
### 2-4. lib.php への追加関数
```php
function fetch_records(array $filters, int $limit, int $offset): array { ... }
function count_records(array $filters): int { ... }
function find_record(int $id): ?array { ... }
```
## 3. 既存機能との整合
- pages/delete.php・pages/edit.php は現在 redirect_to のみなので、既存動作を壊さず新ページを追加するだけでよい
- ダッシュボードのKPI集計・CSVエクスポートは defect_records テーブルを参照するだけなので、削除・更新後も自動的に最新値が反映される
- record_form の新規登録フローはそのまま維持し、id パラメータがない場合は従来通り動作する
- スキーマ変更は不要
現状、不良実績の入力フォーム(record_form)はあるが、過去に登録した実績を一覧で確認・修正・削除する画面が存在しない(pages/delete.php と pages/edit.php はいずれも redirect_to のみ)。入力ミスの訂正や誤記録の削除ができないため、データの信頼性が損なわれる恐れがある。本改善で実績の閲覧・削除・編集を可能にする。
## 2. 具体的な仕様
### 2-1. 実績一覧ページ(pages/records.php を新規作成)
- ナビゲーションに「実績一覧」リンクを追加(page=records)
- 表示列:ID/記録日時/製品名/工程名/投入数/不良数/不良率/原因カテゴリ/担当者/操作
- フィルタ(GETパラメータ):`from`(開始日)、`to`(終了日)、`product_id`、`process_id`。デフォルトは当月
- ページネーション:1ページ20件、前後リンク(`offset` パラメータ)
- 各行に「編集」ボタン(page=record_form&id=xxx)と「削除」ボタン(POSTフォーム、CSRF付き)
- スマホ時はテーブルを横スクロール可能にする(既存の `.table-wrap` クラスを流用)
### 2-2. 削除処理
- pages/records.php 内でPOSTを受け取り、mode=delete で処理
- CSRF検証 → `DELETE FROM defect_records WHERE id = ?` を実行
- 削除後 flash('実績を削除しました。') → redirect_to('records', 同フィルタ条件)
- 削除ボタンはJSの `confirm()` で確認ダイアログを表示(二重削除防止)
### 2-3. 編集機能(pages/record_form.php の拡張)
- GETパラメータ `id` が渡された場合、該当レコードをDBから取得してフォームに初期値をセット
- POSTのmode判定:`id` がある場合は UPDATE、ない場合は INSERT(既存の新規登録ロジックを保持)
- UPDATE文:`UPDATE defect_records SET product_id=?, process_id=?, input_qty=?, good_qty=?, defect_qty=?, category_id=?, operator_name=?, memo=?, recorded_at=? WHERE id=?`
- 存在しないIDが渡された場合は 404 相当のエラーメッセージを表示してフォームを非表示にする
- 更新後 flash('実績を更新しました。') → redirect_to('records')
### 2-4. lib.php への追加関数
```php
function fetch_records(array $filters, int $limit, int $offset): array { ... }
function count_records(array $filters): int { ... }
function find_record(int $id): ?array { ... }
```
## 3. 既存機能との整合
- pages/delete.php・pages/edit.php は現在 redirect_to のみなので、既存動作を壊さず新ページを追加するだけでよい
- ダッシュボードのKPI集計・CSVエクスポートは defect_records テーブルを参照するだけなので、削除・更新後も自動的に最新値が反映される
- record_form の新規登録フローはそのまま維持し、id パラメータがない場合は従来通り動作する
- スキーマ変更は不要
💬 返信 (3)
🛠 開発を開始しました (機能追加 yield-tracker)
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「YieldTracker - 歩留まり・不良率リアルタイム集計&改善提案システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=yield-tracker
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/yield-tracker/
ご利用ありがとうございます!
ご要望いただいた「YieldTracker - 歩留まり・不良率リアルタイム集計&改善提案システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=yield-tracker
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/yield-tracker/
ご利用ありがとうございます!
Echo
Iris