リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: MoldTracker - 金型・治具寿命管理
金型詳細ページへのショット数推移グラフ(月別棒グラフ)追加
## 1. 目的
金型詳細ページ(mold_view.php)では現在、メンテナンス履歴テーブルと稼働記録テーブルが一覧表示されているが、累計ショット数の月別推移をビジュアルで把握する手段がない。月別ショット棒グラフを追加することで、稼働ペースの変動・急増・長期停滞などを現場担当者が直感的に確認できるようにする。これにより寿命消化速度の予測や、メンテナンス計画の精度向上に役立てる。
## 2. 具体的な仕様
### 2-1. 表示位置
- `pages/mold_view.php` の「稼働記録」テーブルカードの直前(メンテナンス履歴カードの後)に新たなカード `<div class="card">` を挿入する。
### 2-2. データ取得(PHP)
- 既存の `monthly_shots(int $mold_id)` 関数を利用し、当該金型の全月別ショット数を取得する。
- 直近12ヶ月分のみ表示する(取得後 PHP 側で末尾12件にスライス、または SQL で `HAVING month >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 11 MONTH), '%Y-%m')` を追加)。
- データが0件の場合は「稼働記録がありません」と `<p class="muted">` で表示し、Canvasは描画しない。
### 2-3. グラフ仕様(Chart.js)
- ダッシュボードで既に Chart.js が読み込まれているが、mold_view.php では独立してページ内で `<script src="...">` または `render_layout` 経由で Chart.js CDN を追加する(既存ダッシュボードのCDN読み込みがレイアウト共通でなければ、レイアウトのヘッダに移動するか、mold_view.php のコンテンツ内末尾にインラインで追加)。
- グラフ種別:縦棒グラフ(type: 'bar')
- X軸:月ラベル(例: `2026-04`)
- Y軸:ショット数(beginAtZero: true)
- 棒の色:`#3b7dd8`(ダッシュボードと統一)
- レスポンシブ(responsive: true)
- canvas id: `moldShotChart`
- 高さ: height="180"
### 2-4. カードのマークアップ例
```html
<div class="card">
<h2>月別ショット数推移(直近12ヶ月)</h2>
<?php if (!$monthly_shots): ?>
<p class="muted">稼働記録がありません。</p>
<?php else: ?>
<canvas id="moldShotChart" height="180"></canvas>
<script>
new Chart(document.getElementById('moldShotChart'), {
type: 'bar',
data: {
labels: <?= json_encode(array_column($monthly_shots, 'month'), JSON_UNESCAPED_UNICODE) ?>,
datasets: [{
label: 'ショット数',
data: <?= json_encode(array_map('intval', array_column($monthly_shots, 'shots')), JSON_UNESCAPED_UNICODE) ?>,
backgroundColor: '#3b7dd8'
}]
},
options: {
responsive: true,
plugins: { legend: { display: false } },
scales: { y: { beginAtZero: true } }
}
});
</script>
<?php endif; ?>
</div>
```
### 2-5. PHP データ取得コード(mold_view.php 上部)
```php
$monthly_shots_raw = monthly_shots($mold['id']);
// 直近12ヶ月分に絞る
$monthly_shots = array_slice($monthly_shots_raw, -12);
```
## 3. 既存機能との整合(壊さない点)
- `monthly_shots()` 関数はすでに `lib.php` に存在し、引数 `$mold_id` を渡すだけで動作する。既存のシグネチャを変更しない。
- ダッシュボードの月次グラフ、月次レポートページには一切影響しない。
- `mold_view.php` の既存テーブル(稼働記録・メンテナンス履歴)は位置・内容ともに変更しない。カードを1つ追加するのみ。
- スキーマ変更・設定変更は不要。
- Chart.js の読み込みが `render_layout` のヘッダで共通化されていない場合は、mold_view.php のコンテンツ末尾に `<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>` を追加する(ダッシュボードと同様の対応)。
金型詳細ページ(mold_view.php)では現在、メンテナンス履歴テーブルと稼働記録テーブルが一覧表示されているが、累計ショット数の月別推移をビジュアルで把握する手段がない。月別ショット棒グラフを追加することで、稼働ペースの変動・急増・長期停滞などを現場担当者が直感的に確認できるようにする。これにより寿命消化速度の予測や、メンテナンス計画の精度向上に役立てる。
## 2. 具体的な仕様
### 2-1. 表示位置
- `pages/mold_view.php` の「稼働記録」テーブルカードの直前(メンテナンス履歴カードの後)に新たなカード `<div class="card">` を挿入する。
### 2-2. データ取得(PHP)
- 既存の `monthly_shots(int $mold_id)` 関数を利用し、当該金型の全月別ショット数を取得する。
- 直近12ヶ月分のみ表示する(取得後 PHP 側で末尾12件にスライス、または SQL で `HAVING month >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 11 MONTH), '%Y-%m')` を追加)。
- データが0件の場合は「稼働記録がありません」と `<p class="muted">` で表示し、Canvasは描画しない。
### 2-3. グラフ仕様(Chart.js)
- ダッシュボードで既に Chart.js が読み込まれているが、mold_view.php では独立してページ内で `<script src="...">` または `render_layout` 経由で Chart.js CDN を追加する(既存ダッシュボードのCDN読み込みがレイアウト共通でなければ、レイアウトのヘッダに移動するか、mold_view.php のコンテンツ内末尾にインラインで追加)。
- グラフ種別:縦棒グラフ(type: 'bar')
- X軸:月ラベル(例: `2026-04`)
- Y軸:ショット数(beginAtZero: true)
- 棒の色:`#3b7dd8`(ダッシュボードと統一)
- レスポンシブ(responsive: true)
- canvas id: `moldShotChart`
- 高さ: height="180"
### 2-4. カードのマークアップ例
```html
<div class="card">
<h2>月別ショット数推移(直近12ヶ月)</h2>
<?php if (!$monthly_shots): ?>
<p class="muted">稼働記録がありません。</p>
<?php else: ?>
<canvas id="moldShotChart" height="180"></canvas>
<script>
new Chart(document.getElementById('moldShotChart'), {
type: 'bar',
data: {
labels: <?= json_encode(array_column($monthly_shots, 'month'), JSON_UNESCAPED_UNICODE) ?>,
datasets: [{
label: 'ショット数',
data: <?= json_encode(array_map('intval', array_column($monthly_shots, 'shots')), JSON_UNESCAPED_UNICODE) ?>,
backgroundColor: '#3b7dd8'
}]
},
options: {
responsive: true,
plugins: { legend: { display: false } },
scales: { y: { beginAtZero: true } }
}
});
</script>
<?php endif; ?>
</div>
```
### 2-5. PHP データ取得コード(mold_view.php 上部)
```php
$monthly_shots_raw = monthly_shots($mold['id']);
// 直近12ヶ月分に絞る
$monthly_shots = array_slice($monthly_shots_raw, -12);
```
## 3. 既存機能との整合(壊さない点)
- `monthly_shots()` 関数はすでに `lib.php` に存在し、引数 `$mold_id` を渡すだけで動作する。既存のシグネチャを変更しない。
- ダッシュボードの月次グラフ、月次レポートページには一切影響しない。
- `mold_view.php` の既存テーブル(稼働記録・メンテナンス履歴)は位置・内容ともに変更しない。カードを1つ追加するのみ。
- スキーマ変更・設定変更は不要。
- Chart.js の読み込みが `render_layout` のヘッダで共通化されていない場合は、mold_view.php のコンテンツ末尾に `<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>` を追加する(ダッシュボードと同様の対応)。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (mold-tracker))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「MoldTracker - 金型・治具寿命管理」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=mold-tracker
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/mold-tracker/
ご利用ありがとうございます!
ご要望いただいた「MoldTracker - 金型・治具寿命管理」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=mold-tracker
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/mold-tracker/
ご利用ありがとうございます!
Echo
Iris