feat: nová stránka pro návrhy na vylepšení
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 21s
CI / Build server (push) Successful in 24s
CI / Build client (push) Successful in 38s
CI / Playwright E2E tests (push) Successful in 1m18s
CI / Build and push Docker image (push) Successful in 40s
CI / Notify (push) Successful in 2s

This commit is contained in:
2026-06-05 19:15:46 +02:00
parent f28f127a92
commit 17132d4124
27 changed files with 857 additions and 515 deletions
+9 -7
View File
@@ -69,13 +69,15 @@ paths:
/stats:
$ref: "./paths/stats/stats.yml"
# Hlasování (/api/voting)
/voting/getVotes:
$ref: "./paths/voting/getVotes.yml"
/voting/updateVote:
$ref: "./paths/voting/updateVote.yml"
/voting/stats:
$ref: "./paths/voting/getVotingStats.yml"
# Návrhy na vylepšení (/api/suggestions)
/suggestions/list:
$ref: "./paths/suggestions/list.yml"
/suggestions/add:
$ref: "./paths/suggestions/add.yml"
/suggestions/vote:
$ref: "./paths/suggestions/vote.yml"
/suggestions/delete:
$ref: "./paths/suggestions/delete.yml"
# Changelog (/api/changelogs)
/changelogs:
+28
View File
@@ -0,0 +1,28 @@
post:
operationId: addSuggestion
summary: Přidá nový návrh na vylepšení. Autorovi se automaticky nastaví hlas pro.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
- description
properties:
title:
type: string
description: Stručný jednořádkový název návrhu
description:
type: string
description: Detailní popis navrhované úpravy
responses:
"200":
description: Aktualizovaný seznam návrhů.
content:
application/json:
schema:
type: array
items:
$ref: "../../schemas/_index.yml#/Suggestion"
+26
View File
@@ -0,0 +1,26 @@
post:
operationId: deleteSuggestion
summary: >-
Smaže návrh včetně všech jeho hlasů. Smazat lze pouze vlastní návrh
(validováno na serveru).
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: Identifikátor návrhu ke smazání
responses:
"200":
description: Aktualizovaný seznam návrhů.
content:
application/json:
schema:
type: array
items:
$ref: "../../schemas/_index.yml#/Suggestion"
+11
View File
@@ -0,0 +1,11 @@
get:
operationId: listSuggestions
summary: Vrátí seznam návrhů na vylepšení seřazený sestupně dle počtu hlasů.
responses:
"200":
content:
application/json:
schema:
type: array
items:
$ref: "../../schemas/_index.yml#/Suggestion"
+30
View File
@@ -0,0 +1,30 @@
post:
operationId: voteSuggestion
summary: >-
Přepne hlas přihlášeného uživatele u návrhu. Klik na již aktivní směr hlas
zruší, opačný směr stávající hlas přepíše.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- direction
properties:
id:
type: string
description: Identifikátor návrhu
direction:
description: Směr hlasu, na který uživatel klikl
$ref: "../../schemas/_index.yml#/VoteDirection"
responses:
"200":
description: Aktualizovaný seznam návrhů.
content:
application/json:
schema:
type: array
items:
$ref: "../../schemas/_index.yml#/Suggestion"
-11
View File
@@ -1,11 +0,0 @@
get:
operationId: getVotes
summary: Vrátí statistiky hlasování o nových funkcích.
responses:
"200":
content:
application/json:
schema:
type: array
items:
$ref: "../../schemas/_index.yml#/FeatureRequest"
-9
View File
@@ -1,9 +0,0 @@
get:
operationId: getVotingStats
summary: Vrátí agregované statistiky hlasování o nových funkcích.
responses:
"200":
content:
application/json:
schema:
$ref: "../../schemas/_index.yml#/VotingStats"
-22
View File
@@ -1,22 +0,0 @@
post:
operationId: updateVote
summary: Aktualizuje hlasování uživatele o dané funkcionalitě.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- option
- active
properties:
option:
description: Hlasovací možnost, kterou uživatel zvolil.
$ref: "../../schemas/_index.yml#/FeatureRequest"
active:
type: boolean
description: True, pokud uživatel hlasoval pro, jinak false.
responses:
"200":
description: Hlasování bylo úspěšně aktualizováno.
+39 -28
View File
@@ -272,39 +272,50 @@ DepartureTime:
- T12_45
- T13_00
# --- HLASOVÁNÍ ---
FeatureRequest:
# --- NÁVRHY NA VYLEPŠENÍ ---
VoteDirection:
description: Směr hlasu uživatele u návrhu
type: string
enum:
- Možnost označovat si jídla jako oblíbená (taková jídla by se uživateli následně zvýrazňovala)
- Možnost úhrady v podniku za všechny jednou osobou a následné generování QR ostatním
- Zrušení \"užívejte víkend\", místo toho umožnit zpětně náhled na uplynulý týden
- Umožnění zobrazení vygenerovaného QR kódu i po následující dny (dokud ho uživatel ručně \"nezavře\", např. tlačítkem \"Zaplatil jsem\")
- Zobrazování náhledů (fotografií) pizz v rámci Pizza day
- Statistiky (nejoblíbenější podnik, nejpopulárnější jídla, nejobjednávanější pizzy, nejčastější uživatelé, ...)
- Vylepšení responzivního designu
- Zvýšení zabezpečení aplikace
- Zvýšená ochrana proti chybám uživatele (potvrzovací dialogy, překliky, ...)
- Celkové vylepšení UI/UX
- Zlepšení dokumentace/postupů pro ostatní vývojáře
- up
- down
x-enum-varnames:
- FAVORITES
- SINGLE_PAYMENT
- NO_WEEKENDS
- QR_FOREVER
- PIZZA_PICTURES
- STATISTICS
- RESPONSIVITY
- SECURITY
- SAFETY
- UI
- DEVELOPMENT
- UP
- DOWN
VotingStats:
description: Statistiky hlasování - klíčem je název funkce, hodnotou počet hlasů
Suggestion:
description: Návrh na vylepšení aplikace tak, jak je posílán klientovi.
type: object
additionalProperties:
type: integer
additionalProperties: false
required:
- id
- author
- title
- description
- voteScore
- isMine
properties:
id:
type: string
description: Jednoznačný identifikátor návrhu
author:
type: string
description: Login uživatele, který návrh vytvořil
title:
type: string
description: Stručný jednořádkový název návrhu
description:
type: string
description: Detailní popis navrhované úpravy
voteScore:
type: integer
description: Skóre návrhu = počet hlasů pro mínus počet hlasů proti
myVote:
description: Hlas přihlášeného uživatele (chybí, pokud nehlasoval)
$ref: "#/VoteDirection"
isMine:
type: boolean
description: True, pokud návrh vytvořil přihlášený uživatel
# --- EASTER EGGS ---
EasterEgg: