@tricoteuses/senat 2.22.16 → 2.23.0
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.
- package/README.md +168 -0
- package/lib/aggregates.d.ts +52 -0
- package/lib/aggregates.js +930 -0
- package/lib/aggregates.mjs +713 -0
- package/lib/aggregates.ts +833 -0
- package/lib/config.d.ts +10 -0
- package/lib/config.js +16 -0
- package/lib/config.mjs +16 -0
- package/lib/config.ts +26 -0
- package/lib/databases.d.ts +2 -0
- package/lib/databases.js +26 -0
- package/lib/databases.mjs +57 -0
- package/lib/databases.ts +71 -0
- package/lib/datasets.d.ts +34 -0
- package/lib/datasets.js +233 -0
- package/lib/datasets.mjs +78 -0
- package/lib/datasets.ts +118 -0
- package/lib/fields.d.ts +10 -0
- package/lib/fields.js +68 -0
- package/lib/fields.mjs +22 -0
- package/lib/fields.ts +29 -0
- package/lib/git.d.ts +26 -0
- package/lib/git.js +167 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +1 -0
- package/lib/index.mjs +7 -0
- package/lib/index.ts +64 -0
- package/lib/inserters.d.ts +98 -0
- package/lib/inserters.js +500 -0
- package/lib/inserters.mjs +360 -0
- package/lib/inserters.ts +521 -0
- package/lib/legislatures.json +38 -0
- package/lib/loaders.d.ts +58 -0
- package/lib/loaders.js +286 -0
- package/lib/loaders.mjs +158 -0
- package/lib/loaders.ts +271 -0
- package/lib/model/agenda.d.ts +6 -0
- package/lib/model/agenda.js +148 -0
- package/lib/model/ameli.d.ts +51 -0
- package/lib/model/ameli.js +149 -0
- package/lib/model/ameli.mjs +84 -0
- package/lib/model/ameli.ts +100 -0
- package/lib/model/commission.d.ts +18 -0
- package/lib/model/commission.js +269 -0
- package/lib/model/debats.d.ts +67 -0
- package/lib/model/debats.js +95 -0
- package/lib/model/debats.mjs +43 -0
- package/lib/model/debats.ts +68 -0
- package/lib/model/documents.d.ts +12 -0
- package/lib/model/documents.js +151 -0
- package/lib/model/dosleg.d.ts +7 -0
- package/lib/model/dosleg.js +326 -0
- package/lib/model/dosleg.mjs +196 -0
- package/lib/model/dosleg.ts +240 -0
- package/lib/model/index.d.ts +7 -0
- package/lib/model/index.js +7 -0
- package/lib/model/index.mjs +5 -0
- package/lib/model/index.ts +15 -0
- package/lib/model/questions.d.ts +45 -0
- package/lib/model/questions.js +89 -0
- package/lib/model/questions.mjs +71 -0
- package/lib/model/questions.ts +93 -0
- package/lib/model/scrutins.d.ts +13 -0
- package/lib/model/scrutins.js +114 -0
- package/lib/model/seance.d.ts +3 -0
- package/lib/model/seance.js +267 -0
- package/lib/model/sens.d.ts +146 -0
- package/lib/model/sens.js +454 -0
- package/lib/model/sens.mjs +415 -0
- package/lib/model/sens.ts +516 -0
- package/lib/model/texte.d.ts +7 -0
- package/lib/model/texte.js +256 -0
- package/lib/model/texte.mjs +208 -0
- package/lib/model/texte.ts +229 -0
- package/lib/model/util.d.ts +9 -0
- package/lib/model/util.js +38 -0
- package/lib/model/util.mjs +19 -0
- package/lib/model/util.ts +32 -0
- package/lib/parsers/texte.d.ts +7 -0
- package/lib/parsers/texte.js +228 -0
- package/lib/raw_types/ameli.d.ts +914 -0
- package/lib/raw_types/ameli.js +5 -0
- package/lib/raw_types/ameli.mjs +163 -0
- package/lib/raw_types/debats.d.ts +207 -0
- package/lib/raw_types/debats.js +5 -0
- package/lib/raw_types/debats.mjs +58 -0
- package/lib/raw_types/dosleg.d.ts +1619 -0
- package/lib/raw_types/dosleg.js +5 -0
- package/lib/raw_types/dosleg.mjs +438 -0
- package/lib/raw_types/questions.d.ts +419 -0
- package/lib/raw_types/questions.js +5 -0
- package/lib/raw_types/questions.mjs +11 -0
- package/lib/raw_types/senat.d.ts +11368 -0
- package/lib/raw_types/senat.js +5 -0
- package/lib/raw_types/sens.d.ts +8248 -0
- package/lib/raw_types/sens.js +5 -0
- package/lib/raw_types/sens.mjs +508 -0
- package/lib/raw_types_kysely/ameli.d.ts +915 -0
- package/lib/raw_types_kysely/ameli.js +7 -0
- package/lib/raw_types_kysely/ameli.mjs +5 -0
- package/lib/raw_types_kysely/ameli.ts +951 -0
- package/lib/raw_types_kysely/debats.d.ts +207 -0
- package/lib/raw_types_kysely/debats.js +7 -0
- package/lib/raw_types_kysely/debats.mjs +5 -0
- package/lib/raw_types_kysely/debats.ts +222 -0
- package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
- package/lib/raw_types_kysely/dosleg.js +7 -0
- package/lib/raw_types_kysely/dosleg.mjs +5 -0
- package/lib/raw_types_kysely/dosleg.ts +3621 -0
- package/lib/raw_types_kysely/questions.d.ts +414 -0
- package/lib/raw_types_kysely/questions.js +7 -0
- package/lib/raw_types_kysely/questions.mjs +5 -0
- package/lib/raw_types_kysely/questions.ts +426 -0
- package/lib/raw_types_kysely/sens.d.ts +4394 -0
- package/lib/raw_types_kysely/sens.js +7 -0
- package/lib/raw_types_kysely/sens.mjs +5 -0
- package/lib/raw_types_kysely/sens.ts +4499 -0
- package/lib/raw_types_schemats/ameli.d.ts +539 -0
- package/lib/raw_types_schemats/ameli.js +2 -0
- package/lib/raw_types_schemats/ameli.mjs +2 -0
- package/lib/raw_types_schemats/ameli.ts +601 -0
- package/lib/raw_types_schemats/debats.d.ts +127 -0
- package/lib/raw_types_schemats/debats.js +2 -0
- package/lib/raw_types_schemats/debats.mjs +2 -0
- package/lib/raw_types_schemats/debats.ts +145 -0
- package/lib/raw_types_schemats/dosleg.d.ts +977 -0
- package/lib/raw_types_schemats/dosleg.js +2 -0
- package/lib/raw_types_schemats/dosleg.mjs +2 -0
- package/lib/raw_types_schemats/dosleg.ts +2193 -0
- package/lib/raw_types_schemats/questions.d.ts +235 -0
- package/lib/raw_types_schemats/questions.js +2 -0
- package/lib/raw_types_schemats/questions.mjs +2 -0
- package/lib/raw_types_schemats/questions.ts +249 -0
- package/lib/raw_types_schemats/sens.d.ts +6915 -0
- package/lib/raw_types_schemats/sens.js +2 -0
- package/lib/raw_types_schemats/sens.mjs +2 -0
- package/lib/raw_types_schemats/sens.ts +2907 -0
- package/lib/scripts/convert_data.d.ts +1 -0
- package/lib/scripts/convert_data.js +354 -0
- package/lib/scripts/convert_data.mjs +181 -0
- package/lib/scripts/convert_data.ts +243 -0
- package/lib/scripts/data-download.d.ts +1 -0
- package/lib/scripts/data-download.js +12 -0
- package/lib/scripts/datautil.d.ts +8 -0
- package/lib/scripts/datautil.js +34 -0
- package/lib/scripts/datautil.mjs +16 -0
- package/lib/scripts/datautil.ts +19 -0
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.d.ts +1 -0
- package/lib/scripts/parse_textes.js +44 -0
- package/lib/scripts/parse_textes.mjs +46 -0
- package/lib/scripts/parse_textes.ts +65 -0
- package/lib/scripts/retrieve_agenda.d.ts +1 -0
- package/lib/scripts/retrieve_agenda.js +132 -0
- package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
- package/lib/scripts/retrieve_cr_commission.js +364 -0
- package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
- package/lib/scripts/retrieve_cr_seance.js +347 -0
- package/lib/scripts/retrieve_documents.d.ts +3 -0
- package/lib/scripts/retrieve_documents.js +219 -0
- package/lib/scripts/retrieve_documents.mjs +249 -0
- package/lib/scripts/retrieve_documents.ts +298 -0
- package/lib/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/scripts/retrieve_open_data.js +315 -0
- package/lib/scripts/retrieve_open_data.mjs +217 -0
- package/lib/scripts/retrieve_open_data.ts +268 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/scripts/retrieve_senateurs_photos.js +147 -0
- package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
- package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
- package/lib/scripts/retrieve_videos.d.ts +1 -0
- package/lib/scripts/retrieve_videos.js +461 -0
- package/lib/scripts/shared/cli_helpers.d.ts +95 -0
- package/lib/scripts/shared/cli_helpers.js +91 -0
- package/lib/scripts/shared/cli_helpers.ts +36 -0
- package/lib/scripts/shared/util.d.ts +4 -0
- package/lib/scripts/shared/util.js +35 -0
- package/lib/scripts/shared/util.ts +33 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +12 -0
- package/lib/src/config.d.ts +22 -0
- package/lib/src/config.js +17 -7
- package/lib/src/conversion_textes.js +5 -1
- package/lib/src/databases.d.ts +2 -1
- package/lib/src/databases_postgres.d.ts +4 -0
- package/lib/src/databases_postgres.js +23 -0
- package/lib/src/datasets.d.ts +4 -0
- package/lib/src/datasets.js +16 -2
- package/lib/src/git.d.ts +1 -0
- package/lib/src/git.js +45 -11
- package/lib/src/loaders.js +10 -4
- package/lib/src/model/agenda.js +2 -2
- package/lib/src/model/ameli.d.ts +64 -52
- package/lib/src/model/ameli.js +147 -145
- package/lib/src/model/ameli_postgres.d.ts +67 -0
- package/lib/src/model/ameli_postgres.js +150 -0
- package/lib/src/model/commission.d.ts +3 -2
- package/lib/src/model/commission.js +2 -2
- package/lib/src/model/debats.d.ts +38 -66
- package/lib/src/model/debats.js +110 -93
- package/lib/src/model/documents.d.ts +32 -12
- package/lib/src/model/documents.js +171 -130
- package/lib/src/model/dosleg.d.ts +142 -5
- package/lib/src/model/dosleg.js +298 -156
- package/lib/src/model/questions.d.ts +54 -45
- package/lib/src/model/questions.js +89 -87
- package/lib/src/model/scrutins.d.ts +48 -13
- package/lib/src/model/scrutins.js +118 -111
- package/lib/src/model/seance.js +3 -3
- package/lib/src/model/sens.d.ts +109 -179
- package/lib/src/model/sens.js +384 -484
- package/lib/src/model/util.d.ts +0 -8
- package/lib/src/model/util.js +0 -23
- package/lib/src/parsers/texte.js +7 -7
- package/lib/src/raw_types_schemats/ameli.d.ts +4 -2
- package/lib/src/raw_types_schemats/debats.d.ts +2 -2
- package/lib/src/raw_types_schemats/dosleg.d.ts +2 -2
- package/lib/src/raw_types_schemats/questions.d.ts +2 -2
- package/lib/src/raw_types_schemats/sens.d.ts +10 -4216
- package/lib/src/scripts/convert_data.js +7 -6
- package/lib/src/scripts/convert_xml_to_html.js +2 -2
- package/lib/src/scripts/data-download.js +3 -2
- package/lib/src/scripts/retrieve_agenda.js +21 -9
- package/lib/src/scripts/retrieve_cr_commission.js +17 -17
- package/lib/src/scripts/retrieve_cr_seance.d.ts +14 -1
- package/lib/src/scripts/retrieve_cr_seance.js +10 -11
- package/lib/src/scripts/retrieve_documents.d.ts +11 -2
- package/lib/src/scripts/retrieve_documents.js +25 -14
- package/lib/src/scripts/retrieve_open_data.js +400 -145
- package/lib/src/scripts/retrieve_senateurs_photos.js +25 -11
- package/lib/src/scripts/retrieve_videos.js +12 -11
- package/lib/src/scripts/shared/cli_helpers.d.ts +1 -6
- package/lib/src/scripts/shared/cli_helpers.js +9 -8
- package/lib/src/scripts/shared/incremental_import_sql.d.ts +2 -0
- package/lib/src/scripts/shared/incremental_import_sql.js +894 -0
- package/lib/src/scripts/shared/prefixed_tables.d.ts +7 -0
- package/lib/src/scripts/shared/prefixed_tables.js +30 -0
- package/lib/src/scripts/shared/schema_version.d.ts +3 -0
- package/lib/src/scripts/shared/schema_version.js +97 -0
- package/lib/src/scripts/shared/staging_import.d.ts +3 -0
- package/lib/src/scripts/shared/staging_import.js +80 -0
- package/lib/src/scripts/shared/staging_metadata_sql.d.ts +1 -0
- package/lib/src/scripts/shared/staging_metadata_sql.js +221 -0
- package/lib/src/scripts/validate_prefixed_tables.d.ts +1 -0
- package/lib/src/scripts/validate_prefixed_tables.js +102 -0
- package/lib/src/types/texte.d.ts +1 -1
- package/lib/src/utils/cr_spliting.d.ts +9 -6
- package/lib/src/utils/cr_spliting.js +6 -101
- package/lib/src/utils/reunion_odj_building.d.ts +7 -3
- package/lib/src/utils/reunion_parsing.d.ts +2 -1
- package/lib/src/utils/reunion_parsing.js +2 -2
- package/lib/src/videos/match.js +8 -5
- package/lib/src/videos/pipeline.d.ts +6 -2
- package/lib/src/videos/pipeline.js +21 -8
- package/lib/src/videos/search.js +6 -2
- package/lib/strings.d.ts +1 -0
- package/lib/strings.js +18 -0
- package/lib/strings.mjs +18 -0
- package/lib/strings.ts +26 -0
- package/lib/tests/incrementalImportSql.test.d.ts +1 -0
- package/lib/tests/incrementalImportSql.test.js +155 -0
- package/lib/tests/prefixedTables.test.d.ts +1 -0
- package/lib/tests/prefixedTables.test.js +29 -0
- package/lib/tests/schemaVersion.test.d.ts +1 -0
- package/lib/tests/schemaVersion.test.js +23 -0
- package/lib/tests/validatePrefixedTables.test.d.ts +1 -0
- package/lib/tests/validatePrefixedTables.test.js +14 -0
- package/lib/types/agenda.d.ts +44 -0
- package/lib/types/agenda.js +1 -0
- package/lib/types/ameli.d.ts +5 -0
- package/lib/types/ameli.js +1 -0
- package/lib/types/ameli.mjs +13 -0
- package/lib/types/ameli.ts +21 -0
- package/lib/types/compte_rendu.d.ts +83 -0
- package/lib/types/compte_rendu.js +1 -0
- package/lib/types/debats.d.ts +2 -0
- package/lib/types/debats.js +1 -0
- package/lib/types/debats.mjs +2 -0
- package/lib/types/debats.ts +6 -0
- package/lib/types/dosleg.d.ts +70 -0
- package/lib/types/dosleg.js +1 -0
- package/lib/types/dosleg.mjs +151 -0
- package/lib/types/dosleg.ts +284 -0
- package/lib/types/questions.d.ts +2 -0
- package/lib/types/questions.js +1 -0
- package/lib/types/questions.mjs +1 -0
- package/lib/types/questions.ts +3 -0
- package/lib/types/sens.d.ts +10 -0
- package/lib/types/sens.js +1 -0
- package/lib/types/sens.mjs +1 -0
- package/lib/types/sens.ts +12 -0
- package/lib/types/sessions.d.ts +5 -0
- package/lib/types/sessions.js +84 -0
- package/lib/types/sessions.mjs +43 -0
- package/lib/types/sessions.ts +42 -0
- package/lib/types/texte.d.ts +74 -0
- package/lib/types/texte.js +16 -0
- package/lib/types/texte.mjs +16 -0
- package/lib/types/texte.ts +76 -0
- package/lib/typings/windows-1252.d.js +2 -0
- package/lib/typings/windows-1252.d.mjs +2 -0
- package/lib/typings/windows-1252.d.ts +11 -0
- package/lib/utils/cr_spliting.d.ts +28 -0
- package/lib/utils/cr_spliting.js +265 -0
- package/lib/utils/date.d.ts +10 -0
- package/lib/utils/date.js +100 -0
- package/lib/utils/nvs-timecode.d.ts +7 -0
- package/lib/utils/nvs-timecode.js +79 -0
- package/lib/utils/reunion_grouping.d.ts +9 -0
- package/lib/utils/reunion_grouping.js +361 -0
- package/lib/utils/reunion_odj_building.d.ts +5 -0
- package/lib/utils/reunion_odj_building.js +154 -0
- package/lib/utils/reunion_parsing.d.ts +23 -0
- package/lib/utils/reunion_parsing.js +209 -0
- package/lib/utils/scoring.d.ts +14 -0
- package/lib/utils/scoring.js +147 -0
- package/lib/utils/string_cleaning.d.ts +7 -0
- package/lib/utils/string_cleaning.js +57 -0
- package/lib/validators/config.d.ts +9 -0
- package/lib/validators/config.js +10 -0
- package/lib/validators/config.mjs +54 -0
- package/lib/validators/config.ts +79 -0
- package/lib/validators/senat.d.ts +0 -0
- package/lib/validators/senat.js +28 -0
- package/lib/validators/senat.mjs +24 -0
- package/lib/validators/senat.ts +26 -0
- package/package.json +6 -10
package/lib/src/model/dosleg.js
CHANGED
|
@@ -1,123 +1,277 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { concat, rtrim, toDateString } from "./util";
|
|
5
|
-
import { textes, rapports } from "./documents";
|
|
6
|
-
function datesSeances(lectureAssembleeId) {
|
|
7
|
-
return jsonArrayFrom(dbSenat
|
|
8
|
-
.withSchema("dosleg")
|
|
9
|
-
.selectFrom("dosleg.date_seance")
|
|
10
|
-
.where("dosleg.date_seance.lecidt", "=", lectureAssembleeId)
|
|
11
|
-
.select(({ ref }) => [toDateString(ref("dosleg.date_seance.date_s")).as("date")]));
|
|
1
|
+
import { streamUnsafeQuery } from "../databases_postgres";
|
|
2
|
+
function stripTrailingHashesSql(expr) {
|
|
3
|
+
return `regexp_replace(${expr}, '#+$', '')`;
|
|
12
4
|
}
|
|
13
|
-
function
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
toDateString(ref("lecass.lecassamedat")).as("date_publication_amendements_seance"),
|
|
34
|
-
textes(ref("lecass.lecassidt")).as("textes"),
|
|
35
|
-
rapports(ref("lecass.lecassidt")).as("rapports"),
|
|
36
|
-
datesSeances(ref("lecass.lecassidt")).as("dates_seances"),
|
|
37
|
-
])
|
|
38
|
-
.orderBy("lecass.ordreass", "asc"));
|
|
5
|
+
function buildAuteursTexteSql(texteIdSql) {
|
|
6
|
+
return `
|
|
7
|
+
(
|
|
8
|
+
select coalesce(json_agg(author_rows order by author_rows.ordre_num nulls last), '[]'::json)
|
|
9
|
+
from (
|
|
10
|
+
select
|
|
11
|
+
auteur.prenom as prenom,
|
|
12
|
+
auteur.nomuse as nom_usuel,
|
|
13
|
+
auteur.autmat as matricule,
|
|
14
|
+
ecr.ecrnumtri::text as ordre,
|
|
15
|
+
ecr.ecrnumtri as ordre_num,
|
|
16
|
+
rolsig.rolsiglib as role,
|
|
17
|
+
ecr.ecrqua as qualite
|
|
18
|
+
from senat.dosleg_auteur as auteur
|
|
19
|
+
left join senat.dosleg_ecr as ecr on ecr.autcod = auteur.autcod
|
|
20
|
+
left join senat.dosleg_rolsig as rolsig on rolsig.signataire = ecr.signataire
|
|
21
|
+
where ecr.texcod = ${texteIdSql}
|
|
22
|
+
) as author_rows
|
|
23
|
+
)
|
|
24
|
+
`;
|
|
39
25
|
}
|
|
40
|
-
function
|
|
41
|
-
return
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
26
|
+
function buildAuteursRapportSql(rapportIdSql) {
|
|
27
|
+
return `
|
|
28
|
+
(
|
|
29
|
+
select coalesce(json_agg(author_rows order by author_rows.ordre_num nulls last), '[]'::json)
|
|
30
|
+
from (
|
|
31
|
+
select
|
|
32
|
+
auteur.prenom as prenom,
|
|
33
|
+
auteur.nomuse as nom_usuel,
|
|
34
|
+
auteur.autmat as matricule,
|
|
35
|
+
ecr.ecrnumtri::text as ordre,
|
|
36
|
+
ecr.ecrnumtri as ordre_num,
|
|
37
|
+
rolsig.rolsiglib as role,
|
|
38
|
+
ecr.ecrqua as qualite
|
|
39
|
+
from senat.dosleg_auteur as auteur
|
|
40
|
+
left join senat.dosleg_ecr as ecr on ecr.autcod = auteur.autcod
|
|
41
|
+
left join senat.dosleg_rolsig as rolsig on rolsig.signataire = ecr.signataire
|
|
42
|
+
where ecr.rapcod = ${rapportIdSql}
|
|
43
|
+
) as author_rows
|
|
44
|
+
)
|
|
45
|
+
`;
|
|
53
46
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
function buildDocumentsAttachesSql(rapportIdSql) {
|
|
48
|
+
return `
|
|
49
|
+
(
|
|
50
|
+
select coalesce(json_agg(attached_rows), '[]'::json)
|
|
51
|
+
from (
|
|
52
|
+
select
|
|
53
|
+
docatt.docatturl as url,
|
|
54
|
+
typatt.typattlib as type_document
|
|
55
|
+
from senat.dosleg_docatt as docatt
|
|
56
|
+
left join senat.dosleg_typatt as typatt on docatt.typattcod = typatt.typattcod
|
|
57
|
+
where docatt.rapcod = ${rapportIdSql}
|
|
58
|
+
) as attached_rows
|
|
59
|
+
)
|
|
60
|
+
`;
|
|
61
61
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
62
|
+
function buildTextesSql(lectureAssembleeIdSql) {
|
|
63
|
+
return `
|
|
64
|
+
(
|
|
65
|
+
select coalesce(json_agg(text_rows order by text_rows.ordre_tri nulls last), '[]'::json)
|
|
66
|
+
from (
|
|
67
|
+
select
|
|
68
|
+
texte.texnum as numero,
|
|
69
|
+
texte.orgcod as code_organisme,
|
|
70
|
+
case
|
|
71
|
+
when texte.texurl is not null then
|
|
72
|
+
${stripTrailingHashesSql("regexp_replace(trim(texte.texurl), '^(.*/)?(.*?)(\\.html)?$', '\\2')")}
|
|
73
|
+
else null
|
|
74
|
+
end as id,
|
|
75
|
+
case
|
|
76
|
+
when texte.typurl = 'I' then
|
|
77
|
+
${stripTrailingHashesSql("'https://www.senat.fr/leg/' || rtrim(texte.texurl)")}
|
|
78
|
+
else ${stripTrailingHashesSql("rtrim(texte.texurl)")}
|
|
79
|
+
end as url,
|
|
80
|
+
rtrim(oritxt.oritxtlib) as origine,
|
|
81
|
+
oritxt.oriordre as ordre_origine,
|
|
82
|
+
oritxt.oritxtado as code_adoption,
|
|
83
|
+
oritxt.oritxtmod as modification,
|
|
84
|
+
rtrim(typtxt.typtxtlib) as type,
|
|
85
|
+
to_char(texte.txtoritxtdat, 'YYYY-MM-DD') as date,
|
|
86
|
+
texte.sesann::int as session,
|
|
87
|
+
${buildAuteursTexteSql("texte.texcod")} as auteurs,
|
|
88
|
+
array_position(array['0','2','1'], oritxt.oriordre) as ordre_tri
|
|
89
|
+
from senat.dosleg_texte as texte
|
|
90
|
+
left join senat.dosleg_oritxt as oritxt on oritxt.oritxtcod = texte.oritxtcod
|
|
91
|
+
left join senat.dosleg_typtxt as typtxt on typtxt.typtxtcod = texte.typtxtcod
|
|
92
|
+
where texte.lecassidt = ${lectureAssembleeIdSql}
|
|
93
|
+
) as text_rows
|
|
94
|
+
)
|
|
95
|
+
`;
|
|
96
|
+
}
|
|
97
|
+
function buildRapportsSql(lectureAssembleeIdSql) {
|
|
98
|
+
return `
|
|
99
|
+
(
|
|
100
|
+
select coalesce(json_agg(report_rows), '[]'::json)
|
|
101
|
+
from (
|
|
102
|
+
select
|
|
103
|
+
rap.rapnum as numero,
|
|
104
|
+
raporg.orgcod as code_organisme,
|
|
105
|
+
case
|
|
106
|
+
when rap.rapurl is not null then
|
|
107
|
+
${stripTrailingHashesSql("regexp_replace(trim(rap.rapurl), '^(.*/)?(.*?)(\\.html)?$', '\\2')")}
|
|
108
|
+
else null
|
|
109
|
+
end as id,
|
|
110
|
+
case
|
|
111
|
+
when rap.typurl = 'I' then
|
|
112
|
+
${stripTrailingHashesSql("'https://www.senat.fr/rap/' || rtrim(rap.rapurl)")}
|
|
113
|
+
else ${stripTrailingHashesSql("rtrim(rap.rapurl)")}
|
|
114
|
+
end as url,
|
|
115
|
+
rtrim(denrap.libdenrap) as type,
|
|
116
|
+
rtrim(rtrim(rap.raptil)) as titre,
|
|
117
|
+
rtrim(rtrim(rap.rapsoustit)) as sous_titre,
|
|
118
|
+
to_char(rap.date_depot, 'YYYY-MM-DD') as date,
|
|
119
|
+
rap.sesann::int as session,
|
|
120
|
+
${buildAuteursRapportSql("rap.rapcod")} as auteurs,
|
|
121
|
+
${buildDocumentsAttachesSql("rap.rapcod")} as documents_annexes
|
|
122
|
+
from senat.dosleg_rap as rap
|
|
123
|
+
left join senat.dosleg_raporg as raporg on raporg.rapcod = rap.rapcod
|
|
124
|
+
left join senat.dosleg_denrap as denrap on denrap.coddenrap = rap.coddenrap
|
|
125
|
+
left join senat.dosleg_lecassrap as lecassrap on lecassrap.rapcod = rap.rapcod
|
|
126
|
+
where lecassrap.lecassidt = ${lectureAssembleeIdSql}
|
|
127
|
+
) as report_rows
|
|
128
|
+
)
|
|
129
|
+
`;
|
|
130
|
+
}
|
|
131
|
+
function buildDatesSeancesSql(lectureAssembleeIdSql) {
|
|
132
|
+
return `
|
|
133
|
+
(
|
|
134
|
+
select coalesce(json_agg(date_rows), '[]'::json)
|
|
135
|
+
from (
|
|
136
|
+
select to_char(date_seance.date_s, 'YYYY-MM-DD') as date
|
|
137
|
+
from senat.dosleg_date_seance as date_seance
|
|
138
|
+
where date_seance.lecidt = ${lectureAssembleeIdSql}
|
|
139
|
+
) as date_rows
|
|
140
|
+
)
|
|
141
|
+
`;
|
|
142
|
+
}
|
|
143
|
+
function buildLecturesAssembleeSql(lectureIdSql) {
|
|
144
|
+
return `
|
|
145
|
+
(
|
|
146
|
+
select coalesce(json_agg(assembly_rows order by assembly_rows.ordre_lecture_assemblee_num nulls last), '[]'::json)
|
|
147
|
+
from (
|
|
148
|
+
select
|
|
149
|
+
rtrim(ass.libass) as assemblee,
|
|
150
|
+
org.orgnom as libelle_organisme,
|
|
151
|
+
org.senorgcod as code_organisme,
|
|
152
|
+
lecass.ordreass::text as ordre_lecture_assemblee,
|
|
153
|
+
lecass.ordreass as ordre_lecture_assemblee_num,
|
|
154
|
+
lecass.sesann::int as session,
|
|
155
|
+
orippr.oripprlib as origine_proposition,
|
|
156
|
+
lecass.ptlnum as numero_petite_loi,
|
|
157
|
+
lecass.ptlurl as url_petite_loi,
|
|
158
|
+
lecass.loiintmod as loi_intitule_modifie,
|
|
159
|
+
lecass.debatsurl as url_cr_debats,
|
|
160
|
+
to_char(lecass.lecassamecomdat, 'YYYY-MM-DD') as date_publication_amendements_commission,
|
|
161
|
+
to_char(lecass.lecassamedat, 'YYYY-MM-DD') as date_publication_amendements_seance,
|
|
162
|
+
${buildTextesSql("lecass.lecassidt")} as textes,
|
|
163
|
+
${buildRapportsSql("lecass.lecassidt")} as rapports,
|
|
164
|
+
${buildDatesSeancesSql("lecass.lecassidt")} as dates_seances
|
|
165
|
+
from senat.dosleg_lecass as lecass
|
|
166
|
+
left join senat.dosleg_ass as ass on ass.codass = lecass.codass
|
|
167
|
+
left join senat.dosleg_org as org on org.orgcod = lecass.orgcod
|
|
168
|
+
left join senat.dosleg_orippr as orippr on orippr.oripprcod = lecass.orippr
|
|
169
|
+
where lecass.lecidt = ${lectureIdSql}
|
|
170
|
+
) as assembly_rows
|
|
171
|
+
)
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
function buildLecturesSql(loiIdSql) {
|
|
175
|
+
return `
|
|
176
|
+
(
|
|
177
|
+
select coalesce(json_agg(lecture_rows order by lecture_rows.ordre_lecture_num nulls last), '[]'::json)
|
|
178
|
+
from (
|
|
179
|
+
select
|
|
180
|
+
rtrim(typlec.typleclib) as type_lecture,
|
|
181
|
+
rtrim(lecture.leccom) as libelle,
|
|
182
|
+
typlec.typlecord::text as ordre_lecture,
|
|
183
|
+
typlec.typlecord as ordre_lecture_num,
|
|
184
|
+
${buildLecturesAssembleeSql("lecture.lecidt")} as lectures_assemblee
|
|
185
|
+
from senat.dosleg_lecture as lecture
|
|
186
|
+
left join senat.dosleg_typlec as typlec on typlec.typleccod = lecture.typleccod
|
|
187
|
+
where lecture.loicod = ${loiIdSql}
|
|
188
|
+
) as lecture_rows
|
|
189
|
+
)
|
|
190
|
+
`;
|
|
191
|
+
}
|
|
192
|
+
function buildThemesSql(loiIdSql) {
|
|
193
|
+
return `
|
|
194
|
+
(
|
|
195
|
+
select coalesce(json_agg(theme_rows), '[]'::json)
|
|
196
|
+
from (
|
|
197
|
+
select the.thelib as libelle
|
|
198
|
+
from senat.dosleg_the as the
|
|
199
|
+
left join senat.dosleg_loithe as loithe on loithe.thecle = the.thecle
|
|
200
|
+
where loithe.loicod = ${loiIdSql}
|
|
201
|
+
) as theme_rows
|
|
202
|
+
)
|
|
203
|
+
`;
|
|
204
|
+
}
|
|
205
|
+
function buildFindAllDossiersQuery() {
|
|
206
|
+
return {
|
|
207
|
+
params: [],
|
|
208
|
+
query: `
|
|
209
|
+
select
|
|
210
|
+
rtrim(loi.loicod) as code,
|
|
211
|
+
loi.numero,
|
|
212
|
+
loi.signet,
|
|
213
|
+
nullif(regexp_replace(loi.url_an, '^.*\\/(DL[^\\/]+)\\.asp$', '\\1'), '') as code_dossier_an,
|
|
214
|
+
loi.signetalt as signet_alternatif,
|
|
215
|
+
rtrim(loi.motclef) as mot_cle,
|
|
216
|
+
rtrim(loi.loient) as titre_court,
|
|
217
|
+
rtrim(typloi.typloiden) || ' ' || rtrim(loi.loitit) as titre,
|
|
218
|
+
rtrim(typloi.typloiden) || ' ' || rtrim(loi.loiint) as titre_long,
|
|
219
|
+
rtrim(typloi.typloiden) || ' ' || rtrim(loi.loiintori) as titre_long_original,
|
|
220
|
+
'https://www.senat.fr/dossier-legislatif/' || loi.signet || '.html' as url,
|
|
221
|
+
loi.urgence,
|
|
222
|
+
rtrim(typloi.groupe) as code_nature_dossier,
|
|
223
|
+
rtrim(typloi.typloilib) as libelle_type_dossier,
|
|
224
|
+
rtrim(etaloi.etaloilib) as etat_dossier,
|
|
225
|
+
loi.url_an as url_dossier_assemblee_nationale,
|
|
226
|
+
loi.url_presart as url_presentation_articles,
|
|
227
|
+
loi.url_ordonnance as url_ordonnance,
|
|
228
|
+
loi.orgcod as code_organisme_resolution,
|
|
229
|
+
deccoc.deccoclib as libelle_decision_CoC,
|
|
230
|
+
to_char(loi.date_decision, 'YYYY-MM-DD') as date_decision_CoC,
|
|
231
|
+
loi.num_decision as num_decision_CoC,
|
|
232
|
+
loi.deccocurl as url_decision_CoC,
|
|
233
|
+
loi.doscocurl as url_dossier_CoC,
|
|
234
|
+
to_char(loi.saisine_date, 'YYYY-MM-DD') as date_saisine_CoC,
|
|
235
|
+
loi.saisine_par as condition_saisine_CoC,
|
|
236
|
+
to_char(loi.proaccdat, 'YYYY-MM-DD') as date_procedure_acceleree,
|
|
237
|
+
to_char(loi.proaccoppdat, 'YYYY-MM-DD') as date_opposition_procedure_acceleree,
|
|
238
|
+
to_char(loi.retproaccdat, 'YYYY-MM-DD') as date_retrait_procedure_acceleree,
|
|
239
|
+
to_char(loi.date_loi, 'YYYY-MM-DD') as date_promulgation,
|
|
240
|
+
case
|
|
241
|
+
when loi.loititjo is not null then rtrim(typloi.typloiden) || ' ' || rtrim(loi.loititjo)
|
|
242
|
+
else ''
|
|
243
|
+
end as titre_JO,
|
|
244
|
+
to_char(loi.loidatjo, 'YYYY-MM-DD') as date_publication_JO,
|
|
245
|
+
loi.loinumjo as numero_JO,
|
|
246
|
+
loi.url_jo as url_JO,
|
|
247
|
+
to_char(loi.loidatjo2, 'YYYY-MM-DD') as date_publication_JO_correctif_1,
|
|
248
|
+
loi.loinumjo2 as numero_JO_correctif_1,
|
|
249
|
+
loi.url_jo2 as url_JO_correctif_1,
|
|
250
|
+
to_char(loi.loidatjo3, 'YYYY-MM-DD') as date_publication_JO_correctif_2,
|
|
251
|
+
loi.loinumjo3 as numero_JO_correctif_2,
|
|
252
|
+
loi.url_jo3 as url_JO_correctif_2,
|
|
253
|
+
${buildLecturesSql("loi.loicod")} as lectures,
|
|
254
|
+
${buildThemesSql("loi.loicod")} as themes
|
|
255
|
+
from senat.dosleg_loi as loi
|
|
256
|
+
left join senat.dosleg_typloi as typloi on typloi.typloicod = loi.typloicod
|
|
257
|
+
left join senat.dosleg_etaloi as etaloi on etaloi.etaloicod = loi.etaloicod
|
|
258
|
+
left join senat.dosleg_deccoc as deccoc on deccoc.deccoccod = loi.deccoccod
|
|
259
|
+
`,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
export async function* findAllDossiers() {
|
|
263
|
+
const { query, params } = buildFindAllDossiersQuery();
|
|
264
|
+
for await (const row of streamUnsafeQuery(query, params)) {
|
|
265
|
+
if (!row.signet) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
yield {
|
|
269
|
+
...row,
|
|
270
|
+
signet: row.signet,
|
|
271
|
+
lectures: row.lectures ?? [],
|
|
272
|
+
themes: row.themes ?? [],
|
|
273
|
+
};
|
|
274
|
+
}
|
|
121
275
|
}
|
|
122
276
|
export function getCodeActeLecture(codeNatureDossier, typeLecture, assemblee) {
|
|
123
277
|
const codeAssemblee = assemblee === "Sénat" ? "SN" : assemblee === "Assemblée nationale" ? "AN" : null;
|
|
@@ -150,7 +304,16 @@ export function getCodeActeLecture(codeNatureDossier, typeLecture, assemblee) {
|
|
|
150
304
|
}
|
|
151
305
|
return null;
|
|
152
306
|
}
|
|
153
|
-
|
|
307
|
+
function getDateSortValue(value) {
|
|
308
|
+
if (!value) {
|
|
309
|
+
return Number.POSITIVE_INFINITY;
|
|
310
|
+
}
|
|
311
|
+
const timestamp = new Date(value).getTime();
|
|
312
|
+
return Number.isNaN(timestamp) ? Number.POSITIVE_INFINITY : timestamp;
|
|
313
|
+
}
|
|
314
|
+
function compareByDate(left, right) {
|
|
315
|
+
return getDateSortValue(left.date) - getDateSortValue(right.date);
|
|
316
|
+
}
|
|
154
317
|
function getPhasePrefix(lecture, assemblee) {
|
|
155
318
|
if (assemblee !== "Sénat")
|
|
156
319
|
return null;
|
|
@@ -159,38 +322,33 @@ function getPhasePrefix(lecture, assemblee) {
|
|
|
159
322
|
return "CMP";
|
|
160
323
|
if (typeLibelle.includes("nouvelle lecture"))
|
|
161
324
|
return "SNNLEC";
|
|
162
|
-
if (typeLibelle.includes("
|
|
325
|
+
if (typeLibelle.includes("définitive"))
|
|
163
326
|
return "SNLDEF";
|
|
164
327
|
if (typeLibelle.includes("unique"))
|
|
165
328
|
return "SNLUNI";
|
|
166
329
|
if (lecture.ordre_lecture) {
|
|
167
330
|
return `SN${lecture.ordre_lecture}`;
|
|
168
331
|
}
|
|
169
|
-
if (typeLibelle.includes("
|
|
332
|
+
if (typeLibelle.includes("première"))
|
|
170
333
|
return "SN1";
|
|
171
|
-
if (typeLibelle.includes("
|
|
334
|
+
if (typeLibelle.includes("deuxième") || typeLibelle.includes("seconde"))
|
|
172
335
|
return "SN2";
|
|
173
336
|
return "SN1";
|
|
174
337
|
}
|
|
175
338
|
export function buildActesLegislatifs(dossier) {
|
|
176
339
|
const actes = [];
|
|
177
340
|
const loiSignet = dossier.signet;
|
|
178
|
-
const lectures = dossier.lectures
|
|
341
|
+
const lectures = dossier.lectures ?? [];
|
|
179
342
|
for (const lecture of lectures) {
|
|
180
|
-
const lecturesAssemblee = lecture.lectures_assemblee
|
|
343
|
+
const lecturesAssemblee = lecture.lectures_assemblee ?? [];
|
|
181
344
|
for (const lecAss of lecturesAssemblee) {
|
|
182
|
-
// On ne traite que la partie SÉNAT
|
|
183
345
|
if (lecAss.assemblee !== "Sénat")
|
|
184
346
|
continue;
|
|
185
347
|
const phasePrefix = getPhasePrefix(lecture, lecAss.assemblee);
|
|
186
348
|
if (!phasePrefix)
|
|
187
349
|
continue;
|
|
188
|
-
|
|
189
|
-
const
|
|
190
|
-
const textesTries = [...textes].sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime());
|
|
191
|
-
// =================================================================
|
|
192
|
-
// A. DÉPÔT
|
|
193
|
-
// =================================================================
|
|
350
|
+
const textes = lecAss.textes ?? [];
|
|
351
|
+
const textesTries = [...textes].sort(compareByDate);
|
|
194
352
|
const depotTexte = textesTries.find((t) => (t.origine || "").toLowerCase().includes("déposé") ||
|
|
195
353
|
(t.origine || "").toLowerCase().includes("transmis") ||
|
|
196
354
|
t.ordre_origine === "0");
|
|
@@ -209,10 +367,7 @@ export function buildActesLegislatifs(dossier) {
|
|
|
209
367
|
code_organisme: null,
|
|
210
368
|
});
|
|
211
369
|
}
|
|
212
|
-
|
|
213
|
-
// B. COMMISSION (Rapports)
|
|
214
|
-
// =================================================================
|
|
215
|
-
const rapports = lecAss.rapports || [];
|
|
370
|
+
const rapports = lecAss.rapports ?? [];
|
|
216
371
|
for (const rap of rapports) {
|
|
217
372
|
if (rap.date) {
|
|
218
373
|
actes.push({
|
|
@@ -221,8 +376,7 @@ export function buildActesLegislatifs(dossier) {
|
|
|
221
376
|
libelle: `Rapport n°${rap.numero} de la commission`,
|
|
222
377
|
id: rap.id,
|
|
223
378
|
numero: rap.numero,
|
|
224
|
-
code_organisme: rap.code_organisme,
|
|
225
|
-
adoption: rap.adoption,
|
|
379
|
+
code_organisme: rap.code_organisme ?? null,
|
|
226
380
|
uid: `${loiSignet}-${phasePrefix}-COM`,
|
|
227
381
|
session: lecAss.session,
|
|
228
382
|
chambre: "SN",
|
|
@@ -231,20 +385,16 @@ export function buildActesLegislatifs(dossier) {
|
|
|
231
385
|
});
|
|
232
386
|
}
|
|
233
387
|
}
|
|
234
|
-
|
|
235
|
-
// C. SÉANCE PUBLIQUE
|
|
236
|
-
// =================================================================
|
|
237
|
-
const datesSeances = lecAss.dates_seances || [];
|
|
388
|
+
const datesSeances = lecAss.dates_seances ?? [];
|
|
238
389
|
if (datesSeances.length > 0) {
|
|
239
|
-
|
|
240
|
-
datesSeances.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime());
|
|
390
|
+
datesSeances.sort(compareByDate);
|
|
241
391
|
const premiereSeance = datesSeances[0];
|
|
242
392
|
if (premiereSeance && premiereSeance.date) {
|
|
243
393
|
actes.push({
|
|
244
|
-
// Champs pour buildParlementActeLegislatif
|
|
245
394
|
code_acte: `${phasePrefix}-DEBATS-SEANCE`,
|
|
246
395
|
date: premiereSeance.date,
|
|
247
|
-
libelle:
|
|
396
|
+
libelle: "Discussion en séance publique",
|
|
397
|
+
id: null,
|
|
248
398
|
uid: `${loiSignet}-${phasePrefix}-DEBATS-SEANCE`,
|
|
249
399
|
session: lecAss.session,
|
|
250
400
|
chambre: "SN",
|
|
@@ -253,9 +403,6 @@ export function buildActesLegislatifs(dossier) {
|
|
|
253
403
|
});
|
|
254
404
|
}
|
|
255
405
|
}
|
|
256
|
-
// =================================================================
|
|
257
|
-
// D. DÉCISION / VOTE
|
|
258
|
-
// =================================================================
|
|
259
406
|
const texteFinal = [...textesTries].reverse().find((t) => {
|
|
260
407
|
const origine = (t.origine || "").toLowerCase();
|
|
261
408
|
return (origine.includes("adopté") ||
|
|
@@ -289,18 +436,16 @@ export function buildActesLegislatifs(dossier) {
|
|
|
289
436
|
}
|
|
290
437
|
}
|
|
291
438
|
}
|
|
292
|
-
// =================================================================
|
|
293
|
-
// E. HORS LECTURE (CC & PROMULGATION)
|
|
294
|
-
// =================================================================
|
|
295
439
|
if (dossier.date_decision_CoC) {
|
|
296
440
|
actes.push({
|
|
297
441
|
code_acte: "CC",
|
|
298
442
|
date: dossier.date_decision_CoC,
|
|
299
|
-
libelle:
|
|
443
|
+
libelle: "Décision du Conseil constitutionnel",
|
|
300
444
|
id: dossier.url_decision_CoC,
|
|
301
445
|
uid: `${loiSignet}-CC`,
|
|
302
446
|
chambre: "AN",
|
|
303
447
|
signet_dossier: loiSignet,
|
|
448
|
+
code_organisme: null,
|
|
304
449
|
texte_url: dossier.url_decision_CoC || dossier.url_dossier_CoC,
|
|
305
450
|
});
|
|
306
451
|
}
|
|
@@ -308,7 +453,7 @@ export function buildActesLegislatifs(dossier) {
|
|
|
308
453
|
actes.push({
|
|
309
454
|
code_acte: "PROM",
|
|
310
455
|
date: dossier.date_promulgation,
|
|
311
|
-
libelle:
|
|
456
|
+
libelle: "Promulgation de la loi",
|
|
312
457
|
date_publication_JO: dossier.date_publication_JO,
|
|
313
458
|
numero_JO: dossier.numero_JO,
|
|
314
459
|
url_legifrance: dossier.url_JO,
|
|
@@ -316,11 +461,8 @@ export function buildActesLegislatifs(dossier) {
|
|
|
316
461
|
uid: `${loiSignet}-PROM`,
|
|
317
462
|
chambre: "AN",
|
|
318
463
|
signet_dossier: loiSignet,
|
|
464
|
+
code_organisme: null,
|
|
319
465
|
});
|
|
320
466
|
}
|
|
321
|
-
return actes.sort(
|
|
322
|
-
const dateA = new Date(a.date).getTime();
|
|
323
|
-
const dateB = new Date(b.date).getTime();
|
|
324
|
-
return dateA - dateB;
|
|
325
|
-
});
|
|
467
|
+
return actes.sort(compareByDate);
|
|
326
468
|
}
|