fix(run-analysis): dériver les blocs d'architecture professorale du Markdown - #491
Merged
Merged
Conversation
…arkdown Les blocs d'architecture professorale étaient construits depuis analysis_runs.raw_text (heuristiques sur texte brut), alors que la transcription Markdown est la source canonique lue par generate-course-v3 et generate-atomic-knowledge. Les offsets stockés n'étaient donc interprétables que dans un texte que plus aucun consommateur ne lit, et rien ne garantissait que la transcription soit prête au moment où run-analysis construisait ces blocs. - _shared/professoral-document-structure.ts (nouveau) : construit la hiérarchie et la provenance de page depuis le Markdown (titres ATX avec repli heuristique, marqueurs <!-- source-page: N --> réels), sans plus deviner les frontières de page. - _shared/markdown-pages.ts (nouveau) : découpage en pages mutualisé depuis generate-atomic-knowledge/page-chunks.ts (ré-exporté à l'identique, tests inchangés) pour éviter de le réimplémenter. - _shared/professoral-architecture.ts : version bumpée v1->v2 et extraction_metadata.source_text_kind="document_markdown" sur chaque bloc, pour qu'un consommateur sache sans deviner à quel texte ses offsets se rapportent. - run-analysis/index.ts : vérifie la disponibilité de document_markdown avant de construire les blocs ; les ignore avec un diagnostic explicite (skipped_document_markdown_not_ready/failed) si la transcription n'est pas prête, sans jamais retomber sur le texte brut. L'ancrage des connaissances élémentaires sur raw_text reste inchangé (mécanisme distinct). npm test : 1904 tests, 0 échec (1881 avant ce changement). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019dz6K24hpfgRmdX8zZ182S
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.
Résumé
chapter_professoral_architecture_blocks) étaient dérivés deanalysis_runs.raw_text(texte brut du PDF, heuristiques), alors que la transcription Markdown (document_markdown) est la source canonique lue pargenerate-course-v3etgenerate-atomic-knowledge. Les offsets stockés n'étaient donc interprétables que dans un texte que plus aucun consommateur en aval ne lit._shared/professoral-document-structure.ts(nouveau, module pur) construit désormais la hiérarchie et la provenance de page depuis le Markdown : titres ATX (#) avec repli heuristique conservé (aucune transcription réelle disponible pour garantir un usage systématique de la syntaxe ATX), et marqueurs<!-- source-page: N -->réels au lieu de pages devinées.splitMarkdownIntoPages) est mutualisé dans_shared/markdown-pages.ts(déplacé depuisgenerate-atomic-knowledge/page-chunks.ts, qui le ré-exporte à l'identique — tests inchangés, comportement inchangé)._shared/professoral-architecture.ts: version bumpéev1→v2etextraction_metadata.source_text_kind = "document_markdown"sur chaque bloc, pour qu'un consommateur futur sache sans deviner à quel texte les offsets d'un bloc se rapportent — important car les blocs déjà en base (v1, offsets texte brut) et les nouveaux (v2, offsets Markdown) coexisteront le temps des ré-analyses.run-analysis/index.ts: vérifie la disponibilité dedocument_markdown(statutdone) avant de construire les blocs professoraux ; les ignore avec un diagnostic explicite (skipped_document_markdown_not_ready/skipped_document_markdown_failed) si la transcription n'est pas prête, sans jamais retomber sur le texte brut. L'ancrage des connaissances élémentaires surraw_text(mécanisme distinct,buildSourceAnchorForAtomicKnowledge) reste inchangé.Impact production
chapter_professoral_architecture_blocksà partir du prochain déploiement. Aucune migration nécessaire (colonnes déjà existantes). Aucun déploiement exécuté depuis cette session.Test plan
npm test: 1904 tests, 0 échec (1881 avant ce changement)professoral-document-structure.ts(hiérarchie par niveaux ATX, provenance de page, extrait conforme aux offsets, repli heuristique, mode diaporama vs continu)document_markdown) plutôt que supprimésextraction_metadatapour confirmer la proportion de titres ATX réelshttps://claude.ai/code/session_019dz6K24hpfgRmdX8zZ182S