Commit Graph
272 Commits
Author SHA1 Message Date
hikmettan 32ea749669 Persist document processing outcomes separately from upload success 2026-09-06 09:34:52 +03:00
hikmettan ece623d86c fix: separate private company documents from shared tender item imports 2026-09-06 09:30:37 +03:00
hikmettan 5e9f17969c fix: provide visible prepared Excel download link 2026-09-06 09:28:58 +03:00
hikmettan 90fc789a7a test: record integrated search and preparation browser evidence 2026-09-06 09:27:35 +03:00
hikmettan bc71984847 fix: enforce source-backed offer type in bid preparation 2026-09-06 09:25:51 +03:00
hikmettan a751147d45 fix: carry source-backed bid validity into preparation drafts 2026-09-06 09:24:38 +03:00
hikmettan e07be66e7f fix: expose tender detail loading errors and retry 2026-09-06 09:23:13 +03:00
hikmettan a34b758430 fix: normalize Turkish search and isolate query item matches 2026-09-06 09:22:05 +03:00
hikmettan efec6e434d fix: order new tenders by validated publication time 2026-09-06 09:20:45 +03:00
hikmettan f593d5e372 fix: export filtered tender list as real XLSX 2026-09-06 09:19:41 +03:00
hikmettan 9c7055a543 fix: align list expiry and date ordering with tender deadlines 2026-09-06 09:18:41 +03:00
hikmettan a87ee758bc fix: restrict PWA cache and report actual offline capabilities 2026-09-06 09:17:15 +03:00
hikmettan 37b10ce09a fix: clean failed document uploads and surface filesystem errors 2026-09-06 09:15:34 +03:00
hikmettan 43dc4feb31 fix: validate document uploads and allow clearing expiry dates 2026-09-06 09:14:43 +03:00
hikmettan 0d2cf584e7 fix: require explicit choice for conflicting bid item sources 2026-09-06 09:13:26 +03:00
hikmettan c3264149ea fix: support keyboard navigation in tender details 2026-09-06 09:12:07 +03:00
hikmettan 2aaf56ce8b fix: validate nested analysis fields before merging and preparation 2026-09-06 09:10:18 +03:00
hikmettan 144724484c fix: align server deadlines and follow consumers with preparation state 2026-09-06 09:09:10 +03:00
hikmettan 7ad5fb4f50 fix: preserve newer tender note drafts after delayed saves 2026-09-06 09:07:23 +03:00
hikmettan d4d9d17a9f feat: verify offline user data backup and recovery 2026-09-06 09:04:03 +03:00
hikmettan f88a0c7bfe fix: persist explicit review status and align review counters 2026-09-06 09:02:28 +03:00
hikmettan a9036cf909 feat: verify analysis citations against source text 2026-09-06 09:00:16 +03:00
hikmettan 0ae828163a feat: analyze complete long documents in bounded source parts 2026-09-06 08:58:54 +03:00
hikmettan 90d85060f2 fix: expose incomplete AI analysis and track source versions 2026-09-06 08:57:32 +03:00
hikmettan ca92bebb45 feat: export validated bid sheets as real Excel workbooks 2026-09-06 08:56:12 +03:00
hikmettan 2dfd32aa9c fix: invalidate pending bid output when preparation changes 2026-09-06 08:54:22 +03:00
hikmettan 953d3b5c1e feat: validate preparation against owned document files 2026-09-06 08:53:41 +03:00
hikmettan 0d332afdb1 feat: prepare bids by official lot selection 2026-09-06 08:52:07 +03:00
hikmettan 311344306b fix: preserve Turkish decimal prices and verify preparation persistence 2026-09-06 08:50:18 +03:00
hikmettan b94ab97241 fix: unify tender countdowns and add monthly calendar navigation 2026-09-06 08:47:44 +03:00
hikmettan a291b186df fix: isolate account state and ignore stale session responses 2026-09-06 08:46:05 +03:00
hikmettan 05c7e7ecdc fix: share persisted preparation checks across analysis screens 2026-09-06 08:44:10 +03:00
hikmettan e4b02f5dd3 feat: track document and health product preparation checks 2026-09-06 08:42:59 +03:00
hikmettan 465874ebbb fix: bind bid prices and review to source content 2026-09-06 08:41:14 +03:00
hikmettan 456728b4bd fix: preserve bid drafts and align tender source data 2026-09-06 08:40:10 +03:00
hikmettan c91631d99f fix: persist tender preparation and correct calendar export 2026-09-06 08:30:32 +03:00
hikmettanandClaude Fable 5.1 909ebae7c2 fix(pwa): önbellek v2 — yanlış MIME ile saklanan pdf worker temizlenir, bozuk JS yanıtları artık önbelleğe alınmaz
nginx düzeltmesi tek başına yetmezdi: servis çalışanı /assets/ dosyalarını
cache-first sakladığı için kullanıcıların tarayıcısındaki octet-stream'li
worker kopyası redeploy sonrasında da kullanılmaya devam ederdi. Sürüm
yükseltilince eski önbellek silinir; ayrıca .js/.mjs dosyaları yalnızca
JavaScript MIME tipiyle ve 200 ile geldiğinde saklanır.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 01:02:35 +03:00
hikmettanandClaude Fable 5.1 3a0403f07f fix: PDF okuma — nginx .mjs worker dosyasını octet-stream sunuyordu, tarayıcı worker'ı reddediyordu
pdfjs worker'ı Vite tarafından pdf.worker.min-<hash>.mjs olarak üretiliyor.
Debian nginx'in mime.types dosyasında mjs uzantısı olmadığından dosya
application/octet-stream ile geliyor; tarayıcılar modül worker'ını yalnızca
JavaScript MIME tipiyle yüklediği için her PDF yüklemesinde
"Setting up fake worker failed: Failed to fetch dynamically imported module"
hatası çıkıyor, belge analizi tamamlanamıyordu. mjs → application/javascript
eşlemesi eklendi (nginx -t ile doğrulandı).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 01:02:04 +03:00
hikmettanandClaude Fable 5.1 2271883be4 fix: EKAP dokümanları açılmıyor — yeni sekme tıklama anında açılıyor, boşluklu İKN'ler düzeltildi
İki ayrı neden vardı:

1) window.open sunucu yanıtından SONRA çağrılıyordu; Safari, PWA ve sıkı ayarlı
   Chrome bunu açılır-pencere sayıp sessizce engelliyordu — düğme "çalışmıyor"
   görünüyordu. Sekme artık tıklamanın hemen içinde boş açılır, adres gelince
   yönlendirilir. Engellenirse gerçek bir bağlantı (a href) gösterilir; bağlantı
   tıklaması hiçbir tarayıcıda engellenmez.

2) ilan.gov.tr bazı kayıtlarda İKN'yi başta/sonda boşluk ve kesme boşluğu (nbsp)
   ile veriyor (" 2026/1622878"). Bu 50 kayıtta panel "EKAP formatında değil"
   deyip düğmeyi hiç göstermiyordu. İKN artık alınırken boşluksuz saklanıyor;
   panel ve doküman araması da savunma amaçlı temizliyor.

Ayrıca: "EKAP'ta 0 doküman kayıtlı" yanıltıcı metni kaldırıldı (EKAP arama
kaydı sayıyı vermiyor), EKAP'ın önce güvenlik doğrulaması istediği açıklandı.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 23:53:43 +03:00
hikmettanandClaude Fable 5.1 8e9dff6833 TED çevirisi: parçalar 3'lü eşzamanlı — 30 ilanlık liste daha hızlı tamamlanır
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 17:08:46 +03:00
hikmettanandClaude Fable 5.1 c32446db81 AB İhaleleri (TED): başlık ve açıklamalar Türkçe
- server/ted-ceviri.mjs: TED'in kendi Türkçe alanı varsa onu kullanır; yoksa
  OpenRouter ile toplu çevirir (deepseek-v4-flash → gemini 3.7 flash → glm),
  sonucu server/data/ted.sqlite'ta ilan numarasına göre saklar
- İstek en fazla 12 sn bekler, kalan çeviriler arka planda sürer;
  yanıt ceviriBekleniyor bayrağı taşır, ön yüz sessizce yeniden çeker
- Kartta Türkçe başlık + küçük özgün başlık, Türkçe açıklama (3 satır),
  ülke kodları Türkçe ad (TUR → Türkiye, AUT → Avusturya…)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 15:58:28 +03:00
hikmettanandClaude Fable 5.1 eeb1447edc Kalan kişisel varsayılanlar: firma sitesi tarama URL'si ve sonuç kartı kazanan yedeği
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 15:36:37 +03:00
hikmettanandClaude Fable 5.1 782b361d24 feat: Gemini Flash ücretli yedek — analiz zincirinin sonunda her zaman denenir
Panelde seçilen modeller tıkanınca (limit/429) şartname analizi ve teklif asistanı
boş kalıyordu; analyzeSpec zincire yoksa 'gemini'yi sona ekler. Panel ve kılavuz notu.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 13:45:04 +03:00
hikmettanandClaude Fable 5.1 08c0a0af7e Kullanıcı testi hataları: sabit tarihler, kişisel varsayılanlar, kılavuz düğmesi, mobil başlık, AI taslak çökmesi
- Günlük Bülten ve İhale Takvimi sabit "10.08.2026" yerine bugünden hesaplar;
  takvim 7 günü gerçek ihale tarihleriyle sayar
