feat(po): per-company logo, stamp & brand bar on exported POs #48
No reviewers
Labels
No labels
bug
claude-failed
claude-pr
claude-queue
claude-working
feature
interactive
portal
triaged
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: shad0w/pelagia-portal#48
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/company-header-logo-branding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Companies can now upload a logo and a stamp/seal that render on exported purchase orders, and every export gets a fixed brand-colour bar along the bottom — matching the shared sample PO.
Changes
Company.logoKey,Company.stampKey(+ migration20260621000000_company_branding_assets).buildCompanyAssetKey(companyId, "logo"|"stamp", ext)→company-assets/<id>/{logo,stamp}.<ext>(deterministic, overwrite-in-place).uploadCompanyAsset/removeCompanyAsset—manage_vessels_accountsgated, ≤ 4 MB, PNG/JPG/WebP.CompanyBrandingUploaderin the company Edit dialog (logo + stamp, live previews, remove). Uploads available once the company exists./api/po/[id]/export, both XLSX + PDF):#92D050brand bar full-width at the bottom (always drawn),Tests
tests/unit/storage-keys.test.ts(key namespacing/determinism).tests/integration/company-branding.test.ts(upload/remove, type/mime/size validation, permission gating) — 8 tests, all green.pnpm type-checkclean;pnpm testgreen. ExcelJS generation smoke-tested with the real anchor/bar code.Docs
Wiki updated (separate repo): File-Storage, Purchase-Orders, Data-Model.
Notes
pnpm db:migrate:deployalready applied locally.🤖 Generated with Claude Code