lamoda/lamoda-b2b-platform.dto
A collection of data transfer objects for the Lamoda B2B platform, offering typed, structured value objects for orders, products, and API payloads. Keeps business data consistent and validated across services with a lightweight, framework-agnostic PHP implementation.
Architecture fit
Release 1.7.0 adds a document number at the inbound shipment level. Read against the version bump, this is a semver-minor, additive change: a new attribute on an existing domain entity rather than a change to existing contracts. For a Laravel package this typically means a publishable migration adding a nullable column, an updated Eloquent model ($fillable/casts), and possibly validation rules, API resources, and factory/seed updates. The change sits cleanly inside the package's existing domain boundary (inbound shipments) and does not appear to introduce a new subsystem, service provider, or cross-cutting concern.
Integration feasibility Low friction. Consumption is opt-in: teams that do not need the document number can upgrade and run the migration without touching application code. Teams that do need it get a single new field to populate at shipment creation/receipt. No new infrastructure, queue, or external dependency is implied by the note.
Technical risk Low overall, with a few concentrated risks:
inbound_shipments (or equivalent) is usually fast on modern MySQL/Postgres when nullable and without a default rewrite, but table size and engine version determine whether this is an online DDL or a locking operation.Key questions
nullable() without a default, and is the index added concurrently/online?Stack fit
Assumes a standard Laravel application on Composer. The package should be pulled via composer require with a ^1.7 constraint. Service provider auto-discovery and publishable migrations are the expected integration points; no new environment variables or third-party services are implied by the release note.
Migration path
^1.7 in a branch; run composer update <vendor>/<package> and review the lockfile diff.php artisan migrate in local and CI, then in staging against a production-shaped dataset.Compatibility Verify the package's declared constraints against the application's PHP and Laravel versions and against the database engine in use. If the application is multi-tenant with schema-per-tenant or database-per-tenant, the migration must be run across every tenant — this is the most common operational gap for packages that ship migrations. Check that any first-party code extending the package's models or overriding its resources still resolves correctly after the field is added.
Sequencing Schema first, then code, then data. If the business requires document numbers on historical shipments, treat backfill as a separate, idempotent job after the deploy rather than bundling it into the migration. Surface the field in UI and exports last, once data quality is confirmed.
Maintenance Minimal. One new attribute on one entity, no new runtime dependencies, no new configuration surface implied. Ongoing cost is limited to whatever validation and data-quality rules the team chooses to layer on top of a user-entered identifier.
Support Small incremental surface. Expect inbound questions of the form "where do I enter the document number" and "why is this shipment's document number blank" — the latter is the null/backfill question resurfacing as a support ticket. If the field is format-constrained, publish the expected format in internal documentation before enabling it in the UI.
Scaling Negligible query-cost impact at typical volumes. If a unique index is added, index maintenance on high-write shipment tables is worth a glance but is unlikely to be material. If the field becomes a search or reporting dimension, plan an index deliberately rather than retrofitting one after adoption.
Failure modes
inbound_shipments table; mitigate by running in a maintenance window or using online DDL.Ramp-up Effectively zero for engineering — the upgrade is a Composer bump plus a migration. The meaningful ramp-up is organizational: a short briefing for warehouse/receiving staff if the field appears in their workflow, and a note to any team consuming shipment payloads that an additive key now exists. Rough sizing: under a day of engineering effort to upgrade and validate, plus a short communications pass.
How can I help you explore Laravel packages today?