Voller Editor-Flow für Decks und 5 Card-Types (basic, basic-reverse, cloze, typing, multiple-choice). image-occlusion + audio-front kommen mit β-4 (Media). Anki-Import bleibt vorerst aus (Web parsed client- side, gibt keinen Server-Import-Endpoint zu rufen). - DeckCreateBody/UpdateBody, CardCreateBody/UpdateBody Encodable mit snake_case-CodingKeys, nil-Felder werden weggelassen - CardFieldsBuilder mit Type-spezifischen Pflicht-Feld-Konstruktoren - CardsAPI: createDeck/updateDeck/deleteDeck + createCard/updateCard/deleteCard - DeckEditorView (Create + Edit in einer View): Color-Picker mit 8-Preset-Palette, Category-Picker (11 Kats, deutsche Labels), Visibility-Segmented-Control - CardEditorView mit Type-Picker und dynamischen Feldern je Typ. Cloze-Sektion zeigt Live-Cluster-Count und Hint-Syntax-Hinweis. image-occlusion/audio-front zeigen β-4-Placeholder - DeckDetailView mit Action-Buttons (Lernen, Karte hinzufügen, Bearbeiten, Löschen mit Confirmation) - DeckListView: "+"-Button im Toolbar (Leading) für Create-Sheet - 7 neue Encoding-Tests (24 Unit-Tests + 1 UI-Test grün) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
951 B
Swift
38 lines
951 B
Swift
import Foundation
|
|
|
|
/// Body für `POST /api/v1/decks`. Aus `DeckCreateSchema` in
|
|
/// `cards/packages/cards-domain/src/schemas/deck.ts`.
|
|
struct DeckCreateBody: Encodable, Sendable {
|
|
let name: String
|
|
let description: String?
|
|
let color: String?
|
|
let category: DeckCategory?
|
|
let visibility: DeckVisibility?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case name
|
|
case description
|
|
case color
|
|
case category
|
|
case visibility
|
|
}
|
|
}
|
|
|
|
/// Body für `PATCH /api/v1/decks/:id`. Alle Felder optional plus `archived`.
|
|
struct DeckUpdateBody: Encodable, Sendable {
|
|
var name: String?
|
|
var description: String?
|
|
var color: String?
|
|
var category: DeckCategory?
|
|
var visibility: DeckVisibility?
|
|
var archived: Bool?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case name
|
|
case description
|
|
case color
|
|
case category
|
|
case visibility
|
|
case archived
|
|
}
|
|
}
|