@tricoteuses/tisseuse 0.13.7 → 0.13.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +39 -35
  2. package/dist/{textes-BIJjrNwg.js → html-DhGw-Yqr.js} +3875 -5243
  3. package/dist/index.js +280 -147
  4. package/dist/resolver-DZS-DNp6.js +1848 -0
  5. package/dist/server-f-legi.js +532 -0
  6. package/dist/server.js +530 -2161
  7. package/dist/src/lib/extractors/links.d.ts +6 -4
  8. package/dist/src/lib/f_legi/resolver.d.ts +5 -7
  9. package/dist/src/lib/index.d.ts +2 -0
  10. package/dist/src/lib/legi/canutes_resolver.d.ts +5 -6
  11. package/dist/src/lib/legi/resolver.d.ts +15 -12
  12. package/dist/src/lib/legi/resolver.test.d.ts +1 -0
  13. package/dist/src/lib/legi/text_titles_infos.d.ts +26 -0
  14. package/dist/src/lib/linkers/html.d.ts +15 -4
  15. package/dist/src/lib/linkers/markdown.d.ts +4 -2
  16. package/dist/src/lib/server/databases/index.d.ts +1 -1
  17. package/dist/src/lib/server/f_legi/index.d.ts +1 -0
  18. package/dist/src/lib/server/index.d.ts +2 -1
  19. package/dist/src/lib/server/judilibre_search.d.ts +31 -0
  20. package/dist/src/lib/server/judilibre_search.test.d.ts +1 -0
  21. package/dist/src/lib/server/legi/resolvers.d.ts +2 -7
  22. package/dist/src/lib/server/linkers/html.d.ts +4 -2
  23. package/dist/src/scripts/enrich_senat_documents.d.ts +1 -0
  24. package/dist/src/scripts/index_postgres_judilibre.d.ts +1 -0
  25. package/package.json +8 -1
  26. package/dist/src/lib/f_legi/extractors/links.d.ts +0 -134
  27. package/dist/src/lib/f_legi/linkers/html.d.ts +0 -51
  28. package/dist/src/lib/server/f_legi/databases/index.d.ts +0 -2
  29. package/dist/src/lib/server/f_legi/linkers/html.d.ts +0 -20
  30. package/dist/src/scripts/f_legi/add_links_to_html_document.d.ts +0 -0
  31. /package/dist/src/{scripts/extract_texts_titles_infos.d.ts → lib/f_legi/resolver.test.d.ts} +0 -0
