Əvvəlki tapşırıqlarla asanlıqla bacardın? Onda gəlin bir az daha çətin bir şey edək. İndi isə PL-SQL biliklərini möhkəmləndirək və prosedurlar, trigger-lər yazaq. Hazırsan?
Prosedurların yaradılması
Aşağıda marketplace database-inə əlavə etməyin tövsiyə olunan prosedurlar var. Hər prosedur izah olunur ki, hansı tapşırıqları və biznes-prosesləri həll edir və niyə onu tətbiq etmək lazımdır. Bu prosedurlar əsas əməliyyatların avtomatlaşdırılmasını, istifadəçi rahatlığını artırmağı, vitrin, logistika, dəstək, marketinq və analitikanın optimallaşdırılmasını əhatə edir.
1. Sifarişin rəsmiləşdirilməsi və məhsulların avtomatik rezervasiyası
Sifarişin rəsmiləşdirilməsi — istənilən marketplace üçün əsas əməliyyatdır. Prosedur sadəcə sifariş və onun mövqelərinin yazısını yaratmamalı, həm də məhsulu anbarda rezerv etməli, miqdarı çıxmalı, statusu qeyd etməli, ödənişi başlatmalı və sonrakı prosesləri (bildirişlər, logistika) işə salmalıdır. Bu ssenarinin avtomatlaşdırılması əl ilə daxil etmədə səhv riskini azaldır, over-selling-in qarşısını alır və stokların real vaxtda uyğunluğunu təmin edir.
2. Məhsul stoklarının avtomatik artırılması
Out-of-stock və satış itkilərinin qarşısını almaq üçün vacibdir ki, stoklar vaxtında artırılsın, əgər qalıq səviyyəsi həddən aşağıdırsa. Bu prosedur bütün məhsullar üzrə qalıqları yoxlayır, onları minimum səviyyə ilə müqayisə edir və avtomatik olaraq alış və ya daxili resupply üçün sorğu yaradır. Avtomatlaşdırma reaksiya vaxtını azaldır və əməliyyat şöbəsinin əl yükünü azaldır.
3. Sifariş statuslarının kütləvi yenilənməsi və istifadəçilərə bildiriş göndərilməsi
Kataloqda tez-tez sifarişləri statuslar arasında kütləvi şəkildə keçirmək lazım olur (məsələn, “ödənildi” → “göndərildi” və ya “göndərildi” → “tamamlandı”) işləmə mərhələsindən asılı olaraq. Prosedur bütün uyğun sifarişlərin statusunu yeniləyir, dəyişiklik tarixçəsini yazır (audit üçün) və istifadəçilərə bildiriş göndərilməsini başlada bilər. Bu, back-office işini avtomatlaşdırır və əl ilə edilən səhvləri minimuma endirir.
4. Məhsullara kütləvi endirim/promokod tətbiqi
Məhsulların təşviqi və ya aksiyaların keçirilməsi tez-tez bütün kateqoriyaya, brendə və ya seçilmiş məhsullara kütləvi promokod və endirim tətbiqini tələb edir. Prosedur avtomatik olaraq endirimləri təyin edir, məhdudiyyətlərə (tarix, limitlər) nəzarət edir, istifadə sayğaclarını yeniləyir və dublikatların qarşısını alır.
5. İstifadəçiyə avtomatik pulun geri qaytarılması
Geri qaytarmaların və pulun geri ödənilməsinin rəsmiləşdirilməsi — müştəri etibarının qorunması üçün kritik prosesdir. Prosedur sifarişin statusunu, geri qaytarma etibarlılığını yoxlamalı, ödəniş üzrə geri qaytarmanı başlatmalı, statusları yeniləməli, tranzaksiyaları loglamalı və istifadəçiyə bildiriş göndərməlidir. Bütün şərtlərin bir transaction-da işlənməsi səhv və sui-istifadə riskini azaldır.
6. Məhsulun/satıcıların orta reytinqinin yenidən hesablanması
Hər yeni rəy, dəyişiklik və ya silinmədə məhsulun və ya istifadəçinin orta reytinqi aktual olmalıdır. Prosedur operativ şəkildə “avg_rating”/“review_count” sahəsini yenidən hesablayır və yeniləyir ki, front sorğuları sürətli işləsin və analitika uyğun olsun.
7. Qalıq sıfır olan məhsulların avtomatik deaktivasiya olunması
Marketplace vitrininin düzgün işləməsi və istifadəçilərin neqativ təcrübəsinin qarşısını almaq üçün qalıq sıfır olan məhsullar avtomatik olaraq gizlədilməlidir (deaktivasiya olunmalıdır). Prosedur mütəmadi olaraq anbarları və məhsul statusunu yoxlayır, statusu “inactive” edir, dəyişikliyi loglayır və kataloqu əl ilə yoxlamadan aktual saxlamağa kömək edir.
8. Sifarişin avtomatik kuryerə təyin olunması və çatdırılma statusunun yenilənməsi
Logistikada vacibdir ki, sifarişə kuryer tez və şəffaf şəkildə təyin olunsun, çatdırılma statusu dəyişsin, bütün hərəkətlər izləmə üçün qeyd olunsun. Prosedur bu addımları avtomatlaşdırır və menecerin əl işini aradan qaldırır.
9. İstifadəçilərə kütləvi bildiriş göndərilməsi (aksiya trigger-i, xatırlatmalar)
Satışlar, geri qaytarmalar, status dəyişiklikləri və ya marketinq aktivlikləri barədə bildirişlər kütləvi şəkildə, şərtlərə görə (aktiv istifadəçilər, uzun müddət almayanlar, səbəti tərk edənlər və s.) göndərilməlidir. Prosedur seçilmiş seqment üzrə push/email bildiriş göndərilməsini başlatmağa imkan verir.
10. Köhnə məlumatların arxivləşdirilməsi (məsələn, tamamlanmış sifarişlər və ya qeyri-aktiv məhsullar)
Database performansını qorumaq və “isti” cədvəllərin həcmini azaltmaq üçün köhnə yazılar (köhnə sifarişlər, arxiv məhsullar, köhnə support ticket-lər) mütəmadi olaraq köçürülməli və ya “arxiv” kimi işarələnməlidir. Prosedur məlumatların silinməsi və ya köçürülməsi əməliyyatlarını asanlaşdırır və adminlərin əl işini minimuma endirir.
Trigger-lərin yaradılması
1. Sifariş statusunun dəyişməsinin loglanması
Sifariş statuslarının dəyişmə tarixçəsinin tam aparılması audit, dəstək, analitika və istifadəçilərə sifarişlərinin işlənməsi barədə avtomatik bildiriş göndərilməsi üçün kritikdir. Trigger hər status dəyişikliyində "order".order_status_log cədvəlinə avtomatik yazı yaradır, developer-ləri tətbiq səviyyəsində tarixçəni əl ilə saxlamaqdan azad edir.
2. Məhsul variantının qiymət dəyişikliyi tarixçəsinin avtomatik qeyd olunması
SKU üzrə qiymət dəyişikliklərinin tarixçəsi analitika, “köhnə qiymət”in göstərilməsi, aksiyaların izlənməsi və endirimlər barədə avtomatik bildiriş üçün lazımdır. Trigger product.variant cədvəlində price sahəsinin hər dəyişikliyini product.price_history tarixçəsinə qeyd edir. Bu, qiymət dinamikasını tam və səhvsiz saxlamağa imkan verir.
3. Anbarda məhsul dəyişəndə qalıq sinxronizasiyası
Anbarda hər qalıq dəyişikliyi (məsələn, yenidən sayma, daxilolma, çıxarılma) last_updated sahəsini avtomatik yeniləməlidir ki, analitika düzgün olsun və məlumatlar aktual qalsın. Həmçinin, belə trigger minimum həddə çatmanı yoxlayıb auto-order başlada bilər.
4. Qalıq sıfır olan məhsul variantlarının avtomatik deaktivasiya olunması
İstifadəçi olmayan məhsulu almasın deyə, bütün anbarlarda qalıq sıfır olanda məhsul variantının is_active sahəsi avtomatik FALSE olur. Bu, neqativ rəylərin və sifariş ləğvlərinin sayını azaldır.
5. Admin giriş cəhdlərinin loglanması (təhlükəsizlik)
Admin girişinə nəzarət — informasiya təhlükəsizliyinin açarıdır. Bütün giriş cəhdləri (uğurlu və uğursuz) admin.login_attempt cədvəlində BEFORE INSERT trigger ilə avtomatik qeyd olunur. Bu, hücum, hack və ya şübhəli aktivliyi vaxtında aşkar etməyə imkan verir.
6. Məhsulda əsas dəyişikliklərin loglanması və tarixçənin avtomatik yazılması
Məhsulda bütün vacib düzəlişlər (status, təsvir, ad dəyişikliyi) audit, əməkdaşların hərəkətlərinin bərpası və sui-istifadəyə nəzarət üçün qeyd olunmalıdır. Trigger status dəyişəndə product.status_history cədvəlinə yazı yaradır və digər əsas sahələr üçün də genişləndirilə bilər.
7. Promokod istifadəsi sayğacının avtomatik yenilənməsi
Promokod istifadəsinin düzgün uçotu aksiyaların məhdudlaşdırılması və sui-istifadənin qarşısı üçün vacibdir. Trigger hər marketing.promo_usage-ə insert-də marketing.promo_code cədvəlində used_count sayğacını artırır və məlumat uyğunsuzluğunu istisna edir.
8. İstifadəçi pulqabısının balansının tranzaksiyalarda yenilənməsi
Bonus/cashback pulqabısının balansının düzgün göstərilməsi üçün hər tranzaksiya avtomatik olaraq yekun balansı payment.wallet cədvəlində yeniləməlidir. Yeni tranzaksiya insert trigger-i tətbiq səhvlərində məlumat itkisi və ya təhrif riskini azaldır.
9. İstifadəçinin “əsas” ünvanı, email və ya telefonunun avtomatik təyin olunması
İstifadəçinin əsas email/telefon/ünvanı olmaması (bu, girişin bərpası və kommunikasiya üçün kritikdir) qarşısını almaq üçün trigger ilk yazı üçün is_primary=TRUE flag-ını avtomatik qoyur və bir istifadəçi üçün unikal olmasını təmin edir.
10. Məhsulun orta reytinqinin rəy əlavə olunanda hesablanması
Məhsul kartında və axtarışda “orta reytinq”in tez göstərilməsi üçün hər yeni rəy əlavə olunanda bu dəyəri yeniləmək, hər dəfə aggregate sorğu hesablamaqdan daha effektivdir. Trigger product.product cədvəlində avg_rating və/və ya review_count sahəsinin cache-ni saxlayır.
11. Kontentin dərc tarixi sahəsinin avtomatik doldurulması
Məqalələr, səhifələr və digər dərc olunan materiallarda status “published” olanda published_at sahəsini düzgün doldurmaq vacibdir. Bu, CMS-in bütövlüyünü təmin edir: istifadəçilər və adminlər materialın dəqiq çıxış tarixini görür, front əlavə əl yeniləməsi tələb etmir.
12. Support event-lərinin (ticket status dəyişikliyi) loglanması
Support müraciətlərinin və status dəyişikliklərinin tam tarixçəsi support xidmətinin işini qiymətləndirməyə, analitika aparmağa və istifadəçilər üçün şəffaflıq təmin etməyə imkan verir. Trigger ticket statusu dəyişəndə support.ticket_status_log cədvəlinə avtomatik yazı əlavə edir.
Qeyd
Bu trigger-lərin əlavə olunması marketplace-in əsas biznes-proseslərinin etibarlılığını, şəffaflığını və avtomatlaşdırılmasını ciddi şəkildə artıracaq, tətbiq kodundan yükü götürəcək və məlumatların bütövlüyünü birbaşa database səviyyəsində təmin edəcək. Onlar böyük e-commerce üçün relasional sistemlərin dizaynında ən yaxşı təcrübələri əks etdirir.
GO TO FULL VERSION