Apparence
Company
Entreprise / organisation. legal_name est la raison sociale (le nom utilisé sur les devis et factures). Une company peut être rattachée à 0, 1 ou plusieurs Contact via Contact.company_ids[] (relation N-N).
- Path Firestore :
users/{userId}/companies/{companyId} - Source TS :
klapy-crm/src/types/index.ts
Interface
ts
interface Company {
id: string;
legal_name: string;
industry?: CompanyIndustry;
company_size?: CompanySize;
email?: string;
website?: string;
phone?: string;
siret?: string;
address?: Address;
notes?: string;
created_at: Timestamp;
updated_at: Timestamp;
}Champs
| Champ | Notes |
|---|---|
legal_name | Obligatoire. Raison sociale, utilisée sur devis / factures |
industry | Une des valeurs de COMPANY_INDUSTRY |
company_size | Une des valeurs de COMPANY_SIZE (TPE / PME / ETI / Grand groupe) |
email | Email de contact générique (pas un contact-personne, voir Contact) |
website | URL ou nom de domaine. Le préfixe https:// est ajouté à l'affichage si manquant |
phone | Numéro standard / accueil |
siret | 14 chiffres, pas de validation à l'écriture |
address | Adresse postale, voir sous-objet ci-dessous |
notes | Texte libre |
Inline-create depuis le form Contact
Le form Contact peut créer une company à la volée via une variante allégée du form (legal_name + adresse minimum). La fiche complète peut ensuite être enrichie depuis /companies ou la detail pane. Aucun champ n'est requis hors legal_name, ce qui permet de stager des fiches incomplètes.
Constantes liées
COMPANY_SIZE
Brackets INSEE simplifiés (4 valeurs) : tpe (TPE), pme (PME), eti (ETI), large (Grand groupe). Granularité volontairement courte : un CRM de freelance n'a pas besoin de plus.
COMPANY_INDUSTRY
33 secteurs B2B couvrant la plupart des clients qu'un vidéaste freelance peut rencontrer (Aérospatiale, Architecture, Automobile, Beauté, Bâtiment, Conseil, Éducation, Énergie, Finance, Santé, IT/E-Commerce, Médias, Industrie, Public, Retail, Transport, Voyage…) plus other en filet de sécurité. Liste exhaustive : voir COMPANY_INDUSTRY_LABELS dans klapy-crm/src/types/index.ts.
Sous-objet Address
ts
interface Address {
street?: string;
city?: string;
postal_code?: string;
country?: string;
}Tous les champs sont optionnels. Stocké en inline, jamais en document Firestore séparé.
Voir aussi
Contact: référence uneCompanyviacompany_ids[]+primary_company_idOpportunity: peut référencer uncompany_id(engagement professionnel vs particulier)UserProfile: utilise aussi le sous-objetAddress