92 lines
2.3 KiB
TypeScript
92 lines
2.3 KiB
TypeScript
/**
|
|
* Types V2 - Carte des réseaux de bifurcation
|
|
* Source : public/data/reseaux-bifurcation.json
|
|
*/
|
|
|
|
export interface StructureV2 {
|
|
id: string
|
|
nom: string
|
|
url: string
|
|
pays: string
|
|
ville: string
|
|
famille_principale: 1 | 2 | 3 | 4 | 5
|
|
familles_secondaires?: number[]
|
|
hashtags: string[]
|
|
type_principal: string
|
|
badges: {
|
|
centre_ressources: boolean
|
|
mouvement_manifeste: boolean
|
|
contre_pouvoir_spatial: boolean
|
|
f6_recherche_politique: boolean
|
|
}
|
|
description_courte: string
|
|
description_longue: string
|
|
pensees: { id: string; label: string; confiance: string }[]
|
|
sources: { type: string; titre: string; url: string }[]
|
|
already_in_v1: boolean
|
|
eligible_v2: boolean
|
|
// Geocoords (ajoutés par géocodage - peut être null)
|
|
latitude?: number | null
|
|
longitude?: number | null
|
|
}
|
|
|
|
export interface ReseauxBifurcationData {
|
|
version: string
|
|
meta: {
|
|
total_structures: number
|
|
total_projets_emblematiques: number
|
|
total_edges_graphe: number
|
|
familles: { id: number; label: string; color: string }[]
|
|
hashtags_officiels: string[]
|
|
}
|
|
structures: StructureV2[]
|
|
projets: ProjetEmblematique[]
|
|
graphe: { edges: GrapheEdge[] }
|
|
}
|
|
|
|
export interface ProjetEmblematique {
|
|
id: string
|
|
nom: string
|
|
structure_parent: string
|
|
annee?: number
|
|
lieu?: string
|
|
geocoords?: { lat: number; lng: number } | null
|
|
description: string
|
|
url?: string | null
|
|
tags: string[]
|
|
}
|
|
|
|
export interface GrapheEdge {
|
|
source: string
|
|
target: string
|
|
types: string[]
|
|
score: number
|
|
evidence: string
|
|
}
|
|
|
|
// Mapping StructureV2 vers le format attendu par NavMap (interface Org)
|
|
// NavMap attend { Id, latitude, longitude, nom, ... }
|
|
export function structureToMapOrg(s: StructureV2, index: number): {
|
|
Id: number
|
|
nom: string
|
|
latitude?: number | null
|
|
longitude?: number | null
|
|
prioritaire?: boolean
|
|
famille_principale?: number
|
|
hashtags?: string[]
|
|
type_principal?: string
|
|
description_courte?: string
|
|
} {
|
|
return {
|
|
Id: index,
|
|
nom: s.nom,
|
|
latitude: s.latitude,
|
|
longitude: s.longitude,
|
|
prioritaire: s.badges?.centre_ressources || s.badges?.mouvement_manifeste || s.badges?.contre_pouvoir_spatial,
|
|
famille_principale: s.famille_principale,
|
|
hashtags: s.hashtags,
|
|
type_principal: s.type_principal,
|
|
description_courte: s.description_courte,
|
|
}
|
|
}
|