Skip to content

[フォーム注入 1/2] Resume payload → フォーム state 注入機構(共有部品) #524

Description

@yusuke0610

背景(#517

Resume 全体の payload を Redux のフォーム state に適用する仕組みは、PDF インポート(後続)と ADR-0018 の GitHub ドラフト「手で転記」問題の両方が欲しがっている同じ部品。先に共有部品として作ることで、両機能が同じ投資で成立する。

作業内容(PR 1本: web のみ、backend 変更なし)

  • Resume 型の payload を受け取り、Redux のフォーム state(基本情報・職務要約・自己PR・experiences のネスト構造)へ一括適用する注入機構を実装
    • 配置は .claude/rules/common/duplication.md の抽出先ヒエラルキーに従う(状態管理を含むロジック → web/src/hooks/、純変換 → formMappers.ts 系)
  • 上書き確認の UX を設計に含める: フォームに入力途中データがある場合、確認なしで消さない(確認ダイアログ or マージ方針の明示)
  • 部分 payload(一部フィールド欠落)への耐性: 欠落フィールドは既存値を保持 or 空で埋めるかを仕様として固定し、テストで担保
  • 変換ロジックは決定論のため TDD 対象(red→green→refactor、.claude/rules/common/tdd.md
  • メッセージ類は web/src/constants/messages.ts に定数追加(リテラル直書き禁止)

受け入れ条件

  • make ci green(lint-web / test-web / lint-web-messages
  • 注入 → ユーザ確認 → 既存の保存 API(PUT /resumes 系)という ADR-0010 の「DB 非更新」原則の流れに載っている
  • 後続 2 機能(ドラフト流し込み・PDF インポート)が呼ぶだけで済むインターフェースになっている

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendバックエンドfeature新機能webフロントエンド (web)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions