Ödeme korumasıAyrıntılar
- Paket kapsamındaki revizyonlar ücretsizdir.
- Teslimattan sonraki 3 gün içinde yanıt vermezseniz iş otomatik olarak onaylanır.
Para, ödeme yaptığınızda bloke edilir ve yalnızca işi onayladığınızda aktarılır.

Örnek sonuç
Code review: Python order-import script for a small online shop
What the code does
- Reads
orders.csvfrom the shop export. - For each order line, finds the product by SKU in
stock.xlsxand subtracts the quantity. - Writes the updated stock back and logs totals to
import_log.txt.
The structure is clear and functions are well named. Most issues are about input that does not look the way the script expects.
Bugs and weak spots
| # | Line | Severity | Issue |
|---|---|---|---|
| 1 | 48 | High | The same CSV can be imported twice; there is no check for already processed order IDs. This is the most likely cause of negative stock. |
| 2 | 72 | High | int(row["qty"]) crashes on empty or "2.0" values from refunded orders. |
| 3 | 95 | Medium | SKU lookup is case-sensitive: "gt-101" and "GT-101" are treated as different products. |
| 4 | 130 | Medium | The file is opened without encoding="utf-8", so product names with accents break on Windows. |
| 5 | 201 | Low | Bare except: hides real errors and makes the log useless. |
Corrected fragments
Issue 1: skip orders already imported
processed = load_processed_ids("processed_orders.txt")
for row in reader:
if row["order_id"] in processed:
continue
# ... existing logic ...
processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)
Why: each order is applied once, even if you run the script on the same file again.
Issue 2: read quantity safely
raw = (row.get("qty") or "").strip()
try:
qty = int(float(raw))
except ValueError:
log.warning("Order %s: bad quantity %r, skipped", row["order_id"], raw)
continue
Why: refunded or partial lines are skipped with a clear note instead of stopping the whole import.
Issue 3: normalise SKUs
sku = row["sku"].strip().upper()
Apply the same .strip().upper() when building the stock dictionary.
Style and readability
process()is 90 lines long; split it intoread_orders,apply_to_stock,write_report.- Replace magic column numbers (
row[7]) with header names.
Please test each fix on a copy of your files: we read the code but did not run it.
Client: owner of a tea shop who wrote a 310-line Python script that imports orders from a CSV export into the stock spreadsheet Problem reported: "Sometimes stock goes negative, and the script crashes on some files."
Müşteri ve tüm ayrıntılar kurgusaldır.
Bu hizmet hakkında
Python web uygulamaları genellikle tahmin edilebilir yollarla yavaşlar veya güvensiz hale gelir: şablon döngüsü içindeki veritabanı sorgusu, açık bırakılmış DEBUG, ayar dosyasındaki gizli anahtar, kullanıcı girdisinden oluşturulan ham SQL veya tek bir dev dosyaya dönüşen bir Flask uygulaması. View'larınızı, ORM sorgularınızı, formlarınızı ve ayarlarınızı okur, bir isteğin uygulamada nasıl aktığını açıklar, sorunları riske göre işaretleriz. Düzeltilmiş parçalar, framework'ün zaten sunduğu araçları kullanır; örneğin select_related, form doğrulaması ve blueprint'ler.
Neler dahil
- Neler alırsınızSipariş sayfasında yazılı bir inceleme: isteklerin uygulamanızda nasıl aktığı, riske göre sorunlar ve düzeltilmiş Python parçaları. Premium paket, projeyi uygulamalara veya blueprint'lere bölmek için bir plan ekler.
- Sorgu sayısıN+1 sorguları ve select_related
- Ayar güvenliğiDEBUG, gizli anahtar, izin verilen hostlar
- Formlar ve girdiDoğrulama ve CSRF koruması
- Uygulama yapısıView'lar, uygulamalar ve blueprint'ler
- Düzeltilmiş parçalarFramework'ün yerleşik araçlarıyla
Nasıl çalışır
- 1BrifView'ları, ayarları ve hataları yapıştırırsınız
- 2OkumaBir isteği uygulama boyunca izleriz
- 3İncelemeSorunları ve düzeltilmiş kodu alırsınız
Sizden neler gerekiyor
Metin veya ekran görüntüsü olarak yapıştırılmış view'larınız, ORM sınıflarınız, formlarınız ve ayarlarınız, framework ve Python sürümleri, ne olması gerektiği ve varsa traceback.
Size soracaklarımız:
- Django mu Flask mı ve hangi sürüm?
- Hangi veritabanını ve eklentileri kullanıyorsunuz?
- Ne ters gidiyor ve bir traceback var mı?
- Uygulama zaten canlıda mı yoksa hâlâ geliştirmede mi?
Paketleri karşılaştırın
| Paketler | Temel100 satıra kadar uygulama kodu$15 | Standart400 satıra kadar uygulama kodu$35 | PremiumYapı planlı 1.000 satıra kadar$69 |
|---|---|---|---|
| Teslim süresi | 1 gün | 2 gün | 3 gün |
| Revizyonlar | 1 | 2 | 3 |
| Kod satırı | en fazla 100 | en fazla 400 | en fazla 1.000 |
| Düzeltilmiş parçalar | Evet | Evet | Evet |
| Proje yapısı planı | Hayır | Hayır | Evet |
| Sipariş ver Temel | Sipariş ver Standart | Sipariş ver Premium |
Ödeme koruması
Sipariş verirken ödersiniz, ancak para yalnızca onaylanan iş için aktarılır.
- Sabit fiyatPaket fiyatı, ödeme yaptıktan sonra değişmez.
- Para bloke edilirÖdeme yaptığınızda tutar yalnızca bloke edilir. İşi onayladığınızda hizmete aktarılır.
- Teslimattan önce kontrolHer sonuç size ulaşmadan önce kalite kontrolünden geçer ve onaylamadan önce sipariş sayfasında görürsünüz.
- Ücretsiz revizyonlarBrifiniz kapsamında, paketin izin verdiği sayıda değişiklik isteyin.
- 3 gün sonra onayTeslimattan sonraki 3 gün içinde işi onaylamaz veya değişiklik istemezseniz iş otomatik olarak onaylanır. Teslimattan sonra sipariş sohbetine yazarsanız sipariş bekletilir; yanıt verdikten sonra 3 günlük süreyi yeniden başlatabiliriz ve bunu sohbette bildiririz.
- Yeniden yapım veya tam iadeSonuç brifinize uymuyorsa ve revizyonlar sorunu çözmediyse ya da iş teslim süresinin iki katından uzun sürerse sipariş sohbetine yazın: işi yeniden yaparız veya ödemenin tamamını iade ederiz.
Sorular ve yanıtlar
Kodumu çalıştırıyor musunuz?
Hayır. Dikkatle okur ve nasıl davranacağını akıl yürüterek değerlendiririz, ancak çalıştırmayız; bu yüzden önerilen her düzeltmeyi kendi projenizde test edin.
Üretim sunucu ayarlarımı kontrol ediyor musunuz?
Gizli bilgilerin yer tutucularla değiştirildiği, yapıştırdığınız ayar dosyasını inceleriz. Sunucunuza giriş yapmayız.
Migration hatalarında yardım edebilir misiniz?
Evet. Migration dosyalarını ve hatanın tamamını yapıştırın, neyin çakıştığını ve güvenle nasıl çözüleceğini açıklayalım.
Yanıtınızı bulamadınız mı?