mirror of
https://github.com/zkldi/Tachi.git
synced 2026-10-14 01:59:05 +03:00
* docs: migrate from mkdocs to mdbook - Rename old mkdocs docs/ to old-docs/ for reference - Set up new docs/ with mdbook (book.toml + src/ tree) - Mirror full nav structure from mkdocs.yml into SUMMARY.md - Add Justfile-docs with docs-serve, docs-build, docs-check, docs-install recipes - Import Justfile-docs from root Justfile - Rewrite .github/workflows/docs.yml: build step uses taiki-e/install-action to install mdbook, split into separate build + deploy jobs, PR builds run the check step too * ci(docs): pin actions to SHAs, install mdbook via release binary * ci(docs): install mdbook from apt instead of curling a release binary * dev: replace mkdocs python stack with mdbook in dev image * ci(docs): apt only works on Debian; restore release binary install for Ubuntu CI * docs: fix duplicate file entries in SUMMARY.md * docs: remove docs-install recipe * docs: remove site-url from book.toml to fix asset loading * dev: install mdbook from upstream release binary, not Debian apt The Debian package (0.4.x+ds) strips bundled font assets, leaving the built site without fonts/fonts.css. Use the upstream tarball (same as CI) so the theme is complete. Handles x86_64 and aarch64. * docs: vendor mdbook tarballs in dev/mdbook/, install from there Dockerfile.dev uses COPY + tar to install the right arch at build time. CI extracts the x86_64 tarball directly from the checkout. No network access required for either — and no stripped-fonts Debian package. * fix: unwritten
157 lines
3.3 KiB
Markdown
157 lines
3.3 KiB
Markdown
# UGPT Stat Showcase
|
|
|
|
These endpoints are related to the Statistic Showcase feature.
|
|
|
|
*****
|
|
|
|
## Evaluate this users set stats
|
|
|
|
`GET /api/v1/users/:userID/games/:gameGroup/:playtype/showcase`
|
|
|
|
### Parameters
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `projectUser` | Optional, userID | If provided, will *project* another users showcase onto this user, evaluating the same user against the projectedUser's stats. |
|
|
|
|
### Response
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `<body>` | Array<StatShowcaseResults> | |
|
|
|
|
### Example
|
|
|
|
#### Request
|
|
```
|
|
GET /api/v1/users/1/games/iidx/SP/showcase
|
|
```
|
|
|
|
#### Response
|
|
```js
|
|
[{
|
|
stat: {
|
|
|
|
},
|
|
value: {
|
|
value: 123,
|
|
},
|
|
related: {
|
|
song: {
|
|
title: "FREEDOM DIVE",
|
|
// ...
|
|
},
|
|
chart: {
|
|
// some chart stuff..
|
|
},
|
|
// folders: [] if this is a folder(s) stat, then folders are displayed here.
|
|
}
|
|
}]
|
|
```
|
|
|
|
*****
|
|
|
|
## Replace a user's stat showcase.
|
|
|
|
`PATCH /api/v1/users/:userID/games/:gameGroup/:playtype/showcase`
|
|
|
|
### Permissions
|
|
|
|
- `customise_profile`
|
|
|
|
### Parameters
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `<body>` | Array<StatDocument> | An array of up to 6 stat documents. |
|
|
|
|
### Response
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `<body>` | Array<StatDocument> | The newly updated stat documents. |
|
|
|
|
### Example
|
|
|
|
#### Request
|
|
```
|
|
PATCH /api/v1/users/1/games/iidx/SP/showcase
|
|
|
|
[
|
|
{
|
|
mode: "chart",
|
|
chartID: "some_chart_id",
|
|
property: "percent"
|
|
}
|
|
]
|
|
```
|
|
|
|
#### Response
|
|
```js
|
|
[
|
|
{
|
|
mode: "chart",
|
|
chartID: "some_chart_id",
|
|
property: "percent"
|
|
}
|
|
]
|
|
```
|
|
|
|
*****
|
|
|
|
## Evaluate a custom stat on this user.
|
|
|
|
`GET /api/v1/users/:userID/games/:gameGroup/:playtype/showcase/custom`
|
|
|
|
### Parameters
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `mode` | "folder" \| "chart" | Whether the stat to evaluate is on a folder or a chart. |
|
|
| `property` | "grade" \| "lamp" \| "score" \| "percent" or "playcount" if mode is chart. | What property to evaluate on the given criteria. |
|
|
| `chartID` | string, if mode === "chart" | If mode is chart, this should contain the relevant chartID. |
|
|
| `folderID` | string, if mode === "folder" | If mode is folder, this should contain the relevant folderID. |
|
|
| `gte` | number, if mode === "folder" | If mode is folder, this must contain the value the property must be greater than, i.e. lamp >= 6, or percent >= 90 |
|
|
|
|
### Response
|
|
|
|
| Property | Type | Description |
|
|
| :: | :: | :: |
|
|
| `stat` | StatDocument | The stat you evaluated. |
|
|
| `result` | {value: number \| null, outOf?: number } | Contains `value`, which contains the stat's value, or NULL if the mode is chart and the user has not played this chart. If mode is folder, `outOf` contains the total amount of charts in that folder. |
|
|
| `related` | {song, chart} or {folders} | If mode is chart, contains the pertinent song and chart. If mode is folder, contains the pertinent folder documents.
|
|
|
|
### Example
|
|
|
|
#### Request
|
|
```
|
|
GET /api/v1/users/1/games/iidx/SP/showcase/custom?mode=chart&property=percent&chartID=some_chart_id
|
|
```
|
|
|
|
#### Response
|
|
```js
|
|
{
|
|
stat: {
|
|
mode: "chart",
|
|
property: "percent",
|
|
chartID: "some_chart_id",
|
|
},
|
|
result: {
|
|
value: 99.12
|
|
},
|
|
related: {
|
|
song: {
|
|
id: 123,
|
|
title: "AA",
|
|
artist: "DJ.Amuro",
|
|
// ...
|
|
},
|
|
chart: {
|
|
songID: 123,
|
|
difficulty: "ANOTHER",
|
|
// ...
|
|
}
|
|
}
|
|
}
|
|
```
|