recherche

This commit is contained in:
Bastien COIGNOUX
2026-05-04 21:52:51 +02:00
parent 432f8ce176
commit 2b8741de08
30 changed files with 2317 additions and 246 deletions

View File

@ -0,0 +1,103 @@
export type SectorTool = {
id: string;
title: string;
description: string;
url: string;
/** Nom Ionicons (outline). */
icon: string;
};
export const SECTOR_TOOLS: SectorTool[] = [
{
id: 'ma',
title: 'Prix au m² — Meilleurs Agents',
description: 'Prix moyen, évolution, comparaison communes',
url: 'https://www.meilleursagents.com/prix-immobilier/',
icon: 'stats-chart-outline',
},
{
id: 'dvf',
title: 'Transactions réelles — DVF',
description: 'Prix de vente réels, toutes transactions',
url: 'https://dvf.etalab.gouv.fr/',
icon: 'document-text-outline',
},
{
id: 'moteur',
title: 'Annonces actives — Moteur Immo',
description: 'Agrège tous les sites, historique baisses de prix',
url: 'https://www.moteurimmo.fr/',
icon: 'search-outline',
},
{
id: 'insee',
title: 'Données INSEE',
description: 'Revenus médians, démographie, vacance logements',
url: 'https://www.insee.fr/fr/statistiques/zones/1405599',
icon: 'business-outline',
},
{
id: 'geo',
title: 'Carte & PLU — Géoportail',
description: 'Transports, écoles, zones PLU, foncier',
url: 'https://www.geoportail.gouv.fr/',
icon: 'map-outline',
},
{
id: 'pappers',
title: 'Concurrence MDB — Pappers Immo',
description: 'Historique transactions, propriétaires, sociétés actives',
url: 'https://immobilier.pappers.fr/',
icon: 'people-outline',
},
];
export const OFF_MARKET_KEYWORDS: { id: string; label: string; text: string }[] = [
{
id: 'k1',
label: 'Pack division studios',
text: '"studio" + "lots réunis" + "vendu libre" + "deux studios"',
},
{
id: 'k2',
label: 'Multi-lots / réunion',
text: '"appartements réunis" + "configuration possible" + "immeuble" + "multi-lots"',
},
];
export const PROSPECTION_CHECKLIST: { id: string; label: string; question: string }[] = [
{ id: 'agent_immo', label: 'Agents immo', question: 'À combien ça part vraiment ? Cest rapide à vendre ?' },
{ id: 'notaire', label: 'Notaires', question: 'Quelles tendances dans vos actes récents ?' },
{ id: 'geometre', label: 'Géomètres', question: 'Divisions fréquentes sur ce secteur ?' },
{ id: 'banquier', label: 'Banquiers', question: 'Vous financez souvent des projets ici ?' },
{ id: 'mdb', label: 'Autres MDB', question: 'Tu trouves facilement sur ce secteur ?' },
{ id: 'artisan', label: 'Artisans', question: 'Vous travaillez beaucoup dans ce quartier ?' },
];
export const CATEGORIE_NOTES_PROSPECTION = 'recherche_opportunites';
export const LEGI_L151_36 =
'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000031211239';
export const LEGI_L152_6 =
'https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000043978020/2021-08-25';
export function meilleursAgentsUrlForVille(ville: string): string {
const v = ville.trim();
if (!v) return SECTOR_TOOLS[0].url;
return `https://www.meilleursagents.com/prix-immobilier/${encodeURIComponent(v)}/`;
}
export function dvfSearchUrl(ville: string): string {
const v = ville.trim();
if (!v) return 'https://dvf.etalab.gouv.fr/';
return `https://dvf.etalab.gouv.fr/?q=${encodeURIComponent(v)}`;
}
export function geoportailBienUrl(lat: number, lon: number): string {
return `https://www.geoportail.gouv.fr/?lon=${lon}&lat=${lat}&z=17`;
}
export function marginPctFromPrices(achat: number, revente: number): number | null {
if (!Number.isFinite(achat) || !Number.isFinite(revente) || achat <= 0) return null;
return ((revente - achat) / achat) * 100;
}

12
app/constants/uiTheme.ts Normal file
View File

@ -0,0 +1,12 @@
/** Palette terrain / extérieur — contraste élevé, actions distinctes. */
export const UI = {
primary: '#1D4ED8',
success: '#16A34A',
warning: '#D97706',
danger: '#DC2626',
screen: '#F1F5F9',
card: '#FFFFFF',
text: '#0F172A',
textMuted: '#475569',
border: '#CBD5E1',
} as const;