Performance-marketing agentligi: pul va ma'lumotlar kod nazoratida
Shartnoma shartlariga ko'ra buyurtmachini oshkor qilmaymiz: bu mijozlar kampaniyalarini bir nechta reklama tarmoqlarida yurituvchi va MMP-platforma bilan ishlaydigan performance-marketing agentligi. Bu yerda pul va ma'lumotlar sifatini nazorat qilish tizimi qurildi. Sarfni to'ldirishlar bilan solishtirish, ichki vositalarning avtotestlari, alertli monitoring va kirishlar auditi kod bilan va jadval bo'yicha ishlaydi: ilgari qo'lda va ko'z bilan tekshirilgan narsa endi avtomatik va tsentgacha tekshiriladi.
Raqamlardagi natija
- Jadval bo'yicha o'ndan ortiq vazifa: soatiga bir necha marta sarf sinxronizatsiyasi, tungi chuqur sinxronizatsiya, solishtirish, dayjest, bekaplar, botlar holatini tekshirish, mijoz kitoblari, MMP dan kunlik yuklama.
- pytest da 200 ga yaqin avtotekshiruv.
- O'n minglab qator o'z kodi.
- Barcha reklama kabinetlari hamkorlar bilan tsentgacha solishtirilgan: solishtirish kitobidagi har bir to'ldirishda tranzaksiya xeshi yoki billingdan tasdiq bor.
- Barcha bayer jadvallari shablon bilan birga skriptning bitta yurgizishida tuzatildi.
- MMP ga ortiqcha kirishlarning qariyb yarmi yopildi, birorta xodim kerakli kirishni yo'qotmadi.
Topilgan va yopilgan nuqsonlar
Ma'lumotlar tizimli tekshirila boshlanmaguncha hech kim ko'rmagan xatolar. Har biri pulga yoki mijozlar bo'yicha qarorlarga ta'sir qilardi; har biri tuzatilgandan keyin tekshiruv qoidasiga aylandi.
- Bir kunda qayta nomlangan kampaniya bitta kalitli ikki satr berar, yozuv ulardan birini o'chirib yuborardi: panel sarfning sezilarli qismini yo'qotib, qoldiqlarni oshirib ko'rsatardi. Bitta kalitli satrlar qo'shiladi, holat uchun regressiya testi yozilgan.
- To'ldirishlar jurnal satri raqamiga bog'lanardi: satr qo'shilganda pul begona kabinetga ketardi. Bog'lanish ikki fazali matching bilan tranzaksiya xeshiga o'tkazildi va satrlari siljitilgan baza nusxasida yurgizish bilan tekshirildi.
- MMP yuklamasi server va SDK hodisalarini qo'shardi: mijozning ro'yxatdan o'tishlari va FTD taxminan ikki barobar oshib ketardi. Faqat server postbeki hisoblanadi, qoida yuklamaning o'zida yozilgan.
- Bayer jadvali shablonidagi jami offerlar ro'yxatining o'rtasida uzilib qolardi va yig'ma xarajatlarni kamaytirib ko'rsatardi. Barcha jadvallarda va shablonda skript bilan tuzatildi.
- Yig'malar begona jadvallarga uzilgan havolalarni o'qirdi va oylab nollarni ko'rsatardi. Ma'lumotlar manba jadvallardan o'qiladi, yig'ma har soatda qayta tuziladi.
- Panel formalari saqlashda maydonlarni jimgina yo'qotardi. Yo'qotishlarning to'rt sinfi bo'yicha audit o'tkazildi, har biriga tuzatish va test.
- Konteynerdagi panel bazasi WAL rejimida fayl sifatida ulangan edi va yozuvlar yo'qolardi. Ulanish katalogga o'tkazildi, qo'lda tuzatishlardan keyin chekpoynt qilinadi.
- Kabinetlardan biri bo'yicha solishtirish muvaffaqiyatsiz to'lovni hisobga olardi va hamkor bilan farq aynan uning summasiga teng edi. Hisoblash qoidasi: faqat yakunlangan to'lovlar, sarf uchun hisob to'ldirish hisoblanmaydi.
Pulni tsentgacha solishtirish
Hamkorlar bilan solishtirish har bir kabinet bo'yicha boradi: sarf, kripto-to'ldirishlar va karta orqali to'ldirishlar. Karta to'ldirishlarini reklama tarmog'i API orqali bermaydi: o'nlab manzillarni tekshirish va 403 hamda 404 javoblaridagi farq muammo kirish huquqlarida emasligini ko'rsatdi. Manba hisoblash qoidalari bilan birga billing interfeysida topildi va karta to'lovlari ham solishtirish kitobiga, ham panelga kirdi.
Solishtirish ish vositasiga o'rnatilgan: paneldagi kabinet qoldiqlari kitob bilan tsentgacha mos keladi, kabinet yopilganda esa sarf tarixi avtomatik yuklab olinadi — hamkorlar kalitlarni ogohlantirishsiz qaytarib oladi.
Avtotestlar va invariantlar
Testlar kodni emas, xatti-harakatni tasvirlaydi. Kabinetni yopish uchun faol kartochkani tahrirlash tarix yuklamasini ishga tushirmasligi, yopish ishga tushirishi, takroriy saqlash dublikat qilmasligi, Google nosozligi esa kabinetni yopishga xalaqit bermasligi va chatga alert bo'lib ketishi tekshiriladi. Kartochkalarni saqlash, pulni bog'lash, past balans haqida bildirishnomalar, eksport, kuzatuvchi rejimi va API limitlarini qayta ishlash qamrab olingan.
- Pul yoki kirishlarning har qanday ommaviy tahriridan oldin bekap qilinadi.
- Tahrir invariant bilan bajariladi: oldingi va keyingi summalar mos kelishi shart.
- Natija skript javobidan emas, tizimdan qayta o'qiladi.
- Invariant bajarilmasa, o'zgarish orqaga qaytariladi.
Monitoring, limitlar va API diagnostikasi
Har qanday vazifaning nosozligi umumiy alert-modul orqali admin-chatga ketadi: muammo mijoz qoldiq haqida so'raganda emas, paydo bo'lgan paytda ko'rinadi. Tashqi API limitlari jarayonni yiqitmaydi, qayta ishlanadi. Tarmoqlardan birida limit barcha kabinetlar uchun umumiy, yarim soatgacha kutish bilan. MMP da u chastotali: so'rovlar orasidagi qaysi pauza butun oqimni o'tkazishi o'lchangan, rad etilganda esa yuklama oxirgi muvaffaqiyatlisini qo'yadi va buni aniq belgilaydi.
Integratsiyalar diagnostikasi usuli — ataylab noto'g'ri token bilan nazorat so'rovi va har biri o'z ma'nosiga ega 401, 403 va 404 kodlarini tahlil qilish. Shunday qilib agentlik akkauntlariga platforma API sining bir qismi berilmasligi aniqlandi va muqobil ishchi yo'l topildi. Yo'qolgan ilovalarni bitta mamlakat bo'yicha tekshirish yarmidan ko'p soxta signal berardi va bir nechta geo bo'yicha tekshirishga o'tkazildi; kampaniyalar qora ro'yxatlari API orqali yuritiladi.
Kirishlar auditi
Bir nechta MMP akkaunti, o'nlab foydalanuvchilar, yuzlab ilovalarga huquqlar: rol, oxirgi kirish va shtat bilan solishtirish. Uzoq vaqt faol bo'lmaganlar, hech qachon kirmaganlar va kirmagan tashqi foydalanuvchilarning kirishlari yopildi. Adminlar va integratsiyalar hisob yozuvlari o'chirishdan himoyalangan, o'chirishdan oldin huquqlar bekapi saqlanadi, keyin natija takroriy so'rov bilan tekshiriladi. Hamkor domeni pochtalaridagi xodimlar tizimdagi ism bo'yicha emas, shtat ro'yxatidagi ish manzili bo'yicha aniqlanadi.
Stek va integratsiyalar
- Kod: Python, FastAPI, SQLite, pytest, gspread, Google Apps Script.
- Infratuzilma: Podman, systemd timers, nginx va Caddy.
- Reklama tarmoqlari va MMP: statistika va kampaniyalarni boshqarish API lari, MMP yuklama va foydalanuvchilarni boshqarish API lari.
- Ish vositalari: Google Sheets, Drive va Apps Script, Asana, Telegram Bot API — har 15 daqiqada yangilanadigan sarf paneli, kabinetlar bo'yicha qoldiqli mijoz boti, tranzaksiya xeshi bo'yicha to'ldiriladigan to'ldirishlar jurnali.
Tamoyillar
- Ikki mustaqil manba: pul kamida ikkita tizim bo'yicha solishtiriladi, bitta raqamga so'zsiz ishonmaymiz.
- Bekap, invariant, qayta o'qish: har qanday ommaviy tahrir uch qadamdan o'tadi yoki orqaga qaytariladi.
- Qaytarib bo'lmaydigan narsa faqat ro'yxat bo'yicha: o'chirish va tarqatmalar — ko'rsatilgan ro'yxat va aniq tasdiqdan keyin.
- Har bir nuqson takrorlanmasligi uchun tekshiruv qoidasiga aylanadi.
Raqamlar va tizimlar nomlari maxfiylik shartnomasi shartlariga ko'ra umumlashtirilgan.
Ko'p so'raladigan savollar
Bu oddiy testlashdan nimasi bilan farq qiladi?
Nega bitta emas, ikki manba bo'yicha solishtirish?
Reklama tarmoqlari API limitlari bilan qanday ishlash kerak?
Bunday tizimni boshqa agentlikda takrorlash mumkinmi?
Vazifangiz haqida yozing
Bir ish kuni ichida javob beramiz, bahoni 1–2 kunda yuboramiz. Bepul.