Add CSV parser for bulk update overrides

What does this MR do and why?

Adds csv parsing to credit caps overrides bulk edit modal

Implementation status

Part of https://gitlab.com/gitlab-org/gitlab/-/work_items/630981

Piece Work item MR Status
Feature flag credit_caps_bulk_update + scaffold button https://gitlab.com/gitlab-org/gitlab/-/work_items/630982 !257651 (merged) ✅ Merged
BE: username on BudgetCapUserOverrideInput https://gitlab.com/gitlab-org/gitlab/-/work_items/630983 !258407 (merged) ✅ Merged
FE: bulk update overrides modal https://gitlab.com/gitlab-org/gitlab/-/work_items/630982 !257948 (merged) ✅ Merged
FE: CSV parser https://gitlab.com/gitlab-org/gitlab/-/work_items/630984 !258244 (merged) ⬅️ Current
FE: integrate modal with BE https://gitlab.com/gitlab-org/gitlab/-/work_items/630985 !258465 (merged)
FE: CSV parser improvements (follow-up) https://gitlab.com/gitlab-org/gitlab/-/work_items/631895 !259381 (merged)
Documentation update https://gitlab.com/gitlab-org/gitlab/-/work_items/632125 !259654 (merged)
Feature flag rollout https://gitlab.com/gitlab-org/gitlab/-/work_items/631018

References

Screenshots or screen recordings

Before After
image Screenshot_2026-09-28_at_23.14.40
Screenshot_2026-09-29_at_00.03.16

How to set up and validate locally

  1. In rails console enable the feature flag

    Feature.enable(:credit_caps_bulk_update)
  2. Visit admin area

  3. Then GitLab Credits page

  4. there click on Credit caps, leading to http://localhost:3000/admin/gitlab_credits_dashboard/credit_caps

  5. Click on Bulk update button

  6. Fill csv input and submit

  7. See either parsed values or input errors

A few cases for testing:

Happy path — mixed enabled/disabled, integer and fractional caps:

alice,100,true
bob,50.5,false
carol,0,true

Quoted username with a comma (tests Papa Parse quoting):

"smith,john",200,true
jane,75,false

Invalid — one bad line among good ones (should show parse error, no output):

alice,100,true
bob,notanumber,false
carol,50,true

Invalid — @ in username:

alice@example.com,100,true
bob,50,false

Edge — cap of zero and false enabled:

alice,0,false
bob,999.99,true
carol,0,true
dave,1,false

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Kos Palchyk

Merge request reports

Loading
Loading