feat: add compatibility table endpoint and rendering for game libraries
This commit is contained in:
32
README.md
32
README.md
@@ -200,7 +200,8 @@ python -m ams.api.importer --game "Reksio i UFO" snapshots/PIKLIB8.dll.snapshot.
|
||||
uvicorn ams.api.app:create_app --factory --reload # serwer
|
||||
```
|
||||
Endpointy: `POST/GET /games`, `POST/GET /snapshots` (import deduplikowany po sha256),
|
||||
`GET /diff?old=&new=[&owner=]`, `GET /snapshots/{id}/similar`, `POST/GET /jobs`, `GET /health`.
|
||||
`GET /diff?old=&new=[&owner=]`, `GET /snapshots/{id}/similar`, `GET /compat?format=md|json`,
|
||||
`POST/GET /jobs`, `GET /health`.
|
||||
Testy: `pytest` (28, w tym integracyjne na golden pair).
|
||||
|
||||
### Podobne wersje
|
||||
@@ -211,6 +212,35 @@ Miara jest *cross-compiler*: golden pair PIKLIB8 (MSVC6) ↔ bloomoodll (MSVC8)
|
||||
(types 95% / methods 87% / events 77% / fields 90%), tam gdzie fuzzy-hash binarki daje 0.
|
||||
Fuzzy (ssdeep) leci jako sygnał poboczny „prawie ten sam plik", gdy snapshot ma `binary.fuzzy`.
|
||||
|
||||
## Tablica kompatybilności (eksport pod dokumentację)
|
||||
|
||||
Krosowy widok całego katalogu **grupowany po nazwie biblioteki** (`PIKLIB8.dll`, `bloomoodll.dll`…):
|
||||
która gra wiezie którą bibliotekę. Haczyk: ta sama nazwa może wystąpić w kilku grach, a *mimo to*
|
||||
nie być tym samym silnikiem. Dlatego w obrębie jednej nazwy klastrujemy **warianty po powierzchni
|
||||
silnika** (te same zbiory tożsamości co `diff`/`similarity` — kompilator-agnostyczne), a każdy
|
||||
wariant inny niż referencyjny (`A`) dostaje **gwiazdkę** `*` z deltą *czym* się różni. Byte-różnice
|
||||
z rekompilacji nie generują gwiazdki — liczy się API skryptowe.
|
||||
|
||||
```bash
|
||||
# z plików snapshot (bez DB/serwera); Label= ustawia kolumnę-grę
|
||||
python -m ams.compat \
|
||||
"Reksio i UFO=snapshots/PIKLIB8.dll.snapshot.json" \
|
||||
"Reksio i Kapitan Nemo=snapshots/bloomoodll.dll.snapshot.json" \
|
||||
--format md -o compat.md # albo --format json
|
||||
```
|
||||
|
||||
Z katalogu (DB) przez API — pobiera gotowy plik (`Content-Disposition: attachment`):
|
||||
|
||||
```bash
|
||||
curl -OJ "http://127.0.0.1:8000/compat?format=md" # → compat.md
|
||||
curl -OJ "http://127.0.0.1:8000/compat?format=json" # → compat.json (grupy + warianty + diffy)
|
||||
```
|
||||
|
||||
W UI: przycisk **⬇ kompat** w panelu *Gry / wersje*. Markdown to macierz `biblioteka × gra`
|
||||
(`✓` = obecna; `A`/`B*`/… gdy nazwa ma kilka wariantów powierzchni) plus sekcja *Warianty* z
|
||||
przypisem: dla każdego rozbieżnego wariantu overlap % i `types/methods/events/fields +N/-N/~N`
|
||||
względem referencyjnego.
|
||||
|
||||
## Front — Command Center
|
||||
|
||||
Po starcie serwera otwórz **http://127.0.0.1:8000/** (`/` → `/ui/`). Statyczny UI bez build-stepu
|
||||
|
||||
Reference in New Issue
Block a user