Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
Webapp de recrutement pour le processus de réinsertion des personnes en manque de réseau professionnel. L'objectif est de guider et accompagner le candidat tout au long du parcours de recherche et du recrutement.
翻译准备中
正在加载完整 README。
查看完整 README ↗API REST et worker asynchrone d'Entourage Pro, le premier réseau professionnel solidaire : la plateforme met en relation des candidats en recherche d'emploi et en manque de réseau, des coachs bénévoles, des prescripteurs (structures d'accompagnement) et des entreprises partenaires.
Stack : NestJS 11 · TypeScript 6 · PostgreSQL 17 + pgvector · Sequelize · Redis + BullMQ · Node 24
| Frontend | entourage-job-front (Next.js) — à mettre à jour en parallèle dès qu'un contrat d'API change |
| Doc API | Swagger sur /api (si ENABLE_SWAGGER=true) |
| Doc technique | OVERVIEW.md · TECH_ARCH.md · LIBRARIES.md · docs/ |
| Guide Claude Code | CLAUDE.md |
Pré-requis : Docker (avec Compose) et Node.js 24.15.0 (voir .nvmrc) — plus pnpm 11.15.0 si tu travailles hors conteneur.
cp .env.dist .env # variables de l'API et du worker
cp .env.dist .env.test # variables utilisées par la suite e2e
pnpm all:dev:docker:build # API + worker + Postgres + Redis + agent Datadog
Les deux fichiers sont à créer soi-même et ne sont pas versionnés ; voir « Configuration » pour ce qu'il faut remplir.
L'API écoute sur http://localhost:3002, Swagger sur http://localhost:3002/api.
Le premier lancement construit l'image, installe les dépendances dans le volume et démarre en mode watch. Les migrations ne sont pas jouées automatiquement en local :
docker exec api pnpm db:create # si la base n'existe pas encore
docker exec api pnpm db:migrate
docker exec api pnpm db:seed # admin + référentiels (secteurs, métiers, langues, départements…)
Le seeder crée un compte administrateur utilisable immédiatement :
Email :
[email protected]Mot de passe :Admin123!
Nécessite un Postgres 17 avec l'extension vector et un Redis joignables via DATABASE_URL / REDIS_URL.
pnpm install
pnpm db:migrate
pnpm api:dev # API en watch
pnpm worker:dev # worker en watch (autre terminal)
pnpm build # nest build → dist/
pnpm api:start # node dist/main
pnpm worker:start # node dist/worker
docker exec -i db psql -U entourage_pro -d entourage_pro < dump.sql
Ou en interactif (mot de passe : entourage_pro, cf. docker-compose.yml) :
docker exec -it db sh
psql -d entourage_pro -p 5432 -U entourage_pro -W
Le repo produit deux applications à partir de la même base de code, avec deux racines de modules distinctes :
| Processus | Entrée | Module racine | Rôle |
|---|---|---|---|
| API | src/main.ts | AppModule | HTTP : controllers, auth JWT, throttling, Swagger, producteurs de jobs |
| Worker | src/worker.ts | WorkerModule | Consommateurs BullMQ + @nestjs/schedule — aucun port ouvert |
Le worker partage la configuration Sequelize de l'API (getSequelizeOptions() exporté par app.module.ts) avec un pool élargi (max: 10), et n'importe que ConsumersModule + CronModule.
Sur Heroku, les trois process du Procfile : release (migrations), web (API), mainWorker (worker).
pnpm api:dev:docker # API seule (+ db, redis, datadog)
pnpm worker:dev:docker # API + worker
pnpm all:dev:docker # idem, alias explicite
Un dossier par domaine sous src/, chacun suivant la même convention :
src/<domain>/
├── <domain>.module.ts # câblage NestJS
├── <domain>.controller.ts # routes HTTP
├── <domain>.service.ts # logique métier
├── <domain>.types.ts # enums, unions, types partagés
├── <domain>.utils.ts # helpers purs
├── <domain>.attributes.ts # listes d'attributs Sequelize réutilisables
├── <domain>.includes.ts # includes Sequelize réutilisables
├── dto/ # DTO validés par class-validator
└── models/ # modèles sequelize-typescript
Le domaine utilisateur est volontairement éclaté en modules à responsabilité unique plutôt qu'en un gros UsersModule — users, users-creation, users-deletion, users-stats, user-profiles, et une famille user-profile-* (experiences, formations, skills, languages, interests, media, embeddings, recommendations, moderation, analytics, contracts, nudges, shares, sector-occupations…).
Les intégrations tierces sont regroupées sous src/external-services/ : mailjet, salesforce, slack, vonage, pusher, anthropic, cv-extraction, voyageai, linkedin, shortio, aws, plus l'observabilité LLM (ai-observability, llm-metrics).
À côté des dossiers de domaine, src/ contient :
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