- Ekip/üye/firma varsayılanları oturumdaki kullanıcıdan; sahte "Ekip Notları"
  ve sabit "%94 Uyum" rozeti kaldırıldı (gerçek uyum skoru varsa gösterilir)
- Kılavuz düğmesi document.body'ye portal (ekran dışına düşüyordu)
- Detay modalı havuzdaki güncel kaydı okur: Takip Et / Görev aç etiketleri güncellenir
- Mobil: başlıkta ikincil düğmeler md altında gizli, arama formu küçülebilir
- PWA sayfası: sahte önbellek sayıları yerine Cache API ve bellek sayımı
- Sözleşme sorgula pazar payı bir ondalık (hep %0 görünüyordu)
- Rakip Radar "SMS" vaadi düzeltildi; sektör=CPV etiketi tekrarı gizlendi;
  Stripe kurulum uyarısı yalnız yöneticiye
- Açılışta 7 gereksiz PUT /api/me/data: ilk yükleme yazımı atlanır
- server: teklif taslağı çökmesi (kalemOku nesne döndürür), denetim yanıtından
  model adı kaldırıldı, gereklilikler satır bazlı; derin analiz 12k token +
  kesik JSON onarımı

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 09:43:41 +03:00
hikmettanandClaude Fable 5.1 6d7d938711 Sekme şeridi: 19 sekmeye kendi rengi (ikon tonu + aktif dolgu) — menü daha belirgin
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 08:32:03 +03:00
hikmettanandClaude Fable 5.1 6f33adc1b6 feat: landing sayfasına taşınan yeni özellikler (Teklif Asistanı, yeterlilik, MCP+RSS, haftalık brief, yeni bayrak kuralları)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 11:04:19 +03:00
hikmettanandClaude Fable 5.1 25dde198d7 Landing: 'Yeni eklenenler' bölümü (11 yetenek) + derin analiz kartı + Yenilikler nav bağlantısı
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 10:03:17 +03:00
hikmettanandClaude Fable 5.1 48f0c48732 feat: İhaleAB'den taşınan özellikler — MCP sunucusu, RSS, haftalık brief, teklif asistanı, yeterlilik rozeti, 5 yeni kırmızı bayrak
- /mcp (JSON-RPC, ih_live_ anahtarı): search_tenders, get_tender, search_results, search_items, upcoming_deadlines
- /api/feeds/tenders.rss (anahtarlı) ve /api/feeds/sonuc.rss (açık)
- Haftalık brief (Pazartesi 08:00, Telegram + e-posta), /api/me/brief tercihi + önizleme, sağ panelde yaklaşan ihale tarihleri
- Detayda Teklif Asistanı sekmesi: belgeye sor (atıflı), taslak denetimi, taslak üretimi (analyzeSpec zinciri)
- Derin analiz belge listesi × Doküman Deposu eşleştirme rozeti
- Kırmızı bayrak: kısa süre, hafta sonu tarih, geç sözleşme, kazananı gizli, DT parçalama şüphesi
- Kullanım kılavuzu güncellendi

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 02:23:41 +03:00
hikmettanandClaude Fable 5.1 fabff18fe9 feat: mobil uyumlu PWA — manifest, service worker, gercek kurulum, filtre cekmecesi
- public/manifest.webmanifest (standalone, tr, kisayollar) + 192/512 ve
  maskable ikonlar + apple-touch-icon; index.html PWA meta etiketleri
- public/sw.js: /assets cache-first (hash'li adlar), kabuk network-first,
  /api ASLA onbellekten (eski ihale gosterilmesin); surum degisince temizlik
- main.jsx: SW yalniz uretimde kaydedilir (dev'de HMR ile cakismasin)
- Mobil PWA sayfasindaki "Cihaza Yukle" dugmesi sahteydi (setInstalled(true));
  artik beforeinstallprompt ile gercek kurulum, standalone algilama, iOS/
  Android/masaustu yol tarifi
- Kucuk ekranda sol filtre paneli listeyi 72 satir asagi itiyordu: lg altinda
  "Filtreler" dugmesiyle acilan cekmece; sag panel xl altinda gizli

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 00:39:40 +03:00
hikmettanandClaude Fable 5.1 acec88a4c4 feat: her sayfada sagdan acilan kullanim kilavuzu (? dugmesi / ? tusu), sekmeye gore icerik
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 00:36:55 +03:00