fix: persist explicit review status and align review counters
This commit is contained in:
@@ -97,7 +97,11 @@ export const TenderDetailModal = () => {
|
||||
</button>
|
||||
|
||||
<div className="flex items-center gap-4 text-xs">
|
||||
<span className="text-slate-400">İnceleyen: <strong className="text-white">{userProfile.name}</strong></span>
|
||||
<button type="button" disabled={savingCount > 0} aria-pressed={Boolean(tender.incelendi)}
|
||||
onClick={() => mutateTender(tender.id,{incelendi:!tender.incelendi})}
|
||||
className="text-xs px-3 py-1.5 rounded-lg border border-slate-500 disabled:opacity-50">
|
||||
{tender.incelendi ? 'İncelendi — yeniden aç' : 'İncelendi olarak işaretle'}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => toggleTrackTender(tender.id)}
|
||||
className={`flex items-center gap-1.5 font-bold px-3 py-1.5 rounded-lg text-xs transition-colors ${
|
||||
|
||||
@@ -194,7 +194,7 @@ export const AppProvider = ({ children }) => {
|
||||
const t = tenders.find(t => t.id === tenderId);
|
||||
if (!t || !veriSenkron || !authUser) { setSaveError('Hesap verileri yüklenmeden kayıt yapılamaz.'); return false; }
|
||||
const key = tenderStateKey(t);
|
||||
if (inFlight.current.has(key)) return false;
|
||||
if (inFlight.current.has(key)) { setSaveError('Bu ihale için önceki kayıt sürüyor. Tamamlandıktan sonra tekrar deneyin.'); return false; }
|
||||
const owner = authUser.email;
|
||||
const session = getToken();
|
||||
inFlight.current.add(key); setSavingCount(n => n + 1); setSaveError(null);
|
||||
|
||||
@@ -169,7 +169,7 @@ export function companyStats(tenders) {
|
||||
winRate: resulted ? Math.round((won.length / resulted) * 100) : 0,
|
||||
wonTotal,
|
||||
tracked: tenders.filter((t) => t.takipte).length,
|
||||
reviewed: tenders.filter((t) => t.incelendi || (t.kanbanStatus && t.kanbanStatus !== 'incelenecek')).length,
|
||||
reviewed: tenders.filter((t) => Boolean(t.incelendi)).length,
|
||||
contracts: won.length,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ export function applyTenderStates(tenders, records = {}) {
|
||||
return record ? { ...t, ...record.data } : t;
|
||||
});
|
||||
for (const [key, record] of Object.entries(records)) {
|
||||
if (!seen.has(key) && record.snapshot && (record.data.takipte || record.data.gorev))
|
||||
if (!seen.has(key) && record.snapshot && (record.data.takipte || record.data.gorev || record.data.incelendi || record.data.bidDraft || record.data.notes?.length))
|
||||
result.push({ ...record.snapshot, ...record.data });
|
||||
}
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user