Skip to content

feat(web): 経歴書 保存前の差分確認機能を全削除#429

Merged
yusuke0610 merged 2 commits into
mainfrom
feat/remove-resume-diff-preview
Jun 29, 2026
Merged

feat(web): 経歴書 保存前の差分確認機能を全削除#429
yusuke0610 merged 2 commits into
mainfrom
feat/remove-resume-diff-preview

Conversation

@yusuke0610

@yusuke0610 yusuke0610 commented Jun 28, 2026

Copy link
Copy Markdown
Owner

概要

職務経歴書の保存ボタン押下時に必ず開いていた左右 diff モーダル(CareerDiffModal)を廃止し、保存フローを「バリデーション成功 → そのまま保存」に統一します。

差分確認は実際に使われておらず、保存のたびにモーダルを挟むぶん UX を悪化させていたため、この機能専用のコードをフロント・バックエンド双方から全削除します。

変更内容

フロントエンド(完全削除)

  • CareerDiffModal.tsx / .module.cssuseResumeDiffPreviewcareerDiffcareerReviewdiffHighlight(各テスト含む)

フロントエンド(変更)

  • CareerResumeForm.tsx — diff モーダル・差分計算・プレビュー取得を除去
  • useCareerFormModals.ts — 保存確認モーダルの state/handler を削除(削除確認・Markdown 編集は残す)
  • useCareerFormValidationFocus.tschangeCount / openSaveConfirm を撤去し onSubmit を常に save() へ単純化
  • api/{resumes,types,paths}.tsconstants/messages.tsCAREER_DIFF_LABELS / DIFF_DIALOG_MESSAGES)から専用定義を除去

バックエンド(削除)

  • /api/resumes/preview エンドポイント、build_resume_previewResumePreviewResponse スキーマ+export、関連テスト
  • 派生デッドコード整理: _load_cssfor_screen 分岐・_FONT_FACE_RE・未使用 import re(PDF パスのみ残す)

SSoT 生成物

  • make codegen-typesweb/src/api/generated.ts を再生成(preview 系の消滅を確認)

