QA Promotion: Friendlier Upload-Center Pickers, Mail-Linked Document Uploads, and Consistent Downloads
Executive summary
This release promotes a batch of recently completed Mail app improvements to the QA environment. It makes pickup-charge and document workflows easier and safer to use: upload centers are now chosen by name instead of by a numeric ID, standalone document uploads must be linked to a mail item, and single-document downloads now follow the same reliable path as bulk downloads. The release also modernizes the deployment pipeline behind the scenes.
Why this was needed
Several rough edges had accumulated in the Mail app. Administrators configuring pickup charges had to type or recall raw numeric "Upload center ID" values, which is error-prone and unfriendly. The standalone Documents page allowed adding a document without choosing which mail item it belonged to, risking orphaned or misfiled documents (issue #1011). Single-row document downloads used a different, less consistent mechanism than bulk downloads. Promoting these fixes to QA allows them to be validated together before reaching production.
Client / user impact
- Admins select upload centers from a searchable, name-based dropdown (scoped to the chosen tenant) instead of guessing numeric IDs, in both the pickup-charges filter and the create-charge dialog.
- Pickup-charge history now displays the upload center name (e.g. the center's real name) rather than "Center #42".
- Changing the tenant automatically clears any stale center selection, preventing cross-tenant mistakes.
- The standalone Add Document modal now shows a Mail selector and blocks upload until a mail item is chosen, preventing unlinked uploads.
- Single-document downloads behave consistently with bulk downloads.
Technical scope
Frontend-only changes to the @dsm/mail app, plus CI/CD updates. Notable items in this batch:
- Upload-center picker (issues #1013 / #1015): new
UploadCenterAsyncSelectcomponent (server-paginated, name-search, tenant-scoped, emits numeric ID) and a newScopeFieldscomponent extracted fromPickupChargeFormDialog. The pickup-charges filter and create dialog replace numericInputfields with the new selector; charge history rendersupload_center_namewith aCenter #idfallback. A newupload_center_namefield was added to thePickupChargeConfigtype. - Standalone document uploads (issue #1011):
documents/page.tsxdrops thehideMailSelectorprop so the Add Document modal requires mail selection. - Row download alignment:
DocumentContents.tsxremovesuseBulkDownloadDocumentsMutationand routes single-row downloads through the bulk server-side ZIP flow (useBulkZipDocumentsMutation). - CI/CD (issue #1009): removed AWS GovCloud ECR push, added
Dockerfile.base(Debian/glibc base to avoid Alpine native-binary issues), extended Kubernetes rollout to thedevnamespace, switched image updates fromkubectl set imageto strategic-mergepatch, and added pod log collection before rollback on failed rollouts.
Risk & mitigation
Low-to-moderate, and confined to QA. The pickup-charge UI and document-download paths were meaningfully reworked, so regressions would surface there. The history-table name display depends on the backend returning upload_center_name; a missing value falls back to Center #id, so it degrades gracefully. The selector relies on the existing paginated upload-center search service. CI/CD changes affect deployment mechanics, not application behavior. Mitigation: this promotion to QA is itself the validation gate before production, and the PR notes typecheck and browser verification of the document-upload fix.
QA validation focus
- In Admin Hub > Pickup Charges, confirm the upload-center filter is a searchable name dropdown; verify it is tenant-scoped and that changing the tenant clears the selected center.
- Create a pickup charge with "Specific upload center" scope; confirm the selector requires a tenant first and only lists that tenant's centers.
- Verify the charge history table shows the center name (not "Center #N") for center-specific rows, and "Tenant default" for tenant-wide rows.
- On the standalone Documents page, open Add Document and confirm the Mail selector appears and upload is blocked until a mail is selected.
- Download a single document row and confirm it succeeds (now via the ZIP flow); compare with bulk download behavior.
- Smoke-test the upload-center detail page create-charge dialog (center name should prefill).