plan(ressourcen): Ressourcen-Verteilsystem – Planung + Arbeitspakete #116
Labels
No labels
block-planning
bug
documentation
duplicate
enhancement
feature
good first issue
help wanted
infrastructure
invalid
planning
priority:high
priority:low
question
refactoring
status:backlog
status:done
status:in-progress
status:todo
tech-decision
test
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: bollwerkadmin/bollwerk#116
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Neue Funktion "Ressourcen": Authenticated User können einen server-verwalteten Katalog von Dateien (epub, pdf, zip, 7z) einsehen, filtern und per Knopfdruck herunterladen ("Öffnen mit"-Dialog). Nur Admins können Ressourcen anlegen.
Zu klärende Entscheidungen (vor Implementierung)
/opt/bollwerk/resources/(Volume-Mount)MAX_BODY_SIZEfür Upload muss erhöht werden (aktuell 1 MB, Ressourcen bis "einige MB")Ressourcen-Metadaten
Pflichtfelder:
guidtitledescriptiontagsfileFormatmimeTypeapplication/epub+zip– für Android "Öffnen mit"fileSizereleaseDatecreatedAtupdatedAtOptionale Felder (Vorschlag):
authorlanguagede,en, …editiondownloadUrl/api/resources/{guid}/downloadArbeitspakete
[S] Server – DB-Schema (Postgres)
resources: alle Pflicht- + Optionalfelderresource_tagsoder JSON-Array-Spalte für Tags[S] Server – REST-API
GET /api/resources→ Katalog als JSON-Array (authenticated)GET /api/resources/{guid}/download→ Datei-Stream (authenticated)POST /api/admin/resources→ Neue Ressource anlegen + Datei hochladen (multipart, Admin-only)PUT /api/admin/resources/{guid}→ Metadaten aktualisierenDELETE /api/admin/resources/{guid}→ Ressource + Datei löschen[S] Server – Datei-Storage
/opt/bollwerk/resources/als Docker-Volume{guid}.{ext}(stabil, kein Konflikt)MAX_BODY_SIZE-Ausnahme für Admin-Upload-Route[A] App – Room-Schema + Repository
ResourceEntity+ResourceDao(Katalog lokal cachen)ResourceRepositorymitgetAll(),refreshFromServer(),downloadResource(guid)[A] App – Navigation + Ressourcen-Screen
ResourceListScreen: sortierbare, filterbare ListeResourceListViewModel[A] App – Download + "Öffnen mit"
context.cacheDirspeichernFileProvider+Intent.ACTION_VIEWmit korrektem MIME-Typ[A] App – Ressourcen-Karte
Abnahme-Kriterien (Gesamt-Feature)