リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: QualityGate - 製品検査・品質記録管理システム
検査記録一覧ページへのキーワード検索・絞り込み機能の追加
## 1. 目的
現在の検査記録一覧(pages/records.php)は期間・品番・検査種別での絞り込みのみ対応しているが、現場では「ロット番号で素早く1件を探したい」「特定の検査員の記録だけ確認したい」「出荷保留中のものだけ表示したい」というニーズが高い。これらの条件を追加することで、記録が増えても目的のデータに素早くアクセスできるようにする。
## 2. 具体的な仕様
### 追加するフィルター項目(GETパラメータ)
| パラメータ名 | 型 | 内容 |
|---|---|---|
| `lot` | string | ロット番号の部分一致(LIKE %...%) |
| `inspector_id` | int | 検査員IDによる絞り込み |
| `hold_only` | int(0/1) | 1のとき hold_flag=1 の記録のみ表示 |
### 変更ファイル: pages/records.php
1. **フィルターフォームの拡張**(既存フォームに3項目を追加)
- ロット番号テキスト入力: `<input type="text" name="lot" maxlength="50" placeholder="ロット番号" value="<?= h($lot) ?>">`
- 検査員セレクト: `qg_inspectors(false)` で有効検査員のみ列挙した `<select name="inspector_id">`
- 出荷保留のみチェックボックス: `<input type="checkbox" name="hold_only" value="1">`
2. **PHP側のパラメータ受け取り**(既存の $from/$to/$itemId/$type と同じ方式で追加)
```php
$lot = trim((string)($_GET['lot'] ?? ''));
$inspectorId = (int)($_GET['inspector_id'] ?? 0);
$holdOnly = (int)($_GET['hold_only'] ?? 0);
```
3. **WHERE句の追加条件**(既存の $where / $params 配列に追記)
```php
if ($lot !== '') { $where[] = 'r.lot_number LIKE ?'; $params[] = '%' . $lot . '%'; }
if ($inspectorId > 0) { $where[] = 'r.inspector_id = ?'; $params[] = $inspectorId; }
if ($holdOnly === 1) { $where[] = '(r.hold_flag = 1 OR i.hold_flag = 1)'; }
```
4. **絞り込み中の件数表示**
- フォームの下(テーブルの上)に `「XXX件 見つかりました」` を表示する小さな `<p class="hint">` 要素を追加
5. **フォームのリセットボタン**
- 既存の「絞り込み」ボタンの隣に `<a class="btn btn-sub" href="index.php?page=records">リセット</a>` を追加
### 変更ファイル: lib.php(不要、既存関数で完結)
追加関数は不要。`qg_inspectors(false)` はすでに存在する。
## 3. 既存機能との整合
- 既存の $from/$to/$itemId/$type フィルターはそのまま維持し、新条件はAND結合で追記するだけ
- export.php(CSV出力)には今回は手を加えない(別サイクルで対応可)
- ページネーションが既存にある場合はGETパラメータを引き継ぐため `http_build_query` で全パラメータを含める
- スマホでは既存と同様にフォームが縦並びになるよう `.filters` クラスのグリッドが自動的に適用される
- セキュリティ: LIKE検索は準備済みステートメントのバインドで対応済みのため SQLインジェクションの懸念なし
現在の検査記録一覧(pages/records.php)は期間・品番・検査種別での絞り込みのみ対応しているが、現場では「ロット番号で素早く1件を探したい」「特定の検査員の記録だけ確認したい」「出荷保留中のものだけ表示したい」というニーズが高い。これらの条件を追加することで、記録が増えても目的のデータに素早くアクセスできるようにする。
## 2. 具体的な仕様
### 追加するフィルター項目(GETパラメータ)
| パラメータ名 | 型 | 内容 |
|---|---|---|
| `lot` | string | ロット番号の部分一致(LIKE %...%) |
| `inspector_id` | int | 検査員IDによる絞り込み |
| `hold_only` | int(0/1) | 1のとき hold_flag=1 の記録のみ表示 |
### 変更ファイル: pages/records.php
1. **フィルターフォームの拡張**(既存フォームに3項目を追加)
- ロット番号テキスト入力: `<input type="text" name="lot" maxlength="50" placeholder="ロット番号" value="<?= h($lot) ?>">`
- 検査員セレクト: `qg_inspectors(false)` で有効検査員のみ列挙した `<select name="inspector_id">`
- 出荷保留のみチェックボックス: `<input type="checkbox" name="hold_only" value="1">`
2. **PHP側のパラメータ受け取り**(既存の $from/$to/$itemId/$type と同じ方式で追加)
```php
$lot = trim((string)($_GET['lot'] ?? ''));
$inspectorId = (int)($_GET['inspector_id'] ?? 0);
$holdOnly = (int)($_GET['hold_only'] ?? 0);
```
3. **WHERE句の追加条件**(既存の $where / $params 配列に追記)
```php
if ($lot !== '') { $where[] = 'r.lot_number LIKE ?'; $params[] = '%' . $lot . '%'; }
if ($inspectorId > 0) { $where[] = 'r.inspector_id = ?'; $params[] = $inspectorId; }
if ($holdOnly === 1) { $where[] = '(r.hold_flag = 1 OR i.hold_flag = 1)'; }
```
4. **絞り込み中の件数表示**
- フォームの下(テーブルの上)に `「XXX件 見つかりました」` を表示する小さな `<p class="hint">` 要素を追加
5. **フォームのリセットボタン**
- 既存の「絞り込み」ボタンの隣に `<a class="btn btn-sub" href="index.php?page=records">リセット</a>` を追加
### 変更ファイル: lib.php(不要、既存関数で完結)
追加関数は不要。`qg_inspectors(false)` はすでに存在する。
## 3. 既存機能との整合
- 既存の $from/$to/$itemId/$type フィルターはそのまま維持し、新条件はAND結合で追記するだけ
- export.php(CSV出力)には今回は手を加えない(別サイクルで対応可)
- ページネーションが既存にある場合はGETパラメータを引き継ぐため `http_build_query` で全パラメータを含める
- スマホでは既存と同様にフォームが縦並びになるよう `.filters` クラスのグリッドが自動的に適用される
- セキュリティ: LIKE検索は準備済みステートメントのバインドで対応済みのため SQLインジェクションの懸念なし
💬 返信 (3)
🛠 開発を開始しました (機能追加 (quality-gate))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「QualityGate - 製品検査・品質記録管理システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=quality-gate
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/quality-gate/
ご利用ありがとうございます!
ご要望いただいた「QualityGate - 製品検査・品質記録管理システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=quality-gate
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/quality-gate/
ご利用ありがとうございます!
Echo
Iris