Audit + Umbau: Faktenfehler behoben, Server-/Admin-Lücken geschlossen, 49 Screenshots, Schema-Matrix generiert
- Audit: plans/doku-audit.md (Befunde, Phasen P1-P9, Ausführungsprotokoll) + plans/audit/ (8 Detailreports) + plans/offene-issues.md - Werkzeuge: scripts/audit-docs.mjs (Links/Anker/Bilder/Tabellen), scripts/gen-schema-matrix.mjs (npm run gen:schemas) - Neue Seiten: projekt/feld-rechte, reference/rest-system, reference/schema-properties, projekt/tests, 5 Anwender-Seiten - Fehler behoben: EMBEDDING_BGE_M3_*-Env, allowSnapshots, MCP-Scopes (.read/.create/.update), meta.views, loadAll-Signatur, OpenAPI-Endpunkt, MongoDB 8, Befehlspalette - Screenshots: 9 Admin + 10 Anwender aus Mock-Projekt corporate (t1 entfernt), 49 Bilder gesamt - AGENTS.md: Sync-Behauptung richtiggestellt, Belegpflicht/UI-Namen/Screenshot-Regeln, Werkzeug-Abschnitt - Build: 71 Seiten grün, 0 tote Links, 0 kaputte Tabellen
This commit is contained in:
1 parent
1897bb50d9
commit
1928922e07
104 files changed
+4756
-1044
No files matched your search
@@ -3,26 +3,40 @@
|
||||
* sync-openapi.mjs — holt die OpenAPI-Spec vom laufenden Tibi-Server
|
||||
* und legt sie als Referenz-Seite ab. Ohne laufenden Server: Platzhalter.
|
||||
* Aufruf: npm run sync:openapi
|
||||
* Env: TIBI_API_URL (default http://localhost:8080/api), TIBI_NAMESPACE
|
||||
* Env: TIBI_API_URL (default http://localhost:8080/api/v1), TIBI_NAMESPACE
|
||||
*/
|
||||
import { mkdirSync, writeFileSync } from 'node:fs';
|
||||
import { dirname, join } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const root = join(dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const base = process.env.TIBI_API_URL ?? 'http://localhost:8080/api';
|
||||
const base = process.env.TIBI_API_URL ?? 'http://localhost:8080/api/v1';
|
||||
const namespace = process.env.TIBI_NAMESPACE;
|
||||
const out = join(root, 'src', 'content', 'docs', 'reference', 'openapi.md');
|
||||
|
||||
const frontmatter = `---\ntitle: 'OpenAPI (generiert)'\ndescription: 'Projektspezifische OpenAPI-Spec vom laufenden tibi-server: Endpunkt, Abruf per curl und Sync.'\n---\n`;
|
||||
const erklaerung = `Die Spec erzeugt der Server frisch aus Config und Collections deines Projekts: \`GET /api/v1/_openapi/:project\`. Es gibt keine statische \`/openapi.json\` — jede Spec gehört zu genau einem Projekt (Namespace).\n\n\`\`\`bash title="Spec eines Projekts abrufen"\ncurl http://localhost:8080/api/v1/_openapi/meinprojekt\n\`\`\`\n\n\`npm run sync:openapi\` ruft diesen Endpunkt für \`$TIBI_NAMESPACE\` auf (Basis \`TIBI_API_URL\`, Default \`http://localhost:8080/api/v1\`) und schreibt das Ergebnis in diese Seite.\n\nLäuft der Admin hinter seinem Proxy, erreichst du dieselbe Spec auch über \`$CODING_TIBIADMIN_URL/api/_openapi/<namespace>\` — der Proxy schreibt \`/api\` auf \`/api/v1\` um.\n`;
|
||||
|
||||
function schreiben(stand, specBlock) {
|
||||
mkdirSync(dirname(out), { recursive: true });
|
||||
writeFileSync(out, `${frontmatter}\n> Stand: ${stand} — nicht von Hand editieren.\n\n${erklaerung}${specBlock}`);
|
||||
}
|
||||
|
||||
if (!namespace) {
|
||||
console.warn('[sync:openapi] TIBI_NAMESPACE fehlt — Platzhalter bleibt.');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await fetch(`${base}/openapi.json`);
|
||||
const url = `${base}/_openapi/${namespace}`;
|
||||
const res = await fetch(url);
|
||||
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
||||
const spec = await res.text();
|
||||
mkdirSync(dirname(out), { recursive: true });
|
||||
writeFileSync(
|
||||
out,
|
||||
`---\ntitle: 'OpenAPI (generiert)'\n---\n\n> Stand: ${new Date().toISOString()} · Quelle: \`${base}/openapi.json\` — nicht von Hand editieren.\n\n\`\`\`json\n${spec.slice(0, 20000)}\n\`\`\`\n\n_Volle Spec: \`${base}/openapi.json\`_\n`,
|
||||
schreiben(
|
||||
`${new Date().toISOString()} · Quelle: \`${url}\` · Erzeugen mit \`npm run sync:openapi\``,
|
||||
`\n\`\`\`json\n${spec.slice(0, 20000)}\n\`\`\`\n\n_Volle Spec: \`${url}\`_\n`,
|
||||
);
|
||||
console.log(`[sync:openapi] geschrieben: ${out}`);
|
||||
} catch (err) {
|
||||
console.warn(`[sync:openapi] Server nicht erreichbar (${base}): ${err.message} — Platzhalter bleibt.`);
|
||||
console.warn(`[sync:openapi] Server nicht erreichbar (${base}/_openapi/${namespace}): ${err.message} — Platzhalter bleibt.`);
|
||||
}
|
||||
Reference in new issue
Block a user