FixFlow
Noliktavas lietotnes modernizācija
FixFlow ir AMIT noliktavas lietotne automašīnu dīleriem. Mitigate to izstrādāja no jauna kā native Android lietotni, un kopš 2026. gada 28. augusta tā ir pieejama Google Play.
KotlinJetpack ComposeClean ArchitectureRoomKtorKoin

Izaicinājums
Izaicinājums
FixFlow strādā kopā ar AutoMaster. Noliktavas operatori ar to rokas skeneros izsniedz un pieņem rezerves daļas, veic inventarizāciju un drukā uzlīmes. Lietotne tika izveidota 2021. gadā, un pēc pieciem gadiem to uzturēt un attīstīt kļuva arvien grūtāk.
AMIT bija vajadzīga lietotne, kuru var ātri attīstīt un kurai operatori var uzticēties visas maiņas garumā.
Sarežģīta un kļūmīga izstrāde
Kārtējo izmaiņu veikšana bija atbildīga un riskanta: lietotnē pārklājās trīs dažādi dizaina šabloni, biznesa loģika bija iestrādāta ekrānu kodā un atsevišķi koda faili pārsniedza 1000 rindiņu. Jebkura korekcija varēja negaidīti salauzt citu funkciju.
Trūka drošības un kontroles
Lietotnei nebija automatizēto testu un statiskās koda analīzes. Rezultātā sistēmas kļūmes vispirms pamanīja darbinieki ikdienas darbā, nevis izstrādātāji pārbaudes posmā.
Nesaprotami kļūdu ziņojumi
Problēmu gadījumos lietotājiem tika rādīti tehniski koda teksti, kurus tie nevarēja ietekmēt, savukārt atsevišķas kļūdas izraisīja pilnīgu lietotnes "asociatīvu" apstāšanos.
Nestabils darbs ikdienā
Lielu dokumentu (ap 300 pozīcijām) ielāde mēdza izsaukt lietotnes avāriju, servera kļūdu dēļ dati pazuda vai dubultojās, un darba sesijas pārtrukums vidū spieda darbiniekus no jauna autorizēties.
Risinājums
Modernizācija no pamatiem
Mitigate pārbūvēja FixFlow no pašiem pamatiem, izveidojot modernu native Android lietotni Kotlin valodā ar Jetpack Compose saskarni. Biznesa loģika, dati un lietotāja saskarne ir strikti atdalīti no aparatūras integrācijām (skeneriem, printeriem, signāliem un sistēmas atjauninājumiem), ļaujot katru komponenti mainīt neatkarīgi vienai no otra.
Stingra "Clean Architecture" pieeja
Katras funkcijas dati, biznesa loģika un ekrāni ir sadalīti atsevišķos slāņos. Lai nodrošinātu precīzu arhitektūras ievērošanu, katrā koda komplektēšanas reizē atbilstību automātiski pārbauda 12 pielāgoti analīzes noteikumi.
Drošas un ātras izmaiņas
Lietotne sadalīta 99 atsevišķos biznesa scenārijos un 19 ekrānu kontrolieros. Jaunas funkcijas tiek pievienotas blakus esošajam kodam, nevis caurvij to - tas ļauj ieviest jauninājumus ātri un bez riska salauzt esošo funkcionalitāti.
Pakāpeniska un droša ieviešana
Jaunā lietotne tika ieviesta pa funkciju blokiem, kamēr vecā versija turpināja darboties. Visi iestatījumi pirmajā palaišanas reizē pārnesās automātiski, tāpēc darbiniekiem nebija no jauna jākonfigurē savas ierīces.
No izstrādes sākuma līdz Google Play - 14 mēneši
Jūn 2025
Uzsākta funkciju izstrāde
Aug 2025
Pirmā testa versija (4.0)
Mar 2026
Pārbūvēta preču izsniegšana, ieviesti automatizētie testi
Jūn 2026
Versija 5.0 ar bezsaistes melnrakstu atbalstu
Aug 2026
Publicēta Google Play bez nevienas koda analīzes kļūdas
Darba plūsmas
Galvenās darba plūsmas
Visas darba plūsmas pārbūvētas, balstoties noliktavas darbinieku ikdienas ieradumos un ņemot vērā piecu gadu laikā saņemtās atsauksmes.
Izsniegšana, pirmsiesaiņošana un atgriešana
Visas trīs darbības sākas vienā ekrānā. Dokumentu var ātri atrast pēc uzdevuma vai pasūtījuma numura, savukārt atgriešanu var sākt, uzreiz noskenējot preci. Ja viena prece atrodas vairākās rindās, rindu izvēlas tikai vienu reizi.


Pieņemšana
Piegādes numuru var atrast, to vienkārši noskenējot. Pauze starp skenējumiem ir samazināta līdz 0,5 sekundēm, un nesinhronizētie dati droši saglabājas ierīcē arī tad, ja pazūd tīkla savienojums.


Svītrkodu skenēšana
Trīs atšķirīgi skaņas un vibrācijas signāli - apstiprinājumam, brīdinājumam un kļūdai - ir viegli uztverami, neatraujot skatu no plaukta. Zebra, Newland un Honeywell skeneri darbojas ar vienu kopīgu integrāciju.



