feat(stock): ajustement libre (Ajuster) avec PIN obligatoire #124

Merged
Corentin merged 1 commit from feat/stock-adjust into dev 2026-07-02 14:15:46 +02:00
Owner
No description provided.
feat(stock): ajustement libre du stock (Ajuster), PIN equipier obligatoire
All checks were successful
CI / secret-scan (push) Successful in 23s
CI / php-lint (push) Successful in 42s
CI / static-tests (push) Successful in 1m48s
CI / js-tests (push) Successful in 1m2s
CI / secret-scan (pull_request) Successful in 24s
CI / php-lint (pull_request) Successful in 39s
CI / static-tests (pull_request) Successful in 1m51s
CI / js-tests (pull_request) Successful in 56s
97d06eb4dd
Retour oral #6 : "saisie libre" du stock. Correction SIGNEE (+/-) du niveau,
distincte du restock (hausse en packs, sans PIN) et de l'inventaire (comptage
absolu). Choix de securite (decision user) : PIN equipier OBLIGATOIRE, comme
l'inventaire -- une baisse de stock non attribuee masquerait de la demarque
(risque R9 du modele de menaces). L'ajustement est donc PIN-garde et trace a
l'acteur resolu par PIN (stock_movement.user_id), sans audit_log au succes
(RG-T14).

- Migration 0010 : type de mouvement 'adjustment' ajoute a l'ENUM stock_movement
  (garde information_schema idempotente).
- IngredientRepository::adjust : delta signe, plafonne a la capacite (clamp,
  source unique), mouvement 'adjustment' avec le delta REELLEMENT applique, en
  une seule transaction (RG-T08).
- IngredientController::adjustForm/adjust : garde stock.count + flux PIN complet
  (throttle, decoy, pin.failed, reset) calque sur l'inventaire ; delta non nul
  borne (RG-T18).
- Vue adjust.php + lien "Ajuster" sur le tableau de bord stock (garde canCount).

495 tests unit verts (8 nouveaux), PHPStan L6 propre.

Note deploiement : la migration 0010 doit etre appliquee (runner wakdo-migrate)
pour activer le type 'adjustment' ; sans elle, l'INSERT du mouvement serait
rejete par la contrainte ENUM.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-07-02 14:07:51 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AcadeNice/corentin_wakdo!124
No description provided.