@mostajs/beneficiaries
v0.2.0
Published
Cœur métier MINCE de dossier social (veuve/orphelin/famille) : formulaire revenus/foyer + enquête sociale + étude/validation + classement. DB-agnostique ; COMPOSE ged, aid-grants, statemachine, rules, booking, numbering, audit. Générique NGO (P3 Salsabil)
Downloads
121
Maintainers
Readme
@mostajs/beneficiaries
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later
Cœur métier mince : dossier social d'un bénéficiaire (veuve / orphelin / famille) — formulaire revenus/foyer, enquête sociale, étude/validation, classement. DB-agnostique. Compose (jamais ne réimplémente) : @mostajs/ged (pièces), @mostajs/aid-grants (aides), @mostajs/statemachine+@mostajs/rules (circuit/éligibilité), @mostajs/booking-stack (enquête/RDV), @mostajs/numbering, @mostajs/audit.
Avec @mostajs/aid-grants et @mostajs/donors, forme le triptyque NGO (bénéficiaires ↔ aides ↔ donateurs).
Données sociales sensibles (revenus, situation familiale) : §11.3 (informatif) — base légale, minimisation, résidence
.env.
Install
npm i @mostajs/beneficiariesExemple minimal
import { createBeneficiaries, createMemoryRepositories } from '@mostajs/beneficiaries';
const b = createBeneficiaries({ repositories: createMemoryRepositories() /*, ged, aidGrants, booking */ });
const r = await b.register({ kind: 'widow', identity: { name: 'Khadija B.' }, childrenCount: 3 });
await b.household.set(r.id, { incomeOther: 9000 }); // incomeTotal recalculé
await b.pieces.add(r.id, { gedDocId: 'ged-deces', label: 'Acte de décès' });
await b.advance(r.id); // checking
await b.recordSurvey(r.id, { surveyorUserId: 'agent1', findings: '…' });
await b.validate(r.id);
await b.classify(r.id, { category: 'prioritaire', priority: 1 });API (0.1.0)
createBeneficiaries({ repositories, ged?, aidGrants?, statemachine?, rules?, booking?, numbering?, audit?, now? })register({kind,identity{name,…},childrenCount?,housing?,observations?})·get·list(filter)·listByStatus(s)·listByCategory(c)household.set(id,{incomePersonal?,incomeSpouse?,incomeOther?,members?})(→incomeTotal)pieces.add(id,{gedDocId,label?})·pieces.list(id)advance(id)·requestComplement(id,{note})·recordSurvey(id,{surveyorUserId,findings,recommendation,bookingRef?})·validate(id)·reject(id,{reason})·classify(id,{category,priority?})dashboard()·reportingSource()(→@mostajs/reporting)cycle(received→checking→surveying→validated) ·kinds·createMemoryRepositories()·BeneficiarySchema/HouseholdSchema/SocialSurveySchema
Tests & exemple
npm test (@mostajs/mjs-unit, 7 tests) · npm run example (dossier social, assertions).
