feat: export historie jídel uživatele
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 25s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m53s
CI / Build and push Docker image (push) Successful in 1m1s
CI / Notify (push) Successful in 3s

This commit is contained in:
Ondřej Anděl
2026-08-12 13:53:36 +02:00
parent 065ccaf38a
commit eeb1630391
13 changed files with 1513 additions and 8 deletions
+2
View File
@@ -70,6 +70,8 @@ paths:
# Statistiky (/api/stats)
/stats:
$ref: "./paths/stats/stats.yml"
/stats/export:
$ref: "./paths/stats/export.yml"
# Návrhy na vylepšení (/api/suggestions)
/suggestions/list:
+44
View File
@@ -0,0 +1,44 @@
get:
operationId: getStatsExport
summary: Vrátí přehled stravování přihlášeného uživatele za vybraný měsíc (XLSX, CSV nebo JSON).
parameters:
- in: query
name: year
required: true
schema:
type: integer
description: Rok, za který přehled vygenerovat
- in: query
name: month
required: true
schema:
type: integer
minimum: 1
maximum: 12
description: Měsíc (1 = leden), za který přehled vygenerovat
- in: query
name: format
required: false
schema:
type: string
enum: [xlsx, csv, json]
default: xlsx
description: Formát exportu. Výchozí je xlsx.
responses:
"200":
description: Přehled stravování uživatele ve vyžádaném formátu
content:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
schema:
type: string
format: binary
text/csv:
schema:
type: string
application/json:
schema:
$ref: "../../schemas/_index.yml#/UserExport"
"400":
description: Neplatné parametry
"401":
description: Neautentizovaný uživatel
+66
View File
@@ -406,6 +406,72 @@ WeeklyStats:
maxItems: 5
items:
$ref: "#/DailyStats"
UserExportRow:
description: Jeden záznam přehledu stravování uživatele (jeden den a typ záznamu)
type: object
additionalProperties: false
required:
- date
- dayOfWeek
- type
properties:
date:
description: Datum záznamu ve formátu YYYY-MM-DD
type: string
format: date
dayOfWeek:
description: Den v týdnu (pondělí, ...)
type: string
type:
description: Typ záznamu — název podniku/volby, nebo "Objednávka" u objednávky bez volby oběda
type: string
food:
description: Vybrané jídlo (jídla z menu, pizzy, položky objednávky)
type: string
note:
description: Poznámka uživatele k záznamu
type: string
store:
description: Obchod/restaurace objednávkové skupiny
type: string
orderedBy:
description: Login objednávajícího (zakladatele objednávkové skupiny)
type: string
amount:
description: Částka k úhradě po slevě v korunách
type: number
UserExport:
description: Přehled stravování jednoho uživatele za vybraný měsíc
type: object
additionalProperties: false
required:
- login
- year
- month
- rowCount
- totalAmount
- rows
properties:
login:
description: Přihlašovací jméno uživatele, kterému přehled patří
type: string
year:
description: Rok přehledu
type: integer
month:
description: Měsíc přehledu (1 = leden)
type: integer
rowCount:
description: Počet záznamů v přehledu
type: integer
totalAmount:
description: Součet částek všech záznamů v korunách
type: number
rows:
description: Jednotlivé záznamy přehledu seřazené dle data
type: array
items:
$ref: "#/UserExportRow"
# --- PIZZA DAY ---
PizzaDayState: