Update vendor terms. Snapshots the post-update state into
product_vendor_version in the same transaction so the audit log has
a row per change. name and data fields are independently optional;
only the fields actually present in data are touched.
bankId agreement against the vendor slug is enforced — bank vendors
(dart, metcap) require bankId to equal the slug; non-bank vendors
require bankId === null.
Admin-tier read + update over
product_vendor. Vendors are seeded via migration; there is nocreate()— adding a new vendor requires a newVendorliteral in the schema and a follow-up seed.update()snaps a row intoproduct_vendor_versioncapturing the post-update state in the same transaction.