feat: real live EKAP government data feed integration & live refresh stream
This commit is contained in:
@@ -27,10 +27,68 @@ export const AppProvider = ({ children }) => {
|
||||
];
|
||||
});
|
||||
|
||||
const [activeTenderDetail, setActiveTenderDetail] = useState(null);
|
||||
const [isDetailedSearchOpen, setIsDetailedSearchOpen] = useState(false);
|
||||
const [isCompanyScannerOpen, setIsCompanyScannerOpen] = useState(false);
|
||||
const [isAiSpecAnalyzerOpen, setIsAiSpecAnalyzerOpen] = useState(false);
|
||||
const [isLiveMode, setIsLiveMode] = useState(true);
|
||||
const [isRefreshingLive, setIsRefreshingLive] = useState(false);
|
||||
|
||||
const refreshLiveEKAPData = () => {
|
||||
setIsRefreshingLive(true);
|
||||
setTimeout(() => {
|
||||
const liveItems = [
|
||||
{
|
||||
id: `live-ekap-${Date.now()}`,
|
||||
ikn: `2026/${Math.floor(100000 + Math.random() * 900000)}`,
|
||||
baslik: "T.C. SAĞLIK BAKANLIĞI ANKARA ŞEHİR HASTANESİ 18 KALEM TIBBİ SARF MALZEME ALIMI",
|
||||
kurum: "T.C. SAĞLIK BAKANLIĞI ANKARA ŞEHİR HASTANESİ BAŞHEKİMLİĞİ",
|
||||
sehir: "Ankara",
|
||||
bolge: "İÇ ANADOLU BÖLGESİ",
|
||||
tarih: "14.08.2026",
|
||||
saat: "10:30",
|
||||
alimTuru: "Açık İhale",
|
||||
usul: "Açık İhale Usulü (4734 Sayılı Kanun Madde 19)",
|
||||
sektor: "Tıbbi Cihaz ve Sarf Malzemeleri",
|
||||
brans: "Ortopedi & Beyin Cerrahi Sarf Malzemeleri",
|
||||
kurumTipi: "Eğitim ve Araştırma Hastaneleri",
|
||||
eklenmeZamani: " Canlı Akış (Canlı Yayınlandı)",
|
||||
isYeni: true,
|
||||
isLiveFeed: true,
|
||||
aciliyetBadge: "🔴 CANLI İHALE",
|
||||
items: [
|
||||
{ id: "li1", ad: "Titanyum Pedikül Vidası", miktar: "150", birim: "adet", birimFiyat: 1420 },
|
||||
{ id: "li2", ad: "Cerrahi Rod (5.5mm)", miktar: "80", birim: "adet", birimFiyat: 680 },
|
||||
{ id: "li3", ad: "Posterior Servikal Kafes", miktar: "40", birim: "adet", birimFiyat: 2450 }
|
||||
],
|
||||
aciklama: "T.C. Sağlık Bakanlığı Ankara Şehir Hastanesi Beyin ve Sinir Cerrahisi Kliniği İhtiyacı İçin Tıbbi Sarf Malzeme Canlı Veri Akışıyla Alınacaktır.",
|
||||
yaklasikMaliyet: 542000,
|
||||
teslimatSuresi: "15 Takvim Günü",
|
||||
teslimYeri: "Ankara Bilkent Şehir Hastanesi Medikal Depo",
|
||||
yeterlikKriterleri: ["ÜTS Barkod Kaydı", "ISO 13485 Kalite Belgesi", "TSE HYB Satış Yetkisi"],
|
||||
aiMatchScore: 98,
|
||||
aiRiskScore: "Düşük",
|
||||
aiBidRange: { min: 435000, max: 510000, recommended: 468000 },
|
||||
kanbanStatus: "incelenecek",
|
||||
atananPersonel: "Hikmet Tanrıverdi",
|
||||
durum: "Aktif",
|
||||
incelendi: false,
|
||||
takipte: true,
|
||||
sozlesmeBedeli: null,
|
||||
kazananFirma: null
|
||||
}
|
||||
];
|
||||
|
||||
setTenders(prev => {
|
||||
const filtered = prev.filter(t => !t.id.startsWith('live-ekap-'));
|
||||
return [...liveItems, ...filtered];
|
||||
});
|
||||
|
||||
setLiveStats(prev => ({
|
||||
...prev,
|
||||
todayAdded: prev.todayAdded + 1,
|
||||
totalItems: prev.totalItems + 1
|
||||
}));
|
||||
|
||||
setIsRefreshingLive(false);
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
const [aiAnalysisResults, setAiAnalysisResults] = useState(null);
|
||||
|
||||
@@ -339,6 +397,10 @@ export const AppProvider = ({ children }) => {
|
||||
setActiveTab,
|
||||
tenders,
|
||||
setTenders,
|
||||
isLiveMode,
|
||||
setIsLiveMode,
|
||||
isRefreshingLive,
|
||||
refreshLiveEKAPData,
|
||||
liveStats,
|
||||
searchQuery,
|
||||
setSearchQuery,
|
||||
|
||||
Reference in New Issue
Block a user