Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Scholarship agreement log: settle removal vs keep before dropping the table

Đang mở
#2,352 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
ruby
Lĩnh vực
backend, database

Hướng nghiên cứu

Bắt đầu với #2351, sau đó kiểm tra Scholarship, ScholarshipAgreementResponse, app/views/scholarships/_agreement_history.html.erb và các specs được liệt kê để hiểu các phụ thuộc hiện tại của log và UI. Được xem là hoàn tất khi đã ghi lại quyết định giữ lại bảng và giải quyết vấn đề UI trùng lặp, hoặc chỉ rõ một vị trí mới cho mọi trường cùng với kế hoạch backfill.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

scholarships

🤖 From Claude:

Part of #2251. Carved out of that umbrella's follow-ups, which scoped this as: backfill any needed history from scholarship_agreement_responses, then drop the callbacks, the _agreement_history partial, and the table.

Blocked by #2351.

Why it isn't a straight removal

The removal assumed a generic change log (PaperTrail versions at the time; Ahoy events now that #2245 pivoted) covers what the bespoke log holds. It doesn't:

Field on scholarship_agreement_responses On a generic change log?
status transition ✅ agreement_response_status before/after
responded_at ⚠️ only the event timestamp, which isn't the same field
responder (recipient / admin / system) ❌ domain role, not the acting user
reason (decline free text) ❌ never stored on the scholarship
amount_cents at the time of response ❌ point-in-time value

Scholarship#latest_agreement_response is a live read dependency: the responded-at date and decline reason are not columns on scholarship, so the UI has no other source.

Worse, per #2351 a logged-out recipient accepting or declining on the public callout produces no Ahoy event at all — the bespoke log is currently the only record that it happened.

Current surface

  • Scholarship: has_many :agreement_responses, after_create/after_update :log_agreement_response, latest_agreement_response
  • app/views/scholarships/_agreement_history.html.erb, rendered by scholarships/edit and events/callouts/scholarship (admin-styled)
  • ScholarshipAgreementResponse + scholarship_agreement_responses table
  • Specs: scholarship_agreement_response_spec, plus agreement-history coverage in scholarship_spec and events/callouts_spec

Recommendation

Keep the table; treat the follow-up as de-duplicating the UI, not deleting the log.

  1. Fix #2351 first, so recipient responses are tracked at all.
  2. Decide where reason / responder / point-in-time amount_cents live if the table goes. If the answer is "on the scholarship", that's a schema change plus a backfill — bigger than the removal it was meant to simplify.
  3. If the goal is just "one history UI per record", drop _agreement_history in favour of the shared activity log only once the generic log carries those fields.

Acceptance

Either a decision recorded here to keep the table (and the duplicate-UI question settled), or a plan that names the new home for every field in the table above, with a backfill.

Ngôn ngữ chính
Ruby
Star
15
Fork
28
Merge trung bình
1 ngày 12 phút
Pull request đã merge (30 ngày)
262

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của rubyforgood/awbw

Tất cả issue của rubyforgood/awbw

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.