Add a Django admin workflow so operators can clear missing-header backlog rows by attaching an existing catalog header, without editing BoostUsage by hand.
- Implement
resolve_missing_header_tmp(tmp, boost_file) (and related helpers) in boost_usage_tracker/services.py: call create_or_update_boost_usage, delete the BoostMissingHeaderTmp row, and remove the null-header placeholder BoostUsage when it has no remaining tmp rows.
- On
BoostMissingHeaderTmpAdmin, improve the changelist context (list_display / list_select_related) and add a bulk Action with an ActionForm BoostFile picker (library comes from BoostFile; catalog row must already exist).
- Optionally validate
header_name against boost_file.github_file.filename (exact or suffix match) and surface per-row errors in admin messages for bulk runs.
- Add tests in
boost_usage_tracker/tests/ and document the new API in docs/service_api/boost_usage_tracker.md.
- Optionally add
search_fields on BoostFileAdmin for a better picker (e.g. filename / library name).
Add a Django admin workflow so operators can clear missing-header backlog rows by attaching an existing catalog header, without editing
BoostUsageby hand.resolve_missing_header_tmp(tmp, boost_file)(and related helpers) inboost_usage_tracker/services.py: callcreate_or_update_boost_usage, delete theBoostMissingHeaderTmprow, and remove the null-header placeholderBoostUsagewhen it has no remainingtmprows.BoostMissingHeaderTmpAdmin, improve thechangelistcontext (list_display/list_select_related) and add a bulk Action with anActionForm BoostFilepicker (library comes fromBoostFile; catalog row must already exist).header_nameagainstboost_file.github_file.filename(exact or suffix match) and surface per-row errors in admin messages for bulk runs.boost_usage_tracker/tests/and document the new API indocs/service_api/boost_usage_tracker.md.search_fieldsonBoostFileAdminfor a better picker (e.g.filename/library name).