Files
sase.tr/apps/api/drizzle/meta/_journal.json
Semih Yesilyurt 532e1ad9ef feat(part-prices): parça kodu bazlı tedarikçi fiyat geçmişi + OEM sayfasında p50/p95/p99 grafiği
- pg: part_price_tracks + part_price_daily (0018) — (kod, kaynak, gün) başına
  stoktaki tekliflerin p50/p95/p99 + teklif sayısı; source='supplier' şimdilik,
  perakende ileride aynı tabloya 'retail' olarak girer. Tedarikçi kimliği yok.
- API: GET /part-prices/series (ilk istekte takip history'sinden lazy-backfill,
  sonrası salt-pg + Redis) ve POST /part-prices/current-batch (sayfadaki kodlar
  için canlı güncel istatistik). P-servisi sözleşmesi: asla throw yok, fail-open.
- Worker: part-price-refresh cron'u 19:30 Europe/Istanbul (takip sync'i 19:05'te
  bitiyor) — izlenen kodlara bugünün satırını upsert eder, sku_map'i artımlı
  bakar, Redis cache düşürür. SUPPLIER_PRICE_DB_* yoksa sessiz no-op.
- Kaynak köprüsü: takip.sku_map (code_norm → product_id; tam sku / ilk-boşluk /
  ilk-tire sonrası normalize adayları) vmi MySQL'inde kurulu; 6,8M satır.
- Web: OEM detayında "Tedarikçi fiyat analizi" kartı (güncel medyan + P95/P99 +
  teklif sayısı + 30g delta, 30G/90G/Tümü aralıklı step grafik, recharts) ve
  article/muadil/OE satırlarında fiyat çipi → dialog'da tam geçmiş.
- Fix(p): td snapshot'ında gerçek üretici kodu articles.name'de (article_number
  %96 upstream sayısal ID) — sayfa artık kopyalanabilir gerçek kodu gösteriyor.
- compose: SUPPLIER_PRICE_DB_ENABLED/URL api+worker bloklarına eklendi.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 13:33:37 +03:00

139 lines
2.7 KiB
JSON

{
"version": "7",
"dialect": "postgresql",
"entries": [
{
"idx": 0,
"version": "7",
"when": 1778535325959,
"tag": "0000_brief_guardian",
"breakpoints": true
},
{
"idx": 1,
"version": "7",
"when": 1747039600000,
"tag": "0001_charming_quicksand",
"breakpoints": true
},
{
"idx": 2,
"version": "7",
"when": 1778584574615,
"tag": "0002_boring_the_stranger",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1778587000000,
"tag": "0003_query_log_insights",
"breakpoints": true
},
{
"idx": 4,
"version": "7",
"when": 1778709949622,
"tag": "0004_hot_quicksilver",
"breakpoints": true
},
{
"idx": 5,
"version": "7",
"when": 1779054231051,
"tag": "0005_past_elektra",
"breakpoints": true
},
{
"idx": 6,
"version": "7",
"when": 1779086009525,
"tag": "0006_chilly_dark_phoenix",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1779573406942,
"tag": "0007_natural_red_wolf",
"breakpoints": true
},
{
"idx": 8,
"version": "7",
"when": 1779633572753,
"tag": "0008_common_sumo",
"breakpoints": true
},
{
"idx": 9,
"version": "7",
"when": 1779703007129,
"tag": "0009_referral_rewards_rework",
"breakpoints": true
},
{
"idx": 10,
"version": "7",
"when": 1780281600000,
"tag": "0010_dedupe_parts",
"breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1780572179333,
"tag": "0011_email_preferences",
"breakpoints": true
},
{
"idx": 12,
"version": "7",
"when": 1780581755559,
"tag": "0012_lifecycle_email_sent",
"breakpoints": true
},
{
"idx": 13,
"version": "7",
"when": 1780600000000,
"tag": "0013_fix_brand_casing",
"breakpoints": true
},
{
"idx": 14,
"version": "7",
"when": 1781136000000,
"tag": "0014_proxy_logs",
"breakpoints": true
},
{
"idx": 15,
"version": "7",
"when": 1781222400000,
"tag": "0015_oem_votes",
"breakpoints": true
},
{
"idx": 16,
"version": "7",
"when": 1781308800000,
"tag": "0016_oem_suggestions",
"breakpoints": true
},
{
"idx": 17,
"version": "7",
"when": 1781395200000,
"tag": "0017_oem_expert_rewards",
"breakpoints": true
},
{
"idx": 18,
"version": "7",
"when": 1781481600000,
"tag": "0018_part_price_history",
"breakpoints": true
}
]
}