Release Notes: v0.1.6
v0.1.6 Release Notes
リリース日: 2025年10月15日
🚀 新機能
📦 資材除外機能
資材を在庫計算から除外できる機能を追加しました。
主な機能:
- DB除外フラグ: 資材テーブルに永続的な除外フラグを追加
- 除外管理UI: 学校別在庫状況ページから資材の除外設定が可能
- 視覚的フィードバック: 除外された資材は赤色の背景と斜体で表示
- 最小在庫計算: 除外された資材は最小在庫数の計算から自動的に除外
- 後方互換性: デフォルトは除外なしで、既存データへの影響なし
使用方法:
- 学校別在庫状況ページ(
/organizations)で組織カードの3点メニューをクリック - 「資材除外設定」を選択
- 除外したい資材のチェックボックスをON/OFFで切り替え
- 変更が自動保存され、即座に在庫計算に反映
📅 日付基準の在庫計算機能
在庫反映ページで、指定した日付時点での在庫数を表示できるようになりました。
主な機能:
- 日付選択: 発送日を変更すると、その時点での在庫数を動的に表示
- リアルタイム更新: 日付変更時に全資材の在庫数が自動更新
- 整合性向上: 最小在庫数も選択日付の在庫数に基づいて計算
- API対応: 指定日時の在庫数を取得する新しいAPIエンドポイントを追加
技術仕様:
- 新規APIエンドポイント:
GET /api/admin/materials/stocks-as-of-date?date=YYYY-MM-DDTHH:MM - レスポンス形式:
{組織ID: {資材ID: 在庫数}}
🎯 CATCH発送機能の大幅な改善
タイトル管理の強化
- カードレイアウト: 表形式からカードレイアウトに変更し、視認性を向上
- 未発送バッジ: 未発送件数を目立つバッジで表示
- 発送日表示: 注文日をわかりやすく表示(例:2025/6/25(水))
- アクションメニュー: 各タイトルに3点メニューを追加
- 「内容を見る」
- 「注文を編集」
- 「在庫に反映」
在庫反映機能の改善
- 一括反映: 複数組織の在庫反映を一度に実行可能
- 反映履歴: 過去の反映記録を
CatchShippingReflectionテーブルで管理 - 未反映件数: 各組織の未反映件数をリアルタイム表示
- 最小在庫制限: 在庫が足りない場合は反映を拒否
- 除外資材対応: 資材の除外設定を反映時に考慮
注文入力の改善
- 日付ベース計算: 選択日付時点での在庫数を基準に表示
- リアルタイム検証: 入力値が在庫数を超えないよう即座にチェック
- 発送日管理: 発送日の編集と週単位での更新機能
📊 学校別在庫状況の強化
未発送件数表示
- カードヘッダー: 各組織カードに未発送累計を表示
- トレンド表示: 在庫トレンドテーブルに未発送件数推移を追加
- ダイアログ表示: 資材詳細ダイアログで除外資材を明示
最小在庫資材の強調
- ハイライト: 最も在庫が少ない資材を強調表示
- 残り件数バッジ: 他の資材数を「ほかn件」バッジで表示
- 次回納品情報: 最小在庫資材のカードを追加
🔄 在庫トレンド表示の改善
- 自動スクロール: 最新日付の列にページ読み込み時に自動スクロール
- 日付ハイライト: クリックした日付をハイライト表示
- CATCH注文統合: トレンドテーブルにCATCH注文履歴を統合表示
🗂️ 更新セットメンテナンス機能
管理者ダッシュボードに「更新セットメンテ」項目を追加しました。
主な機能:
- セット一覧表示: 全ての取引セットを一覧表示
- 詳細ダイアログ: 各セットの内容をモーダルで確認
- 削除機能: 不要なセットを削除(関連取引も一括削除)
- カスケード削除: セットに紐づく取引も自動的に削除
🛠️ バグ修正
🔐 タイムゾーン統一
CATCH発送反映で記録される日時をJST(+09:00)タイムゾーン付きで保存するように修正しました。
修正内容:
- 一貫性向上: 全ての日時データでタイムゾーンを統一
- 計算精度: 日付ベースの計算で時刻のずれを排除
🔧 モーダル動作の改善
モーダルダイアログの保存状態と不要なログ出力を修正しました。
修正内容:
- ログ抑制: 不要なコンソールログを削除
- 状態管理: モーダルの保存状態を正しく管理
📋 在庫計算ロジックの簡素化
日次在庫計算ロジックを簡素化し、保守性を向上させました。
修正内容:
- コード整理: 冗長な計算処理を削除
- パフォーマンス改善: 計算効率を向上
🔧 技術的改善
アーキテクチャの改善
- 非推奨フィールド:
CatchShippingTitle.MaterialTransactionSetIDを非推奨化 - 新テーブル:
CatchShippingReflectionで反映履歴を管理 - 関数整理: 古い在庫計算関数を削除し、新しいロジックに統一
フロントエンド強化
- Alpine.js活用: リアクティブなUI更新を実装
- レスポンシブ対応: カードレイアウトでモバイル表示を改善
- UX向上: ローディング状態、エラーハンドリング、自動リロード
API拡張
- 新規エンドポイント:
GET /api/admin/materials/stocks-as-of-date- 日付指定在庫取得GET /api/admin/organizations/:orgId/materials/exclusions- 資材除外状況取得PUT /api/admin/organizations/:orgId/materials/exclusions- 資材除外設定更新GET /api/admin/transaction-sets/:id- 取引セット詳細取得DELETE /api/admin/transaction-sets/:id- 取引セット削除
キャッシュ制御
- Cache-Control: 主要ページにno-cacheヘッダーを追加
- データ鮮度: 常に最新のデータを表示
🎯 対象ユーザー
- 組織管理者: 資材除外機能で在庫管理の柔軟性が向上
- 管理者: CATCH発送の一括反映機能で業務効率が大幅に向上
- 全ユーザー: 改善されたUIと正確な在庫計算
📝 使用上の注意
資材除外機能
- 除外された資材は最小在庫数の計算から除外されます
- CATCH発送反映ページでは除外資材は編集不可(読み取り専用)として表示されます
- 除外設定は組織ごとに管理されます
在庫反映機能
- 反映時に選択した日付時点での在庫数が基準となります
- 在庫が足りない場合は反映できません
- 複数回の反映履歴が記録されます
データベース変更
materialsテーブルにis_excludedカラムを追加(デフォルト: false)catch_shipping_reflectionsテーブルを新規追加catch_shipping_titles.material_transaction_set_idは非推奨(後方互換性のため残存)
API変更
- 在庫取得APIで日付パラメータが利用可能になりました
- 資材除外管理用のAPIが追加されました
🔄 移行ガイド
データベースマイグレーション
-- materials テーブルに除外フラグを追加
ALTER TABLE materials ADD COLUMN is_excluded BOOLEAN NOT NULL DEFAULT false;
-- catch_shipping_reflections テーブルを作成
CREATE TABLE catch_shipping_reflections (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title_id INTEGER NOT NULL,
organization_id INTEGER NOT NULL,
catch_reflected_count INTEGER NOT NULL DEFAULT 0,
school_reflected_count INTEGER NOT NULL DEFAULT 0,
reflected_at DATETIME NOT NULL,
material_transaction_set_id INTEGER NOT NULL,
created_by_id INTEGER,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
deleted_at DATETIME,
FOREIGN KEY (title_id) REFERENCES catch_shipping_titles(id),
FOREIGN KEY (organization_id) REFERENCES organizations(id),
FOREIGN KEY (material_transaction_set_id) REFERENCES material_transaction_sets(id),
FOREIGN KEY (created_by_id) REFERENCES users(id)
);
CREATE INDEX idx_title_org ON catch_shipping_reflections(title_id, organization_id);
CREATE INDEX idx_reflected_at ON catch_shipping_reflections(reflected_at);
既存データへの影響
- 既存の資材は全て除外なし(
is_excluded = false)として扱われます - CATCH発送の過去データは新しい反映システムに影響しません
互換性: v0.1.5からの移行において、データベーススキーマの追加があります。既存データへの影響は最小限です。新しいAPIエンドポイントが追加されていますが、既存のAPIとの互換性は維持されています。