feat: podpora ručního generování QR kódů pro platby
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/workflow Pipeline was successful
This commit is contained in:
@@ -10,6 +10,8 @@ paths:
|
||||
$ref: "./paths/login.yml"
|
||||
/qr:
|
||||
$ref: "./paths/getPizzaQr.yml"
|
||||
/qr/generate:
|
||||
$ref: "./paths/qr/generate.yml"
|
||||
/data:
|
||||
$ref: "./paths/getData.yml"
|
||||
|
||||
@@ -75,6 +77,12 @@ paths:
|
||||
/voting/stats:
|
||||
$ref: "./paths/voting/getVotingStats.yml"
|
||||
|
||||
# DEV endpointy (/api/dev)
|
||||
/dev/generate:
|
||||
$ref: "./paths/dev/generate.yml"
|
||||
/dev/clear:
|
||||
$ref: "./paths/dev/clear.yml"
|
||||
|
||||
components:
|
||||
schemas:
|
||||
$ref: "./schemas/_index.yml"
|
||||
|
||||
23
types/paths/dev/clear.yml
Normal file
23
types/paths/dev/clear.yml
Normal file
@@ -0,0 +1,23 @@
|
||||
post:
|
||||
operationId: clearMockData
|
||||
summary: Smazání všech voleb pro daný den (pouze DEV režim)
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/ClearMockDataRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Data byla úspěšně smazána
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
success:
|
||||
type: boolean
|
||||
dayIndex:
|
||||
type: integer
|
||||
"403":
|
||||
description: Endpoint není dostupný v tomto režimu
|
||||
25
types/paths/dev/generate.yml
Normal file
25
types/paths/dev/generate.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
post:
|
||||
operationId: generateMockData
|
||||
summary: Vygenerování mock dat pro testování (pouze DEV režim)
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/GenerateMockDataRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: Mock data byla úspěšně vygenerována
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
success:
|
||||
type: boolean
|
||||
count:
|
||||
type: integer
|
||||
dayIndex:
|
||||
type: integer
|
||||
"403":
|
||||
description: Endpoint není dostupný v tomto režimu
|
||||
16
types/paths/qr/generate.yml
Normal file
16
types/paths/qr/generate.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
post:
|
||||
operationId: generateQr
|
||||
summary: Vygenerování QR kódů pro platbu vybraným uživatelům
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "../../schemas/_index.yml#/GenerateQrRequest"
|
||||
responses:
|
||||
"200":
|
||||
description: QR kódy byly úspěšně vygenerovány
|
||||
"400":
|
||||
description: Neplatný požadavek (chybějící nebo nevalidní data)
|
||||
"401":
|
||||
description: Neautentizovaný uživatel
|
||||
@@ -563,6 +563,70 @@ GotifyServer:
|
||||
items:
|
||||
type: string
|
||||
|
||||
# --- GENEROVÁNÍ QR KÓDŮ ---
|
||||
QrRecipient:
|
||||
description: Příjemce QR kódu pro platbu
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- login
|
||||
- purpose
|
||||
- amount
|
||||
properties:
|
||||
login:
|
||||
description: Přihlašovací jméno uživatele, kterému bude vygenerován QR kód
|
||||
type: string
|
||||
purpose:
|
||||
description: Účel platby (např. "Pizza prosciutto")
|
||||
type: string
|
||||
amount:
|
||||
description: Částka v Kč (kladné číslo, max 2 desetinná místa)
|
||||
type: number
|
||||
minimum: 0.01
|
||||
GenerateQrRequest:
|
||||
description: Request pro generování QR kódů
|
||||
type: object
|
||||
additionalProperties: false
|
||||
required:
|
||||
- recipients
|
||||
- bankAccount
|
||||
- bankAccountHolder
|
||||
properties:
|
||||
recipients:
|
||||
description: Seznam příjemců QR kódů
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/QrRecipient"
|
||||
bankAccount:
|
||||
description: Číslo bankovního účtu odesílatele ve formátu BBAN
|
||||
type: string
|
||||
bankAccountHolder:
|
||||
description: Jméno držitele bankovního účtu
|
||||
type: string
|
||||
|
||||
# --- DEV MOCK DATA ---
|
||||
GenerateMockDataRequest:
|
||||
description: Request pro generování mock dat (pouze DEV režim)
|
||||
type: object
|
||||
additionalProperties: false
|
||||
properties:
|
||||
dayIndex:
|
||||
description: Index dne v týdnu (0 = pondělí, 4 = pátek). Pokud není zadán, použije se aktuální den.
|
||||
$ref: "#/DayIndex"
|
||||
count:
|
||||
description: Počet záznamů k vygenerování. Pokud není zadán, vybere se náhodný počet 5-20.
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 100
|
||||
ClearMockDataRequest:
|
||||
description: Request pro smazání mock dat (pouze DEV režim)
|
||||
type: object
|
||||
additionalProperties: false
|
||||
properties:
|
||||
dayIndex:
|
||||
description: Index dne v týdnu (0 = pondělí, 4 = pátek). Pokud není zadán, použije se aktuální den.
|
||||
$ref: "#/DayIndex"
|
||||
|
||||
# --- NEVYŘÍZENÉ QR KÓDY ---
|
||||
PendingQr:
|
||||
description: Nevyřízený QR kód pro platbu z předchozího Pizza day
|
||||
@@ -582,3 +646,6 @@ PendingQr:
|
||||
totalPrice:
|
||||
description: Celková cena objednávky v Kč
|
||||
type: number
|
||||
purpose:
|
||||
description: Účel platby (např. "Pizza prosciutto")
|
||||
type: string
|
||||
|
||||
Reference in New Issue
Block a user