docs: guides d’interconnexion (Bodacc/Inforgreffe/Adresses) + spec UI Extraction; UI: liens PDF/JSON entités
This commit is contained in:
parent
42e5afceca
commit
39c452002a
20
docs/extraction_ui_spec.md
Normal file
20
docs/extraction_ui_spec.md
Normal 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 l’entité n’a 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 d’aide, responsive.
|
||||||
|
|
||||||
27
docs/interconnexions/adresses.md
Normal file
27
docs/interconnexions/adresses.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
### Adresses – Cadastre / GéoRisque / GéoFoncier
|
||||||
|
|
||||||
|
Objectif: géocoder l’adresse, 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.
|
||||||
|
|
||||||
27
docs/interconnexions/bodacc.md
Normal file
27
docs/interconnexions/bodacc.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
### Bodacc – Gel des avoirs (Personnes)
|
||||||
|
|
||||||
|
Objectif: vérifier l’existence 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.
|
||||||
|
|
||||||
26
docs/interconnexions/inforgreffe.md
Normal file
26
docs/interconnexions/inforgreffe.md
Normal 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.
|
||||||
|
|
||||||
@ -238,6 +238,8 @@ export default function ExtractionView() {
|
|||||||
}, 1800)
|
}, 1800)
|
||||||
}}
|
}}
|
||||||
>{enriching[`p-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
|
>{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}`}
|
<Button size="small" variant="outlined" disabled={savingKey===`p-${i}`}
|
||||||
onClick={async ()=>{
|
onClick={async ()=>{
|
||||||
try{
|
try{
|
||||||
@ -288,6 +290,8 @@ export default function ExtractionView() {
|
|||||||
}, 1800)
|
}, 1800)
|
||||||
}}
|
}}
|
||||||
>{enriching[`a-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
|
>{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}`}
|
<Button size="small" variant="outlined" disabled={savingKey===`a-${i}`}
|
||||||
onClick={async ()=>{
|
onClick={async ()=>{
|
||||||
try{
|
try{
|
||||||
@ -335,6 +339,8 @@ export default function ExtractionView() {
|
|||||||
}, 1800)
|
}, 1800)
|
||||||
}}
|
}}
|
||||||
>{enriching[`c-${i}`]==='running' ? 'Collecte…' : 'Collecter'}</Button>
|
>{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}`}
|
<Button size="small" variant="outlined" disabled={savingKey===`c-${i}`}
|
||||||
onClick={async ()=>{
|
onClick={async ()=>{
|
||||||
try{
|
try{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user