Claude/new session jcb7qn - #17
Merged
Merged
Conversation
Extiende el registro de lenguajes de la plataforma (src/lib/code-languages) con `LanguageId = "sql"` y `ExecutionProfileId = "sql-sqlite3-wandbox"`: perfil Monaco `sql`, fence `sql`, extensión `.sql`, `main.sql`. Migración Prisma aditiva (`ALTER TYPE ... ADD VALUE`) agrega `sql` al enum `ProgrammingLanguage`, sin tocar IDs ni progreso existente. Wandbox (src/lib/executor/wandbox.ts) gana el perfil `sql-sqlite3-wandbox`: - `runTests` implementa la semántica de fixtures SQL (sólo para este perfil): `effectiveSource = TestCase.stdin + "\n" + sourceCode`, stdin real enviado a sqlite = "". C++ y C# no cambian su semántica de stdin. - `execute()` (run libre) no reinterpreta stdin: manda el SQL tal cual. - SIN `DEFAULT_SQL_COMPILER` congelado: el preflight que pide el contrato técnico (consultar /api/list.json, elegir versión estable no-*-head, smoke real) no pudo completarse — la política de red de este entorno bloqueó la salida a wandbox.org. En vez de inventar un id, el perfil exige `WANDBOX_SQL_COMPILER` por env (mismo patrón que JUDGE0_CSHARP_LANGUAGE_ID/PISTON_CSHARP_VERSION) y falla cerrado con `ExecutorProfileUnavailableError` hasta que se configure. judge0.ts y piston.ts ya fallaban cerrado para perfiles desconocidos — sin cambios. UI: NEEDS_STDIN_RE agrega `sql` (nunca matchea: un script no lee stdin interactivo); el campo de entrada libre y el panel de tests visibles relabelan a "Preparación SQL" en vez de "Entrada"/"stdin" para cursos SQL (TECHNICAL_CONTRACT §4). Editor: completions de SQL (keywords/snippets del subconjunto DDL/DML/consultas del curso), tokenizer para fill_blank, clasificación de errores de compilación (SQLite) y diagnostics (sin marcadores de línea: SQLite no da archivo/línea/columna, se muestra el stderr legible). scripts/verify-content.ts gana un runner de SQL con `node:sqlite` (DatabaseSync) — no hay `sqlite3` CLI en este entorno de verificación; `node:sqlite` es el mecanismo "ya disponible más barato/estable" que pide el contrato, sin introducir una base compartida (una `:memory:` nueva por caso). Usa `setReturnArrays(true)` para evitar que dos columnas con el mismo nombre (`a.nombre, b.nombre`) colisionen en un objeto JS — sqlite3 CLI imprime por posición, no por nombre. Tipos ambientales mínimos en scripts/node-sqlite.d.ts (@types/node en este repo no los trae todavía). Tests nuevos: sql es LanguageId válido, sql-sqlite3-wandbox pertenece a sql, fence sql resuelve, Wandbox soporta el perfil (y falla cerrado sin compiler configurado), fixture se concatena SÓLO para SQL, dos fixtures ocultos con la misma query producen peticiones distintas, C++/C# no cambian payload, Judge0/Piston fallan cerrado para SQL. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011GYhqUig6NqJyJV6VrFDjX
Nuevo Course `bases-de-datos` (título "Bases de datos", lenguaje sql, perfil sql-sqlite3-wandbox) con una CurriculumSection de 4.º semestre (`s4-base-de-datos-1`, subjectName "Base de Datos I"), transcrito del paquete de contenido canónico `bd1-ceti-content-pack`: 10 units (fundamentos/SGBD, requerimientos de información, modelo ER, modelo relacional, normalización, álgebra relacional, DDL, DML, consultas y reportes, respaldo + proyecto integrador), 47 lessons, 188 steps y 36 prácticas independientes — 10/10 units y todas las lecciones `published: true` desde esta entrega. Co-localizado por unidad bajo prisma/content/courses/bases-de-datos/, registrado con una línea en prisma/content/courses/index.ts. El dominio recurrente (cliente/equipo/técnico/ticket/asignación de una empresa de soporte técnico) se mantiene durante todo el curso, igual que pide COURSE_CONTRACT.md del paquete. Cada práctica usa `testCase.stdin` como fixture SQL (CREATE TABLE/INSERT) que el executor antepone al código del alumno; los tests ocultos usan fixtures distintos a los visibles. Único ajuste mecánico sobre el paquete fuente: 9 ejemplos `code_example` runnable de las unidades 6 y 9 referenciaban `cliente`/`ticket` sin crearlos en el mismo script (asumían un dataset "ya cargado" que Wandbox, sin estado entre ejecuciones, no tiene). Se les antepuso el mismo dataset canónico (cliente Ana/Luis/Mara + ticket 10-13) que ya usan decenas de fixtures de práctica del propio paquete, verbatim — mismo expectedOutput, mismo enunciado, sólo se completó el script para que corra solo. Ningún otro cambio de escapes, formato o contenido. Actualiza los tests de contrato de contenido para cubrir el curso nuevo (metadata, sección/semestre, orden y publicación de units, totales 47/188/36, 4 steps por lección, slugs de práctica, fence sql, y que las prácticas con fixture declaran un oculto discriminante) y reconcilia la lista exacta de cursos del registry (ahora 4) en tests/content/authoring.test.ts. Verificado con scripts/verify-content.ts (node:sqlite): 60 piezas / 98 casos, todos compilan y producen la salida esperada. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011GYhqUig6NqJyJV6VrFDjX
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.