Implementation de la notion d'espace d'investissement

This commit is contained in:
ocroguennec committed 2026-09-17 18:25:42 +02:00
1 parent 6b6cad7cd6
commit 4b7df66862
54 files changed
+6782 -288

No files matched your search

+26 -2
View File
@@ -10,8 +10,17 @@ const router = Router();
* summary: Liste des mouvements de cash (dépôts / retraits)
* tags: [Dépôts / Retraits]
* security: [{ ApiKeyAuth: [] }]
* parameters:
* - in: query
* name: workspace
* schema: { type: string }
* description: >
* Slug du workspace à filtrer (ex. "crowdlending"). Absent par défaut :
* renvoie tous les workspaces confondus (les clés API restent globales,
* cf. project_workspaces_transformation.md) — 400 si le slug est inconnu.
* responses:
* 200: { description: Liste des mouvements }
* 400: { description: Slug de workspace inconnu }
*/
router.get('/', (req, res) => {
// Clé "Famille et entreprises" (scope_all) → tous les investisseurs du
@@ -21,14 +30,29 @@ router.get('/', (req, res) => {
: 'dr.investisseur_id = ?';
const invParam = req.investisseurScopeAll ? req.userId : req.investisseurId;
const conds = [invCond];
const args = [invParam];
// Filtre optionnel par workspace (17/09/26, décision explicite d'Olivier) :
// absent par défaut → comportement inchangé, tous workspaces confondus (les
// clés API/MCP restent globales, décision du 08/09/26) ; ?workspace=<slug>
// permet à un outil MCP de cibler un workspace précis — slug plutôt qu'un id
// brut, portable entre installations comme pour l'export/import ZIP.
if (req.query.workspace) {
const ws = db.prepare('SELECT id FROM workspaces WHERE slug = ?').get(String(req.query.workspace));
if (!ws) return res.status(400).json({ error: `Workspace inconnu : "${req.query.workspace}"` });
conds.push('dr.workspace_id = ?');
args.push(ws.id);
}
const rows = db.prepare(`
SELECT dr.id, dr.date_operation, p.nom AS plateforme_nom, dr.type,
dr.montant, dr.libelle
FROM depots_retraits dr
JOIN plateformes p ON p.id = dr.plateforme_id
WHERE ${invCond}
WHERE ${conds.join(' AND ')}
ORDER BY dr.date_operation DESC
`).all(invParam);
`).all(...args);
res.json(rows);
});