リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: MoldTracker - 金型・治具寿命管理
次回メンテナンス予定ショット数までの残数アラート通知バナーの追加
## 1. 目的
現在のダッシュボードは「設計寿命に対する消化率」のアラートのみ表示しており、次回メンテナンス目標ショット数(next_maint_shots)への接近は視覚的に通知されていない。
金型が next_maint_shots に近づいた際にもアラートを出すことで、メンテナンスの見落とし・遅延を防ぎ、予防保全の実効性を高める。
## 2. 具体的な仕様
### 2-1. ロジック追加(lib.php)
`alert_level()` とは別に、メンテナンス接近レベルを返す関数 `maint_alert_level(array $mold): string` を追加する。
```php
function maint_alert_level(array $mold): string {
$next = (int)($mold['next_maint_shots'] ?? 0);
$total = (int)($mold['total_shots'] ?? 0);
if ($next <= 0 || $total >= $next) {
return 'over'; // 超過済み
}
$remaining = $next - $total;
// 残り5%以内 or 残り10,000shot以内を danger
$threshold_danger = max((int)($next * 0.05), 10000);
// 残り15%以内 or 残り30,000shot以内を warning
$threshold_warning = max((int)($next * 0.15), 30000);
if ($remaining <= $threshold_danger) return 'danger';
if ($remaining <= $threshold_warning) return 'warning';
return 'ok';
}
```
閾値はシンプルに固定値で実装し、将来的に設定画面から変更できる拡張余地を残す(この改善では固定値で実装)。
### 2-2. ダッシュボード(pages/dashboard.php)
既存の「寿命アラート」セクションの直上または直下に「メンテナンス接近アラート」セクションを追加する。
```php
// ダッシュボードのPHP部分に追加
$maint_alerts = array_values(array_filter($molds, function ($mold) {
$level = maint_alert_level($mold);
return $level === 'danger' || $level === 'warning' || $level === 'over';
}));
```
表示HTML(既存の寿命アラートカードと同じスタイルを流用):
```html
<div class="card">
<div class="toolbar">
<h2>メンテナンス接近アラート</h2>
<a class="btn" href="index.php?page=maintenance_form">メンテ記録を入力</a>
</div>
<?php if (!$maint_alerts): ?>
<p class="muted">次回メンテナンス目標に接近している金型はありません。</p>
<?php else: ?>
<div class="mold-grid">
<?php foreach ($maint_alerts as $mold):
$level = maint_alert_level($mold);
$next = (int)$mold['next_maint_shots'];
$total = (int)$mold['total_shots'];
$remaining = $next - $total;
?>
<a class="card alert-card <?= h($level) ?>" href="index.php?page=mold_view&id=<?= (int)$mold['id'] ?>">
<strong><?= h($mold['mold_code']) ?> <?= h($mold['name']) ?></strong>
<?php if ($level === 'over'): ?>
<div class="muted">⚠️ 次回メンテ目標 <?= number_format($next) ?> shots を超過中</div>
<?php else: ?>
<div class="muted">次回メンテまで残り <?= number_format($remaining) ?> shots</div>
<?php endif; ?>
<!-- 次回メンテ目標に対する進捗バー -->
<?php
$pct = $next > 0 ? min(100, ($total / $next) * 100) : 0;
?>
<div class="progress"><span class="<?= h($level) ?>" style="width:<?= number_format($pct, 1, '.', '') ?>%"></span></div>
<div class="mono"><?= number_format($total) ?> / <?= number_format($next) ?> shots</div>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
```
### 2-3. 金型詳細ページ(pages/mold_view.php)
金型詳細の上部にも同様のメンテ接近バナーを1行追加する(既存のアラートバナーと並列):
```php
$maint_level = maint_alert_level($mold);
if ($maint_level !== 'ok') {
$next = (int)$mold['next_maint_shots'];
$total = (int)$mold['total_shots'];
$remaining = $next - $total;
$msg = $maint_level === 'over'
? "次回メンテナンス目標(" . number_format($next) . " shots)を " . number_format(abs($remaining)) . " shots 超過しています。"
: "次回メンテナンスまで残り " . number_format($remaining) . " shots です。";
echo '<div class="error">🔧 ' . h($msg) . '</div>';
}
```
## 3. 既存機能との整合
- 既存の「設計寿命消化率アラート(usage_rate / alert_level)」のロジックは一切変更しない。
- 新関数 `maint_alert_level()` を lib.php に追加するのみで後方互換。
- ダッシュボードに新セクションを追加するが、既存の寿命アラートセクション・グラフ・直近記録テーブルはそのまま維持。
- next_maint_shots が未設定(NULL/0)の金型は表示対象外とし、既存動作に影響しない。
- スタイルは既存の `.alert-card.danger` / `.alert-card.warning` CSS クラスをそのまま流用するため、追加 CSS は不要。
現在のダッシュボードは「設計寿命に対する消化率」のアラートのみ表示しており、次回メンテナンス目標ショット数(next_maint_shots)への接近は視覚的に通知されていない。
金型が next_maint_shots に近づいた際にもアラートを出すことで、メンテナンスの見落とし・遅延を防ぎ、予防保全の実効性を高める。
## 2. 具体的な仕様
### 2-1. ロジック追加(lib.php)
`alert_level()` とは別に、メンテナンス接近レベルを返す関数 `maint_alert_level(array $mold): string` を追加する。
```php
function maint_alert_level(array $mold): string {
$next = (int)($mold['next_maint_shots'] ?? 0);
$total = (int)($mold['total_shots'] ?? 0);
if ($next <= 0 || $total >= $next) {
return 'over'; // 超過済み
}
$remaining = $next - $total;
// 残り5%以内 or 残り10,000shot以内を danger
$threshold_danger = max((int)($next * 0.05), 10000);
// 残り15%以内 or 残り30,000shot以内を warning
$threshold_warning = max((int)($next * 0.15), 30000);
if ($remaining <= $threshold_danger) return 'danger';
if ($remaining <= $threshold_warning) return 'warning';
return 'ok';
}
```
閾値はシンプルに固定値で実装し、将来的に設定画面から変更できる拡張余地を残す(この改善では固定値で実装)。
### 2-2. ダッシュボード(pages/dashboard.php)
既存の「寿命アラート」セクションの直上または直下に「メンテナンス接近アラート」セクションを追加する。
```php
// ダッシュボードのPHP部分に追加
$maint_alerts = array_values(array_filter($molds, function ($mold) {
$level = maint_alert_level($mold);
return $level === 'danger' || $level === 'warning' || $level === 'over';
}));
```
表示HTML(既存の寿命アラートカードと同じスタイルを流用):
```html
<div class="card">
<div class="toolbar">
<h2>メンテナンス接近アラート</h2>
<a class="btn" href="index.php?page=maintenance_form">メンテ記録を入力</a>
</div>
<?php if (!$maint_alerts): ?>
<p class="muted">次回メンテナンス目標に接近している金型はありません。</p>
<?php else: ?>
<div class="mold-grid">
<?php foreach ($maint_alerts as $mold):
$level = maint_alert_level($mold);
$next = (int)$mold['next_maint_shots'];
$total = (int)$mold['total_shots'];
$remaining = $next - $total;
?>
<a class="card alert-card <?= h($level) ?>" href="index.php?page=mold_view&id=<?= (int)$mold['id'] ?>">
<strong><?= h($mold['mold_code']) ?> <?= h($mold['name']) ?></strong>
<?php if ($level === 'over'): ?>
<div class="muted">⚠️ 次回メンテ目標 <?= number_format($next) ?> shots を超過中</div>
<?php else: ?>
<div class="muted">次回メンテまで残り <?= number_format($remaining) ?> shots</div>
<?php endif; ?>
<!-- 次回メンテ目標に対する進捗バー -->
<?php
$pct = $next > 0 ? min(100, ($total / $next) * 100) : 0;
?>
<div class="progress"><span class="<?= h($level) ?>" style="width:<?= number_format($pct, 1, '.', '') ?>%"></span></div>
<div class="mono"><?= number_format($total) ?> / <?= number_format($next) ?> shots</div>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
```
### 2-3. 金型詳細ページ(pages/mold_view.php)
金型詳細の上部にも同様のメンテ接近バナーを1行追加する(既存のアラートバナーと並列):
```php
$maint_level = maint_alert_level($mold);
if ($maint_level !== 'ok') {
$next = (int)$mold['next_maint_shots'];
$total = (int)$mold['total_shots'];
$remaining = $next - $total;
$msg = $maint_level === 'over'
? "次回メンテナンス目標(" . number_format($next) . " shots)を " . number_format(abs($remaining)) . " shots 超過しています。"
: "次回メンテナンスまで残り " . number_format($remaining) . " shots です。";
echo '<div class="error">🔧 ' . h($msg) . '</div>';
}
```
## 3. 既存機能との整合
- 既存の「設計寿命消化率アラート(usage_rate / alert_level)」のロジックは一切変更しない。
- 新関数 `maint_alert_level()` を lib.php に追加するのみで後方互換。
- ダッシュボードに新セクションを追加するが、既存の寿命アラートセクション・グラフ・直近記録テーブルはそのまま維持。
- next_maint_shots が未設定(NULL/0)の金型は表示対象外とし、既存動作に影響しない。
- スタイルは既存の `.alert-card.danger` / `.alert-card.warning` CSS クラスをそのまま流用するため、追加 CSS は不要。
💬 返信 (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