package/README.md CHANGED
@@ -65,6 +65,22 @@ Pour les articles dont Légifrance fournit une date de début sentinelle (`2222-
65
65
 
66
66
  Le pilote est exposé par Exploratrice à `GET /legifrance/recherche-plein-texte?q=...`, avec les filtres facultatifs `date=YYYY-MM-DD`, `nature`, `texte_cid` et `limit`.
67
67
 
68
+ ### Recherche plein texte de la jurisprudence Légifrance
69
+
70
+ La projection `tisseuse.legifrance_jurisprudence_search` couvre les fonds CNIL, CONSTIT, CAPP, CASS, INCA et JADE. Les décisions sont indexées par la commande suivante, à exécuter sur le primaire PostgreSQL avec un rôle en écriture :
71
+
72
+ ```sh
73
+ npm run index:postgres:legifrance-jurisprudence
74
+ ```
75
+
76
+ Le rôle Tisseuse ne peut pas installer de trigger sur `legifrance.jurisprudence`. Après **chaque import DILA qui modifie ce corpus**, l’exploitation doit donc déclencher explicitement la réconciliation :
77
+
78
+ ```sh
79
+ npm run index:postgres:legifrance-jurisprudence -- --all
80
+ ```
81
+
82
+ Cette commande est l’étape post-import obligatoire : elle alimente la file durable, que les workers consomment par lots verrouillés. Vérifier ensuite que `tisseuse.legifrance_jurisprudence_search_queue` est vide avant de déclarer la mise à jour disponible. Ne pas l’exécuter sur un standby.
83
+
68
84
  ### Contenus et recherche plein texte Assemblée nationale
69
85
 
70
86
  Les documents de l’Assemblée nationale sont acquis depuis les URL institutionnelles déduites de `assemblee.documents`, puis stockés dans `tisseuse.assemblee_document_content`. Cette projection est la source de contenu d’Exploratrice : elle contient un HTML simplifié, sa version enrichie de liens lorsque disponible, le sommaire, la provenance et l’état d’acquisition. Le répertoire local `Documents/` peut servir à diagnostiquer ou à amorcer un import historique, mais n’est pas lu par le service web ou l’indexeur.
@@ -117,46 +133,34 @@ Les documents sans URL, externes au Sénat, sans Akoma Ntoso ou en échec de par
117
133
 
118
134
  ## Legal reference resolver
119
135
 
120
- Tisseuse resolves legal references through a `LegiResolver`. The default
121
- resolver is `canutes`, which uses the configured Canutes database and a generated
122
- `text_titles_infos.json` file.
136
+ Tisseuse resolves legal references through the Canutes-backed `LegiResolver`.
137
+ `LegiResolver` is exported as an abstract class from both
138
+ `@tricoteuses/tisseuse` and `@tricoteuses/tisseuse/server`, so applications can
139
+ provide another storage-backed implementation. At process startup, the Canutes
140
+ resolver reads the title metadata it needs directly from
141
+ `legifrance.texte_version` and builds the parser indexes in memory. Concurrent
142
+ callers share the same preload operation, and the resulting indexes remain fixed
143
+ for the lifetime of the process.
123
144
 
124
- There are two supported resolver paths for tests and scripts:
145
+ No generated title index belongs in the source tree. Tests that resolve the full
146
+ Légifrance title corpus need access to the configured Canutes database and call
147
+ the same preload operation as production code.
125
148
 
126
- - `f_legi`: uses the flat f_legi database and does not need a generated
127
- `text_titles_infos.json` file.
128
- - `canutes`: uses the Canutes database and requires generating
129
- `src/lib/text_parsers/text_titles_infos.json` before running tests that parse
130
- or resolve French text titles.
149
+ ### `f_legi` server adapter
131
150
 
132
- Use `f_legi` explicitly when you want to run against the flat f_legi database:
151
+ Applications backed by a `f_legi` database can import the optional server-only
152
+ adapter from the same package:
133
153
 
134
- ```sh
135
- TISSEUSE_LEGI_RESOLVER=f_legi npm test
136
- npx tsx src/scripts/parse_assemblee_bill_raw.ts bill.html.raw --resolver f_legi
137
- ```
154
+ ```ts
155
+ import { FlegiResolver } from "@tricoteuses/tisseuse/server/f-legi"
138
156
 
139
- For the default Canutes resolver, generate the text title index first, then run
140
- the tests:
141
-
142
- ```sh
143
- npx tsx src/scripts/extract_texts_titles_infos.ts
144
- npm test
157
+ const resolver = new FlegiResolver(sql)
145
158
  ```
146
159
 
147
- This creates `src/lib/text_parsers/text_titles_infos.json`. It is generated from
148
- the Canutes database, is listed in `.gitignore`, and must never be committed.
149
-
150
- If you need to keep the generated file outside the working tree, pass it through
151
- `TISSEUSE_TEXT_TITLES_INFOS_PATH` or script options instead:
152
-
153
- ```sh
154
- TISSEUSE_TEXT_TITLES_INFOS_PATH=/path/to/text_titles_infos.json npm test
155
- npx tsx src/scripts/parse_akoma_ntoso_bill_raw.ts bill.akn.xml.raw --text-titles-infos /path/to/text_titles_infos.json
156
- ```
160
+ The caller owns the PostgreSQL client and its lifecycle. Importing the adapter
161
+ does not open a connection, read environment variables, or preload title data.
162
+ The generic Tisseuse entry points do not load this adapter.
157
163
 
158
- If no path is supplied, the Canutes resolver first tries
159
- `src/lib/text_parsers/text_titles_infos.json` from the current working tree, then
160
- the same generated file in the local tisseuse package source tree. That file is
161
- generated data and is not loaded through Vitest global setup; tests that need it
162
- preload it explicitly through the selected resolver.
164
+ External adapters can extend the public `LegiResolver` class. The public package
165
+ also exports the resolver option types and `buildAndInstallTextTitlesInfos`, so
166
+ an adapter does not need deep imports into Tisseuse.