Investor Document¶
Contrôleur HTTP des documents financiers de l'investisseur (formulaires fiscaux, contrats d'obligation, Cerfa). Source : investor-document.controller.ts.
Les endpoints /investor/document/* requièrent un JWT investisseur valide (JwtAuthGuard) et le rôle CUSTOMER (UserRoleGuard). L'endpoint debug requiert une session admin valide (AdminAuthGuard).
GET /investor/document/¶
Retourne la liste des documents financiers de l'investisseur connecté, avec leur statut (not_requested, requested, error, stored_at_azure) et un approximateTimeInMinutes lorsque la génération est en cours. Source : investor-document.controller.ts#L30.
Response¶
{
"documents": [
{
"id": "uuid",
"type": "taxForm",
"year": 2024,
"state": { "status": "stored_at_azure" },
"createdAt": "...",
"updatedAt": "...",
"investorId": "uuid"
}
]
}
Type partagé : GetInvestorFinancialDocumentsResponse (getInvestorFinancialDocuments.endpoint.ts). Discriminated union sur type : taxForm, taxFormRoyalties, taxFormObligations, taxFormLoans, taxFormBoostedBalance, cerfa-2561-2024, cerfa-2561-2025, primaryPurchaseObligationContract.
Erreurs¶
À documenter (pas de cas d'erreur métier explicite côté contrôleur).
POST /investor/document/:docId/request¶
Déclenche la génération asynchrone d'un document. Met le document en état requested (avec attemptNumber incrémenté en cas de retry après erreur). Retourne le document mis à jour, enrichi de approximateTimeInMinutes. Source : investor-document.controller.ts#L46.
Path param¶
docId— UUID v4 (validé parParseUUIDPipe)
Response¶
Un InvestorFinancialDocumentView (le document demandé après mise à jour).
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
investor-document.document-not-found |
404 | Document inexistant ou n'appartenant pas à l'investisseur |
investor-document.too-many-attempt-blocking-error |
422 | 3 tentatives en erreur ou plus — blocage |
GET /investor/document/:docId/download¶
Télécharge le PDF d'un document financier déjà stocké dans Azure Storage. Le PDF est récupéré, déchiffré, post-traité (concaténation contrat de propriété pour primaryPurchaseObligationContract) puis renvoyé en streaming binaire. Source : investor-document.controller.ts#L81.
Path param¶
docId— UUID v4
Response¶
Réponse binaire (application/pdf) avec headers :
Content-Type: application/pdfContent-Disposition: attachment; filename="<nom>"Content-Length
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
investor-document.document-not-found |
404 | Document inexistant, n'appartenant pas à l'investisseur ou non encore stocké chez Azure |
investor-document.post-process-error |
500 | Erreur de post-traitement du PDF (ex. fusion contrat) |
GET /investor/document/debug-tax-form/:docId/preview-pdf¶
Endpoint de debug pour les admins. Régénère un PDF à partir du templateInput stocké en base et le renvoie en téléchargement, sans passer par Azure. Permet de tester rapidement un changement de template. Source : investor-document.controller.ts#L115.
Pré-conditions¶
- Session admin valide (
AdminAuthGuard— session better-auth avec rôleadmin)
Path param¶
docId— UUID v4
Response¶
Réponse binaire (application/pdf), filename debug-<docId>.pdf.
Erreurs¶
| Code | Statut | Cause |
|---|---|---|
| (vide) | 404 | Document inexistant |
| (vide) | 400 | Échec de génération côté pdfgenerator |
Liens¶
- Service :
investor-financial-document.service.ts - Repository :
investor-financial-document.repository.ts - Vue :
investor-financial-document.view.ts