Release Notes: v0.1.6

← バージョン一覧に戻る

v0.1.6 Release Notes

リリース日: 2025年10月15日

🚀 新機能

📦 資材除外機能

資材を在庫計算から除外できる機能を追加しました。

主な機能:

  • DB除外フラグ: 資材テーブルに永続的な除外フラグを追加
  • 除外管理UI: 学校別在庫状況ページから資材の除外設定が可能
  • 視覚的フィードバック: 除外された資材は赤色の背景と斜体で表示
  • 最小在庫計算: 除外された資材は最小在庫数の計算から自動的に除外
  • 後方互換性: デフォルトは除外なしで、既存データへの影響なし

使用方法:

  1. 学校別在庫状況ページ(/organizations)で組織カードの3点メニューをクリック
  2. 「資材除外設定」を選択
  3. 除外したい資材のチェックボックスをON/OFFで切り替え
  4. 変更が自動保存され、即座に在庫計算に反映

📅 日付基準の在庫計算機能

在庫反映ページで、指定した日付時点での在庫数を表示できるようになりました。

主な機能:

  • 日付選択: 発送日を変更すると、その時点での在庫数を動的に表示
  • リアルタイム更新: 日付変更時に全資材の在庫数が自動更新
  • 整合性向上: 最小在庫数も選択日付の在庫数に基づいて計算
  • 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との互換性は維持されています。