No description
Previously every "Email to vendor" click re-rendered the PO via PdfService and re-uploaded to R2 under a timestamped key — wasteful, and it orphaned a new object each time. Now the PDF is stored at a deterministic per-PO key (buildPoPdfKey → po-pdf/<poId>/<slug>.pdf). On each send, statObject() checks for an existing copy: if it exists and is at least as new as the PO's updatedAt, it's reused (no re-render, no re-upload) and only a fresh presigned URL is minted — refreshing the 7-day download timer. It re-renders only when there's no copy yet or the PO changed since the cached one (so an edited PO never emails a stale PDF). - lib/storage.ts: buildPoPdfKey (deterministic) + statObject (HEAD/stat, no body transfer; null when absent). - email-actions.ts: reuse-or-render decision keyed on updatedAt; always re-presign. - Tests: +2 (reuse-on-second-send-only-refreshes-link, re-render-when-changed). email-vendor suite 8 green; tsc clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .forgejo | ||
| App | ||
| automation | ||
| Docs | ||
| EpfoService | ||
| GstService | ||
| PdfService | ||
| Progress | ||
| static | ||
| Wireframe | ||
| .gitattributes | ||
| .gitignore | ||
| CHANGELOG.md | ||
| ecosystem.config.js | ||
| generate_po.py | ||
| inspect_po.py | ||
| test-report-2026-05-17.md | ||
Docs — retired (moved to the wiki)
The design, architecture, and test documents that used to live here have been migrated to the project wiki and removed from the repo. The wiki is the living reference going forward.
Wiki: https://git.pelagiamarine.com/shad0w/pelagia-portal/wiki
(working clone: pelagia-portal.wiki/ alongside this repo).
Where each retired doc went
| Retired file | Now in the wiki |
|---|---|
01-design-document.md |
System/Architecture, Product/Workflows (user stories), Product/Design-System, Overview/Open-Questions |
02-architecture.md |
System/Architecture (+ System/Data-Model, Ops/Deployment-and-Operations, Build-and-Run/Environment-Variables) |
03-open-questions.md |
Overview/Open-Questions |
DESIGN.md |
Product/Workflows, Product/Pages-and-Navigation, Product/Design-System |
TEST_PLAN.md |
Quality/Test-Plan |
e2e-test-framework.md |
Quality/E2E-Test-Framework |
e2e-test-plan.md |
Quality/E2E-Test-Plan |
PLAYRIGHT_TEST_DESIGN.md |
Quality/Playwright-Test-Design |
The wiki's on-disk folder layout (Overview / Build-and-Run / System / Product / Quality / Ops) mirrors its sidebar hierarchy.
Keep current behaviour documented in the wiki, not here. Other authoritative in-repo sources remain:
App/CLAUDE.md,App/README.md,automation/README.md, andCHANGELOG.md.