ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
BUSINESS ARENA — Dossier d'architecture (Mission n°37) Simulation + Apprentissage + Aide à la décision + Compétition. Plateforme SaaS de simulation d'entreprise dans laquelle un joueur ou une équipe dirige une entreprise virtuelle, apprend à choisir le bon modèle de gestion, et progresse du niveau DÉCOUVERTE au niveau EXECUTIVE. Ce dossier est le livrable de la mission n°37 : l'architecture complète du produit, produite avant toute ligne de code applicatif, conformément à la méthode imposée (§35 étape 1 : analyser, identifier les ambiguïtés, proposer l'architecture, ne pas coder).檢視完整 README ↗
Simulation + Apprentissage + Aide à la décision + Compétition. Plateforme SaaS de simulation d'entreprise dans laquelle un joueur ou une équipe dirige une entreprise virtuelle, apprend à choisir le bon modèle de gestion, et progresse du niveau DÉCOUVERTE au niveau EXECUTIVE.
Ce dossier est le livrable de la mission n°37 : l'architecture complète du produit, produite avant toute ligne de code applicatif, conformément à la méthode imposée (§35 étape 1 : analyser, identifier les ambiguïtés, proposer l'architecture, ne pas coder).
Ayari-59/business-arena est le dépôt dédié du produit, comme l'exige le cahier des
charges. Il contient pour l'instant uniquement ce dossier d'architecture (livrable de
l'étape 1) ; le code applicatif arrivera par étapes (§35), chaque étape devant rester
conforme aux documents ci-dessous ou les amender explicitement.
| Fichier | Contenu (points du cahier des charges §37) |
|---|---|
docs/00-decisions-et-ambiguites.md | Analyse du cahier des charges, ambiguïtés identifiées, décisions d'architecture (ADR) |
docs/01-architecture-globale.md | 1. Architecture globale · 2. Architecture des dossiers · 16. Stratégie de déploiement Vercel |
docs/02-moteur-simulation.md | 3. Architecture du moteur de simulation (demande, élasticité, prix psychologique, production, coûts, finance FRNG/BFR, événements) |
docs/03-moteur-pedagogique.md | 4. Moteur pédagogique · 10. Les 20 concepts du MVP · 11. Modèles de décision · 12. Règles du système d'indices |
docs/04-moteur-competition.md | 5. Architecture du moteur de compétition (modes apprentissage / compétition / concours) |
docs/05-schema-base-de-donnees.md | 6. Schéma complet Neon PostgreSQL · 7. Relations entre tables |
docs/06-types-typescript.md | 8. Types TypeScript principaux |
docs/07-scenario-nova.md | 9. Architecture du premier scénario NOVA (6 tours) |
docs/08-scoring-et-difficulte.md | 13. Règles de scoring (Business Performance Index) · 14. Architecture des niveaux de difficulté |
docs/09-strategie-tests.md | 15. Stratégie de tests |
docs/10-strategie-evolution.md | 17. Stratégie d'évolution future (championnat, IA, internationalisation…) |
Next.js (App Router) · React · TypeScript strict · Vercel · Neon PostgreSQL · Drizzle ORM · Tailwind CSS · shadcn/ui · Git/GitHub · architecture compatible API LLM.
Note : le dépôt frère
axioutilise Prisma ; BUSINESS ARENA étant un produit indépendant, il applique la stack imposée par son propre cahier des charges, donc Drizzle.
SITUATION → PROBLÈME → DIAGNOSTIC → MODÈLE D'ANALYSE → DÉCISION
↑ ↓
APPRENTISSAGE ← ANALYSE ← RÉSULTAT ← SIMULATION ←──────────┘
Chaque brique de l'architecture sert un maillon de cette boucle :
docs/02, docs/07)docs/03)docs/02)docs/03, docs/08)docs/04)npm install
npm run base:locale # une base Postgres locale, migrée et semée (voir plus bas)
# dans un autre terminal :
export DATABASE_URL=postgres://[email protected]:5434/postgres
export DIRECT_URL=$DATABASE_URL AUTH_SECRET=de-quoi-signer-les-sessions
npm run dev # http://localhost:3030
Pour travailler sur la base de production (Neon) plutôt que sur la base locale :
cp .env.example .env, y renseigner DATABASE_URL (pooler) et DIRECT_URL
(direct), puis npm run db:migrate avant npm run dev.
Vérifications : npm run typecheck · npm test · npm run build. Les trois tournent
en intégration continue (.github/workflows/ci.yml) sur chaque poussée et chaque
proposition de fusion : la suite garde désormais quelque chose.
npm run test:e2e conduit un vrai navigateur sur l'application entière : un enseignant
crée son compte et une partie, un élève la rejoint par le code, joue son tour, et
l'enseignant clôture. Il existe parce que les écarts trouvés en recette manuelle vivaient
tous entre les pièces, jamais dedans, là où la suite ordinaire ne regarde pas.
Il lui faut un Postgres et l'application démarrée, contrairement aux autres tests qui ne demandent rien. Le pilote de base suit l'URL : une adresse Neon prend le pilote HTTP de production, toute autre adresse Postgres prend le pilote standard, avec le même schéma et les mêmes migrations des deux côtés.
npm run base:locale & # base sur 127.0.0.1:5434, migrée et semée
export DATABASE_URL=postgres://[email protected]:5434/postgres
export DIRECT_URL=$DATABASE_URL AUTH_SECRET=de-quoi-signer-les-sessions
npm run build && npx next start -p 3040 &
E2E_BASE_URL=http://127.0.0.1:3040 npm run test:e2e
DATABASE_URL est nécessaire au processus de test lui-même, et pas seulement à
l'application : deux essais écrivent en base (une licence échue, un relevé
d'usage) pour vérifier ce que l'écran en dit.
CHROMIUM_PATH permet de désigner un binaire déjà présent ; sans elle, Playwright utilise
celui qu'il a installé (npx playwright-core install chromium).
npm run base:locale démarre un Postgres complet sur 127.0.0.1:5434, applique les
migrations de drizzle/ et sème le monde de démonstration, puis affiche le code de
partie à taper sur /join. Il n'y a ni paquet système à poser, ni rôle à créer, ni base
à déclarer : c'est PGlite, le Postgres compilé en WebAssembly dont les tests
d'intégration se servent déjà, que le script expose sur un port en une cinquantaine de
lignes. Aucune dépendance n'est ajoutée pour cela — le paquet qui fait ce travail épingle
ses pairs et aurait fait monter PGlite pour toute l'équipe. L'application ne fait donc
aucune différence : même schéma, mêmes migrations, même pilote que devant un Postgres
ordinaire.
npm run base:locale | démarre, migre, sème, et reste ouverte |
npm run base:locale -- --neuve | repart d'une base vide |
npm run base:locale -- --sans-semis | sans le monde de démonstration |
PORT_BASE_LOCALE=5435 npm run base:locale | sur un autre port |
Les données vivent dans .pglite/, ignoré par git : la partie qu'on vient de jouer est
encore là au redémarrage. Ce n'est pas la production, qui tourne sur Neon avec son pilote
HTTP ; c'est de quoi voir l'application tourner et jouer le parcours.
Déploiement Vercel : preset Next.js, racine du dépôt. Le script vercel-build
(drizzle-kit migrate && next build) applique automatiquement les migrations au build —
définir dans le projet Vercel les variables DATABASE_URL, DIRECT_URL, AUTH_SECRET,
CRON_SECRET. (Cible long terme : migrations en CI, doc 01 §5.)
src/db/schema/) +
migration initiale (drizzle/), conformes à docs/05.docs/02, docs/09).docs/07)./profile : compétences par axe, maîtrise des
concepts, historique des parties avec rang et IPG.Un lycée n'achète pas un abonnement par carte bancaire. Il émet un bon de commande, reçoit une facture et paie par mandat administratif, parfois deux mois plus tard. Le produit enregistre donc les termes convenus, il ne les encaisse pas : le montant et la référence servent à retrouver la vente, pas à la conclure. Aucune intégration de paiement n'est prévue tant qu'elle ne débloque aucune vente.
Une licence porte une période, un plafond d'enseignants facultatif, et de quoi la
rattacher à un devis. L'administrateur général l'enregistre depuis /admin,
établissement par établissement ; l'établissement voit son état dans /org.
Trois règles, et chacune protège quelqu'un :
Les parties publiques jouées en solo ne dépendent d'aucune licence.
Depuis /admin (admin général), le bouton « Générer le monde démo » crée un
établissement complet : [email protected] (admin d'établissement) et
[email protected] (enseignant), avec une partie de
classe jouée sur 3 tours (le tour 4 — la crise de trésorerie — est le prochain), des vues
pédagogiques alimentées et un concours prêt à lancer. Le mot de passe est tiré au hasard
et montré une seule fois, à la création ; /admin le renouvelle ou ferme les comptes. En
production, la création est refusée sauf si AUTORISER_DEMO_EN_PRODUCTION=1. La licence de
démo couvre deux personnels. En local : npm run seed:demo. L'admin général n'a pas de
compte démo (rôle sensible : réservé aux e-mails d'ADMIN_EMAILS).
Une entreprise déploie les épisodes manager par cohorte. L'administrateur général la crée
depuis /admin/cohortes (ou, en local, npm run cohorte:creer -- "Nom" https://adresse-du-site), qui
affiche deux liens : l'invitation, à envoyer aux managers, et le lien de
l'animateur, qui ouvre les agrégats de la cohorte (aucun nom, rien sous cinq personnes) et se
transmet à l'animateur seul.
Aucune modification du moteur économique ne sera acceptée sans tests (§32).