ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Application web pour servir des exercices de mathématiques LaTeX avec recherche avancée.
# Installation des dépendances (Node 22 + pnpm via corepack)
pnpm install
# Générer incrémentalement le cache JSON et la base SQLite (sans TikZ)
pnpm build:content
# Si les sources modifiées contiennent du TikZ, compiler aussi les SVG
pnpm build:content:incremental:with-tikz
# Vérifier que les images des exercices sont bien présentes dans les artefacts servis
pnpm check:artifacts
# Démarrer le serveur Vite (http://localhost:5173)
pnpm dev
# Variante: rebuild du contenu puis démarrer le serveur
pnpm dev:full
# Tests unitaires (scripts de build, parsing LaTeX, export)
pnpm test
# Tests d'interface (Playwright) — nécessite le navigateur, une seule fois :
npx playwright install chromium
pnpm test:integration
# Un seul projet, ou un seul fichier
npx playwright test --project=mobile
npx playwright test tests/e2e/feuille.mobile.spec.js
Les tests d'interface démarrent le serveur de développement au besoin et
réutilisent celui déjà lancé. Ils sont séparés en deux projets, desktop et
mobile, parce que le comportement l'est : la prévisualisation est une colonne
sur ordinateur et une feuille tactile sur téléphone, et la destination
d'ouverture d'un exercice en dépend.
# Build complet (contenu + bundle Node adapter)
pnpm build
# Vérifier le build localement
pnpm preview
# Lancer le serveur Node en production (PORT=3000 par défaut)
NODE_ENV=production node build
# 1) Mettre à jour la version dans package.json (champ "version")
# Exemple: "2.3.2" -> "2.3.3"
# Préparer les artéfacts locaux avant de reconstruire l'image.
# Utiliser build:content:full après un clean ou sur une nouvelle machine.
pnpm build:content:incremental:with-tikz
# 2) Construire + pousser l'image GHCR taggée avec package.json:version
pnpm docker:release
# 3) Démarrer la stack (Caddy + app) en mode interactif
pnpm docker:dev
# 4) Lancer en détaché (prod)
pnpm docker:prod
# Arrêt
docker compose down
Notes:
pnpm docker:build et pnpm docker:push existent aussi si vous voulez séparer les étapes.package.json (version), sans variable VERSION=... à saisir manuellement.Créer un fichier .env à la racine (jamais commité) :
# Ollama — LLM local (prioritaire)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_CHAT_MODEL=mistral-small3.2:24b
OLLAMA_EMBED_MODEL=bge-m3
# Albert API — fallback si Ollama indisponible
ALBERT_API_KEY=sk-...
ALBERT_BASE_URL=https://albert.api.etalab.gouv.fr/v1
Ollama est utilisé en priorité pour la génération de résumés et les embeddings. Albert prend le relais si Ollama n'est pas disponible ou si le modèle n'est pas installé. Pour l'indexation sémantique, Ollama seul suffit (gratuit, hors-ligne).
L’onglet « PDF LaTeX » de l’éditeur /create utilise le service public
TeXLive.net avec LuaLaTeX. Les sources
sont donc envoyées à ce service tiers ; ne l’utilisez pas pour un contenu
confidentiel. Les éventuelles ressources jointes doivent être textuelles (SVG,
EPS, .tex, .sty, .cls, .bib ou .csv) : les images binaires ne sont
pas supportées par ce protocole.
# Après build:content, générer résumés + embeddings pour les nouveaux exercices
pnpm index:exercises
# Options utiles
pnpm index:exercises:force # réindexe tout
node scripts/index-exercises.js --uuid UUID # un seul exercice
node scripts/index-exercises.js --limit 50 # limiter à 50 exercices
node scripts/index-exercises.js --dry-run # simuler sans écrire
Les résumés générés sont versionnés dans content/metadata/ et commités dans git.
Les embeddings restent en local dans cache/embeddings/ et dans la DB.
Trois artefacts cohabitent :
content/metadata/**/*.json : résumés, concepts, méthodes et objets générés par LLM. Ils sont versionnés dans Git et doivent être commités après pnpm index:exercises.data/exercises.sqlite : base locale non versionnée. Elle contient les exercices, les métadonnées chargées depuis Git et les embeddings.cache/embeddings/*.json : cache local non versionné. Il évite de rappeler Ollama/Albert et peut être reconstruit depuis la DB.Règle pratique : Git transporte les métadonnées textuelles, le snapshot transporte la DB et les embeddings. Le cache local est seulement une copie de travail.
# Machine qui a indexé
source ~/.nvm/nvm.sh
nvm use
pnpm install
pnpm build:content
pnpm index:exercises
git status --short
# commiter les content/metadata/**/*.json modifiés
pnpm db:snapshot:pack
pnpm db:snapshot:publish
# Autre machine
source ~/.nvm/nvm.sh
nvm use
pnpm install
git pull
pnpm db:snapshot:update
pnpm cache:embeddings:stats
pnpm dev
pnpm db:snapshot:update télécharge le snapshot puis le restaure.
pnpm db:snapshot:restore restaure data/exercises.sqlite puis reconstruit
cache/embeddings/ depuis la DB. Si un fichier de cache existait déjà mais avec
un content_hash différent, il est remplacé.
Prérequis : Node 22 (.nvmrc) et gh connecté (gh auth login). Par défaut,
les commandes utilisent le tag db-snapshot-dev et l'archive locale ignorée par
Git data/openyourmath-db-snapshot.tgz.
Voir aussi : docs/embeddings-sync.md.
content/ : Sources LaTeX des exercices + métadonnées LLM versionnées (content/metadata/)cache/ : Cache JSON des exercices parsés + embeddings locaux (cache/embeddings/)scripts/ : Pipeline de build (LaTeX → JSON → SQLite) et indexation IAsrc/ : Application SvelteKitstatic/ : Assets statiques et artifactsÀ commiter avec un nouvel exercice :
content/exercises/**/*.tex : la source de l'exercice ;content/images/** : les images sources éventuellement référencées ;content/metadata/**/*.json : les métadonnées produites par pnpm index:exercises ;content/authors.json uniquement si le référentiel d'auteurs a changé.Ne pas commiter : data/, cache/ et static/artifacts/. Ces répertoires sont
générés localement et embarqués dans l'image Docker au moment de la construction.
Voir /docs pour plus de détails.
content/referentials/cpge/, importés d'exobase).docs/debug-scripts.mdRaccourcis associés :
pnpm exercise:prepare -- X7pQ # valide, construit et indexe un exercice
pnpm exercises:prepare # prépare tous les nouveaux .tex non commités
pnpm release:content # teste, construit et pousse une release GHCR
content/referentials/amscc/referentiel.md, content/referentials/exo7/),
comme l'a été le référentiel CPGE (scripts/build-referentiel-cpge.js), pour
remplacer la taxonomie implicite de la base, aujourd'hui bruitée (doublons
de graphie type « Probabilités et Statistique(s) », chapitres promus
modules…). À brancher ensuite dans :
/create
(metadataTask() dans src/routes/api/create/assist/+server.js, la base
ne servant plus que de complément) ;scripts/quality/).