hikmettan and Claude 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
hikmettan and Claude Fable 5.1
df89eaac33
feat: takip izleme (zeyilname + sonuc bildirimi), hazirlik gorevi, belge sure uyarisi, Telegram, OCR, yasakli sorgu
...
28 depo taramasindan alinan alti ozellik. Kod kopyalanmadi (depolar
lisanssiz), fikirler uygulandi.
1) Zeyilname / duzeltme ilani takibi (server/zeyilname.mjs): takipteki
IKN'ler sunucuya yazilir; 3 saatte bir EKAP detayindan ilan sayisi ve
ihale tarihi karsilastirilir, degisince "ne degisti" bildirimi (uygulama
ici + e-posta + Telegram). Test: anlik kaydi eskitilince tur "yeni ilan
yayimlandi; ihale tarihi 01.01.2026 → 08.10.2026" bildirimi uretti.
2) Sonuc bildirimi: takipteki ihale sonuclaninca "X firmasi Y'ye aldi, %Z
kirim". Yalniz takiptekiler; kismi ihalede oran yazilmaz.
3) Ihaleden goreve (MOBIT-DURT): detayda "Hazirlik Gorevi Ac" → teslim
tarihi ihale saati, pano "Teklif Hazirlaniyor", derin analizden gelen
belge kontrol listesi gorevde; Kanban kartinda geri sayim rozeti.
4) Sirket belgesi sure takibi: Belge Kasasi'nda son kullanma tarihi girisi,
dolmus / 30 gun icinde dolacak uyarisi; girise gunde bir bildirim.
PATCH /api/me/documents/meta.
5) Telegram (server/telegram.mjs): TELEGRAM_BOT_TOKEN sunucuda; kullanici
6 haneli kodu bota yazar, "Dogrula" → getUpdates ile chat id baglanir.
Arayuzde adim adim kurulum rehberi (BotFather → env → Redeploy → kod).
Ihale ozeti, zeyilname ve sonuc bildirimleri Telegram'a da gider.
6) OCR (tesseract.js, tur): PDF metin katmani bossa (taranmis) ilk 8 sayfa
OCR. Olcum: sentetik cetvelde guven 87, ~0,3 sn/sayfa; IKN ve kalemler
dogru okundu. Kalem havuzu ve derin analiz artik taranmis PDF'ten de
besleniyor.
7) Rakip Radari'nda KIK yasakli sorgusu baglantisi (firma adi panoya
kopyalanir; EKAP sorguyu API'den vermiyor).
Sinir deger hesaplayici KURULMADI: Kamu Ihale Genel Tebligi'ne ulasilamadi
(mevzuat.gov.tr / ihale.gov.tr bu makineden erisilemiyor); formul kaynaksiz
yazilmadi.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-03 22:58:13 +03:00
hikmettan and Claude Fable 5.1
17c781a9ba
feat: gercek sirket-ihale uyum skoru — sahte %98 rozeti gitti
...
Karttaki "%N Uyumlu" rozeti sabit yazili degerlerdi (liveTenderService
98/95/91/99), sunucudan null geliyordu. Artik profil terimleri ile ihale
metni arasinda agirlikli sozcuk eslesmesi (src/services/uyum.js):
- terimler: urunler (1.0), ihale konulari (1.0), sektorler (0.6),
sertifikalar (0.3); "ve/alimi/malzeme" gibi durma kelimeleri sayilmaz
- alanlar: baslik (1.0), teklif cetveli kalemleri (1.1 — en guclu sinyal),
OKAS/CPV (0.7), ilan metni (0.6), sektor (0.5)
- doygunluk egrisi: 1 guclu eslesme ≈ 55, 2 ≈ 75, 3+ ≈ 90
- profilde terim yoksa skor null → sahte yuzde gosterilmez
- her skorun nedeni var: kartta ipucu, detayda "‘eldiven’ · teklif cetveli"
Olculen: "VETERINER ILAC VE SARF MALZEME" basligi hicbir urunu icermiyor ama
kalemlerinde ELDIVEN + HEMOGRAM KITI var → %86; kirtasiye → 0.
- Siralama: "Sirketime En Uyumlu"; hizli filtre 'uyumlu' (≥60)
- Profil yetkinlikleri artik kalici (localStorage + sunucu 'firma_profil');
onceden sayfa yenilenince siliniyordu
- Web sitesi taramasi gercek uca bagli (/api/company/scan: site metni +
model → sektorler/urunler/sertifikalar/ihaleKonulari); basarisizsa eski
alan-adi tahmini yedek. Onceden 1,5 sn setTimeout ile taklitti.
Sozluksel yol bilincli: dis servis yok, 8 bin ihalede aninda, deterministik,
aciklanabilir. Embedding katmani istenirse ustune eklenebilir.
(Fikir: kaanvp/kobi-ihale-eslestirme'nin esik + aciklama deseni; kod alinmadi.)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-03 21:51:28 +03:00
hikmettan and Claude Opus 5
8826ff8e68
feat: ortak kalem havuzu — teklif cetveli kalemleri kartta gorunur ve aranabilir
...
Firmalar ihalenin sadece basligina bakarak kendi urunlerinin icinde olup
olmadigini goremiyordu ("148 KALEM KIRTASIYE MALZEME ALIMI"). Artik bir
kullanici ihale dokumanini yukledinde teklif cetveli kalemleri ayristirilip
IKN'ye baglaniyor ve o ihale HERKESIN kartinda kalemleriyle gorunuyor.
NEDEN YUKLEMEYE DAYALI: kalem listesi EKAP'in programatik yuzeyinde yok.
- Arama/detay API'si (ihtiyacKalemiOkasList) yalnizca OKAS sinifi veriyor:
"KALP AKCIGER POMPASI CIHAZI ALIMI" icin tek satir "Tibbi cihazlar"
- Ilan metni yalnizca sayiyi veriyor: "148 KALEM ... Ayrintili bilgiye EKAP'ta
yer alan ihale dokumani icinde bulunan idari sartnameden ulasilabilir"
- Dokuman sayfasi CAPTCHA ile korunuyor (ctl00_btnCaptchaProtect, guvenlik
resmi). Gercek tarayiciyla (Playwright) da acildi, donen tek metin: "Dogrula"
OTOMATIK, AI'SIZ: kalem cikarimi yukleme aninda kendiliginden calisir,
kullanicidan tiklama beklemez ve model cagirmaz (saf regex). AI analizi ayri
dugmede, kullanici isterse.
- server/kalem-cikar.mjs: teklif cetveli ayristirici. " | " tablolarindan
(docx/xlsx/zip) sutun basligini cozerek; ayracsiz PDF metninde sezgisel
satir kalibiyla. Miktar+birim tek hucrede olabiliyor ("25000 TEST").
Birim listesinde 'test' var — tibbi kitlerde kalem miktari boyle yaziliyor.
- server/kalem-store.mjs: kalem.sqlite, IKN bazli, Turkce duyarli arama.
Bos ayristirma mevcut iyi veriyi silmez.
- Uclar: POST /api/kalem/cikar (tarayicidan gelen PDF metni), GET /api/kalem,
GET /api/kalem/ara, GET /api/health/kalem
- /api/tenders payloadu kalemSayisi + ilk kalemleri tasiyor
- Kartta kalem rozeti ve kalem seridi; aramada eslesen kalemler one alinir
- Ust arama kutusu kalem havuzunda da ariyor (350ms debounce, sunucu tarafi)
- Detay modalinda tam kalem listesi + kalem ici arama
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-03 11:51:39 +03:00
hikmettan
1838de95f5
feat: ihale dokümanları + OKAS kalem verisi + doğrudan temin (Playwright) + kalıcı arşiv
...
1) İhale evrakları (yeni)
- server/documents.mjs: EKAP doküman URL üretimi (imzalı), ilan metni +
OKAS kalem çıkarımı, Playwright ile doküman metni (varsa)
- /api/documents/url · /ilan · /text · /config uçları
- TenderDocuments paneli: 'EKAP Dokümanlarını Aç' + 'İlan Metnini AI ile
Analiz Et' (11K+ karakter gerçek ilan metni doğrudan AI'ya gider)
- NOT: eski EKAP host'u bot isteklerine bağlantı kesiyor; bağlantı
kullanıcının tarayıcısında açılır, sunucu tarafı metin için Chromium gerekir
2) Kalem verisi gerçek oldu
- ekap-scan: her ihale için IhaleDetay'dan OKAS ihtiyaç kalemleri çekilir
- history-store: okas_kalemler kolonu + otomatik şema geçişi
- --kalem-doldur modu: mevcut kayıtlara IKN'den çözerek kalem ekler
- scheduler: tarama sonrası kalem doldurmayı zincirler
- PriceAnalysis: yöntem şeffaflığı notu (birim fiyatlar kamuya açık değil;
kategori bazlı yaklaşık değer olduğu açıkça yazıyor)
3) Doğrudan temin (Playwright)
- Dockerfile: node:22-slim + nginx + Playwright/Chromium
- scheduler: DT worker periyodik (DT_INTERVAL_SAAT, varsayılan 4 saat)
- Bellek koruması: boş bellek DT_MIN_BOS_MB altındaysa tarama atlanır ve
uyarı loglanır; DT_ENABLED=0 ile tamamen kapatılabilir
4) Kalıcı arşiv
- Coolify'da /app/server/data volume bağlandı; arşiv artık deploy'lar
arası korunuyor
Ayrıca: TenderDetailModal'daki sabit '3-5 Firma' tahmini kaldırıldı, yerine
gerçek geçerli teklif sayısı gösteriliyor.
2026-08-28 22:31:40 +03:00
hikmettan
7a396ddeb6
fix: sabit 'Gemini 3.6' etiketleri kaldırıldı — AI zinciri admin panelden seçiliyor
2026-08-28 10:50:54 +03:00
hikmettan
0ab74143c0
feat: demo özelliklerini gerçekleştir — canlı veri + localStorage
...
- analytics.js: firmStats/itemStats/provinceDensity (gerçek hesaplama)
- Rakip Radar: canlı veriden kazanan firma analizi (mock 3 firma kaldırıldı)
- Fiyat Analizi: gerçek kalem min/medyan/ort/maks + CSV export
- TurkeyHeatMap: 81 il gerçek interaktif yoğunluk haritası (tıkla→filtrele)
- Favori kurumlar: kart yıldızı + hızlı filtre (localStorage)
- Ekip yönetimi: gerçek CRUD (RightSidebar) + Kanban ataması ekipten
- Bildirimler: gerçek Notification API + izin + test + sessiz saatler
- PDF: jsPDF ile gerçek birim fiyat teklif cetveli (kaşe/imza alanı)
2026-08-28 01:58:46 +03:00
hikmettan
89cfd03d92
feat: canlı veri — ilan.gov.tr açık ihale + EKAP doğrudan temin (22/d)
...
- server/index.js: ilan.gov.tr proxy (açık ihale + kira/satış), TLS zincir düzeltmesi
- server/dt-worker.mjs: EKAP doğrudan temin toplayıcı (Playwright, imzasız oturum içi fetch)
- server/dt-store.mjs + il-plaka.mjs: DT verisini tender modeline çevirme
- src/services/tenderApi.js + AppContext: mock veri yerine canlı API
- Doğrudan Temin sekmesi 256 gerçek 22/d kaydıyla dolu
2026-08-26 20:45:02 +03:00
hikmet4434
ece74feefe
feat: İhaleist - Akıllı İhale Takip ve Analiz Platformu (Full PRD + 7 Enterprise Modül)
2026-08-07 16:30:24 +03:00