@atlashub/smartstack-cli 4.69.0 → 4.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
| Question | Si la réponse est vague | Relance recommandée |
|
|
89
89
|
|----------|------------------------|---------------------|
|
|
90
90
|
| Q2.1 (utilisateurs) | Un seul type mentionné | "Pensez aux différents moments de la journée : qui saisit ? Qui consulte les rapports ? Qui gère les cas particuliers ?" |
|
|
91
|
-
| Q2.1 (utilisateurs) | Utilisateurs hors entreprise mentionnés (clients, fournisseurs, partenaires) | "
|
|
91
|
+
| Q2.1 (utilisateurs) | Utilisateurs hors entreprise mentionnés (clients, fournisseurs, partenaires) | "Quelles données ces utilisateurs externes doivent-ils consulter ou créer ? Quelles restrictions par rapport aux internes ?" |
|
|
92
92
|
| Q2.5 (tâches) | Tâches génériques | "Quand il arrive le matin et ouvre le système, quelle est sa première action ?" |
|
|
93
93
|
| Q2.9 (restrictions) | Réponse ambiguë | "Un employé voit-il les données salariales ? Un manager voit-il uniquement son équipe ou toute l'entreprise ?" |
|
|
94
94
|
| Q2.13 (indispensable) | Tout est indispensable | "Si vous ne pouviez garder que 3 fonctionnalités pour un premier lancement, lesquelles ?" |
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
| Tout est vital (> 10 vitaux) | Classification non réfléchie | Appliquer le test de classification : "Si on enlevait X, le système aurait-il encore de la valeur ?" |
|
|
105
105
|
| Aucune exclusion identifiée | Périmètre non borné | "Y a-t-il des aspects qui relèvent d'un autre projet ou d'une version future ?" |
|
|
106
106
|
| Parcours linéaire sans alternative | Seul le cas idéal est décrit | "Que se passe-t-il à l'étape X si la condition Y n'est pas remplie ?" |
|
|
107
|
-
| "Nos clients doivent pouvoir..." ou "Les fournisseurs voient..." | Utilisateurs externes accédant au système |
|
|
107
|
+
| "Nos clients doivent pouvoir..." ou "Les fournisseurs voient..." | Utilisateurs externes accédant au système | Classifier auto en 4b-bis. Approfondir les RÈGLES MÉTIER : quelles données, quelles actions, quelles restrictions ? |
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
@@ -316,33 +316,31 @@ EXTERNAL_SIGNALS = ["client", "customer", "fournisseur", "supplier", "partenaire
|
|
|
316
316
|
"organisation cliente"]
|
|
317
317
|
```
|
|
318
318
|
|
|
319
|
+
> **SmartStack gère nativement les utilisateurs externes :**
|
|
320
|
+
> - **Person Extension Pattern** : User → Employee, Contact, Customer via `UserId` FK
|
|
321
|
+
> - **Organisation Extension** : Organisation → Client, Supplier via `OrganisationId` FK
|
|
322
|
+
> - **Multi-tenant** : portail et interne déployés sur des tenants séparés automatiquement
|
|
323
|
+
|
|
319
324
|
SI un profil stakeholder match EXTERNAL_SIGNALS :
|
|
320
325
|
→ Stocker dans `{pre_analysis}`: `_portalDetected: true`
|
|
321
|
-
→
|
|
326
|
+
→ **Auto-classifier** chaque stakeholder détecté : `audience: "internal" | "external" | "shared"`
|
|
327
|
+
→ **Auto-déduire** `_portalMode` :
|
|
322
328
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
options:
|
|
329
|
-
- label: "{language == 'fr' ? 'Oui, portail + interne' : 'Yes, portal + internal'}"
|
|
330
|
-
description: "{language == 'fr' ? 'L\'application servira des utilisateurs internes ET externes via un portail dédié' : 'The app will serve internal AND external users via a dedicated portal'}"
|
|
331
|
-
- label: "{language == 'fr' ? 'Non, interne uniquement' : 'No, internal only'}"
|
|
332
|
-
description: "{language == 'fr' ? 'Seuls les employés internes utiliseront l\'application' : 'Only internal employees will use the application'}"
|
|
333
|
-
- label: "{language == 'fr' ? 'Non, portail uniquement' : 'No, portal only'}"
|
|
334
|
-
description: "{language == 'fr' ? 'L\'application est exclusivement destinée aux utilisateurs externes' : 'The application is exclusively for external users'}"
|
|
335
|
-
```
|
|
329
|
+
| Stakeholders détectés | `_portalMode` |
|
|
330
|
+
|----------------------|---------------|
|
|
331
|
+
| Internes + Externes | `"dual"` |
|
|
332
|
+
| Uniquement externes | `"portal-only"` |
|
|
333
|
+
| Uniquement internes | `"internal-only"` |
|
|
336
334
|
|
|
337
|
-
|
|
338
|
-
|---------|--------|
|
|
339
|
-
| **Oui, portail + interne** | `_portalMode = "dual"` → Follow-up : classifier chaque stakeholder comme `audience: "internal" \| "external" \| "shared"` |
|
|
340
|
-
| **Portail uniquement** | `_portalMode = "portal-only"` |
|
|
341
|
-
| **Interne uniquement** | `_portalMode = "internal-only"` (défaut, pas d'action supplémentaire) |
|
|
335
|
+
→ **Informer le client** (statement, PAS de question) :
|
|
342
336
|
|
|
343
|
-
|
|
337
|
+
```
|
|
338
|
+
"{language == 'fr'
|
|
339
|
+
? 'J\'ai détecté des utilisateurs externes ({profiles}). SmartStack déploiera automatiquement un portail dédié ({_portalMode}) avec isolation multi-tenant. Les extensions Person/Organisation gèrent nativement la séparation des profils internes et externes.'
|
|
340
|
+
: 'I detected external users ({profiles}). SmartStack will automatically deploy a dedicated portal ({_portalMode}) with multi-tenant isolation. Person/Organisation extensions natively handle the separation of internal and external profiles.'}"
|
|
341
|
+
```
|
|
344
342
|
|
|
345
|
-
SI aucun profil ne match EXTERNAL_SIGNALS → `_portalMode = "internal-only"` (défaut silencieux, rien à
|
|
343
|
+
SI aucun profil ne match EXTERNAL_SIGNALS → `_portalMode = "internal-only"` (défaut silencieux, rien à informer).
|
|
346
344
|
|
|
347
345
|
#### 4c. Functional Scope (ALWAYS — from `questionnaire/02-stakeholders-scope.md`)
|
|
348
346
|
|