Skip to content

Commit

Permalink
Merge branch 'main' of github.com:betagouv/pitchou into rm-ts-to-jsdoc
Browse files Browse the repository at this point in the history
* 'main' of github.com:betagouv/pitchou:
  Réduction de la largeur tableau suivi (#139)
  Supprimer action attendue (#138)
  Stocker le département principal si ce dernier est rempli en cas d'absence des autres infos de localisation (#137)
  • Loading branch information
Ynote committed Jan 2, 2025
2 parents ad156b7 + 132acf5 commit 9181208
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 58 deletions.
19 changes: 19 additions & 0 deletions migrations/20241219145031_suppression-prochaine-action-attendue.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
export function up(knex) {
return knex.schema.alterTable('dossier', (table) => {
table.dropColumn('prochaine_action_attendue')
});
};

/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
export function down(knex) {
return knex.schema.alterTable('dossier', (table) => {
table.string('prochaine_action_attendue')
});
};
14 changes: 12 additions & 2 deletions outils/sync-démarches-simplifiées-88444.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import _schema88444 from '../data/démarches-simplifiées/schema-DS-88444.json'
/** @import {default as Personne, PersonneInitializer} from '../scripts/types/database/public/Personne.ts' */
/** @import {default as Entreprise} from '../scripts/types/database/public/Entreprise.ts' */
/** @import {AnnotationsPriveesDemarcheSimplifiee88444, DossierDemarcheSimplifiee88444} from '../scripts/types/démarches-simplifiées/DémarcheSimplifiée88444.ts' */
/** @import {DémarchesSimpliféesCommune, BaseChampDS, ChampDSCommunes, ChampDSDépartements, ChampDSRégions, Dossier as DossierDS, Traitement, Message } from '../scripts/types/démarches-simplifiées/apiSchema.ts' */
/** @import {DémarchesSimpliféesCommune, BaseChampDS, ChampDSCommunes, ChampDSDépartements, ChampDSRégions, Dossier as DossierDS, Traitement, Message, ChampDSDépartement, DémarchesSimpliféesDépartement } from '../scripts/types/démarches-simplifiées/apiSchema.ts' */
/** @import {SchemaDémarcheSimplifiée, ChampDescriptor} from '../scripts/types/démarches-simplifiées/schema.ts' */
/** @import {DossierPourSynchronisation} from '../scripts/types/démarches-simplifiées/DossierPourSynchronisation.ts' */

Expand Down Expand Up @@ -169,12 +169,16 @@ const dossiersPourSynchronisation = dossiersDS.map((
const champCommunes = champById.get(pitchouKeyToChampDS.get('Commune(s) où se situe le projet'))
/** @type {ChampDSDépartements} */
const champDépartements = champById.get(pitchouKeyToChampDS.get('Département(s) où se situe le projet'))
/** @type {ChampDSDépartement} */
const champDépartementPrincipal = champById.get(pitchouKeyToChampDS.get('Dans quel département se localise majoritairement votre projet ?'))
/** @type {ChampDSRégions} */
const champRégions = champById.get(pitchouKeyToChampDS.get('Région(s) où se situe le projet'))


/** @type {DémarchesSimpliféesCommune[] | undefined} */
let communes;

/** @type {DémarchesSimpliféesDépartement['code'][] | undefined} */
let départements;
let régions;

Expand Down Expand Up @@ -210,6 +214,12 @@ const dossiersPourSynchronisation = dossiersDS.map((
}
}

// Si la localisation avec les champs dédiés (surtout communes et départements) a échoué,
// se rabattre sur le champ du département principal s'il est présent
if(champDépartementPrincipal && (!départements || départements.length === 0)){
départements = [champDépartementPrincipal.departement.code]
}


/*
Demandeur
Expand Down Expand Up @@ -471,7 +481,7 @@ if(entreprisesInDossiersBySiret.size >= 1){
* et les objets Personne par leur id
*/

/** @type {Omit<DatabaseDossier, "id"|"phase"|"prochaine_action_attendue"|"prochaine_action_attendue_par"| "demandeur_personne_physique">[]} */
/** @type {Omit<DatabaseDossier, "id"|"phase"|"prochaine_action_attendue_par"| "demandeur_personne_physique">[]} */
const dossiers = dossiersPourSynchronisation.map(dossier => {
const {
déposant,
Expand Down
10 changes: 0 additions & 10 deletions scripts/front-end/affichageDossier.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,3 @@ export const prochaineActionAttenduePar = new Set([
"Autre",
"Personne"
])

export const prochaineActionAttendue = [
"traitement",
"lancement consultation",
"rédaction AP",
"Avis",
"DDEP",
"complément dossier",
"mémoire en réponse avis CNPN",
]
57 changes: 57 additions & 0 deletions scripts/front-end/components/TagEnjeu.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<script>
//@ts-check
/** @type {'écologique' | 'politique'} */
export let enjeu
// https://www.systeme-de-design.gouv.fr/composants-et-modeles/composants/tag/
/** @type {'SM' | 'MD'} */
export let taille = 'MD'
/** @type {string[]} */
export let classes = []
/** @type {Map<typeof enjeu, string>} */
const enjeuToClass = new Map([
['écologique', 'enjeu--écologique'],
['politique', 'enjeu--politique'],
])
/** @type {Map<typeof taille, string>} */
const tailleToClass = new Map([
['SM', 'fr-tag--sm'],
['MD', 'fr-tag--md']
])
$: allClasses = [
'fr-tag',
tailleToClass.get(taille),
enjeuToClass.get(enjeu),
...classes
].filter(x => !!x)
</script>

<p class={allClasses.join(' ')}>{enjeu}</p>

<style lang="scss">
$couleur-enjeu-écologique: var(--background-flat-green-emeraude);
$couleur-enjeu-politique: var(--background-flat-blue-ecume);
p{
white-space: nowrap;
}
p{
&.enjeu--écologique{
background-color: $couleur-enjeu-écologique;
color: var(--text-inverted-blue-ecume);
}
&.enjeu--politique{
background-color: $couleur-enjeu-politique;
color: var(--text-inverted-green-emeraude);
}
}
</style>
27 changes: 6 additions & 21 deletions scripts/front-end/components/screens/Dossier.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import Squelette from '../Squelette.svelte'
import TagPhase from '../TagPhase.svelte'
import TagEnjeu from '../TagEnjeu.svelte'
import {formatLocalisation, formatDéposant, phases, prochaineActionAttendue, prochaineActionAttenduePar} from '../../affichageDossier.js'
import {formatLocalisation, formatDéposant, phases, prochaineActionAttenduePar} from '../../affichageDossier.js'
import { modifierDossier } from '../../actions/dossier.js';
/** @import {DossierComplet, DossierPhase} from '../../../types/API_Pitchou.d.ts' */
Expand All @@ -24,7 +25,6 @@
/** @type {Partial<DossierComplet> & {phase: DossierPhase}} */
let dossierParams = {
phase: dossier.évènementsPhase[0].phase,
prochaine_action_attendue: dossier.prochaine_action_attendue,
// @ts-ignore
prochaine_action_attendue_par: dossier.prochaine_action_attendue_par,
}
Expand Down Expand Up @@ -98,7 +98,7 @@
{/if}
{#if afficherMessageSucces}
<div class="fr-alert fr-alert--success fr-mb-3w">
<p>La phase et la prochaine action attendue ont été mises à jour !</p>
<p>La phase et de qui est attendu la prochaine action ont été mises à jour !</p>
</div>
{/if}
<div class="fr-input-group">
Expand All @@ -123,19 +123,8 @@
{/each}
</select>
</div>
<div class="fr-input-group">
<label class="fr-label" for="prochaine_action_attendue">
Action
</label>

<select bind:value={dossierParams["prochaine_action_attendue"]} class="fr-select" id="prochaine_action_attendue">
{#each prochaineActionAttendue as action}
<option value={action}>{action}</option>
{/each}
</select>
</div>
<button class="fr-btn" type="submit">
Mettre à jour la phase ou la prochaine action
Mettre à jour la phase ou de qui est attendu la prochaine action
</button>
</form>
</section>
Expand All @@ -160,15 +149,11 @@
<li>
<strong>Enjeux</strong> :
{#if dossier.enjeu_politique}
<span class="fr-badge fr-badge--sm fr-badge--blue-ecume">
Enjeu politique
</span>
<TagEnjeu enjeu="politique" taille='SM' classes={["fr-mb-1w"]}></TagEnjeu>
{/if}

{#if dossier.enjeu_écologique}
<span class="fr-badge fr-badge--sm fr-badge--green-emeraude">
Enjeu écologique
</span>
<TagEnjeu enjeu="écologique" taille='SM' classes={["fr-mb-1w"]}></TagEnjeu>
{/if}
</li>
{/if}
Expand Down
21 changes: 11 additions & 10 deletions scripts/front-end/components/screens/SuiviInstruction.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import BarreRecherche from '../BarreRecherche.svelte'
import EnteteAvecTri from '../EnteteAvecTri.svelte'
import TagPhase from '../TagPhase.svelte'
import TagEnjeu from '../TagEnjeu.svelte'
import {formatLocalisation, formatDéposant, phases, prochaineActionAttenduePar} from '../../affichageDossier.js'
import {trouverDossiersIdCorrespondantsÀTexte} from '../../rechercherDansDossier.js'
import {retirerAccents} from '../../../commun/manipulationStrings.js'
Expand Down Expand Up @@ -348,8 +349,11 @@
</th>
<th>Enjeux</th>
<th>Rattaché au régime AE</th>
<th>Phase</th>
<th>Prochaine action attendue</th>
<th>
Phase<br>
<br>
Prochaine action attendue de
</th>
</tr>
</thead>
<tbody>
Expand All @@ -367,25 +371,22 @@
<td>{nom_dossier || ''}</td>
<td>
{#if enjeu_politique}
<p class="fr-badge fr-badge--sm fr-badge--blue-ecume">
Enjeu politique
</p>
<TagEnjeu enjeu="politique" taille='SM' classes={["fr-mb-1w"]}></TagEnjeu>
{/if}
{#if enjeu_écologique}
<p class="fr-badge fr-badge--sm fr-badge--green-emeraude">
Enjeu écologique
</p>
<TagEnjeu enjeu="écologique" taille='SM' classes={["fr-mb-1w"]}></TagEnjeu>
{/if}
</td>
<td>
{rattaché_au_régime_ae ? "oui" : "non"}
</td>
<td>
<TagPhase {phase} taille='SM'></TagPhase>
{#if prochaine_action_attendue_par}
<p class="fr-tag fr-tag--sm fr-mt-1w">{prochaine_action_attendue_par}</p>
{/if}
</td>
<td>{prochaine_action_attendue_par || ''}</td>
</tr>
{/each}
</tbody>
Expand Down
3 changes: 1 addition & 2 deletions scripts/server/database/dossier.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ export function dumpDossiers(dossiers, databaseConnection = directDatabaseConnec
colonnesÀfusionner = new Set([...colonnesÀfusionner, ...Object.keys(d)])
}

const colonnesÀNePasFusionner = ['id', 'phase', 'prochaine_action_attendue_par', 'prochaine_action_attendue']
const colonnesÀNePasFusionner = ['id', 'phase', 'prochaine_action_attendue_par']
for(const colonne of colonnesÀNePasFusionner){
colonnesÀfusionner.delete(colonne)
}
Expand Down Expand Up @@ -304,7 +304,6 @@ const colonnesDossierComplet = [

// prochaine action attendue
"prochaine_action_attendue_par",
"prochaine_action_attendue",

// déposant
"déposant.nom as déposant_nom",
Expand Down
5 changes: 1 addition & 4 deletions scripts/types/API_Pitchou.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ interface DossierComplémentPersonnesImpliquées {
/**
* On génère automatiquement les types des propriétés d'un Dossier via Kanel
* On a choisi d'utiliser un type `string` pour les propriétés
* 'phase', 'prochaine_action_attendue_par' et 'prochaine_action_attendue'
* 'phase' et 'prochaine_action_attendue_par'
* pour plus de flexibilité (au lieu d'un enum).
*
* On surcharge ici ces propriétés pour contraindre les valeurs de ces propriétés.
Expand All @@ -34,12 +34,9 @@ type DossierPhase = "Accompagnement amont" | "Vérification du dossier" | "Instr

type DossierProchaineActionAttenduePar = "Instructeur" | "CNPN/CSRPN" | "Pétitionnaire" | "Consultation du public" | "Autre administration" | "Autre" | "Personne";

type DossierProchaineActionAttendue = "traitement" | "lancement consultation" | "rédaction AP" | "Avis" | "DDEP" | "complément dossier" | "mémoire en réponse avis CNPN" | "à préciser" | "Prise en compte des mesures E et R" | null;

interface DossierPhaseEtProchaineAction {
phase: DossierPhase;
prochaine_action_attendue_par: DossierProchaineActionAttenduePar;
prochaine_action_attendue: DossierProchaineActionAttendue;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Dossier from "../database/public/Dossier.ts"
import { PersonneInitializer } from "../database/public/Personne.ts"
import { EntrepriseInitializer } from "../database/public/Entreprise.ts"

export type DossierPourSynchronisation = Omit<Dossier, "id" | "déposant" | "demandeur_personne_physique" | "demandeur_personne_morale" | "phase" | "prochaine_action_attendue" | "prochaine_action_attendue_par"> & {
export type DossierPourSynchronisation = Omit<Dossier, "id" | "déposant" | "demandeur_personne_physique" | "demandeur_personne_morale" | "phase" | "prochaine_action_attendue_par"> & {
déposant: PersonneInitializer,
demandeur_personne_physique: PersonneInitializer | undefined,
demandeur_personne_morale: EntrepriseInitializer | undefined
Expand Down
14 changes: 8 additions & 6 deletions scripts/types/démarches-simplifiées/apiSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,25 @@ export interface DémarchesSimpliféesCommune{
postalCode: string
}

export interface DémarchesSimpliféesDépartement {
name: string
code: string
}


interface BaseChampDSCommune extends BaseChampDS {
commune: DémarchesSimpliféesCommune
departement: DémarchesSimpliféesDépartement
}

export type ChampDSCommunes = BaseRepetitionChampsDS<BaseChampDSCommune>

export interface DémarchesSimpliféesDépartement {
name: string
code: string
}

interface BaseChampDSDépartement extends BaseChampDS {
export interface ChampDSDépartement extends BaseChampDS {
departement: DémarchesSimpliféesDépartement
}

export type ChampDSDépartements = BaseRepetitionChampsDS<BaseChampDSDépartement>
export type ChampDSDépartements = BaseRepetitionChampsDS<ChampDSDépartement>

export interface BaseChampDSRégion extends BaseChampDS {
region: {
Expand Down
3 changes: 1 addition & 2 deletions scripts/types/typeguards.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ function isDossier(x) {
(typeof x.historique_référence_arrêté_ministériel === "string" || x.historique_référence_arrêté_ministériel === null) &&
*/
(typeof x.rattaché_au_régime_ae === "boolean" || x.rattaché_au_régime_ae === null) &&
(typeof x.prochaine_action_attendue_par === "string" || x.prochaine_action_attendue_par === null) &&
(typeof x.prochaine_action_attendue === "string" || x.prochaine_action_attendue === null)
(typeof x.prochaine_action_attendue_par === "string" || x.prochaine_action_attendue_par === null)
)
}

Expand Down

0 comments on commit 9181208

Please sign in to comment.