Skip to content

add: ユーザー取得APIを追加して登録時の存在確認を修正#8

Open
ayuayuyu wants to merge 5 commits into
mainfrom
feature/add-user-get-endpoint
Open

add: ユーザー取得APIを追加して登録時の存在確認を修正#8
ayuayuyu wants to merge 5 commits into
mainfrom
feature/add-user-get-endpoint

Conversation

@ayuayuyu

@ayuayuyu ayuayuyu commented May 10, 2026

Copy link
Copy Markdown
Collaborator

#7

スクリーンショット 2026-05-10 16 30 54

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

ユーザー登録/更新時の存在確認を GET /v1/user/{user_id} で行えるように、バックエンドにユーザー取得APIを追加し、フロント側の存在確認ロジックを getBalance 依存から切り替えるPRです(Issue #7 対応)。

Changes:

  • バックエンド: GET /v1/user/{user_id} の OpenAPI 追加、UseCase/Handler/Repository 実装追加
  • フロント: OpenAPI 型更新、UserRepositoryImpl.getUser 追加、管理画面(登録/更新)の存在確認APIを getUser に切り替え
  • テスト: フロント/バックエンドの関連テストを追加・修正

Reviewed changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
sysken-pay-front/src/types/api-schema.d.ts OpenAPI 生成型に GET /v1/user/{user_id} / GetUserResponse を反映
sysken-pay-front/src/adapter/repository/UserRepositoryImpl.ts getUser を追加してユーザー取得APIを呼び出し
sysken-pay-front/src/pages/admin/user-register/index.tsx 登録時の存在確認を getBalancegetUser に切り替え
sysken-pay-front/src/pages/admin/user-update/index.tsx 更新時の存在確認を getBalancegetUser に切り替え
sysken-pay-front/src/test/repository/UserRepositoryImpl.test.ts getUser のユニットテスト追加
sysken-pay-front/src/test/repository/PurchaseRepositoryImpl.test.ts cancelPurchase のリクエストボディ期待値を現行スキーマ(items)に合わせて修正
sysken-pay-backend/docs/openapi.yaml GET /v1/user/{user_id}GetUserResponse スキーマを追加
sysken-pay-backend/app/usecase/user/get_user.go ユーザー取得UseCaseを新規追加(IDバリデーション含む)
sysken-pay-backend/app/usecase/user/user_test.go GetUser のテスト追加、既存テストの user_id 値調整
sysken-pay-backend/app/ui/api/user/user.go User Handler に GetUser を追加、DIを更新
sysken-pay-backend/app/ui/api/user/response.go GetUserResponse を追加
sysken-pay-backend/app/server/server.go GET /v1/user/{user_id} をルーティングに追加(Route構成変更)
sysken-pay-backend/app/domain/repository/user.go UserRepositoryGetUserByID を追加
sysken-pay-backend/app/infra/repository/user.go GetUserByID のDB実装を追加
sysken-pay-backend/app/domain/object/user/user.go user_id のフォーマットバリデーション(学籍番号形式)を追加
sysken-pay-backend/app/domain/object/user/user_test.go user_id フォーマットバリデーションに合わせてテスト更新
sysken-pay-backend/app/domain/object/user/get_user.go DB取得用のファクトリ NewUserFromDB を新規追加

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread sysken-pay-backend/app/server/server.go
Comment thread sysken-pay-front/src/pages/admin/user-register/index.tsx
Comment thread sysken-pay-front/src/pages/admin/user-update/index.tsx
Comment thread sysken-pay-front/src/adapter/repository/UserRepositoryImpl.ts Outdated
Comment thread sysken-pay-backend/app/ui/api/user/response.go
Comment thread sysken-pay-backend/docs/openapi.yaml
- created_at等の日時を timefmt.JST で JST(+09:00) オフセット付き出力に統一
  (Z固定で実時刻を誤表現する問題を修正、全 response.go に横展開)
- ApiError 型を追加し HTTP ステータスを保持、呼び出し側で 400/404 を分岐可能に
- ユーザー登録/更新画面で 404(未登録)・400(形式不正)・その他を区別して表示
- OpenAPI の user_id に学籍番号フォーマットの pattern/example/説明を追記
- user テーブルに学籍番号フォーマットの CHECK 制約を追加

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 23 out of 24 changed files in this pull request and generated 2 comments.

Comment on lines +49 to +58
ctx := r.Context()
foundUser, err := h.getUserUseCase.GetUser(ctx, userID)
if err != nil {
log.Printf("Failed to get user: %v", err)
if errors.Is(err, user.ErrInvalidUserID) {
apierrors.RespondError(w, http.StatusBadRequest, err.Error())
return
}
apierrors.RespondError(w, http.StatusInternalServerError, err.Error())
return
Comment on lines +22 to +29
const response = { status: "success", user_id: "k24000", user_name: "シス研太郎" };
mockGet.mockResolvedValue({ data: response, error: undefined, response: { status: 200 } });

const result = await UserRepositoryImpl.getUser("k24000");
expect(result).toEqual(response);
expect(mockGet).toHaveBeenCalledWith("/v1/user/{user_id}", {
params: { path: { user_id: "k24000" } },
});

@sana-sagegami sana-sagegami left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2つbugがあったので、直してください!

  1. GET /v1/user/20X24042ですでに登録されているuserを要求すると404で返ってきている

  2. POST /v1/userですでに登録されているuserで登録しようとすると500で返ってきている

期待する動作

  1. すでに登録されているuserを要求すると200でuser情報が返ってきて欲しい

  2. すでに登録されているuserで登録しようとすると409(コンフリクト)が返ってきてほしい

検証

前提:20X24042は登録済み

ユーザー登録で20X24042を入力(本当はここで「登録済みユーザー」と表示されるはずが404のため通過してしまう)→名前の登録ボタンを押した後、赤文字でuser_idが重複している旨のバックエンドのエラーメッセージが表示される
Image

バックエンドに登録されていない(404)と言われたのに、同じuser_idで登録してみると500(登録されている)と言われてしまっています!!!!!!

@ayuayuyu ayuayuyu requested a review from sana-sagegami June 7, 2026 11:12
@ayuayuyu

ayuayuyu commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator Author

修正しました。

  • 登録されているものをGETで参照する時に200のステータスコード
スクリーンショット 2026-06-07 20 10 53
  • 重複の時に409のステータスコード
スクリーンショット 2026-06-07 20 09 28

あとPOST関連のステータスコードが全て200になっていたため、201に変更しました

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants