Fehlende mit Token, und die Rechnung vergleicht die Schreibweise genau
POST /api/fehlende stellt dieselbe Frage wie das Dashboard (welche Namen
haben kein Bild?), mit Token statt Sitzung. Das Fotostudio soll "fehlt" so
beantworten, wie der Laden es sieht -- fuer die Kleidung sind das rund 8.000
Namen, mit /exists ebenso viele Anfragen, hier zwei.
Die Rechnung steht jetzt EINMAL in server/src/fehlende.ts; die Dashboard-Route
ruft sie auf. Die Antwortform bleibt (da als Zahl), dazu kommt `schreibweise`.
DABEI GEFUNDEN: die alte Rechnung schrieb jeden Namen klein, "weil so
abgelegt wird". Seit a373b96 (22.08.) stimmt das nicht mehr. Gemessen am
03.10. ueber /f/: items/WEAPON_PISTOL.png 200, items/weapon_pistol.png 404 --
die Abfrage meldete also jede Waffe als fehlend, die da lag. Jetzt wird genau
verglichen; liegt etwas nur unter anderer Schreibweise, steht es zusaetzlich
in `schreibweise` (umbenennen statt neu aufnehmen). docs/API.md sagte
dasselbe Falsche und riet zu item:lower() -- berichtigt.
Geprueft in einem eigenen Container gegen eine Kopie der Datenbank (per
SQLite-Sicherung gezogen, danach geloescht), mit Wegwerf-Token: 13/13 --
401 ohne Token, 400 mit Text bei kaputtem JSON, fehlendem Platzhalter, ohne
Namen und bei 5001 Namen; WEAPON_PISTOL da, weapon_pistol fehlt und steht in
schreibweise, ein erfundener Name fehlt ohne schreibweise. Ernstfall: 7.928
lokale Kleidungsbilder des Fotostudios, 2.591 davon liegen im Dienst (33 %,
eine Stichprobe ueber /f/ hatte 11 von 40 ergeben).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
73c9f310c0
commit
6677b559f2
4 files changed
+236
-91
No files matched your search
+55
-8
@@ -39,19 +39,28 @@ und niemand merkte es, bis das Bild fehlt.
|
||||
|
||||
### Groß- und Kleinschreibung
|
||||
|
||||
Was über das Dashboard oder ein Werkzeug hochgeladen wird, kommt **klein**
|
||||
an: `WEAPON_SMG.png` liegt als `weapon_smg.png`. Der Grund ist, dass ein Name
|
||||
zu einer Adresse wird und Adressen sich nicht auf die Schreibweise eines
|
||||
Dateisystems verlassen sollen.
|
||||
**Die Schreibweise bleibt, und sie zählt.** `WEAPON_SMG.png` liegt als
|
||||
`WEAPON_SMG.png`, und `/f/items/weapon_smg.png` ist dann ein 404.
|
||||
|
||||
Für ein Skript heißt das: **die Vorlage arbeitet mit Kleinbuchstaben.**
|
||||
> **Berichtigt am 03.10.2026.** Hier stand bis dahin, alles komme **klein**
|
||||
> an und eine Vorlage solle `item:lower()` rufen. Das gilt seit `a373b96`
|
||||
> (22.08.2026) nicht mehr: ox_inventory fragt unter dem exakten Item-Namen,
|
||||
> und dessen Waffen heißen `WEAPON_*`. Gemessen am 03.10.2026:
|
||||
> `items/WEAPON_PISTOL.png` 200, `items/weapon_pistol.png` 404. Wer der alten
|
||||
> Zeile folgte, baute Adressen, die ins Leere zeigen — und die
|
||||
> Dashboard-Abfrage „Fehlende“ tat genau das und meldete jede Waffe als
|
||||
> fehlend.
|
||||
|
||||
Für ein Skript heißt das: **den Namen so einsetzen, wie er ist.** Klein
|
||||
gemacht wird nur die Endung.
|
||||
|
||||
```lua
|
||||
local url = ('https://media.d4rkst3r.de/f/items/%s.png'):format(item:lower())
|
||||
local url = ('https://media.d4rkst3r.de/f/items/%s.png'):format(item)
|
||||
```
|
||||
|
||||
Über `/api/upload` mit eigenem `X-Path` gilt das nicht — dort steht der Pfad
|
||||
so, wie er geschickt wird.
|
||||
Ersetzt werden beim Hochladen über das Fenster weiterhin Zeichen, die in einer
|
||||
Adresse nichts verloren haben (Leerzeichen, Klammern, Umlaute). Über
|
||||
`/api/upload` mit eigenem `X-Path` steht der Pfad so, wie er geschickt wird.
|
||||
|
||||
---
|
||||
|
||||
@@ -385,6 +394,44 @@ Upload.
|
||||
|
||||
---
|
||||
|
||||
## POST /api/fehlende
|
||||
|
||||
Dieselbe Frage wie im Dashboard unter **Fehlende**, aber mit Token: welche
|
||||
dieser Namen haben **kein** Bild? Für „nur fehlende“ über einen ganzen
|
||||
Katalog — die Kleidung des Fotostudios sind rund 8.000 Namen, das wären
|
||||
8.000 Anfragen an `/api/exists` und hier zwei.
|
||||
|
||||
```json
|
||||
{ "muster": "clothing/{model}.png", "namen": ["m_c_11_base_84", "…"] }
|
||||
```
|
||||
|
||||
`namen` darf auch ein Textblock sein (Zeilen, Kommas oder Semikolons).
|
||||
Höchstens **5000 Namen** je Anfrage, mehr gibt einen 400 mit Text.
|
||||
|
||||
```json
|
||||
{ "muster": "clothing/{model}.png", "geprueft": 2, "da": 1,
|
||||
"fehlt": [{ "name": "m_c_11_base_84", "pfad": "clothing/m_c_11_base_84.png" }],
|
||||
"schreibweise": [],
|
||||
"ueberzaehlig": ["…"], "ueberzaehligGesamt": 5337,
|
||||
"unbrauchbar": [] }
|
||||
```
|
||||
|
||||
- **Genau verglichen**, wie die öffentliche Adresse auch. Liegt etwas nur
|
||||
unter einer anderen Schreibweise, steht es in `fehlt` **und** in
|
||||
`schreibweise` (mit `liegtAls`) — es muss umbenannt werden, nicht neu
|
||||
aufgenommen.
|
||||
- `da` ist eine **Zahl**. Wer die einzelnen braucht: alle Namen ohne `fehlt`
|
||||
und ohne `unbrauchbar`.
|
||||
- **Keine Ordnerfessel**, wie bei `/api/exists`: die Antwort ist über `/f/`
|
||||
ohnehin öffentlich.
|
||||
- Endet nie auf eine Bildendung — die Proxy-Falle aus dem Abschnitt darüber
|
||||
greift hier nicht.
|
||||
|
||||
Die Rechnung steht **einmal**, in `server/src/fehlende.ts`; die Route des
|
||||
Dashboards ruft dieselbe.
|
||||
|
||||
---
|
||||
|
||||
## DELETE /api/media/<pfad>
|
||||
|
||||
Braucht einen Token mit dem Recht **darf löschen**.
|
||||
|
||||
Reference in new issue
Block a user