📍Skutr Docs — Jour 12. Multi-organisations

Hier — précision juridique des prompts et adaptation mobile. Aujourd'hui — le freelance n'est plus lié à un seul IP.


🏢 Organisations — une entité séparée

Auparavant, les coordonnées étaient stockées dans le profil utilisateur. Un seul INN, un seul nom, un seul compte bancaire. Mais un freelance peut être auto-entrepreneur Ivanov I.I. pour les petites commandes et IP Ivanov pour les grosses. Ou fermer son IP et passer en auto-entrepreneuriat — et les anciens documents doivent conserver les anciennes coordonnées.

J'ai sorti les organisations dans une table séparée. 12 champs, relation 1:N avec l'utilisateur, drapeau « par défaut ». La migration a automatiquement transféré les données existantes du profil vers la première organisation — aucun utilisateur n'a rien perdu.

API CRUD, page de gestion dans le compte, sélection de l'organisation dans les quatre formulaires de documents. Bot : « Mes coordonnées » est devenu « Mes organisations » — liste avec ⭐️ pour la principale, ajout de nouvelles, basculement entre elles.



🔀 Choix de l'organisation lors de la création d'un document

Si une seule organisation — tout fonctionne comme avant, l'utilisateur ne remarque rien. Si deux ou plus — avant de créer une facture, un acte, un devis ou un contrat, une étape « Choisissez l'organisation exécutante » apparaît avec des boutons inline.
L'organisation choisie est transmise au générateur et enregistrée dans le document.

Architecture : _maybe_choose_org() — un helper unique pour les quatre FSM. Un seul pattern, quatre points d'appel, zéro duplication.



✏️ Édition de tous les documents dans le compte

Les factures et actes pouvaient être modifiés après création. Les devis et contrats — uniquement lors de la création dans la modale d'aperçu. Après sauvegarde — lecture seule. Pourquoi ? Parce que canEdit ne vérifiait que invoice et act.

J'ai transféré la logique complète d'édition de la modale vers la page du document. Devis : titre, introduction, sections avec points, coût par poste avec calcul automatique, durée de validité, étapes suivantes. Contrat : préambule, sections avec paragraphes (ajout/suppression), montant. Maintenant, un document créé par voix dans le bot à 2 heures du matin peut être tranquillement édité le matin dans le compte.



🧹 Trois petits détails qui agaçaient

Badges sans étiquette. Les documents du bot via « documents rapides » étaient créés avec source="quick". Le frontend ne connaissait que "bot" et "web". 27 documents étaient sans étiquette. Changé en "bot", mis à jour les existants avec un seul UPDATE.

Navigation retour. Tu entres dans la section « Factures », tu ouvres une facture spécifique, tu cliques « Vers les documents » — tu arrives dans « Tous ». Maintenant le bouton dit « Vers les factures » et retourne dans la section factures. Paramètre de requête ?tab=invoice — simple et fiable.

Recherche dans le bot. Bouton « 🔍 Rechercher un document » dans « Mes documents ». Pourtant les documents sont déjà divisés par sections, et dans le compte il y a une recherche complète avec filtres. Supprimé. Moins de boutons — moins de charge cognitive.



💡 Insight du jour

Les multi-organisations ne sont pas une fonctionnalité pour les entreprises. C'est la réalité du freelancing. Un auto-entrepreneur ouvre un IP — et il a besoin des deux ensembles de coordonnées. Un designer travaille en tant que personne physique pour des clients russes et en tant qu'IP pour des clients étrangers. Si le produit attache une personne à une seule entité juridique — il ne comprend pas son public.



🎯 Bilan du jour : modèle Organization avec API CRUD et migration, sélection de l'organisation dans le bot si 2+ org, édition complète des devis et contrats dans le compte, correction des badges source, navigation par onglets, nettoyage UI.



#buildinpublic #skutrdocs #AI #freelance #autoentrepreneurs #startup #SaaS #produit #UX