Changeset ea211b9 in Klonkt for src/services/guardianship/gated.js
- Timestamp:
- 08/08/2026 08:42:09 PM (4 weeks ago)
- Branches:
- main
- Children:
- 29eb745
- Parents:
- 3a0ca0f
- git-author:
- Robin <roboburr@…> (08/08/2026 08:41:47 PM)
- git-committer:
- roboburr <roboburr@…> (08/08/2026 08:42:09 PM)
- File:
-
- 1 edited
-
src/services/guardianship/gated.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/guardianship/gated.js
r3a0ca0f rea211b9 260 260 } 261 261 262 /** 263 * Zou het antwoord van deze guardian het besluit AFMAKEN (shaer-8vt)? 264 * 265 * De telling is een race naar de drempel: zodra het aantal gehaald is, is het 266 * gevallen. Bij 2 van 3 is de tweede ja dus meteen de beslissing, en bij een 267 * volgverzoek met twee guardians is de EERSTE ja dat al. Wie antwoordt weet dat 268 * niet, en het scherm zei het nergens. 269 * 270 * EEN JA/NEE, GEEN TELLING, en dat is een besluit. Een getal ("1 van 2") reist 271 * mee, veroudert onderweg en leest daarna als een feit; de beschikbare set 272 * schuift bovendien met 3.6 mee. En hoeveel guardians een kind heeft, en wie er 273 * al gestemd heeft, is niet vanzelf iets dat elke mede-guardian hoort te zien. 274 * Een waarschuwing veroudert ook, maar hij CLAIMT niets -- en dat scheelt. 275 * 276 * BIJ TWIJFEL WAARSCHUWEN. De twee fouten zijn niet gelijk: zeggen dat je 277 * beslist terwijl dat niet zo is maakt iemand voorzichtiger dan nodig; niets 278 * zeggen terwijl hij wel beslist laat hem het onwetend doen. 279 */ 280 export function isDecisive(votes, need) { 281 const v = Number.isFinite(votes) ? votes : 0; 282 const n = Number.isFinite(need) ? need : 1; 283 return (n - v) <= 1; 284 } 285 262 286 /** The open decision for a feature, for showing progress ("1 of 2"). */ 263 287 export function gatedProgress(slug, feature) { … … 313 337 if (!_rs) { 314 338 _rs = { 315 ins: db.prepare(`INSERT INTO ap_gated_reviews (id, guardian_slug, ward_uri, ward_inbox, proposer, feature, value )316 VALUES (?,?,?,?,?,?,? )317 ON CONFLICT(guardian_slug, id) DO UPDATE SET value = excluded.value, ward_inbox = excluded.ward_inbox `),339 ins: db.prepare(`INSERT INTO ap_gated_reviews (id, guardian_slug, ward_uri, ward_inbox, proposer, feature, value, decisive) 340 VALUES (?,?,?,?,?,?,?,?) 341 ON CONFLICT(guardian_slug, id) DO UPDATE SET value = excluded.value, ward_inbox = excluded.ward_inbox, decisive = excluded.decisive`), 318 342 get: db.prepare('SELECT * FROM ap_gated_reviews WHERE guardian_slug = ? AND id = ?'), 319 343 bySlug: db.prepare('SELECT * FROM ap_gated_reviews WHERE guardian_slug = ? ORDER BY created_at DESC'), … … 326 350 327 351 export function recordGatedReview(guardianSlug, r) { 328 rstmts().ins.run(r.id, guardianSlug, r.wardUri, r.wardInbox || null, r.proposer || null, r.feature, r.value ? 1 : 0); 352 // decisive ontbreekt bij een oudere server -> 1, want bij twijfel waarschuwen. 353 rstmts().ins.run(r.id, guardianSlug, r.wardUri, r.wardInbox || null, r.proposer || null, r.feature, r.value ? 1 : 0, r.decisive === false ? 0 : 1); 329 354 return rstmts().get.get(guardianSlug, r.id); 330 355 } … … 424 449 export default { 425 450 GATE_CATALOGUE, gateRows, knownSetting, 426 tallyGatedSetting, thresholdFor, featureColumn, recordGatedVote, gatedProgress, gateConsequence, GATED_WINDOW_MS,451 tallyGatedSetting, thresholdFor, featureColumn, recordGatedVote, gatedProgress, gateConsequence, isDecisive, GATED_WINDOW_MS, 427 452 parseGatedSetting, buildGatedOffer, rememberGatedOffer, recallGatedOffer, 428 453 recordGatedReview, getGatedReview, listGatedReviews, removeGatedReview, clearGatedReviews,
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)