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 ? C’est 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; }