novosga/triagem-bundle
Symfony bundle from Novo SGA that adds triage capabilities to service-desk workflows, helping classify and prioritize attendance requests so they can be routed to the appropriate services and queues.
Architecture fit: The package is novosga/triage-bundle — a Symfony bundle, not a Laravel package. That distinction is the single most important framing point for a TPM: it is a framework-specific artifact from the Novo SGA (queue/triage management) ecosystem, targeting appointment scheduling and priority triage. It will not drop into a Laravel application via package discovery, facade, or config/*.php publishing; it ships Symfony DI extension classes and a bundle configuration tree. Fit is strong if the consuming system is Symfony-based or if the domain model (units, appointments, triage priority) can be used as a standalone library. Fit is weak if the expectation was a Laravel-native package.
Integration feasibility: Moderate. The v2.3.0 change set is small and coherent — one correctness fix, one framework alignment, one dev-tooling refresh, one feature. Nothing indicates a rewritten public API. The real integration cost sits outside the changelog: translating the Symfony bundle's service wiring into the host container (a Laravel service provider bridge or an anti-corruption layer), and validating config semantics for the new Appointment max delay setting. A spike in a non-production branch is warranted before committing to the dependency.
Technical risk:
^7.4 or a wider range.composer.json, not inferred.Key questions:
Stack fit: Treat the package as a bounded-context domain library rather than a framework plugin. In a Laravel estate, that means: register the underlying services manually in a service provider, map bundle configuration keys into config/ by hand, and explicitly disable reliance on Symfony bundle auto-discovery. In a Symfony estate, standard composer require plus bundles.php registration and a config/packages/*.yaml block. Do not assume Laravel's container can resolve the bundle's compiler passes.
Migration path: There is no prior version in use, so this is greenfield adoption rather than migration — but the release introduces two adoption forks. For hosts on Symfony 7.4+, adopt 2.3.0 directly. For hosts on Symfony 7.1–7.3 or 6.4, start at 2.2.1 and treat the 7.4 upgrade as its own tracked work item. Separately, if any appointment data is being imported from a system that already used an earlier 2.x version, run the timezone audit before assuming parity.
Compatibility: Verify and record four constraints before sign-off — PHP minimum, Symfony version range, database driver assumptions for the bundle's persistence layer, and whether the dev-tool upgrades (PHPStan 2, PHPUnit 11, PHPCS 4) leak into production requirements. The dev-tool bump is developer-experience only and should carry no runtime risk, but PHPStan 2 raising its analysis level can produce new CI failures if the project reuses the bundle's static analysis config.
Sequencing:
composer.json.Appointment max delay explicitly with an intentional value rather than accepting the default, and document the chosen semantics.Maintenance: The release signals an actively maintained project that tracks upstream framework lifecycle — moving to 7.4 LTS and clearing its deprecations in the same window is a good-faith maintenance indicator, as is the paired dev-tooling modernization. The counterweight is concentration: one primary contributor across all five pull requests. Plan for the possibility of slow upstream turnaround on issues, and budget for the option of vendoring or forking the small surface area if the package becomes load-bearing.
Support: Open source with no visible commercial SLA. Support runs through GitHub issues and pull requests. The clean, conventional-commit-style changelog and PR-linked history make self-support tractable, but there is no vendor to escalate to. For a TPM, that means the package should not sit on a critical path without an internal owner who can read the source.
Scaling: Triage and appointment scheduling are typically I/O- and database-bound rather than compute-bound, so the package itself is unlikely to be the scaling bottleneck. Watch the timezone-conversion path — per-record timezone resolution during appointment listing can multiply into repeated lookups at volume — and watch query patterns around delay-window filtering once max-delay is enabled, since that predicate may not be index-friendly.
Failure modes:
Ramp-up: Low for the mechanics — install, register, schedule an appointment. Moderate for the domain: Novo SGA's model of units, priority weighting, and triage rules carries real semantic depth, and the max-delay feature compounds it with scheduling policy. Budget roughly a day for a capable PHP engineer to get a working integration and a further two to three days to build confidence in the timezone and delay-window behavior with realistic multi-unit data. A TPM should not approve this package on the strength of its changelog alone; the value is in the domain model, and the risk is concentrated in the two behavior-affecting changes shipped in this minor version.
How can I help you explore Laravel packages today?