Round 26: Smoke-test fix pass — silent data loss gone, PDF export unblocked

Full fix pass on seven bugs from the admin smoke-test report. Product + Customer + Supplier forms no longer silently drop fields to the backend — explicit field mapping, correct type coercion, no more `...form` spread. Migration 0020 adds source/notes/tags to customer + supplier. New TagsInput, PostSaveToast (ISR warning), shared formErrors helper that parses FastAPI `detail` envelopes into human-readable messages. Stock Adjustments New button wired to a working form. PO create builds the required supplier_snapshot jsonb and includes a real supplier picker. PDF export renders on a worker thread with a 10k-row cap; client shows loading state + 90s timeout.