Qaytarishlar analitikasi: tovar qayerda sotilmayapti
Yetkazib beruvchi tovarni federal chakana tarmoqlarga jo'natadi va qaytib hisobdan chiqarishlarni oladi — har bir tarmoq o'z formatida: Excel yuklamalari, qaytarish haqidagi PDF-bildirishnomalar, hujjatlarning skan va fotosuratlari. Hisob o'nlab jadvallarda qo'lda yuritilar, nuqtalar bo'yicha qaytarish foizini hech kim hisoblamasdi. Turli manbalardan ma'lumotlarni o'zi yig'adigan va tovar qayerda sotilmayotganini ko'rsatadigan tizim kerak edi.
Ichida nima bor
- Har bir kontragent uchun adapter. Hisobot formatlari tubdan farq qiladi — bir tarmoqda kunlik tafsilot, boshqasida haftalik pivot. Fayl turi nomi bo'yicha emas, mazmuni bo'yicha aniqlanadi.
- PDF ni tanib olish konveyeri. Raqamli hujjatlar matn qatlami orqali o'qiladi, skanlar burilishni avtomatik tanlash bilan OCR ga ketadi, bahsli holatlar esa model ko'rishi bilan o'qib tugatiladi. Ko'p sahifali fayllar varaqma-varaq tahlil qilinib, yuk xatlari, hal qilish shakllari va imzo varaqlari orasidan kerakli hujjat tanlanadi.
- Soxta ma'lumotlardan himoya. Pozitsiyalar summasi hujjatdagi jami bilan solishtiriladi. Mos kelmasa — yozuv bloklanadi va hujjat to'qib chiqarilgan raqamlarni jimgina kiritish o'rniga qo'lda tekshiruvga ketadi.
- Operatsiyalarning qaytariluvchanligi. Har bir yuklash oldingi va keyingi holat suratini saqlaydi; istalganini hisob-kitoblardan chiqarib, qolgan ma'lumotlarni yo'qotmasdan qaytarish mumkin.
- Analitika. «Do'kon × tovar» juftligi bo'yicha qaytarish foizi, tarmoqdan nuqta va pozitsiyagacha drill-down, pul va donadagi summalar, yuklangan ma'lumotlar to'liqligini nazorat qilish, yo'qotishlari yuqori pozitsiyalar bo'yicha hisobot.
Sifat nazorati
Ishlab chiqish «tahrir — test — jonli tekshiruv — deploy» rejimida bordi. Har bir o'zgarish avtotest bilan yopildi, vizual tahrirlar brauzerda tekshirildi.
- pytest da 376 ta avtotest: biznes-mantiq, parserlar, API.
- Almashtirilgan DOM li izolyatsiya qilingan muhitda frontendning real kodini bajaradigan 12 ta brauzer testi.
- Jangovar ma'lumotlarga yozishni istisno qiladigan test bazasining uch darajali izolyatsiyasi.
- Har bir deploydan keyin yaxlitlikni tekshirish: fayllarning nazorat summalari, barcha endpointlar javoblari, ko'rsatkichlarni oldin va keyin solishtirish.
Nuqsonlarning alohida sinfi faqat jonli tekshiruv bilan tutilardi: CSS ning kaskadli ziddiyatlari, muzlab qolgan animatsiyalar, DOM da bor, lekin ekranda ko'rinmaydigan elementlar.
Stek
- Bekend: Python 3, FastAPI, SQLAlchemy, PostgreSQL ga zaxirali SQLite, Uvicorn.
- Ma'lumotlarni qayta ishlash: pandas, openpyxl, idempotent yuklashli ETL-konveyer.
- Hujjatlarni tanib olish: pdfplumber, PyMuPDF, Tesseract OCR, Claude Vision API.
- Frontend: vanilla JavaScript, Jinja2, freymvork va yig'ishsiz CSS.
- Testlash: pytest, DOM-testlar uchun Node.js va vm.
- Infratuzilma: systemd, rsync-deploy, basic-auth, orqaga qaytarishli snapshotlar.
Natija
- Qo'lda ma'lumot yig'ish barcha manbalardan avtomatik yuklash bilan almashtirildi.
- Qaytarish foizi har bir savdo nuqtasi va pozitsiya bo'yicha hisoblanadi.
- Qo'lda kiritishni talab qiladigan hujjatlar ulushi tanib olish konveyerini takomillashtirish hisobiga to'rt barobar kamaydi.
Ko'p so'raladigan savollar
Tizim bu qanday fayl ekanini qanday tushunadi?
Tanib olish xato qilsa nima bo'ladi?
Muvaffaqiyatsiz yuklashni bekor qilish mumkinmi?
pytest da 376 ta avtotest bo'lsa, brauzer testlari nega kerak?
Vazifangiz haqida yozing
Bir ish kuni ichida javob beramiz, bahoni 1–2 kunda yuboramiz. Bepul.