196 lines
4.3 KiB
TypeScript
196 lines
4.3 KiB
TypeScript
import type { RecordModel } from 'pocketbase';
|
|
|
|
export type UserRecord = RecordModel & {
|
|
email: string;
|
|
name?: string;
|
|
};
|
|
|
|
export type BienType =
|
|
| 'appartement'
|
|
| 'maison'
|
|
| 'immeuble'
|
|
| 'terrain'
|
|
| 'local_commercial'
|
|
| 'parking'
|
|
| 'cave'
|
|
| 'autre';
|
|
|
|
export type BienSource =
|
|
| 'particulier'
|
|
| 'agence'
|
|
| 'notaire'
|
|
| 'tribunal'
|
|
| 'succession'
|
|
| 'reseau'
|
|
| 'autre';
|
|
|
|
export type TypeBienFiscal = 'ancien' | 'neuf';
|
|
|
|
export type BienRecord = RecordModel & {
|
|
user: string;
|
|
etape?: string;
|
|
source_contact?: string;
|
|
titre?: string;
|
|
type_bien?: BienType;
|
|
adresse?: string;
|
|
code_postal?: string;
|
|
ville?: string;
|
|
latitude?: number;
|
|
longitude?: number;
|
|
surface_habitable?: number;
|
|
surface_totale?: number;
|
|
nb_pieces?: number;
|
|
nb_chambres?: number;
|
|
annee_construction?: number;
|
|
dpe_lettre?: string;
|
|
dpe_valeur?: number;
|
|
source?: BienSource;
|
|
url_annonce?: string;
|
|
statut?: string;
|
|
priorite?: number;
|
|
is_off_market?: boolean;
|
|
date_premiere_visite?: string;
|
|
date_offre?: string;
|
|
date_compromis?: string;
|
|
date_acte?: string;
|
|
description?: string;
|
|
points_forts?: string;
|
|
points_faibles?: string;
|
|
photo_principale?: string;
|
|
};
|
|
|
|
export type BienCreate = Partial<Omit<BienRecord, 'id' | 'created' | 'updated' | 'collectionId' | 'collectionName'>> & {
|
|
user: string;
|
|
ville: string;
|
|
code_postal: string;
|
|
type_bien: BienType;
|
|
};
|
|
|
|
export type BienUpdate = Partial<Omit<BienRecord, 'id' | 'user' | 'created' | 'updated' | 'collectionId' | 'collectionName'>>;
|
|
|
|
export type EtapePipelineRecord = RecordModel & {
|
|
user: string;
|
|
nom: string;
|
|
ordre: number;
|
|
couleur?: string;
|
|
is_terminal?: boolean;
|
|
};
|
|
|
|
export type ContactRecord = RecordModel & {
|
|
user: string;
|
|
nom: string;
|
|
prenom?: string;
|
|
societe?: string;
|
|
categorie: string;
|
|
specialite?: string;
|
|
email?: string;
|
|
telephone?: string;
|
|
telephone_2?: string;
|
|
ville?: string;
|
|
zone_intervention?: string;
|
|
note?: number;
|
|
recommande?: boolean;
|
|
taux_horaire?: number;
|
|
notes?: string;
|
|
is_favori?: boolean;
|
|
};
|
|
|
|
export type AnalyseFinanciereRecord = RecordModel & {
|
|
user: string;
|
|
bien: string;
|
|
prix_achat?: number;
|
|
type_bien_fiscal?: TypeBienFiscal;
|
|
frais_notaire?: number;
|
|
frais_agence_achat?: number;
|
|
budget_travaux?: number;
|
|
reserve_imprevus_pct?: number;
|
|
duree_portage_mois?: number;
|
|
taux_credit?: number;
|
|
taxe_fonciere_annuelle?: number;
|
|
charges_copropriete_mensuelle?: number;
|
|
prix_revente_cible?: number;
|
|
frais_agence_vente_pct?: number;
|
|
taux_impot?: number;
|
|
marge_brute?: number;
|
|
marge_brute_pct?: number;
|
|
marge_nette?: number;
|
|
marge_nette_pct?: number;
|
|
notes?: string;
|
|
/** Prix de revente estimé au m² (référence marché / grille perso). */
|
|
prix_revente_m2?: number;
|
|
};
|
|
|
|
export type AnalyseSecteurRecord = RecordModel & {
|
|
user: string;
|
|
ville: string;
|
|
notes?: string;
|
|
};
|
|
|
|
export type NoteProspectionRecord = RecordModel & {
|
|
user: string;
|
|
question: string;
|
|
reponse?: string;
|
|
categorie?: string;
|
|
};
|
|
|
|
export type GrillePrixTypeBien = 'appartement' | 'maison' | 'immeuble';
|
|
export type GrillePrixEtat = 'bon_etat' | 'a_renover' | 'travaux_lourds';
|
|
|
|
export type GrillePrixRecord = RecordModel & {
|
|
user: string;
|
|
type_bien: GrillePrixTypeBien;
|
|
etat: GrillePrixEtat;
|
|
prix_achat_m2: number;
|
|
prix_revente_m2: number;
|
|
marge_estimee_pct?: number;
|
|
ville?: string;
|
|
};
|
|
|
|
export type VisiteRecord = RecordModel & {
|
|
user: string;
|
|
bien: string;
|
|
date_visite: string;
|
|
duree_minutes?: number;
|
|
type_visite?: string;
|
|
avis_global?: string;
|
|
notes_brutes?: string;
|
|
rapport_genere?: string;
|
|
checklist_reponses?: Record<string, string>;
|
|
estimation_travaux_min?: number;
|
|
estimation_travaux_max?: number;
|
|
score_opportunite?: number;
|
|
photos?: string[];
|
|
};
|
|
|
|
export type TacheRecord = RecordModel & {
|
|
user: string;
|
|
bien?: string;
|
|
contact?: string;
|
|
titre: string;
|
|
description?: string;
|
|
type_tache?: string;
|
|
priorite?: number;
|
|
statut?: string;
|
|
date_echeance?: string;
|
|
date_rappel?: string;
|
|
is_urgent?: boolean;
|
|
};
|
|
|
|
export type TacheExpanded = TacheRecord & {
|
|
expand?: { bien?: BienRecord };
|
|
};
|
|
|
|
export type NoteRecord = RecordModel & {
|
|
user: string;
|
|
bien: string;
|
|
contenu: string;
|
|
type_note?: string;
|
|
};
|
|
|
|
export type DocumentRecord = RecordModel & {
|
|
user: string;
|
|
bien: string;
|
|
nom: string;
|
|
type_document?: string;
|
|
};
|