Inventarizācija
Vienai precei daudzumus var fiksēt līdz trim lokācijām vienlaikus. Skaitījumi droši saglabājas ierīcē līdz sinhronizācijai, un viens skenējums vairs netiek ieskaitīts divreiz.
Rezerves daļas un uzlīmes
Rezerves daļas var meklēt pēc teksta vai svītrkoda, un uzlīmes drukā tieši uz pārnēsājamā Zebra printera bez papildu tīkla iestatīšanas.
Pieteikšanās un valodas
Licences atslēgu var nolasīt no QR koda, filiāli var ērti pārslēgt pašā lietotnē, un saskarne ir pieejama četrās valodās: latviešu, angļu, lietuviešu un bulgāru.
Tehnoloģijas
Tehnoloģijas, ko izmantojām FixFlow izveidē
Jaunā lietotne ir veidota uz vienotas, mūsdienīgas Kotlin tehnoloģiju bāzes. Vecajā versijā tika izmantoti vairāku paaudžu Android izstrādes rīki.
Lietotāja saskarne
Vecā lietotne
XML izkārtojumi un Fragments, jaukti ar Jetpack Compose
Jaunā lietotne
Visā lietotnē izmantots tikai Jetpack Compose
Arhitektūra
Vecā lietotne
Koda slāņi noteikti pēc vienošanās, bez stingras pārbaudes
Jaunā lietotne
Clean Architecture katrai funkcijai ar automātisku koda pārbaudi komplektēšanas laikā
Glabāšana ierīcē
Vecā lietotne
SQLDelight; melnraksti sajaukti ar kešatmiņas datu bāzi
Jaunā lietotne
Room 2.8: atsevišķa kešatmiņa un migrēta melnrakstu datu bāze
Automatizēti testi
Vecā lietotne
Nav
Jaunā lietotne
764 testi
Statiskā analīze
Vecā lietotne
Nav
Jaunā lietotne
Automātiska koda pārbaude (detekt) bez pieļautām kļūdām, izmantojot 12 pielāgotus arhitektūras un Compose noteikumus
Rīki
Vecā lietotne
Kotlin 2.2, AGP 8.7, Gradle 8.11, SDK 35
Jaunā lietotne
Kotlin 2.4, AGP 9.3, Gradle 9.7, SDK 37
| Joma | Vecā lietotne | Jaunā lietotne |
|---|---|---|
| Lietotāja saskarne | XML izkārtojumi un Fragments, jaukti ar Jetpack Compose | Visā lietotnē izmantots tikai Jetpack Compose |
| Arhitektūra | Koda slāņi noteikti pēc vienošanās, bez stingras pārbaudes | Clean Architecture katrai funkcijai ar automātisku koda pārbaudi komplektēšanas laikā |
| Glabāšana ierīcē | SQLDelight; melnraksti sajaukti ar kešatmiņas datu bāzi | Room 2.8: atsevišķa kešatmiņa un migrēta melnrakstu datu bāze |
| Automatizēti testi | Nav | 764 testi |
| Statiskā analīze | Nav | Automātiska koda pārbaude (detekt) bez pieļautām kļūdām, izmantojot 12 pielāgotus arhitektūras un Compose noteikumus |
| Rīki | Kotlin 2.2, AGP 8.7, Gradle 8.11, SDK 35 | Kotlin 2.4, AGP 9.3, Gradle 9.7, SDK 37 |
Skenēšanai tiek izmantotas ražotāju broadcast integrācijas (Zebra DataWedge, Newland, Honeywell), bet uzlīmju drukāšanai nodrošināts tiešs Zebra PrintConnect atbalsts no ierīces.
Rezultāts
Rezultāts
Jaunā lietotne ir pieejama Google Play kopš 2026. gada 28. augusta. Būtiskākais ieguvums ir sistēmas ilgtspēja un uzturamība - izmaiņas un uzlabojumus tagad var ieviest ātri un droši, neietekmējot ikdienas darba plūsmas.
764
automatizēti testi 83 koda failos
0
koda analīzes kļūdu - versijas izlaišana tiek bloķēta pie vismazākās novirzes
12
pielāgoti arhitektūras noteikumi
~28
Compose UI noteikumi ekrānu koda kontrolei
Kopš lietotnes palaišanas nav saņemts neviens ziņojums par dubultotiem skaitījumiem, lai gan vecajā versijā darbinieki par to sūdzējās regulāri.
Problēmu novēršana tagad prasa dienas, nevis mēnešus
Līdzīgu kļūdu un uzlabojumu izpildes laiks Jira sistēmā (no ziņojuma saņemšanas līdz risinājumam):
Vecā lietotne
Pieņemšanas daudzuma lauks nedarbojas pie manuālas labošanas
70 dienasPieņemšanas automātiskās ciparu tastatūras iestatījums nedarbojas
83 dienasLietotnes avārija, ielādējot apjomīgu pieņemšanas dokumentu
51 diena
Jaunā lietotne
Pieņemšanas lokācija pazūd pēc komentāra pievienošanas
7 dienasUzlīmju drukāšanas bloķēšana, līdz datus apstiprina serveris
5 dienasNesinhronizēto datu saglabāšana tīkla pārrāvuma gadījumā
7 dienas