fix: align server deadlines and follow consumers with preparation state

This commit is contained in:
2026-09-06 09:09:10 +03:00
parent 7ad5fb4f50
commit 144724484c
8 changed files with 124 additions and 33 deletions
+10
View File
@@ -294,6 +294,16 @@ export function getTenderStates(email) {
return withDb(db => Object.fromEntries(db.prepare('SELECT * FROM tender_state WHERE email=?').all(email)
.map(r => [r.tender_key, { data: JSON.parse(r.data), snapshot: JSON.parse(r.snapshot), version: r.version }])));
}
// Current per-tender state overrides legacy mirrored follow lists, including unfollow.
export function getTrackedTenderKeys(email, states = getTenderStates(email)) {
const legacy = getData(email, 'takip');
const keys = new Set((Array.isArray(legacy) ? legacy : []).map(String));
for (const [key, record] of Object.entries(states)) {
if (record.data.takipte === true) keys.add(key);
else if (record.data.takipte === false) keys.delete(key);
}
return [...keys];
}
export function saveTenderState(email, key, patch, snapshot, expectedVersion) {
const fields = new Set(['takipte','incelendi','kanbanStatus','atananPersonel','gorev','notes','checklist','bidDraft']);
if (!key || key.length > 100 || !patch || typeof patch !== 'object' || Array.isArray(patch)