コンテンツにスキップ

Tasks

1. useFileQueue の拡張

  • [x] 1.1 fileQueueReducer に SELECT_GROUP アクションを追加し、キューアイテムに groupOverride: { groupId, groupName } フィールドを設定する
  • [x] 1.2 fileQueueReducer に MISSING_GROUP アクションを追加し、groupName が空のパース結果に対して missing_group ステータスを設定する
  • [x] 1.3 parsePendingItem 内で、パース成功かつ groupName が空の場合に MISSING_GROUP をディスパッチするロジックを追加する
  • [x] 1.4 selectGroup コールバック関数を追加し、SELECT_GROUP アクションをディスパッチする。missing_group ステータスの場合は ready に遷移させる
  • [x] 1.5 SELECT_GROUP 時に、変更後の sessionId(${groupId}-${date})で existingSessionIds との重複チェックを行い、重複時は duplicate_warning ステータスに遷移させる
  • [x] 1.6 readyItems の useMemo フィルタに missing_group ステータスが含まれないことを確認する

2. コンポーネントの更新

  • [x] 2.1 FileQueueCard に groups prop と onSelectGroup prop を追加する
  • [x] 2.2 FileQueueCard のサマリー行で、グループ名テキスト表示をプルダウン(<select>)に置き換える
  • [x] 2.3 プルダウンの選択肢に既存グループ一覧を表示し、groupOverride または自動検出グループをデフォルト選択にする
  • [x] 2.4 自動検出グループが既存グループと一致しない場合、「(新規){グループ名}」の選択肢を先頭に追加する
  • [x] 2.5 missing_group ステータスの場合、「グループを選択してください」のプレースホルダーとエラーメッセージを表示する
  • [x] 2.6 saving / saved ステータスの場合、プルダウンを disabled にする
  • [x] 2.7 FileQueueCardList に groups prop と onSelectGroup prop を追加し、各 FileQueueCard にバケツリレーする

3. AdminPage の更新

  • [x] 3.1 FileQueueCardList に groups state と selectGroup コールバックを渡す
  • [x] 3.2 handleBulkSave 内で、groupOverride が存在するアイテムに対して mergeInput の groupIdgroupNamesessionId と sessionRecord の groupIdid を上書きするロジックを追加する

4. テスト

  • [x] 4.1 useFileQueue のユニットテスト: SELECT_GROUP アクションによる groupOverride 設定を検証する
  • [x] 4.2 useFileQueue のユニットテスト: groupName 空の場合の missing_group ステータス遷移を検証する
  • [x] 4.3 useFileQueue のユニットテスト: グループ選択後の重複チェック(sessionId 再計算)を検証する
  • [x] 4.4 FileQueueCard のユニットテスト: プルダウン表示、デフォルト選択、既存グループ一覧の表示を検証する
  • [x] 4.5 FileQueueCard のユニットテスト: missing_group ステータス時のエラー表示とグループ選択後の遷移を検証する
  • [x] 4.6 AdminPage のユニットテスト: handleBulkSave での mergeInput 上書きロジックを検証する
  • [x] 4.7 既存テストが破壊されていないことを pnpm test で確認する