最終確認: 2026-08-30
この文書は現行コードを正とする。仕様書に「予定」と書かれたものは、コードとテストで確認できるまで実装済みとして扱わない。詳細なHTTP契約は backend/API_SPEC.md を参照する。
Asia/Tokyo 固定へ更新し、自動テストで確認済み。表示言語と利用モードは別の保存設定で、2026-08-29にiPhone上の表示言語即時切替を確認した。募集作成から通知遷移・応募取消・ログアウト後の戻る操作までを同一手順で確認するiOS実機全通しE2Eは未確認である。expo-notifications等によるOSプッシュ通知は未実装。LISTEN/NOTIFY fan-out)と、保持期間スイープ(既定180日・deleted_at実配線・暗号文消去・chat_message_deletions監査)、チャット写真の暗号文BLOB添付(internal/chat/attachment.go、0034_chat_attachments.sql、POST/GET /api/v1/chats/{id}/attachments、未参照アップロードは約24hでスイープ、サーバーは鍵を持たない)をバックエンド実装済み。既読の last_message_sequence はハイウォーターマーク方式(最新liveへクランプ・前進のみ)。transport tokenが発行する transport は websocket のみ(webtransport / quic は終端サーバーが無いため400で拒否)。QUIC/WebTransport配送とチャット画面のフロント接続は未実装。保持日数の最終確定は運用・法務判断。Asia/Tokyo 固定で正規化する方針。DB/APIの絶対時刻はUTCとして扱う。docs/features/chat-load-test.md)はあるが未実施。現時点で未解消の重大な実装不整合はない。POST /api/v1/chats/{id}/transport-token のHTTP handler既定値とサービス受理値の不整合は解消済みで、現在はhandler既定値・サービス受理値ともに websocket で一致し、websocket のみを発行する(webtransport / quic は終端サーバーが未実装のため ErrChatInvalidInput/HTTP 400 で拒否)。QUIC/WebTransport配送は引き続き実装済みとは扱わず、ドキュメント上も将来仕様として扱う。
https://samurai-meet.disnana.com/api/v1。LANの 127.0.0.1:8080 や開発ホストへ自動切替はしない。別環境を使う場合だけ EXPO_PUBLIC_API_BASE_URL 等を明示する。起動時runnerは backend/migrations/*.sql を順に正規化してSHA-256 checksumを schema_migrations に記録し、PostgreSQL advisory lockで直列化する。適用済みSQLを編集してchecksum mismatchを回避してはいけない。変更は新しい番号のmigrationとして追加する。
bootstrap_token だけで、Access Token、Refresh Token、pre-auth tokenは渡さない。