残したもの(別機能)

  • 未保存マーク 🔴(useCareerDirty
  • PDF/Markdown 生成と data-fp / data-unit 属性(PDF 出力に無害)

テスト

  • make ci green(backend 629 passed / web 365 passed / lint / build-web / codegen-drift すべて pass)
  • E2E トリガー判定: 保存ハンドラの挙動変更のみで、ページ/ルート/認証/レイアウト/サイドバーの追加・変更なし → 必須トリガー非該当(vitest でカバー)

レビュー注意

  • 破壊的変更: /api/resumes/preview エンドポイントと ResumePreviewResponse を削除(API 契約変更)
  • web/src/api/generated.ts は codegen 再生成による自動生成差分

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Resume timestamps now display in JST-formatted ISO strings.
    • Saving career/resume edits now goes directly through without an extra change-review step.
  • Refactor

    • Removed the resume preview and diff-review flow from the app.
    • Simplified related resume and career editing screens and supporting API surfaces.

保存ボタン押下時に必ず開いていた左右 diff モーダル(CareerDiffModal)を
廃止し、保存フローを「バリデーション成功 → そのまま保存」に統一する。
差分確認は実際に使われておらず、保存のたびにモーダルを挟むぶん UX を
悪化させていたため、フロント・バックエンド双方の専用コードを削除する。

- フロント: CareerDiffModal / useResumeDiffPreview / careerDiff /
  careerReview / diffHighlight とテストを削除。CareerResumeForm・
  useCareerFormModals・useCareerFormValidationFocus から差分確認分岐を除去
- バックエンド: /api/resumes/preview エンドポイント・build_resume_preview・
  ResumePreviewResponse スキーマと関連テストを削除。_load_css の
  for_screen 分岐など派生デッドコードも整理
- messages.ts の CAREER_DIFF_LABELS / DIFF_DIALOG_MESSAGES を削除
- OpenAPI 生成物(generated.ts)を再生成

未保存マーク(useCareerDirty)と PDF/Markdown 生成は影響なし。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3c288350-3379-4639-a2d3-ea50a5df4c8a

📥 Commits

Reviewing files that changed from the base of the PR and between 2f380b2 and 6de8dfd.

📒 Files selected for processing (28)
  • backend/app/routers/resumes.py
  • backend/app/schemas/__init__.py
  • backend/app/schemas/resume.py
  • backend/app/services/pdf/generators/resume_generator.py
  • backend/tests/test_endpoints.py
  • backend/tests/test_pdf_generator.py
  • web/e2e/career-dirty-indicator.spec.ts
  • web/src/api/generated.ts
  • web/src/api/paths.ts
  • web/src/api/resumes.ts
  • web/src/api/types.ts
  • web/src/components/forms/CareerDiffModal.module.css
  • web/src/components/forms/CareerDiffModal.tsx
  • web/src/components/forms/CareerResumeForm.tsx
  • web/src/constants/messages.ts
  • web/src/hooks/career/useCareerFormModals.test.ts
  • web/src/hooks/career/useCareerFormModals.ts
  • web/src/hooks/career/useCareerFormValidationFocus.test.ts
  • web/src/hooks/career/useCareerFormValidationFocus.ts
  • web/src/hooks/career/useResumeDiffPreview.test.ts
  • web/src/hooks/career/useResumeDiffPreview.ts
  • web/src/test/factories/careerForm.ts
  • web/src/utils/careerDiff.test.ts
  • web/src/utils/careerDiff.ts
  • web/src/utils/careerReview.test.ts
  • web/src/utils/careerReview.ts
  • web/src/utils/diffHighlight.test.ts
  • web/src/utils/diffHighlight.ts
💤 Files with no reviewable changes (20)
  • web/src/utils/careerReview.test.ts
  • web/src/utils/careerDiff.test.ts
  • web/src/api/paths.ts
  • web/src/api/types.ts
  • web/src/hooks/career/useResumeDiffPreview.test.ts
  • web/src/utils/diffHighlight.test.ts
  • web/src/utils/diffHighlight.ts
  • web/src/components/forms/CareerDiffModal.tsx
  • web/src/utils/careerReview.ts
  • web/src/utils/careerDiff.ts
  • backend/tests/test_pdf_generator.py
  • web/src/hooks/career/useResumeDiffPreview.ts
  • web/src/components/forms/CareerDiffModal.module.css
  • web/src/hooks/career/useCareerFormModals.test.ts
  • backend/app/schemas/init.py
  • backend/app/routers/resumes.py
  • web/src/constants/messages.ts
  • backend/tests/test_endpoints.py
  • backend/app/schemas/resume.py
  • web/src/api/generated.ts

📝 Walkthrough

Walkthrough

Removes the POST /api/resumes/preview endpoint and its entire implementation stack: backend route, ResumePreviewResponse schema, build_resume_preview generator, frontend API client functions, CareerDiffModal component, diff utility modules (careerDiff, careerReview, diffHighlight), useResumeDiffPreview hook, and save-confirmation wiring in CareerResumeForm and related hooks.

Changes

Resume Preview & Diff Feature Removal

Layer / File(s) Summary
Backend endpoint, schema, and generator cleanup
backend/app/routers/resumes.py, backend/app/schemas/resume.py, backend/app/schemas/__init__.py, backend/app/services/pdf/generators/resume_generator.py, backend/tests/test_endpoints.py, backend/tests/test_pdf_generator.py
Removes POST /api/resumes/preview route, ResumePreviewResponse schema and its exports, and build_resume_preview from the PDF generator. Simplifies _load_css to always embed the font URI. Adds JST field_serializer to ResumeResponse. Cleans up corresponding test assertions.
Frontend API client and type removal
web/src/api/types.ts, web/src/api/resumes.ts, web/src/api/paths.ts, web/src/api/generated.ts
Removes ResumePreviewResponse type, PATHS.resumes.preview, getCareerResumePreview function, and generated OpenAPI path/operation/schema entries for the preview endpoint.
Diff utility modules and constants removal
web/src/utils/careerDiff.ts, web/src/utils/careerReview.ts, web/src/utils/diffHighlight.ts, web/src/utils/careerDiff.test.ts, web/src/utils/careerReview.test.ts, web/src/utils/diffHighlight.test.ts, web/src/constants/messages.ts
Deletes buildCareerChanges, buildReviewEntries, comparePaths, diff-highlighting utilities, and their full test suites. Removes CAREER_DIFF_LABELS and DIFF_DIALOG_MESSAGES constants.
Form hooks simplification
web/src/hooks/career/useCareerFormModals.ts, web/src/hooks/career/useCareerFormModals.test.ts, web/src/hooks/career/useCareerFormValidationFocus.ts, web/src/hooks/career/useCareerFormValidationFocus.test.ts, web/src/hooks/career/useResumeDiffPreview.ts, web/src/hooks/career/useResumeDiffPreview.test.ts
useCareerFormModals drops save param and save-confirm state. useCareerFormValidationFocus drops changeCount/openSaveConfirm and calls save directly on validation success. useResumeDiffPreview module deleted. Tests updated accordingly.
CareerResumeForm and CareerDiffModal removal
web/src/components/forms/CareerResumeForm.tsx, web/src/components/forms/CareerDiffModal.tsx, web/src/components/forms/CareerDiffModal.module.css, web/e2e/career-dirty-indicator.spec.ts, web/src/test/factories/careerForm.ts
CareerResumeForm removes CareerDiffModal render block, diff computation, and save-confirm wiring. CareerDiffModal component and its CSS module are deleted. E2E test updated to single-click save (no confirmation modal step).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • yusuke0610/devforge#306: Added the /api/resumes/preview endpoint, build_resume_preview, and the diff preview UI — exactly the code this PR removes.
  • yusuke0610/devforge#309: Added logic to CareerDiffModal.tsx and its CSS/constants, all of which are deleted in this PR.
  • yusuke0610/devforge#310: Modifies CareerResumeForm.tsx editing behavior, the same file this PR strips of diff/preview wiring.

Poem

🐇 Snip, snip, snip — the preview's gone!
No modal to confirm, just save and move on.
The diff-highlight code? Hopped away with a bound,
The font-face regex? No longer around.
Less code to nibble, more carrots to find —
A simpler save flow for all rabbit-kind! 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 54.55% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely states the main change: removing the pre-save diff confirmation feature for career resumes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/remove-resume-diff-preview

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added feature 新機能 web フロントエンド (web) backend バックエンド test テスト追加・修正 labels Jun 28, 2026
保存フローが「検証 → そのまま保存」に変わったため、保存後に 🔴 が消える
シナリオから diff モーダル経由の「この内容で保存」クリックを削除する。
不要になった /api/resumes/preview のルートモックも除去する。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@yusuke0610

Copy link
Copy Markdown
Owner Author

@coderabbitai RVして

@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown

@yusuke0610 レビューします。

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@yusuke0610
yusuke0610 merged commit ceb0b4a into main Jun 29, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend バックエンド feature 新機能 test テスト追加・修正 web フロントエンド (web)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant