Редактор ачивок в админке + файловое хранилище ачивок (задел под титулы)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 17:41:20 +03:00
co-authored by Claude Opus 4.8
parent 96daddae05
commit c4065962e2
19 changed files with 1165 additions and 6 deletions
+339
View File
@@ -509,6 +509,40 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/achievements": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** List Achievements */
get: operations["list_achievements_api_achievements_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/achievements/{slug}/icon": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Get Icon */
get: operations["get_icon_api_achievements__slug__icon_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/admin/auth/login": {
parameters: {
query?: never;
@@ -698,6 +732,59 @@ export interface paths {
patch: operations["rename_faction_api_admin_factions__faction_id__patch"];
trace?: never;
};
"/api/admin/achievements": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** List Achievements */
get: operations["list_achievements_api_admin_achievements_get"];
put?: never;
/** Create Achievement */
post: operations["create_achievement_api_admin_achievements_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/admin/achievements/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post?: never;
/** Delete Achievement */
delete: operations["delete_achievement_api_admin_achievements__slug__delete"];
options?: never;
head?: never;
/** Update Achievement */
patch: operations["update_achievement_api_admin_achievements__slug__patch"];
trace?: never;
};
"/api/admin/achievements/{slug}/icon": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
/** Upload Achievement Icon */
put: operations["upload_achievement_icon_api_admin_achievements__slug__icon_put"];
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/admin/audit-logs": {
parameters: {
query?: never;
@@ -788,6 +875,48 @@ export interface paths {
export type webhooks = Record<string, never>;
export interface components {
schemas: {
/** AchievementCreate */
AchievementCreate: {
/** Name */
name: string;
/** Description */
description?: string | null;
/** Condition */
condition?: string | null;
};
/** AchievementRead */
AchievementRead: {
/** Slug */
slug: string;
/** Name */
name: string;
/**
* Description
* @default
*/
description: string;
/**
* Condition
* @default
*/
condition: string;
/**
* Has Condition
* @default false
*/
has_condition: boolean;
/** Icon Url */
icon_url?: string | null;
};
/** AchievementUpdate */
AchievementUpdate: {
/** Name */
name?: string | null;
/** Description */
description?: string | null;
/** Condition */
condition?: string | null;
};
/** ActiveGroupUpdate */
ActiveGroupUpdate: {
/** Group Id */
@@ -912,6 +1041,11 @@ export interface components {
/** Telegram Bot Username */
telegram_bot_username?: string | null;
};
/** Body_upload_achievement_icon_api_admin_achievements__slug__icon_put */
Body_upload_achievement_icon_api_admin_achievements__slug__icon_put: {
/** File */
file: string;
};
/** Body_upload_my_avatar_api_users_me_avatar_put */
Body_upload_my_avatar_api_users_me_avatar_put: {
/** File */
@@ -2640,6 +2774,57 @@ export interface operations {
};
};
};
list_achievements_api_achievements_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AchievementRead"][];
};
};
};
};
get_icon_api_achievements__slug__icon_get: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
admin_login_api_admin_auth_login_post: {
parameters: {
query?: never;
@@ -3017,6 +3202,160 @@ export interface operations {
};
};
};
list_achievements_api_admin_achievements_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AchievementRead"][];
};
};
};
};
create_achievement_api_admin_achievements_post: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["AchievementCreate"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AchievementRead"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
delete_achievement_api_admin_achievements__slug__delete: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["OkResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
update_achievement_api_admin_achievements__slug__patch: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["AchievementUpdate"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AchievementRead"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
upload_achievement_icon_api_admin_achievements__slug__icon_put: {
parameters: {
query?: never;
header?: never;
path: {
slug: string;
};
cookie?: never;
};
requestBody: {
content: {
"multipart/form-data": components["schemas"]["Body_upload_achievement_icon_api_admin_achievements__slug__icon_put"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AchievementRead"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
audit_logs_api_admin_audit_logs_get: {
parameters: {
query?: {