docs: guides d’interconnexion (Bodacc/Inforgreffe/Adresses) + spec UI Extraction; UI: liens PDF/JSON entités

This commit is contained in:
4NK IA 2025-09-18 15:48:26 +00:00
parent 42e5afceca
commit 39c452002a
5 changed files with 106 additions and 0 deletions

View File

@ -0,0 +1,20 @@
### Spécification UI Onglet Extraction
Objectifs:
- Éditer/supprimer les entités extraites (personnes/adresses/entreprises)
- Lancer la collecte externe par entité, afficher le statut, proposer le PDF/JSON
- Déclencher automatiquement la collecte si lentité na pas encore de données enrichies
Comportements:
- Bouton Collecter: passe en “Collecte…” (state=running) puis “OK” à la fin, avec lien “Voir PDF” et “Voir JSON”.
- Polling réduit: 1,5 s × 6 tentatives, puis “Relancer”.
- Boutons Enregistrer/Supprimer ne déclenchent pas de re-scan; ils patchent le cache uniquement.
Endpoints utilisés:
- POST /enrich/:kind → démarre la collecte
- GET /enrich/:kind/status → état et sources
- GET /enrich/:kind/pdf → PDF généré
Accessibilité:
- Actions groupées, labels explicites, tooltips daide, responsive.

View File

@ -0,0 +1,27 @@
### Adresses Cadastre / GéoRisque / GéoFoncier
Objectif: géocoder ladresse, identifier les parcelles cadastrales, lister les risques majeurs, et produire un PDF de synthèse avec liens sources.
Entrées minimales:
- street, postalCode, city, country ('France')
Accès:
- Géocodage: BAN/Adresse DataGouv (open data)
- GéoRisque: couches publiques par bbox
- Cadastre: plan cadastral open data (WMS/WMTS)
- GéoFoncier: page publique par lat/lon (scraping léger si autorisé)
Sortie (cache JSON):
```
extraction.entities.addresses[i].enrichment.address = {
state,
startedAt, finishedAt,
geocode: { lat, lon, score },
cadastre: [{ section, parcelle, commune }],
risks: [{ type, level, sourceUrl }],
pdfPath
}
```
PDF: synthèse (adresse normalisée, mini-carte, risques) + parcelles.

View File

@ -0,0 +1,27 @@
### Bodacc Gel des avoirs (Personnes)
Objectif: vérifier lexistence de mentions de gel des avoirs pour une identité (NOM/PRÉNOM), consigner les hits (références, lien source) et produire un PDF de synthèse.
Entrées minimales:
- lastName (obligatoire, uppercase recommandé)
- firstName (optionnel)
- métadonnées utiles: date de naissance, pays
Accès:
- Sans clé (temporaire): scraping léger avec politesse (User-Agent dédié, 1 req/s, backoff).
- Avec API (si disponible): clé API, endpoint de recherche nom/prénom.
Sortie (dans le cache JSON):
```
extraction.entities.persons[i].enrichment.bodacc = {
state: 'idle'|'running'|'done'|'error',
startedAt, finishedAt,
hits: [{ name, date, sourceUrl, matchScore }],
pdfPath
}
```
PDF: une page de synthèse (identité + hits) + annexes si autorisé.
Limites: homonymies; respecter le cadre légal (RGPD) et citer les sources.

View File

@ -0,0 +1,26 @@
### Inforgreffe Extrait Kbis (Entreprises) (+ Societe.com)
Objectif: récupérer une fiche société (forme, siren, dirigeants, adresse) et idéalement un extrait Kbis.
Entrées minimales:
- name (raison sociale) OU siren/siret
Accès:
- Sans clé (temporaire): recherche Societe.com (résumé public) et page Inforgreffe (si visible) en scraping léger (1 req/s, backoff).
- Avec API: clé/secret; endpoints “Profil entreprise”, “Kbis PDF”.
Sortie (cache JSON):
```
extraction.entities.companies[i].enrichment.company = {
state,
startedAt, finishedAt,
sources: ['societe_com','inforgreffe'],
profile: { siren, siret, forme, capital, adresse, dirigeants: [] },
pdfPath
}
```
PDF: synthèse (identité, dirigeants) + annexes Kbis si autorisé, sinon résumé horodaté + liens sources.
Conformité: respecter CGU, citer les sources, logs de collecte.

View File

@ -238,6 +238,8 @@ export default function ExtractionView() {
}, 1800)
}}
>{enriching[`p-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/person/pdf`} target="_blank" rel="noopener noreferrer">Voir PDF</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/person/status`} target="_blank" rel="noopener noreferrer">Voir JSON</Button>
<Button size="small" variant="outlined" disabled={savingKey===`p-${i}`}
onClick={async ()=>{
try{
@ -288,6 +290,8 @@ export default function ExtractionView() {
}, 1800)
}}
>{enriching[`a-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/address/pdf`} target="_blank" rel="noopener noreferrer">Voir PDF</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/address/status`} target="_blank" rel="noopener noreferrer">Voir JSON</Button>
<Button size="small" variant="outlined" disabled={savingKey===`a-${i}`}
onClick={async ()=>{
try{
@ -335,6 +339,8 @@ export default function ExtractionView() {
}, 1800)
}}
>{enriching[`c-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/company/pdf`} target="_blank" rel="noopener noreferrer">Voir PDF</Button>
<Button size="small" component="a" href={`/api/folders/${currentFolderHash}/files/${extraction.fileHash}/enrich/company/status`} target="_blank" rel="noopener noreferrer">Voir JSON</Button>
<Button size="small" variant="outlined" disabled={savingKey===`c-${i}`}
onClick={async ()=>{
try{