225 lines
9.7 KiB
Markdown
225 lines
9.7 KiB
Markdown
# Suivi Bundle Deep Dive
|
|
|
|
## Ubiquitous Language
|
|
|
|
- **Suivi salarié**: umbrella follow-up workflow for active/exited employees.
|
|
Paths: `src/Uriae/SuiviBundle/Controller/SuiviController.php`, `src/Uriae/SuiviBundle/Resources/translations/messages.fr.yml`
|
|
- **Action**: abstract intervention (`dateDebut`, `duree`, `typeAction`, `commentaire`, `structure`).
|
|
Path: `src/Uriae/SuiviBundle/Entity/Action.php`
|
|
- **Accompagnement**: socio-professional support action with objective/result/encadrants/partenaires.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Accompagnement.php`
|
|
- **Evaluation**: employee assessment action with notes and validation lifecycle.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Evaluation.php`
|
|
- **Note**: score item per savoir with bounded values.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Note.php`
|
|
- **Savoir taxonomy** (`TypeSavoir`, `CategorieSavoir`, `Savoir`): evaluation referential tree.
|
|
Paths: `src/Uriae/SuiviBundle/Entity/TypeSavoir.php`, `src/Uriae/SuiviBundle/Entity/CategorieSavoir.php`, `src/Uriae/SuiviBundle/Entity/Savoir.php`
|
|
- **Action taxonomy** (`AxeTypeAction`, `CategorieTypeAction`, `TypeAction`): insertion action referential tree.
|
|
Paths: `src/Uriae/SuiviBundle/Entity/AxeTypeAction.php`, `src/Uriae/SuiviBundle/Entity/CategorieTypeAction.php`, `src/Uriae/SuiviBundle/Entity/TypeAction.php`
|
|
- **FormationInterne** + **ParticipationFormation**: training and attendee participation.
|
|
Paths: `src/Uriae/SuiviBundle/Entity/FormationInterne.php`, `src/Uriae/SuiviBundle/Entity/ParticipationFormation.php`
|
|
- **Potentiel**: employability/motivation/mobility profile.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Potentiel.php`
|
|
- **Problematique**: insertion issue lifecycle and resolution.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Problematique.php`
|
|
- **Habilitation**: employee certification/authorization with expiry.
|
|
Path: `src/Uriae/SuiviBundle/Entity/Habilitation.php`
|
|
- **RDV** and **Event**: appointment and event timeline entries.
|
|
Paths: `src/Uriae/SuiviBundle/Entity/Rdv.php`, `src/Uriae/SuiviBundle/Entity/Event.php`
|
|
|
|
## Domain Core
|
|
|
|
- **Practical root today: `Employee` (outside Suivi)**
|
|
- Most Suivi entities attach to `Employee` and are also maintained from Employee-side relations.
|
|
- Path: `src/Uriae/EmployeeBundle/Entity/Employee.php`
|
|
|
|
- **Action hierarchy**
|
|
- Polymorphic root `Action` with concrete subclasses:
|
|
- `Accompagnement`
|
|
- `Evaluation`
|
|
- `FormationInterne`
|
|
- Path: `src/Uriae/SuiviBundle/Entity/Action.php`
|
|
|
|
- **Evaluation subgraph**
|
|
- `Evaluation` + `Note` collection and validation lifecycle.
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/Evaluation.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Note.php`
|
|
|
|
- **Formation subgraph**
|
|
- `FormationInterne` + participants + costs.
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/FormationInterne.php`
|
|
- `src/Uriae/SuiviBundle/Entity/ParticipationFormation.php`
|
|
|
|
- **Potentiel and conformite subgraphs**
|
|
- `Potentiel`, `Problematique`, `Habilitation`.
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/Potentiel.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Problematique.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Habilitation.php`
|
|
|
|
- **Reference models**
|
|
- Action and savoir taxonomies are mutable references with strong structure-level administration.
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/TypeAction.php`
|
|
- `src/Uriae/SuiviBundle/Entity/CategorieTypeAction.php`
|
|
- `src/Uriae/SuiviBundle/Entity/AxeTypeAction.php`
|
|
- `src/Uriae/SuiviBundle/Entity/TypeSavoir.php`
|
|
- `src/Uriae/SuiviBundle/Entity/CategorieSavoir.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Savoir.php`
|
|
|
|
## Invariants / Concistency
|
|
|
|
- `src/Uriae/SuiviBundle/Entity/Note.php`
|
|
- Note value must be numeric and in allowed range.
|
|
|
|
- `src/Uriae/SuiviBundle/Entity/Evaluation.php`
|
|
- New evaluation starts unvalidated.
|
|
- Note initialization uses selected categories and default non-evaluated value.
|
|
|
|
- `src/Uriae/SuiviBundle/Repository/EvaluationRepository.php`
|
|
- Creation flow expects previous evaluations to be validated.
|
|
- First/last evaluation selection is based on validated subset.
|
|
|
|
- `src/Uriae/SuiviBundle/Controller/EvaluationController.php`
|
|
- Blocks new evaluation when prior validations are pending.
|
|
|
|
- `src/Uriae/SuiviBundle/Model/Bilan/CategoryNode.php`
|
|
- Non-evaluated notes ignored from score computation.
|
|
|
|
- `src/Uriae/SuiviBundle/Model/Bilan/FamilyNode.php`
|
|
- Category score threshold drives strong/weak point classification.
|
|
|
|
- `src/Uriae/SuiviBundle/Entity/FormationInterne.php`
|
|
- `src/Uriae/SuiviBundle/Form/Validator/Collection/ArrayLength.php`
|
|
- Formation must have at least one participant.
|
|
|
|
- `src/Uriae/SuiviBundle/Entity/Action.php`
|
|
- `src/Uriae/SuiviBundle/Entity/ParticipationFormation.php`
|
|
- Duration fields (`heures/minutes`) recompute total duration via lifecycle logic.
|
|
|
|
- `src/Uriae/SuiviBundle/Repository/TypeActionRepository.php`
|
|
- Accompagnement-compatible action types are axis-filtered and category-filtered.
|
|
|
|
- `src/Uriae/SuiviBundle/Form/Type/FormationInterneType.php`
|
|
- Formation action type constrained to specific axis.
|
|
|
|
- `src/Uriae/SuiviBundle/Entity/TypeAction.php`
|
|
- `structure = null` means global type; non-null means structure-owned type.
|
|
|
|
- `src/Uriae/StructureBundle/Controller/GrilleEvaluationController.php`
|
|
- Prevents deleting a savoir when notes exist.
|
|
|
|
- `src/Uriae/SuiviBundle/Repository/HabilitationRepository.php`
|
|
- Expiry alerts depend on active habilitation + employee state.
|
|
|
|
- `src/Uriae/SuiviBundle/Command/DesactivateHabilitationsCommand.php`
|
|
- Batch deactivation for outdated active habilitations.
|
|
|
|
- `src/Uriae/SuiviBundle/Repository/RdvRepository.php`
|
|
- SMS target list filtered by send flag + next-day date rule.
|
|
|
|
|
|
## Cross-context Dependencies
|
|
|
|
- **Suivi <-> Employee (strong coupling)**
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/*`
|
|
- `src/Uriae/EmployeeBundle/Entity/Employee.php`
|
|
- Direction idea: Suivi depends on Employee identity/reference boundary, not shared rich object graph.
|
|
|
|
- **Suivi <-> Structure**
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/Action.php`
|
|
- `src/Uriae/SuiviBundle/Entity/TypeAction.php`
|
|
- `src/Uriae/SuiviBundle/Entity/CategorieSavoir.php`
|
|
- `src/Uriae/StructureBundle/Controller/GrilleEvaluationController.php`
|
|
- `src/Uriae/StructureBundle/Controller/ReferentielInsertionController.php`
|
|
- Direction idea: explicit catalog management contract instead of direct structure controllers mutating Suivi references.
|
|
|
|
- **Suivi -> Union**
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/FormationInterne.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Accompagnement.php`
|
|
- Direction idea: consume Union referentials through explicit read model/ACL.
|
|
|
|
- **Suivi -> User**
|
|
- Paths:
|
|
- `src/Uriae/SuiviBundle/Entity/Rdv.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Event.php`
|
|
- `src/Uriae/SuiviBundle/Entity/Habilitation.php`
|
|
- Direction idea: reference user identity and role policy via dedicated boundary service.
|
|
|
|
## DDD Slicing
|
|
|
|
- **Subcontexts**
|
|
- `suivi-actions` (`Accompagnement`, `Evaluation`, `FormationInterne`, `ParticipationFormation`)
|
|
- `suivi-potentiel` (`Potentiel`, `Problematique`, projet/experience profile)
|
|
- `suivi-interactions` (`Rdv`, `Event`)
|
|
- `suivi-conformite` (`Habilitation`)
|
|
- `suivi-referentiels` (taxonomy aggregates)
|
|
|
|
- **Aggregates (candidate)**
|
|
- `EvaluationAggregate` (evaluation + notes).
|
|
- `FormationInterneAggregate` (formation + participations + costs).
|
|
- `AccompagnementAggregate`.
|
|
- `PotentielAggregate`.
|
|
- `HabilitationAggregate`.
|
|
- `RdvAggregate`.
|
|
- `EventAggregate`.
|
|
|
|
- **Domain services (candidate)**
|
|
- `EvaluationPolicyService`.
|
|
- `FormationParticipationService`.
|
|
- `HabilitationExpiryService`.
|
|
- `RdvNotificationPolicy`.
|
|
|
|
- **Repository interfaces (domain-facing)**
|
|
- `EvaluationRepository`, `AccompagnementRepository`, `FormationInterneRepository`.
|
|
- `HabilitationRepository`, `RdvRepository`, `ProblematiqueRepository`.
|
|
- `TypeActionCatalog`, `SavoirCatalog`.
|
|
|
|
- **Domain events (candidate)**
|
|
- `EvaluationCreated`, `EvaluationValidated`.
|
|
- `FormationParticipantAdded`, `FormationParticipantRemoved`.
|
|
- `HabilitationExpired`, `HabilitationDeactivated`.
|
|
- `RdvPlanned`, `RdvSmsRequested`.
|
|
|
|
- **Value objects (candidate)**
|
|
- `DurationMinutes`.
|
|
- `NoteValue`.
|
|
- `Avancement`.
|
|
- `ResolutionMode`.
|
|
- `ActionTypeCode`.
|
|
- `StructureScope`.
|
|
|
|
## Reading Order
|
|
|
|
1. `src/Uriae/EmployeeBundle/Entity/Employee.php`
|
|
2. `src/Uriae/SuiviBundle/Entity/Action.php`
|
|
3. `src/Uriae/SuiviBundle/Entity/Evaluation.php`
|
|
4. `src/Uriae/SuiviBundle/Entity/Note.php`
|
|
5. `src/Uriae/SuiviBundle/Entity/Accompagnement.php`
|
|
6. `src/Uriae/SuiviBundle/Entity/FormationInterne.php`
|
|
7. `src/Uriae/SuiviBundle/Entity/ParticipationFormation.php`
|
|
8. `src/Uriae/SuiviBundle/Entity/Potentiel.php`
|
|
9. `src/Uriae/SuiviBundle/Entity/Problematique.php`
|
|
10. `src/Uriae/SuiviBundle/Entity/Habilitation.php`
|
|
11. `src/Uriae/SuiviBundle/Entity/Rdv.php`
|
|
12. `src/Uriae/SuiviBundle/Entity/Event.php`
|
|
13. `src/Uriae/SuiviBundle/Entity/TypeAction.php`
|
|
14. `src/Uriae/SuiviBundle/Entity/CategorieSavoir.php`
|
|
15. `src/Uriae/SuiviBundle/Entity/TypeSavoir.php`
|
|
16. `src/Uriae/SuiviBundle/Repository/EvaluationRepository.php`
|
|
17. `src/Uriae/SuiviBundle/Repository/FormationInterneRepository.php`
|
|
18. `src/Uriae/SuiviBundle/Repository/TypeActionRepository.php`
|
|
19. `src/Uriae/SuiviBundle/Repository/HabilitationRepository.php`
|
|
20. `src/Uriae/SuiviBundle/Controller/EvaluationController.php`
|
|
21. `src/Uriae/SuiviBundle/Controller/FormationInterneController.php`
|
|
22. `src/Uriae/SuiviBundle/Controller/AccompagnementController.php`
|
|
23. `src/Uriae/SuiviBundle/Model/FormatterBilanIndividuel.php`
|
|
24. `src/Uriae/StructureBundle/Controller/GrilleEvaluationController.php`
|
|
25. `src/Uriae/StructureBundle/Controller/ReferentielInsertionController.php`
|
|
26. `src/Uriae/StructureBundle/Model/DiaryHandler.php`
|