Skip to content

学内募金API繋ぎこみ#1091

Merged
Chikuwa0141 merged 3 commits intodevelopfrom
feat/Chikuwa/connect-donation-api
May 10, 2026
Merged

学内募金API繋ぎこみ#1091
Chikuwa0141 merged 3 commits intodevelopfrom
feat/Chikuwa/connect-donation-api

Conversation

@Chikuwa0141
Copy link
Copy Markdown
Collaborator

@Chikuwa0141 Chikuwa0141 commented May 9, 2026

対応Issue

学内募金の実装

概要

学内募金画面で仮データを使用していた箇所をAPI連携に変更しました。

  • 棟別募金額を棟別合計金額取得APIから取得するように変更
  • 棟を選択した際に、教員別募金情報をAPIから取得するように変更
  • 募金登録モーダルで、未登録の場合は登録、登録済みの場合は更新するように変更
  • 登録・更新後に棟別募金額を再取得するように変更
  • 「その他」グループの場合は、号棟欄に棟名を表示するように変更

画面スクリーンショット等

image image image
image image

テスト項目

  • 学内募金画面を開いたときに、棟別募金額が表示されること
  • 棟を選択すると、教員一覧モーダルが表示されること
  • 階数を選択すると、該当する階の教員のみ表示されること
  • 「その他」を選択したとき、号棟欄に棟名が表示されること
  • 未登録の教員に募金額を登録できること
  • 登録済みの教員の募金額を更新できること
  • 登録・更新後に棟別募金額が再取得されること

備考

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request transitions the campus donation feature from mock data to a full API integration. It updates the database schema with a unique index, modifies the repository to fetch individual donation records, and enhances the OpenAPI specification with building group keys and donation IDs. The frontend components are refactored to use generated hooks for data synchronization and now support both creating and updating donations. Reviewers identified a potential maintenance risk regarding hardcoded building groups in the use case and advised against using type casts to resolve schema-related type mismatches in the frontend.

Comment on lines +24 to +36
{ID: 1, Name: "機械・建設棟", GroupKey: generated.MechanicalCivilEngineering},
{ID: 2, Name: "電気棟", GroupKey: generated.ElectricalEngineering},
{ID: 3, Name: "生物棟", GroupKey: generated.Biology},
{ID: 4, Name: "環境・システム棟", GroupKey: generated.EnvironmentalSystem},
{ID: 5, Name: "物質・材料経営情報棟", GroupKey: generated.MaterialsManagementInformation},
{ID: 6, Name: "総合研究棟", GroupKey: generated.GeneralResearch},
{ID: 7, Name: "原子力・システム安全棟", GroupKey: generated.NuclearSystemSafety},
{ID: 8, Name: "事務局棟", GroupKey: generated.Administration},
{ID: 9, Name: "極限エネルギ密度工学研究センター", GroupKey: generated.ExtremeEnergyDensityResearchCenter},
{ID: 10, Name: "工作センター", GroupKey: generated.MachineShop},
{ID: 11, Name: "大型実験棟", GroupKey: generated.LargeExperiment},
{ID: 12, Name: "分析計測センター", GroupKey: generated.AnalysisInstrumentationCenter},
{ID: 999, Name: "その他", GroupKey: generated.Other},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

campusDonationBuildingGroups スライスに棟名やIDがハードコードされています。これらの情報はデータベースの buildings テーブルと整合性が取れている必要がありますが、コード側にハードコードされていると、データベース側のデータ変更(棟名の変更や追加など)に追従できず、意図しない「その他」への分類が発生するリスクがあります。将来的にこれらのグループ化情報をデータベースで管理するか、少なくとも棟名を定数化して管理することを検討してください。

type YearData = { id: number; year: number; createdAt: string; updatedAt: string };

const years = yearData.data as unknown as YearData[];
const years = yearData.data as unknown as Year[];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

yearData.dataYear[] にキャストしていますが、これは OpenAPI スキーマ(year_periods)に id が定義されていないために発生している型不整合を回避するための実装と思われます。共通ルールに従い、キャストによる解決ではなく、スキーマを更新して id を含めるように修正することを優先してください。

References
  1. スキーマから生成されたAPI型が実際のAPIレスポンスと一致しない場合は、スキーマを更新して正しいデータ構造を反映させることを優先し、型キャスト(例:as unknown as CorrectType)を恒久的な修正として使用しないでください。

Copy link
Copy Markdown
Collaborator

@hikahana hikahana left a comment

Choose a reason for hiding this comment

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

コードレビューだけ。良さそうだからLGTM

@Chikuwa0141 Chikuwa0141 merged commit 534de7a into develop May 10, 2026
6 checks passed
@Chikuwa0141 Chikuwa0141 deleted the feat/Chikuwa/connect-donation-api branch May 10, 2026 11:05
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.

2 participants