Skip to content

iOS/Android: 照合ログ(判定・不受理・セッション)を端末内に記録し、設定画面から JSONL で共有する #120

Description

@rimtty

背景

現場でのデバッグのため、カメラ・BLE どちらの入力でも照合検査の結果をすべて端末内に記録し、設定画面の一番下から一括で共有(ダウンロード)できるようにしたい。BLE 診断ログは意図的に読取値を含まないので、別の「照合ログ」として新設する。

決定事項(2026-09-07)

  1. 対象: 最終判定(一致・不一致・重複)+不受理(形式外・順序違い・別仕向地・長さ不正など)+セッション開始/終了をすべて 1 行ずつ。
  2. QR / Code 128 の生ペイロードを含める(端末内のみに保存。共有は操作したときだけ)。
  3. 直近 5,000 件を端末に永続化(超過分は古いものから削除)。設定画面最下部に「照合ログをすべて共有」と「照合ログを消去」(確認あり)。

共通スキーマ(JSON Lines、schemaVersion 1、両 OS 同一)

  • 1 行目ヘッダ: {"type":"header","schemaVersion":1,"platform":"ios|android","appVersion":"…","exportedAt":"<ISO8601 UTC>","eventCount":N,"limit":5000}
  • 2 行目以降 1 イベント 1 行: {"at":"<ISO8601 ms UTC>","session":"<uuid|null>","source":"camera|bluetooth","step":"qr|barcode|result|none","event":"…","reason":"…|null","destination":"sawai|molten|denso|null","qr":"…|null","barcode":"…|null","code":"…|null","boxNumber":N|null,"message":"…|null"}(null は明示)
  • event: session_start / session_end / qr_accepted / barcode_candidate / barcode_accepted / match / mismatch / duplicate / rejected
  • reason(snake_case): invalid_format / wrong_order / wrong_destination / wrong_symbology / result_pending / incomplete / overlong / invalid / empty / session_not_started / source_mismatch
  • ファイル名: codematch-scan-log-yyyyMMdd-HHmm.jsonl

やること(子 Issue)

  1. iOS: 照合ログ(ScanLogStore)と設定画面の共有・消去 #121 iOS: ScanLogStore(JSONL 追記、5,000 件)、ScannerViewModel の記録フック、設定画面最下部のカード、テスト、docs
  2. Android: 照合ログ(Room v4 scan_log)と設定画面の共有・保存・消去 #122 Android: Room v4 scan_logScanSessionCoordinatorScanLogRecorder フック、ScanLogRepositoryScanLogJsonExporter、設定画面最下部のカード、release ゲート更新、テスト、docs

受け入れ条件

  • 両 OS で一致・不一致・重複・不受理・セッション開始/終了がログに残り、設定画面最下部から JSONL を共有できる
  • 両 OS の JSONL がヘッダとイベント項目で同じスキーマになっている
  • 5,000 件を超えると古いものから消える。消去ボタンで空になる
  • BLE 診断ログは従来どおり読取値を含まない。既存テスト・release ゲートが通る

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions