Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
spec-core | e532305 | Commit Preview URL Branch Preview URL |
Dec 23 2025, 10:00 AM |
There was a problem hiding this comment.
Pull request overview
このPRは、アクティビティ管理システムの入退室記録機能を実装しています。ユーザーが部室などの場所へチェックイン・チェックアウトを記録し、管理者による強制チェックアウト、およびレコード所有者または管理者による時刻編集機能を提供します。
主な変更点:
- 4つの新しいRESTful APIエンドポイント(チェックイン、チェックアウト、管理者強制チェックアウト、レコード時刻編集)
- OpenAPI仕様の追加とGoコードの自動生成
- MySQLクエリの実装(挿入、選択、更新)
- 認証・認可ロジックとバリデーション
Reviewed changes
Copilot reviewed 29 out of 29 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/activity/post_activity_checkin.go | ユーザーチェックイン処理の実装(重複チェックイン時の自動チェックアウトロジック含む) |
| pkg/activity/post_activity_checkout.go | ユーザーチェックアウト処理と共有ヘルパー関数executeCheckout |
| pkg/activity/post_activity_checkout_user_id.go | 管理者による他ユーザーの強制チェックアウト処理(権限チェック含む) |
| pkg/activity/put_activity_record_record_id.go | アクティビティレコードの時刻編集機能(権限チェックと時刻整合性バリデーション含む) |
| pkg/activity/activity.go | ActivityRecord構造体とselectLatestActivityヘルパー関数の定義 |
| pkg/api/server/post_activity_checkin.go | チェックインエンドポイントのHTTPハンドラーラッパー |
| pkg/api/server/post_activity_checkout.go | チェックアウトエンドポイントのHTTPハンドラーラッパー |
| pkg/api/server/post_activity_checkout_user_id.go | 管理者強制チェックアウトエンドポイントのHTTPハンドラーラッパー |
| pkg/api/server/put_activity_record_record_id.go | レコード編集エンドポイントのHTTPハンドラーラッパー |
| pkg/api/server.gen.go | 新しいエンドポイントのルーティング定義(自動生成) |
| pkg/api/models.gen.go | リクエスト・レスポンスモデルの定義(自動生成) |
| pkg/api/spec.gen.go | OpenAPI仕様のバンドル(自動生成) |
| pkg/db/sql/activity/insert_activity.sql | 新規アクティビティレコード挿入クエリ |
| pkg/db/sql/activity/select_latest_activity.sql | ユーザーと場所による最新アクティビティレコード取得クエリ |
| pkg/db/sql/activity/select_activity_from_id.sql | IDによるアクティビティレコード取得クエリ |
| pkg/db/sql/activity/update_activity_checkout.sql | チェックアウト時刻更新クエリ |
| pkg/db/sql/activity/update_activity_times.sql | チェックイン・チェックアウト時刻の両方を更新するクエリ |
| document/paths/activity_checkin.yml | チェックインエンドポイントのOpenAPI定義 |
| document/paths/activity_checkout.yml | チェックアウトエンドポイントのOpenAPI定義 |
| document/paths/activity_checkout_user_id.yml | 管理者強制チェックアウトエンドポイントのOpenAPI定義 |
| document/paths/activity_record_record_id.yml | レコード編集エンドポイントのOpenAPI定義 |
| document/schemas/req_post_activity_checkin.yml | チェックインリクエストスキーマ定義 |
| document/schemas/req_post_activity_checkout.yml | チェックアウトリクエストスキーマ定義 |
| document/schemas/req_put_activity_record_record_id.yml | レコード編集リクエストスキーマ定義 |
| document/paths.yml | 新しいエンドポイントパスのマッピング |
| document/schemas.yml | 新しいスキーマの登録 |
| document/tags.yml | activityタグの追加 |
| document/bundle.gen.yml | OpenAPI仕様のバンドル(自動生成) |
| pkg/mail/post_mail.go | Email型からstring型への変換処理(OpenAPI仕様変更に伴う修正) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

概要
アクティビティ管理システムの入退室記録機能を実装しました。ユーザーのチェックイン・チェックアウト、管理者による強制チェックアウト、およびアクティビティレコードの時刻編集機能を提供します。
変更内容
追加されたエンドポイント
主要な実装
document/paths/activity_*.yml,document/schemas/req_*.yml)pkg/activity/post_*.go,pkg/activity/put_*.go)pkg/db/sql/activity/*.sql)主要な機能
テストプラン
以下のcurlコマンドで各エンドポイントをテストできます。
1. チェックイン
期待される結果:
{"success": true}が返される2. チェックアウト
期待される結果:
{"success": true}が返されるエラーケース(在室中でない場合):
期待される結果:
404 Not Found- "在室中ではありません"3. 管理者による強制チェックアウト
Note
バイナリ文字列をUUIDに変換するシェルスクリプト
期待される結果:
{"success": true}が返されるエラーケース(管理者権限がない場合):
期待される結果:
403 Forbidden- "管理者権限がありません"4. アクティビティレコードの時刻編集
まず、アクティビティレコードのIDを取得する必要があります(データベースから直接取得、または別のGET APIで取得)。
期待される結果:
{"success": true}が返される期待される結果:
{"success": true}が返されるエラーケース(時刻の整合性違反):
期待される結果:
400 Bad Request- "チェックアウト時刻はチェックイン時刻より後である必要があります"エラーケース(編集権限がない場合):
期待される結果:
403 Forbidden- "編集権限がありません"5. バリデーションテスト
期待される結果:
400 Bad Request- バリデーションエラー