Aller au contenu
Krizaka TS
Krizaka TS

@krizaka/brief

Le bilan de la semaine : quelques recommandations chiffrées, chacune avec une action.

Installer

bashTerminal
npm install @krizaka/brief

Le README ci-dessous est celui du paquet sur npm, en anglais.

A Krizaka product's weekly brief: a few figured recommendations, each with one action — « You have 5 free slots Thursday and Friday (450 $). 14 regulars have not booked for 6 weeks. [Invite them] ».

The product owns its data and its detectors; this block owns the contract, the guards, the ranking and the week.

import { composeBrief, isBriefDue, recommendation, weekOf } from "@krizaka/brief";

const { week } = weekOf(now, shop.timeZone);
const brief = composeBrief({
  week,
  ctx: snapshot,
  detectors: [gaps, pricing, taxProvision], // (ctx) => Recommendation[], pure
  guards: [{ name: "consent", check: (item, ctx) => (hasConsent(item, ctx) ? null : "NO_MARKETING_CONSENT") }],
}); // { items: top 3, vetoed: [{ item, guard, reason }], dropped }
  • Money is integer cents; figures are named integers; the words are the product's messages (keyed by kind).
  • id = <week>:<kind>:<subject>: the same data gives the same id, so an action is idempotent on it.
  • Ranking: urgency (now, week, info), then impact, then id — total and stable.
  • A guard (the falcon) vetoes with a reason; vetoed items are kept for the audit, never shown.
  • weekOf(instant, timeZone) and isBriefDue(instant, timeZone, lastSentWeek, { weekday: 1, hour: 7 }): an hourly scheduler asks; a missed Monday still sends later in the week.
  • No framework, no database, no environment, no wall clock.

Apache-2.0 · Krizaka TS

Exports

Les 18 noms que le paquet exporte, lus dans ses types.

NomNatureCe que c’est
Brieftype
BriefActiontypeWhat the button does: the product executes it (its kind and its payload are its own).
BriefErrorclasse
BriefWeektypeThe brief's week, in the shop's time zone.
byPriorityfonctionUrgency, then impact (larger first), then id: a total order, so the same data always gives the same brief.
composeBrieffonctionRuns the detectors, lets the guards veto, ranks, and keeps the top limit (3 by default).
ComposeInputtype
DetectortypeReads the product's data and returns what it found — pure, deterministic.
DueRuletype
GuardtypeThe falcon: refuses a recommendation (consent missing, a rule) by returning its reason, or lets it pass (null).
isBriefDuefonctionWhether the brief is due now: on or after the rule's weekday and hour of this week, and not yet sent this week.
recommendationfonctionBuilds a recommendation, checks its money and figures are integers, and gives it its stable id.
Recommendationtype
RecommendationInputtype
Urgencytype
URGENCYconstanteHow soon the owner should act; the ranking reads this before the impact.
Vetoedtype
weekOffonctionThe week an instant falls in, for a shop in timeZone (America/Montreal…).

Paquet

Version sur npm0.1.0 (npm)
LicenceApache-2.0
Node.js>=22
Dépendancesdate-fns ^4.4.0
Code sourcebrief

Journal des versions

0.1.0

Minor changes

  • New block: the weekly brief — recommendation contract (integer money, figures, evidence, assumptions), guards that veto with a reason, a deterministic top-three ranking, and the week in the shop's time zone (weekOf, isBriefDue). Refs #23.

Sur cette page