Improve Tibi docs coverage and screenshot placement

This commit is contained in:
apairon committed 2026-10-18 09:36:37 +00:00
1 parent 7409bc2406
commit 15c1976c60
23 files changed
+417 -351

No files matched your search

+13 -6
View File
@@ -234,7 +234,8 @@ for (const f of files) {
stats.asciiUmlauts.push(rel(f));
if (/(?:waehl|einstell(?:ung)?en?|benutz(?:er)?|sc(?:h)luessel)/i.test('') ) {} // noop
// Hüllen-Reste (nur Fließtext — in Codeblöcken sind „Platzhalter"/„TODO" legitime Beispieltexte)
// Hüllen-Reste (nur konkrete Redaktionsmarker; Fachbegriffe wie „Platzhalter"
// und gültige Zustandsbeschreibungen wie „noch nicht registriert" sind kein Befund.)
const proseText = (() => {
const out = [];
let f = false;
@@ -244,14 +245,20 @@ for (const f of files) {
}
return out.join('\n');
})();
['Für spätere Agenten', 'TODO', 'FIXME', 'noch nicht', 'Hülle', 'Platzhalter', 'TBD', 'WIP']
.forEach((k) => {
const idx = proseText.indexOf(k);
[
{ label: 'Für spätere Agenten', pattern: /Für spätere Agenten/i },
{ label: 'TODO/FIXME/TBD/WIP', pattern: /\b(?:TODO|FIXME|TBD|WIP)\b/i },
{ label: 'Hülle', pattern: /\bHülle\b/i },
{ label: 'unersetzter Platzhalter-Vermerk', pattern: /\bStand\s*:\s*Platzhalter\b/i },
].forEach(({ label, pattern }) => {
const match = pattern.exec(proseText);
if (!match) return;
const idx = match.index;
if (idx < 0) return;
const line = proseText.slice(0, idx).split(/\r?\n/).length;
const ctx = proseText.split(/\r?\n/)[line - 1]?.trim().slice(0, 110) ?? '';
add(f, 'hollow', `Marker "${k}": ${ctx}`, line);
stats.hollowMarkers.push(`${rel(f)}:${line} ${k}`);
add(f, 'hollow', `Marker "${label}": ${ctx}`, line);
stats.hollowMarkers.push(`${rel(f)}:${line} ${label}`);
});
// Verbotene Namen
+13 -1
View File
@@ -43,7 +43,7 @@ function warn(msg) {
console.error(`WARN: ${msg}`);
}
/** 1. Routen: apiGroup.GET/POST/PUT/DELETE("pfad") + adm.* + OPTIONS aus setup.go, Duplikate raus. */
/** 1. Routen: Controller-Routen aus setup.go plus System-CRUD/Meta-Routen aus dbapi/register.go. */
function collectRoutes() {
const file = path.join(SERVER_ROOT, "internal", "controller", "setup.go");
if (!existsSync(file)) {
@@ -60,6 +60,18 @@ function collectRoutes() {
let m;
while ((m = re.exec(src)) !== null) found.add(m[m.length - 1]);
}
// RegisterModel erzeugt für diese Modelle GET/POST auf der Collection-Route
// sowie GET/PUT/DELETE auf der :id-Route. AddMetaRoute erzeugt _meta und
// eine /_meta/<modell>-Route je registriertem Modell. Diese Routen liegen
// in dbapi/register.go und waren im bisherigen setup.go-only-Inventar weg.
const models = ['user', 'project', 'org', 'team', 'token'];
for (const model of models) {
found.add(`/${model}`);
found.add(`/${model}/:id`);
}
found.add('/_meta');
for (const model of models) found.add(`/_meta/${model}`);
return [...found].sort();
}
+4 -3
View File
@@ -36,13 +36,14 @@ function sourceStamp() {
}
}
// Feste Liste: genau diese 16 Schemas erwartet der Generator.
// Feste Liste: genau diese 17 Schemas erwartet der Generator.
const SCHEMAS = [
'action.schema.json',
'asset.schema.json',
'collection-meta.schema.json',
'collection.schema.json',
'defs.schema.json',
'embedding.schema.json',
'field-list.schema.json',
'field-meta.schema.json',
'field.schema.json',
@@ -239,10 +240,10 @@ function effectiveSchema(file, schema) {
const out = [];
out.push('---');
out.push("title: 'Schema-Properties (generiert)'");
out.push("description: 'Alle Properties aller 16 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'");
out.push("description: 'Alle Properties aller 17 Config-Schemas als Tabelle — generiert, nicht von Hand editieren.'");
out.push('---');
out.push('');
out.push('Diese Seite listet die Properties aller 16 Config-Schemas aus `tibi-types/schemas/config/`.');
out.push('Diese Seite listet die Properties aller 17 Config-Schemas aus `tibi-types/schemas/config/`.');
out.push('');
out.push('> Generiert, nicht von Hand editieren — neu erzeugen mit `npm run gen:schemas`.');
out.push('');