Sari la conținut

Producție

Recotech: atelier de recondiționare motoare, de pe WhatsApp și hârtie în sistem

Stocul era text pe WhatsApp, comanda de service pe hârtie, lucrările în alt sistem. Un sistem de producție pentru atelier: de la 100 la 300 de motoare pe lună.

Client
Recotech
Sector
Producție
Publicat

Problema

531 de linii de stoc pe WhatsApp („H2 A1 E1:” + coduri), un ERP vechi disponibil doar ca CSV de 40.000 rânduri, formularul F-01 completat de mână, lucrările într-un sistem terț, tehnicieni vorbitori de nepaleză.

Soluția

Flux complet recepție → constatare → deviz → acceptare → lucru → QC; OCR cu AI pe talon și F-01; devize și bonuri PDF; PWA pe roluri; depozit cu adrese de locație și etichete QR Zebra; chat cu traducere RO↔nepaleză; rapoarte zilnice; magazin public cu feed Google Merchant.

Arhitectura

Decizia care l-a făcut instalabil este o migrare care nu s-a întâmplat. Un prag de zi zero — un scope global de vreo douăzeci de linii — trage o linie la un identificator: lucrările de dinainte rămân în bază și rămân vizibile într-o arhivă, dar pur și simplu nu există pentru nimeni din hală. Fără migrare de date, fără big-bang, fără oprirea halei.

Rezultatul

Capacitatea atelierului a crescut de la 100 la 300 de motoare pe lună; stocul are adrese, lucrările au coduri, documentele ies din date.

În detaliu

Pe ce merge de fapt o fabrică, înainte să-i scrie cineva software, este mersul pe jos. Cineva duce un chiulasă la postul următor și îi spune omului de acolo ce s-a stabilit. Cineva sună la birou să întrebe dacă a acceptat clientul devizul. Cineva scrie constatarea pe o foaie și altcineva o tastează mai târziu, după foaie, în mare parte corect. Nimic din toate astea nu e vina nimănui și nimic nu se vede până nu încerci să le înlocuiești, pentru că nimic nu e scris nicăieri.

Sistemul care le-a înlocuit trebuia să intre în timp ce fabrica lucra, și asta s-a dovedit cea mai grea constrângere și cea mai interesantă. Îl duce o decizie, și nu e o funcționalitate.

Este o linie trasă prin date. În ziua punerii în funcțiune hala avea deja lucrări începute, introduse parțial și inconsistent, iar variantele obișnuite erau o migrare riscantă sau o oprire de weekend. În loc de asta, sistemul primește un identificator de prag și aplică un singur scope global: tot ce e sub el există, se poate interoga, rămâne vizibil în arhivă pentru birou și pur și simplu nu e acolo pentru nimeni din hală. Vreo douăzeci de linii, două portițe pentru ecranele de arhivă, și o punere în funcțiune fără curățare de date și fără producție oprită.

Ce face sistemul odată intrat este planificare de producție, nu ticketing. Când clientul acceptă devizul, liniile acceptate devin un graf orientat de operațiuni pentru lucrarea aia — muchii adevărate între noduri, nu o listă ordonată. Un nod devine disponibil când i s-au terminat dependențele și când au sosit piesele de care are nevoie, deci sosirea unei piese recalculează ce tocmai a devenit posibil și îi anunță pe cei care pot s-o facă. Săritul unui pas este o cerere pe care o aprobă cineva mai sus, măsurătorile se înregistrează față de toleranțe, iar o gardă limitează câte operațiuni poate ține un om deschise în același timp. Sunt cinci astfel de mașini de stări care merg simultan — lucrarea, transportul lucrării, transportul unei componente, componenta însăși și graful — și se sincronizează prin evenimente.

OCR-ul este partea care pare figură de stil și nu este, pentru că nu produce text. Foaia de constatare e o hârtie completată de mână la banc și se fotografiază. Modelului i se dau rândurile numerotate ale zonei respective și e întrebat doar care dintre ele sunt bifate și cum — bifă, linie, cifră — iar răspunsul lui se filtrează pe lista aia, deci orice rând inventat se aruncă, iar denumirea operațiunii se ia din tabelul local, nu de la model. Ce iese la capăt nu e o transcriere. Sunt noduri în graful de operațiuni și linii pe deviz.

Curierul intern mută lucrul de la un post la altul, iar stările lui nu sunt o coloană. Se deduc din timestampuri, fiecare însoțit de identificatorul omului care l-a pus, deci istoricul e complet și nu poate fi rescris după. Gărzile sunt cele obișnuite, scrise ca lumea: nu poți livra ce n-ai ridicat, o a doua scanare a aceleiași mișcări se refuză în loc să se dubleze, iar ce stă prea mult neridicat se escaladează pe un cronometru. Anularea nu șterge o mișcare de stoc — scrie una compensatoare, care arată spre cea originală.

Suprafața de integrare e acolo unde stau celelalte sisteme ale fabricii și e cea mai mare parte din munca fără glorie. Cataloagele furnizorilor vin prin șase scrapere, fiecare rulând ca serviciu propriu, nu ca job în aplicație, deci un furnizor care își schimbă pagina nu trage fabrica după el. Recepția de marfă se notează pe planul de conturi românesc, cu numerotare secvențială legală. Iar între posturi, patruzeci și trei de tipuri de notificări înlocuiesc patruzeci și trei de discuții — trimise ca push doar celor care n-au aplicația deschisă, și niciodată între zece seara și șapte dimineața.

Tehnologii

  • Laravel 12
  • PHP 8.3
  • MySQL 8
  • React 18
  • Filament
  • Meilisearch
  • Redis

Competență

  • Software la comandă
  • Integrări
  • AI aplicat
Proiecte

Contact

Ce vrei să construiești?

Discută proiectul tău