baks-dev/four-tochki-orders
Orders module for the 4tochki integration in BaksDev: install via Composer, publish assets with baks:assets:install, then run Doctrine migrations. PHP 8.4+, Symfony console, MIT licensed.
What this package actually is (correct the premise first)
php bin/console baks:assets:install, Doctrine migrations via doctrine:migrations:*, PHPUnit groups, and a bundle-oriented asset pipeline. It is a module of the BaksDev framework (a Symfony-based B2B/CMS distribution), not a Laravel package.orders, the description says "Модуль продукции" (products module), and the README says "Модуль заказов" (orders module). Three conflicting scopes in three artifacts. We do not know, from public materials, what the bounded context is. This must be resolved before any estimate is credible.--group name.Architecture fit
bin/console. Adapting requires either a Symfony-bridge shim (spatie/laravel-symfony-components-style), a second ORM alongside Eloquent, or a fork.Integration feasibility
Technical risk (rated for planning)
| Risk | Rating | Why it matters to the roadmap |
|---|---|---|
| Framework mismatch (Symfony bundle on Laravel) | High | Dominates cost; may invert the build-vs-buy conclusion |
| Vendor sustainability (0 stars, 0 dependents, single-author) | High | No bus factor; abandonment is the base case, not the tail case |
| Undefined scope (orders vs. products) | High | Invalidates any estimate until closed |
| PHP 8.4 floor | Medium | Forces a runtime upgrade or a fork; couples this initiative to platform modernization |
| Doctrine migration collision with existing schema | Medium | Data-integrity exposure during rollout |
| Test coverage unknown | Medium | Regression risk lands on us, not the vendor |
| API contract drift | Medium | Ongoing maintenance cost with no upstream signal |
Key questions I need answered before committing engineering
Stack fit — decide the path explicitly, do not drift into one
composer require, baks:assets:install, migration diff/migrate, then wire the order service into our fulfillment flow. This is the only path where the package is used as intended.FourTochkiClient service behind an interface, drive state changes through queued jobs. Effort: medium (weeks), but no permanent dual-framework tax and no vendor dependency.FourTochkiGateway) so the marketplace can be swapped for Wildberries/Ozon later without touching domain code. This is the cheapest optionality we will ever buy.Migration path
orders table remains the system of record. 4tochki data lands in a sync/landing layer with an explicit reconciliation job. Do not let an external marketplace own our order state machine.baks:assets:install step publishes config — audit what it writes and whether it emits anything sensitive.Compatibility
EventDispatcher semantics do not map onto Laravel events. Re-express as Laravel events + queued listeners so retries and observability come for free.Sequencing (stage-gated; do not skip gates)
Maintenance
Support
Scaling
Failure modes and mitigations
| Failure | Business impact | Mitigation |
|---|---|---|
| 4tochki API outage | Orders not imported; silent revenue lag | Health-check + alerting on sync lag SLO; visible backlog counter for ops |
| Rate-limit breach / marketplace suspension | Channel goes dark | Client-side throttling, backoff, per-endpoint budgets |
| Duplicate order creation on retry | Double fulfillment, refund cost | Idempotency keys on every write; dedupe by external ID at ingestion |
| Webhook signature unverified | Spoofed orders, fraud exposure | HMAC verification at the edge; reject unsigned payloads by default |
| Schema drift on our side | Sync job fails quietly | Contract tests against a recorded 4tochki fixture set, run in CI |
| Upstream abandonment | Security patch gap | Fork ownership + documented divergence log |
| Operator confusion (Russian errors) | Slow incident response | Error-code mapping table in the runbook |
Ramp-up
Bottom line for the roadmap decision
How can I help you explore Laravel packages today?