Skip to content

feat/BACKEND-105 QDRANT Mock Data - #132

Draft
Cryotechnic wants to merge 6 commits into
mainfrom
feat/BACKEND-105_qdrant_mock_data
Draft

feat/BACKEND-105 QDRANT Mock Data#132
Cryotechnic wants to merge 6 commits into
mainfrom
feat/BACKEND-105_qdrant_mock_data

Conversation

@Cryotechnic

Copy link
Copy Markdown
Collaborator

⁉️ Related Issue

Closes #105

📖 Description

Ajoute l'infrastructure pour peupler Qdrant avec des données de cours fictives en dev/staging, sans dépendre des données de prod.

Fichiers créés :

  • seed/qdrant/courses.json: 10 fixtures de cours couvrant 3 programmes (LOG, GTI, ELE) avec payloads conformes à EmbeddingViewDto
  • seed/qdrant/seed-qdrant.ts: Script de seed idempotent : crée la collection si absente, upsert les points avec vecteurs déterministes (1536 dim, Cosine)
  • k8s/jobs/seed-qdrant-courses.k8s.job.yaml: Job Kubernetes one-shot qui exécute le seed contre planifets-chatbot-qdrant:6333
  • .github/workflows/dispatch-seed-qdrant.yml: Workflow workflow_dispatch avec sélecteur dev/staging, applique le Job via kubectl, affiche les logs

Fichiers modifiés :

  • package.json: Ajout du script seed:qdrant et de la dépendance @qdrant/js-client-rest
  • docker-compose.yml: Ajout du service Qdrant (profil dev) pour le développement local
  • Dockerfile: Copie du répertoire seed/ dans l'image de production
  • .env.example: Ajout des variables QDRANT_URL, QDRANT_API_KEY, QDRANT_COLLECTION
  • src/jobs/jobs.service.ts: Remplacement du @Cron hardcodé par un CronJob dynamique piloté par JOBS_CRON_SCHEDULE (env var)
  • test/jobs/jobs.service.test.ts: Ajout de SchedulerRegistry au module de test

🧪 How Has This Been Tested?

  • Seed local : docker compose --profile dev up qdrant -d puis yarn seed:qdrant → 10 points upsertés avec succès
  • Idempotence : Exécution répétée → collection existante réutilisée, mêmes points ré-upsertés sans erreur
  • Vérification Qdrant : GET /collections/courses confirme status: green, points_count: 10
  • Tests unitaires : yarn test -- --testPathPatterns="test/jobs/jobs.service.test.ts" → 3/3 pass
  • Docker Compose complet : docker compose --profile dev up → app démarre, log Registering jobs cron: 0 */12 * * * visible
  • Le workflow GH Actions et le Job K8s nécessitent le secret KUBECONFIG configuré par environnement pour être testés en cluster

☑️ Checklist before requesting a review

  • I have performed a self-review of my code.
  • If it is a core feature, I have added thorough tests.

🖼️ Screenshots (if useful)

N/A

@sonarqubecloud

sonarqubecloud Bot commented Jun 26, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Comment thread .github/workflows/dispatch-seed-qdrant.yml Dismissed
- name: Configure kubeconfig
run: |
mkdir -p $HOME/.kube
echo "${{ secrets.KUBECONFIG }}" | base64 -d > $HOME/.kube/config
component: seed-qdrant
spec:
restartPolicy: Never
containers:
command: ["yarn", "seed:qdrant"]
env:
- name: QDRANT_URL
value: "http://planifets-chatbot-qdrant:6333"
@github-actions

Copy link
Copy Markdown

Test Coverage

Lines Statements Branches Functions
Coverage: 87%
87.08% (3885/4461) 92.24% (607/658) 89.95% (224/249)

@mhd-hi
mhd-hi marked this pull request as draft June 29, 2026 23:00
@mhd-hi

mhd-hi commented Jun 29, 2026

Copy link
Copy Markdown
Member

After talking with other team members, we have decided that this feature is not needed right now since we already fetch live data from ÉTS servers. This PR will not be closed as of now since we may need it in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Create mock data in Qdrant for dev/staging environnements

3 participants