Repository navigation
feat(15-12a): clôture des exercices dans l'ordre, garde de création, 409 EARLIER_FISCAL_YEAR_OPEN (refs #543) - #573
Merged
Conversation
…main (fiches, prompts, registre par union) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s de concurrence (refs #543) - DbError::EarlierFiscalYearOpen ; close en étapes (a)-(e) : antérieurs listés sans verrou puis verrouillés un par un par clé primaire, l'exercice, relecture verrouillante du plus ancien antérieur ouvert (C119). - create refuse un exercice antérieur à un exercice clos (LaterFiscalYearClosed). - LOCK_IN_COMPANY_SQL partagé par close, reopen et update_name. - Tests : refus, précédence, autre société, ids inversés, exercice disparu ; 13 a, 13 b1, 13 b2, 13 c, 13 d à entrelacement forcé ; mutations (i), (ii), (iv) tuées, (iii) observée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ISCAL_YEAR_CLOSED, clôture et création rejouées (refs #543) - Mapping 409 EARLIER_FISCAL_YEAR_OPEN ; clé neuve error-later-fiscal-year-closed ; message propre à la création (AppError::FiscalYearBeforeClosedYear, C-15-12a-1) ; ancienne clé alignée (quatre locales, repli frontend). - create_fiscal_year et close_fiscal_year dans retry_on_deadlock ; tests HTTP de rejeu 9 et 10 (mutations (ix) et (x) tuées) ; tests HTTP 409 / 400 / chevauchement ; doc-comment du registre (points (ii), (iii bis), (iv), (vi)). - Doc-comment de reverse_in_tx_inner : cycles avec la clôture et la création. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…térieur ouvert, refus 409 traité avant « déjà clôturé » (refs #543) Vitest : bouton désactivé nommant le plus ancien antérieur ouvert, antérieur clos non bloquant, branche EARLIER_FISCAL_YEAR_OPEN (mutation (viii) tuée). Borne sitesTotal de i18n-keys.test.ts recomptée aux deux bornes (1915 → 1916). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…15-8a/15-8b (refs #543) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…api-external, patrons de verrous, CHANGELOG — PDF régénérés (refs #543) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…543) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… mutation xi), message neutre borné à la modification et à la suppression, infobulle des boutons désactivés, #569 cité (refs #543) - A1 = B-2 = E1 (MEDIUM) : test 13 b3, la garde de `create` tient Y ; mutation « garde non verrouillante » jouée, seul le 13 b3 rougit. Doc-comments et fiche disent ce que prouve chaque test. - B-1 = E4 (MEDIUM) : `error-later-fiscal-year-closed` (4 locales + repli) ne promet plus que ce que le code garde. - LOW : isolation entre sociétés et frontière de la garde, refus par clé read-write, affichage du refus de création (Vitest), enveloppe d'infobulle, références orphelines, #569 aux replis, api-external, doc de module. Gates : backend 2901/2901, Vitest 1095/1095, E2E 245 / 9 attendus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… complets sur l'état rebasé, statut done (refs #543) Boucle de revue de code close : P1 Sonnet ×3 (2 MEDIUM d'origine) → P2 ciblée Haiku 0, sans remédiation. Gates sur l'état rebasé : backend 2934/2934, Vitest 1095/1095, E2E 244 / 9 attendus (7 KF-029, 2 KF-045) + 1 échec de montage (KESH_TEST_MODE côté runner) rejoué vert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…complets sur l'état rebasé (refs #543) Conflit de code dans rejeu_interblocage_e2e.rs : les tests de la 15-6a et de la 15-12a gardés. Gates : backend 2951/2951, Vitest 1095/1095, E2E 245 / 9 attendus (7 KF-029, 2 KF-045). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
guycorbaz
force-pushed
the
story/15-12a-cloture-dans-l-ordre
branch
from
October 9, 2026 03:08
ec26c8d to
582495f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
refs #543. C'est la 15-12b qui fermera l'issue.
Ce qui change
Clôture dans l'ordre. Les exercices se clôturent du plus ancien vers le plus récent.
closeprocède ainsi :Tant qu'un exercice antérieur est ouvert, il refuse avec
409 EARLIER_FISCAL_YEAR_OPEN. L'ordre des verrous est fixé par le code et ne dépend pas du plan d'exécution.Création gardée. Créer un exercice antérieur à un exercice déjà clos est refusé (
400 LATER_FISCAL_YEAR_CLOSED), avec un message propre à ce cas.Message borné. Le message de
LATER_FISCAL_YEAR_CLOSEDne dit plus que ce que le code refuse réellement : la modification et la suppression, pas la saisie.Rejeu. La clôture et la création sont rejouées en cas d'interblocage.
Écran des exercices. Les boutons « Clôturer » et « Réouvrir » sont désactivés, avec une infobulle, quand l'ordre l'interdit.
Documentation à jour : manuels (texte et PDF),
api-external.md, patrons de verrous et CHANGELOG.Gate
Exécuté localement, sur l'état rebasé sur
39b52628:scripts/test-fast.sh) : 2951 tests sur 2951, 4 ignorés.check,lint-i18n-ownership,test:unit(1095 tests) etbuildverts.uq_fiscal_years_company_start_date, sansfilesort. Les interblocages prévus se produisent bien, et leur rejeu est testé.Revues
Les deux MEDIUM de la revue de code :
À la passe ciblée, l'orchestrateur a vérifié lui-même le test 13 b3 : il appelle bien la vraie garde, et l'attente de la clôture est observée, pas supposée.
🤖 Generated with Claude Code