設計レビューで判明した会員・会計フローの要求ギャップ
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
まず参照されている Issue #15 から #21 を確認し、列挙されている各ギャップを既存のエントリポイントまたはフォローアップ Issue に対応付けます。payload にはファイルもテストも記載されていません。pricing、identity、payment、webhook、ownership、idempotency、administrator に関する各懸念について、設計、担当者、具体的な実装 Issue が決定されていれば完了です。
索引モデルが issue の本文から書いたものです。
説明
背景
設計レビューで、現状の issue に明確な担当が無い、または記述が設計意図と食い違う要求を検出した。各関連 issue に反映するか、個別に issue 化する。
ギャップ
- 入部費 price のサーバー決定(過少請求防止): 現状
invoices.createはpriceをクライアントからの入力のまま受け取っている。期(前期 4000 / 後期 2000)に応じて price をサーバー側で自動的に決定するロジックと、期の境界(日付)を判定する処理が必要。放置すると、前期の入部者が後期の 2000 を指定して過少請求できてしまう。(#18) - 支払者情報の付与(enrichment): 一覧に「誰が払ったか」を出す担当が不在。traq_id を Stripe metadata から DB へ移した後、
customer_id → DB 逆引きで traq_id / 氏名を entry に付与する必要がある。(#20 / 統合台帳 #21) - 再入部の未検証 traQ ID の隔離: 凍結アカウント(セッション無し)の再入部では、入力された traQ ID を Customer への保存・参照には使わず、どの凍結アカウントを復旧対象とするかの特定にのみ使う。#18 の「traq_id を常にセッション由来として DB 紐付け」という前提と矛盾する。認証プリンシパルごとに traq_id の信頼度を分ける必要がある。(#18)
- webhook の会計通知と会員状態モデル: #17 の「会員状態の更新」については、そもそも会員状態を表すモデルが未定義。加えて、通知の宛先・手段、凍結時のみ通知する条件、
checkout.session.completed由来の入金の扱いも要検討。(#17) - 二重プリンシパルの所有権キー: 新規/再入部はメール検証(#16 の isct セッション)、現役は traQ セッションが本人性の根拠であり、所有権キーがプリンシパルによって変わる(mail_hash か traq_id→customer か)。オブジェクト単位認可の前提として整理が必要。(#15 / #16)
- Customer 重複回避: 作成前に Stripe を email で検索して既存を再利用し、リトライ時の二重作成を防ぐ(冪等)。(#18)
- 二重支払い防止: 1 ユーザー・1 期あたり入部費は 1 回。未払いの入部費請求が既にあれば新規発行しないガードが必要(冪等キーは同一リクエストのリトライしか防がない)。(#15 / #18)
- 管理者の付与・剥奪: #18 は
GET /admin(一覧)のみ。管理者権限を付与/剥奪する導線と、初期管理者のブートストラップが必要。(#18)
- 主要言語
- TypeScript
- スター
- 0
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
traPtitech/Checkin のほかの issue
-
bug documentation
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
traPtitech/Checkin#87 ·
-
documentation
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
traPtitech/Checkin#64 ·
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
traPtitech/Checkin#59 ·
-
documentation enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
traPtitech/Checkin#95 ·
-
bug
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
traPtitech/Checkin#92 ·
traPtitech/Checkin の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
hugomrdias/playwright-test#753 ·
メンテナーはふだん 1 日以内に返信
-
Review view: Daily/Weekly Review header buttons use the app-wide toolbar control style対応中かも @colherdesopa が今日担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
dongdongbh/Mindwtr#1515 ·
メンテナーはふだん 1 日以内に返信
-
pending-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
kirodotdev/Kiro#12301 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100