Architectuur en dependencies zoals aangetroffen
Runtimegrens
/etc/apache2/sites-enabled/lmf-app-le-ssl.conf serveert /var/bestelsysteem/lmf-app, een symlink naar /mnt/storage/lmf_app/build. /api gaat naar XLSLMFHandler, /config.js naar ConfigLMFHandler, /map naar Map; /index.html gebruikt APPHandler. De React-app stelt in App.js:21 de Axios-basis in op https:// + window.BASE_URL + /api. ConfigLMFHandler rendert daarvoor de hostname in een JavaScript-template.
LMFSiteHandler en XLS::AanmeldenLMF zijn buurapplicaties voor de publieke website/aanmelding, geen React-logistiekservicelaag. XLS::Logistiek is een ouder HTML/logistieksysteem en moet niet met XLS::LMF worden vereenzelvigd.
XLSLMFHandler::handler maakt XLS::Base en params, leest de body, valideert login/token, roept LMF::handle_request aan, sluit Base en serialiseert JSON. Het endpoint is het tweede niet-lege URI-segment (/api/<request>). request_method, url_param en requests worden ook doorgegeven. LMF gebruikt vooral $args->{base}->{DBH}, params en $args->{user}; er is geen afzonderlijke ORM voor logistieke entiteiten.
Directe dependencies van LMF.pm
| Dependency | Soort | Werkelijk gebruik |
|---|---|---|
| strict, warnings; vervolgens no warnings | taal/infrastructuur | warnings voor de module weer uitgeschakeld |
| Data::GUID | utility | GUID's voor pakbon/leveringsidentiteit, ook tijdens overzichten |
| XML::TreePP | configuratie | XML uit klant-/leverancierkoppelingen naar loginconfig |
| Data::Dumper | diagnose | logging/debug, onder meer webhook |
| XLS::Datum | utility | vandaag/today, JSON-datum/tijdformaten |
| XLS::Postcode | adresservice | postcode → lookup |
| XLS::LMF::EmballageControl | business | live dispatch van emballage_hub_control |
| XLS::LMF::RoutePlanImporter | business | geladen en factory aanwezig, geen actieve call vanuit route_plan |
| Keana::API | externe businessintegratie | keana_webhook: authenticatie en tracking ophalen |
| XLS::Base-object (geïnjecteerd) | infrastructuur | DBH en ip_info, geen use XLS::Base in LMF zelf |
Geen require in de onderzochte LMF-module. De exacte packagecalls en interne aanroepen staan per functie in backend. Directe DBI-methoden: prepare/execute/fetchrow(hashref/array), selectrow/selectall-helpers, do, commit/rollback/begin_work; SQL is PostgreSQL-specifiek.
Indirecte dependencies
XLSLMFHandler: Apache2/APR en CGI/cookies voor HTTP; JSON; XLS::Base/LMF; Crypt::Digest::SHA256 voor login; MIME::Base64 voor cookiecredentials; Redis-object voor gedeelde infrastructuur. Daarnaast imports HTTP::Date, HTML::Template::Expr, Perf::Stopwatch, Digest::MD5, Storable, Cache::Memcached. Een import bewijst geen gebruik in deze requestflow. Redis wordt in de handler geïnstantieerd, zonder lokaleuse Redis; dat veronderstelt preloading elders.XLS::Base→XLS::Base::Connection→ DBI/Apache::DBI/PostgreSQL. De algemene Base-module laadt ook Admin, AdminBaseClass, Ambassade, Besteller, Data, Leverancier, Lokatie, Partner, Overzicht, TemplateResolver en XLSCRUD::Form. Dat maakt ze transitive load-dependencies, geen aangetoonde logistieke functionele aanroepen. Verdere infra: XML::Simple, Storable, MIME::* , Geo::IPinfo, Encode, Sys::Hostname, Imager::QRCode, File::Read, LWP::UserAgent, JSON, cache/request-trace.XLS::Datum→ Time::Local, Date::Calc, Regexp::Common, Digest::SHA, POSIX.XLS::Postcode→ Net::PostcodeNL::WebshopAPI.Keana::API→ URI, LWP::UserAgent, HTTP::Request, JSON.EmballageControl→ Digest::SHA voor ketenidentiteit, POSIX/Time::Local voor datumvalidatie; geen externe API of writes.RoutePlanImportergebruikt de geïnjecteerde DBH, geen optimizerlibrary.- React: React/ReactDOM, React Router, Redux/React Redux/Redux Thunk, Axios, MUI, date-fns, chartcomponenten, react-html5-camera-photo, handtekeningcomponent, styled-components, @react-google-maps/api. Frontendregister bewaart de oorspronkelijke bronpaden.
Deze afbakening inventariseert de eigen directe imports en functioneel relevante transitieve ketens; niet de volledige CPAN/NPM-libraryimplementaties.
Drie routemodellen die niet hetzelfde zijn
route+route_lokatie: vaste route met locatie/leverancier ennummer, gekoppeld vialmf_user.route.stops: response opgebouwd uit pakbonnen en route_lokatie, samengestelde string-ID en HUB/klantflags. Geen SELECT oplmf_stop.RoutePlanImporter: module voor gedateerde plannen inlmf_route+lmf_stop+lmf_stop_leverancier_pakbon; tests en schema bestaan, maar de huidige LMF-dispatch roept hem niet aan.