dsn

Absence History GUI Design, rev. 1, dsn

dsn~gui-abwesenheitshistorie~1

Parents can view their submitted absence notifications:

  • *History View (notify-history.html):**
  • Table listing all past notifications
  • Columns: Child name, Type, From date, To date, Status
  • Sorted by date descending (newest first)
  • Edit button for modifiable notifications
  • Visual indicators for active vs. past notifications
  • *Edit View (notify-edit.html):**
  • Pre-filled form with existing notification data
  • Allows modification of dates and message
  • Revoke option to cancel notification
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:43

Absence Notification Design, rev. 1, dsn

dsn~abwesenheitsmeldungen-design~1

Absence notifications are implemented via:

  • AbsenceNotification model with type (Illness, Vacation, Other)
  • Notify controller for parent submission
  • Employee controller for staff view
  • Date range support (FromDate, ToDate)
  • Acknowledgment tracking
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:44

Absence Notification GUI Design, rev. 1, dsn

dsn~gui-abwesenheitsmeldung~1

The absence notification GUI is implemented as a multi-step form:

  • *Step 1 - Child Selection (notify.html):**
  • Displays list of parent's children with checkboxes
  • Pre-selects if parent has only one child
  • Shows child photo, name, and current group
  • Validates at least one child is selected
  • *Step 2 - Status Details:**
  • Radio buttons for absence type: Illness, Vacation, Other
  • Date picker for start date (FromDate)
  • Date picker for end date (ToDate)
  • Optional textarea for additional message/notes
  • Submit button to create notification
  • *Technical Implementation:**
  • Controller: controller/notify.go - Notify, NotifySend
  • Templates: notify.html, notify-edit.html
  • Model: AbsenceNotification with type enum
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:10

Access Management Design, rev. 1, dsn

dsn~zugriffsmanagement-design~1

Parent access control includes:

  • UserChild.ValidFrom/ValidUntil for access periods
  • CanUserAccessChild() for authorization checks
  • LocationAccessTimes controller for admin management
  • Location-based scope for staff roles
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:117

Admin Child Management GUI Design, rev. 1, dsn

dsn~gui-admin-kinderverwaltung~1

Admin interface for child management:

  • *Child List (admin-children-list.html):**
  • Paginated table of all children
  • Columns: Photo, Name, Group, Location, Active
  • Search by name
  • Filter by group/location
  • Click to view details
  • *Child Detail (admin-children-detail.html):**
  • Child information
  • Group assignment
  • Parent relationships
  • Edit button
  • Add parent button
  • *Child Create/Edit:**
  • admin-children-create.html - New child form
  • admin-children-edit.html - Edit child form
  • Fields: Name, Birthday, Group, Photo
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:462

Admin Sync Dashboard GUI Design, rev. 1, dsn

dsn~gui-admin-sync~1

Admin interface for intranet data sync processing:

  • *Dashboard (admin-sync.html):**
  • Pending record counts per staging table
  • Process All button with confirmation
  • Individual process buttons:
  • Process Locations
  • Process Groups
  • Process Children
  • Process Child-Group assignments
  • Recent processing log table
  • Log columns: Type, Started, Status, Created, Updated, Errors
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:496

Admin User Management GUI Design, rev. 1, dsn

dsn~gui-admin-benutzerverwaltung~1

Admin interface for user management:

  • *User List (admin-users-list.html):**
  • Paginated table of all users
  • Columns: Name, Email, Roles, Status
  • Search by name/email
  • Filter by role
  • Click to view details
  • *User Detail (admin-users-detail.html):**
  • User information
  • Role assignments
  • Children relationships with validity dates
  • Edit user button
  • Add child relationship button
  • Impersonate user button
  • *User Edit (admin-users-edit.html):**
  • Editable user fields
  • Role checkboxes
  • Save/Cancel buttons
  • *Child Relationship Management:**
  • admin-users-add-child.html - Add child to user
  • admin-users-edit-child.html - Edit relationship dates
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:423

Announcement Creation GUI Design, rev. 1, dsn

dsn~gui-ankuendigung-erstellen~1

Staff can create news/announcements:

  • *Form Fields (news-create.html):**
  • Scope dropdown: Group-specific or Location-wide
  • Group selector (if group-specific)
  • Title field (required, single line)
  • Content textarea with markdown support
  • Valid until date (optional expiration)
  • *Workflow:**
  • Group Leaders can create for their groups
  • Location Leaders can create for entire location
  • Admins can create global announcements
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:165

Authorization Design, rev. 1, dsn

dsn~rechtevergabe-design~1

Role-based access control includes:

  • Role model (Parent, Employee, GroupLead, LocationLead, Admin)
  • User.Roles many-to-many relationship
  • HasRole(), IsParent(), IsEmployee(), etc. helpers
  • Permissions model for fine-grained control (TODO)
  • Group-based staff assignment via group_teachers
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:134

Child Detail Page GUI Design, rev. 1, dsn

dsn~gui-kind-seite~1

Detailed view of a single child:

  • *Parent View (child.html):**
  • Child photo and full name
  • Birthday and age
  • Current group and location
  • Recent absence notifications
  • Link to notify absence
  • *Employee View (employee-child.html):**
  • All parent view information plus:
  • Parent/guardian contact information
  • Recent messages to parents
  • Absence history
  • Group assignment details
  • Link to send message to parents
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:224

Database Design, rev. 1, dsn

dsn~datenbank-design~1

The database uses GORM ORM with the following core models:

  • User, Child, Location, Group for organizational structure
  • UserChild for parent-child relationships with validity periods
  • AbsenceNotification for absence reporting
  • ParentalLetter, Message for communication
  • News, Document for content distribution
  • Role, Permissions for authorization
  • Sync* tables for intranet data staging
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:7

Document Management Design, rev. 1, dsn

dsn~dokumentenverwaltung-design~1

Document system includes:

  • Document model with title, path, validity period
  • BlackboardDocument for bulletin board items
  • CreatedBy tracking
  • PublishedAt/ValidUntil for visibility control
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:152

Dual API Architecture Design, rev. 1, dsn

dsn~dual-api-architektur~1

The application implements a dual-frontend architecture:

  • HTML routes under /:lang/... for server-rendered pages
  • JSON API routes under /api/v1/:lang/... for mobile/SPA clients
  • Content negotiation via shouldReturnJSON() helper
  • Same controller handlers serve both interfaces
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:27

Group Overview GUI Design, rev. 1, dsn

dsn~gui-gruppenuebersicht~1

Employee view of children in their assigned groups:

  • *Notifications View (notifications.html):**
  • Shows today's absence notifications
  • Grouped by group name
  • Displays: Child photo, name, absence type, date range
  • Visual distinction for illness vs vacation
  • *Location Children View (location-children.html):**
  • Table of all children in employee's location(s)
  • Columns: Photo, Name, Group, Status
  • Search/filter functionality
  • Click to view child details
  • *Home View - Employee (home.html employee section):**
  • Quick stats: Total children, Present today, Absent today
  • Recent notifications summary
  • Quick links to common actions
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:192

Home Page GUI Design, rev. 1, dsn

dsn~gui-home~1

Role-based home page:

  • *Parent Home (home.html - parent section):**
  • Children cards with photos
  • Quick status indicators per child
  • Recent notifications summary
  • Quick action: Report absence
  • Unread messages/letters indicator
  • *Employee Home (home.html - employee section):**
  • Today's absence summary
  • Group statistics
  • Recent notifications
  • Quick links to common tasks
  • *Dual-Role Users:**
  • Role switcher in header
  • Home content updates based on active role
  • Persistent role preference in session
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:586

Import/Export Design, rev. 1, dsn

dsn~import-export-design~1

Intranet data sync is implemented via:

  • Staging tables (SyncPerson, SyncGroup, SyncLocation, etc.)
  • Bearer token authentication with IP allowlist
  • REST API endpoints under /api/intranet/...
  • SyncProcessor service for staging→app transformation
  • ExternalID mapping for upsert operations
  • SyncProcessingLog for audit trail
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:98

Location Documents GUI Design, rev. 1, dsn

dsn~gui-einrichtungsdokumente~1

Document management and display:

  • *Status:** Not yet implemented (placeholder page)
  • *Planned Implementation:**
  • Document list grouped by category
  • Categories: Meal plans, Weekly plans, Notices
  • Upload interface for staff
  • Download links for all users
  • Expiration date support

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:373

Login/Authentication GUI Design, rev. 1, dsn

dsn~gui-login~1

Authentication interface:

  • *Login Page (login.html):**
  • Email input field
  • Password input field
  • Login button
  • Error message display area
  • Language switcher
  • *Session Management:**
  • JWT token in HTTP-only cookie
  • 7-day session duration
  • Automatic redirect to login on session expiry
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:559

Menu Structure GUI Design, rev. 1, dsn

dsn~gui-menu-struktur~1

The application implements role-based navigation menus:

  • *Base Layout (base.html):**
  • Responsive header with logo and user info
  • Role indicator for dual-role users
  • Role switcher dropdown for users with multiple roles
  • Language switcher (DE/EN)
  • Logout button
  • *Parent Menu:**
  • Home (children overview)
  • Notify (absence notification)
  • Messages (from staff)
  • Parental Letters
  • News/Announcements
  • Documents (placeholder)
  • *Employee Menu:**
  • Home (group overview)
  • Notifications (view absence notifications)
  • Location Children (all children in location)
  • Messages (send to parents)
  • Parental Letters (create/manage)
  • News (view/create)
  • *Group Leader Menu (extends Employee):**
  • All Employee menu items
  • Parental Letter creation with review workflow
  • News creation for group
  • *Location Leader Menu (extends Group Leader):**
  • All Group Leader menu items
  • Parent Access Time Management
  • Location-wide parental letters
  • *Admin Menu (extends all):**
  • Location selector
  • User Management
  • Child Management
  • News Management (global)
  • API Token Management
  • Sync Processing Dashboard
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:70

Messages Design, rev. 1, dsn

dsn~nachrichten-design~1

Direct messaging system includes:

  • Message model linked to specific child
  • MessageRead for tracking read status and responses
  • MessageRecipients for multi-recipient support
  • InteractionType field for response requirements
  • Draft/Published workflow
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:80

News/Announcements GUI Design, rev. 1, dsn

dsn~gui-ankuendigungen~1

News and announcements are displayed in a blog-style list:

  • *List View - Parent (news-list-parent.html):**
  • Cards showing title, date, and preview
  • Unread indicator for new items
  • Click to view full content
  • Sorted by publish date descending
  • *List View - Employee (news-list-employee.html):**
  • Same as parent view plus:
  • Edit/Delete buttons for own news
  • Scope indicator (Group/Location/Global)
  • Read statistics summary
  • *Detail View (news-detail.html, news-detail-employee.html):**
  • Full news content with markdown rendering
  • Author and publish date
  • Employee view shows read/unread statistics
  • Edit button for authorized users
  • *Create/Edit Forms (news-create.html, news-edit.html):**
  • Title input field
  • Rich text area for content
  • Scope selector (Group or Location-wide)
  • Valid until date picker (optional)
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:126

Parent Access Time Management GUI Design, rev. 1, dsn

dsn~gui-zugriffszeiten~1

Location Leaders manage parent access periods:

  • *List View (location-access-times-list.html):**
  • Search-first interface (search by child name)
  • Results show: Parent name, Child name, Valid from, Valid until
  • Edit button for each relationship
  • Location filter for multi-location users
  • *Edit Form (location-access-times-edit.html):**
  • Parent information display (read-only)
  • Child information display (read-only)
  • Valid from date picker
  • Valid until date picker
  • Save button
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:395

Parent Messages GUI Design, rev. 1, dsn

dsn~gui-eltern-nachrichten~1

Direct messaging between staff and parents:

  • *Message List - Employee (parent-messages.html):**
  • List of sent messages
  • Recipient (child/parent) indicator
  • Response status
  • Date sent
  • Click to view details
  • *Message List - Parent (parent-received-messages.html):**
  • List of received messages
  • Unread indicator
  • Response required indicator
  • Sender information
  • *Message Form (parent-message-form.html):**
  • Child selector dropdown with search
  • Multi-child selection support
  • Title field
  • Message content textarea
  • Response settings:
  • Checkbox: Allow response
  • Checkbox: Require response
  • Send button
  • *Message Detail (parent-message-detail.html):**
  • Full message content
  • Response thread (if responses enabled)
  • Response form for parents
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:330

Parental Letter Creation GUI Design, rev. 1, dsn

dsn~gui-elternbrief-erstellen~1

Form for creating parental letters:

  • *Create Form (parental-letter-create.html):**
  • Scope selector: Group or Location-wide
  • Group dropdown (for group-specific letters)
  • Title field (required)
  • Content textarea with markdown support
  • Response settings:
  • Checkbox: Allow responses
  • Checkbox: Require response (only if responses allowed)
  • Reviewer selection dropdown
  • Save as draft / Submit for review buttons
  • *Edit Form (parental-letter-edit.html):**
  • All create form fields pre-filled
  • Status indicator
  • Version history (if applicable)
  • *Review Form (parental-letter-review.html):**
  • Read-only letter preview
  • Approve / Request changes buttons
  • Comment field for feedback
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:294

Parental Letters Design, rev. 1, dsn

dsn~elternbriefe-design~1

Parental letters system includes:

  • ParentalLetter model with review workflow (draft, pending_review, approved, published)
  • ParentalLetterRead for tracking read status and responses
  • InteractionType field (informal, answerpossible, answerrequired)
  • Deadline support for required responses
  • Location/Group scoping
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/design-specs.md:62

Parental Letters GUI Design, rev. 1, dsn

dsn~gui-elternbriefe~1

Multi-role parental letter system:

  • *List View - Parent (parental-letters-list-parent.html):**
  • List of received letters
  • Unread indicator
  • Response status indicator
  • Click to view and respond
  • *List View - Employee (parental-letters-list-employee.html):**
  • Letters created by user
  • Status indicators: Draft, Pending Review, Published
  • Response statistics (answered/total)
  • Edit/Delete actions for drafts
  • *Detail View - Parent (parental-letter-view-parent.html):**
  • Full letter content
  • Response form if response requested/required
  • Visual indicator for required responses
  • Submit response button
  • *Detail View - Employee (parental-letter-view-employee.html):**
  • Full letter content
  • Response summary table
  • List of responders and non-responders
  • Response details expandable
Needs: impl, utest

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:254

Responsive Design, rev. 1, dsn

dsn~gui-responsive~1

The application implements responsive design for multiple device types:

  • *Breakpoints:**
  • Mobile: < 768px
  • Tablet: 768px - 1024px
  • Desktop: > 1024px
  • *Mobile Optimizations:**
  • Collapsible navigation menu (hamburger)
  • Stacked form layouts
  • Touch-friendly button sizes (min 44px)
  • Swipe gestures for navigation (planned)
  • *Desktop Optimizations:**
  • Sidebar navigation
  • Multi-column layouts where appropriate
  • Keyboard shortcuts (planned)
  • *Implementation:**
  • Tailwind CSS utility classes
  • CSS media queries in base template
  • Responsive tables with horizontal scroll on mobile
Needs: impl

/workspace/Wippidu/app/docs/tech/reference/gui-design-specs.md:522

Out: 2
my-design, rev. 1, dsn

dsn~my-design~1

Description of the design.

Needs: impl, utest

/workspace/Wippidu/app/docs/tech/howto/run-oft-trace.md:62

Out: 1
my-design-name, rev. 1, dsn

dsn~my-design-name~1

Description of the design specification.

Needs: impl, utest

/workspace/Wippidu/app/docs/tech/explanation/oft-requirement-tracing.md:44

Out: 1
plantuml-database-model, rev. 1, dsn

dsn~plantuml-database-model~1

`plantuml id="databaseschema" format="svg_inline" @startuml

' [dsn~plantuml-database-model~1 -> req~datenbank-modell~1 >> impl,utest,itest]

left to right direction skinparam linetype ortho

entity Child {

id: number
first_name: string
middle_names: string
last_name: string
birthday: date

}

entity ChildUserMapping {

childid: number <<FK>>
userid: number <<FK>>

}

entity User {

id: number
email: string
name: string
address: text
birthday: date

}

entity Password {

userid: number <<FK>>
password: string

}

entity Pin {

userid: number <<FK>>
pin: number

}

entity Location {

id: number
name: string
address: text
locationlead: number //userid

}

entity LocationDevice {

id: number
locationid: number <<FK>>
deviceident: string

}

' entity GroupInLocation

entity Group {

id: number
name: string
locationid: number <<FK>>
grouplead: number <<FK>> //userid

}

entity GroupTeacher{

groupid: number <<FK>>
userid: number <<FK>>
// must be role employee!

}

entity GroupChildren{

groupid: number <<FK>>
childid: number <<FK>>

}

entity Role {

id: number
name: string

}

entity UserRole {

roleid: number <<FK>>
userid: number <<FK>>

}

entity CareDay {

id: number
weekday: string
start_time: float
end_time: float
locationid: number <<FK>>
groupid: number <<FK>>

}

entity ChildCareDay{

caredayid: number <<FK>>
childid: number <<FK>>

}

entity ChildStatus{

childid: number <<FK>>
status_msg: string
status: Status

} entity Status {

status_type: string

}

entity LetterRead{

letterid: number <<Fk>>
userid: number <<FK>>

}

entity ParentalLetter{

id: number
createdBy: number <<FK>> // user w/ employee role
text: text
locationid: number <<FK>> //for whole location?
groupid: number <<FK>> // for group

}

entity Message{

id: number
message: text
createdBy: number <<FK>> // user w/ employee role

} entity MessageRecipients{

messageid: number <<FK>>
userid: number <<FK>>
read: boolean
response: text // ?

}

entity Announcment{

id: number
title: string
text: text
createdBy: number <<Fk>>
publishDate: datetime
removeDate: datetime
removeWhenRead: boolean

} entity AnnouncmentRead{

announcementid: number <<FK>>
userid: number <<FK>>
read: boolean
response: text // ?

}

entity Document{

id: number
path: text
publishDate: datetime
removeDate: datetime
createdBy: number <<FK>>

}

entity BlackboardDocument{

//see Document

}

entity Permissions{

roleid: number <<FK>>
// permission columns: boolean

}

Role ||--|| Permissions

User ||--|| UserRole: userid Role ||--o{ UserRole: roleid

Group }|--|| Location

Status ||--|{ ChildStatus Child ||--o{ ChildStatus Child ||--|{ ChildUserMapping User ||--|{ ChildUserMapping Child ||--|{ ChildCareDay CareDay ||--|{ ChildCareDay

User ||--o{ AnnouncmentRead Announcment ||--o{ AnnouncmentRead User ||--o{ Announcment

ParentalLetter ||--|| Location ParentalLetter }o--|| Group

User ||--|{ MessageRecipients Message ||--|{ MessageRecipients User ||--|| Message

User ||--o{ LetterRead ParentalLetter ||--o{ LetterRead User ||--|| ParentalLetter

User ||--|| Document User ||--|| BlackboardDocument

User ||--|{ GroupTeacher GroupTeacher }|--|| Group Child ||--|| GroupChildren GroupChildren }|--|| Group

User ||--|| Password User ||--|| Pin Location ||-right-|{ LocationDevice

Location ||-left-o{ Document Location ||-left-o{ BlackboardDocument

@enduml `

Needs: impl, itest, utest

/workspace/Wippidu/app/docs/tech/reference/database-schema-original.md:6

plantuml-database-model-current, rev. 1, dsn

dsn~plantuml-database-model-current~1

`plantuml id="databaseschema-current" format="svg_inline" @startuml

' [dsn~plantuml-database-model-current~1 -> req~datenbank-modell~1 >> impl,utest,itest]

left to right direction skinparam linetype ortho skinparam roundcorner 10 skinparam class {

BackgroundColor<<staging>> LightYellow
BackgroundColor<<auth>> LightBlue
BackgroundColor<<core>> White
BackgroundColor<<messaging>> LightGreen
BackgroundColor<<documents>> LightGray

}

' ============================================================================= ' CORE ENTITIES ' =============================================================================

entity User <<core>> {

id: uint <<PK>>
--
email: string <<unique>>
first_name: string
last_name: string
address: string
birthday: datetime
activated_at: datetime
valid_until: datetime
activated: bool
activate_code: string
language: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Child <<core>> {

id: uint <<PK>>
--
external_id: string <<unique>>
first_name: string
middle_names: string
last_name: string
birthday: datetime
group_id: uint <<FK>>
active: bool
valid_from: datetime
valid_until: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Location <<core>> {

id: uint <<PK>>
--
external_id: string <<unique>>
name: string
address: string
lead_id: uint <<FK>>
lead_2nd_id: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Group <<core>> {

id: uint <<PK>>
--
external_id: string <<unique>>
name: string
location_id: uint <<FK>>
lead_id: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity LocationDevice <<core>> {

id: uint <<PK>>
--
location_id: uint <<FK>>
device_ident: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

' ============================================================================= ' AUTHENTICATION & AUTHORIZATION ' =============================================================================

entity Role <<auth>> {

id: uint <<PK>>
--
name: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Passwd <<auth>> {

id: uint <<PK>>
--
user_id: uint <<FK>>
pass_hash: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Pin <<auth>> {

id: uint <<PK>>
--
user_id: uint <<FK>>
pin_hash: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Permissions <<auth>> {

id: uint <<PK>>
--
role_id: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity APIToken <<auth>> {

id: uint <<PK>>
--
name: string
token_hash: string <<unique>>
ip_allowlist: text
lastusedat: datetime
lastusedip: string
active: bool
createdbyid: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

' ============================================================================= ' JOIN TABLES ' =============================================================================

entity user_roles {

user_id: uint <<FK>>
role_id: uint <<FK>>

}

entity UserChild {

user_id: uint <<PK,FK>>
child_id: uint <<PK,FK>>
--
relationship_role: string
valid_from: datetime
valid_until: datetime
created_at: datetime
updated_at: datetime

}

entity group_teachers {

group_id: uint <<FK>>
user_id: uint <<FK>>

}

entity group_children {

group_id: uint <<FK>>
child_id: uint <<FK>>

}

' ============================================================================= ' CARE & SCHEDULING ' =============================================================================

entity CareDay <<core>> {

id: uint <<PK>>
--
weekday: string
start: string
end: string
location_id: uint <<FK>>
group_id: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity children_caredays {

child_id: uint <<FK>>
caredayid: uint <<FK>>

}

entity AbsenceNotification <<core>> {

id: uint <<PK>>
--
child_id: uint <<FK>>
user_id: uint <<FK>>
from_date: datetime
to_date: datetime
absence_type: string
message: text
acknowledged: bool
acknowledged_by: uint <<FK>>
acknowledged_at: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Status <<core>> {

id: uint <<PK>>
--
status: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

' ============================================================================= ' MESSAGING SYSTEM ' =============================================================================

entity ParentalLetter <<messaging>> {

id: uint <<PK>>
--
createdbyid: uint <<FK>>
delegatedtoid: uint <<FK>>
reviewer_id: uint <<FK>>
review_status: string
review_comments: text
reviewed_at: datetime
lastedited_byid: uint <<FK>>
edited_at: datetime
subject: string
text: text
interaction_type: string
deadline: datetime
location_id: uint <<FK>>
group_id: uint <<FK>>
draft: bool
published_at: datetime
valid_until: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity ParentalLetterRead <<messaging>> {

id: uint <<PK>>
--
letter_id: uint <<FK>>
user_id: uint <<FK>>
read_at: datetime
notified_at: datetime
answer: text
answered_at: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Message <<messaging>> {

id: uint <<PK>>
--
createdbyid: uint <<FK>>
child_id: uint <<FK>>
subject: string
text: text
interaction_type: string
deadline: datetime
draft: bool
published_at: datetime
valid_until: datetime
edited_at: datetime
lastedited_byid: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity message_recipients {

message_id: uint <<FK>>
user_id: uint <<FK>>

}

entity MessageRead <<messaging>> {

id: uint <<PK>>
--
message_id: uint <<FK>>
user_id: uint <<FK>>
read_at: datetime
answer: text
answered_at: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity MessageTemplate <<messaging>> {

id: uint <<PK>>
--
createdbyid: uint <<FK>>
name: string
subject: string
text: text
interaction_type: string
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

' ============================================================================= ' NEWS & DOCUMENTS ' =============================================================================

entity News <<documents>> {

id: uint <<PK>>
--
title: string
text: text
createdbyid: uint <<FK>>
published_at: datetime
valid_until: datetime
location_id: uint <<FK>>
group_id: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity NewsRead <<documents>> {

id: uint <<PK>>
--
news_id: uint <<FK>>
user_id: uint <<FK>>
read_at: datetime
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity Document <<documents>> {

id: uint <<PK>>
--
title: string
path: string
published_at: datetime
valid_until: datetime
createdbyid: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

entity BlackboardDocument <<documents>> {

id: uint <<PK>>
--
title: string
path: string
published_at: datetime
valid_until: datetime
createdbyid: uint <<FK>>
created_at: datetime
updated_at: datetime
deleted_at: datetime

}

' ============================================================================= ' INTRANET SYNC STAGING TABLES ' =============================================================================

entity SyncPerson <<staging>> {

id: uint <<PK>>
--
external_id: string <<unique>>
vorname: string
nachname: string
geburtstag: date
rolle: string
comments: text
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncParentChild <<staging>> {

id: uint <<PK>>
--
eltern_id: string
kind_id: string
von: date
bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncBelegung <<staging>> {

id_internal: uint <<PK>>
--
id_krp: string
id_ue3: string
kind_id: string
gruppen_id: string
tage_binaer: int
anzahl_tage: int
von: date
bis: date
status: int
comments: text
some_id: string
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncEmployee <<staging>> {

id: uint <<PK>>
--
external_id: string <<unique>>
name: string
vorname: string
nachname: string
qualifikation: string
von: date
bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncLocation <<staging>> {

id: uint <<PK>>
--
einrichtungs_id: string <<unique>>
name: string
adresse: text
reihenfolge: int
g_von: date
g_bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncGroup <<staging>> {

id: uint <<PK>>
--
gruppen_id: string <<unique>>
einrichtungs_id: string
eartid: string
reihenfolge: int
name: string
oez: string
g_von: date
g_bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncLocationLead <<staging>> {

id: uint <<PK>>
--
einrichtungs_id: string
mitarbeiter_id: string
stellvertreter_id: string
stellvertreter_anteil: int
g_von: date
g_bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncGroupLead <<staging>> {

id: uint <<PK>>
--
gruppen_id: string
mitarbeiter_id: string
g_von: date
g_bis: date
synced_at: datetime
created_at: datetime
updated_at: datetime

}

entity SyncProcessingLog <<staging>> {

id: uint <<PK>>
--
data_type: string
started_at: datetime
completed_at: datetime
status: string
records_total: int
created: int
updated: int
skipped: int
errored: int
error_details: text
triggeredbyid: uint <<FK>>

}

' ============================================================================= ' RELATIONSHIPS - CORE ' =============================================================================

User ||--o{ UserChild Child ||--o{ UserChild UserChild }o--|| User UserChild }o--|| Child

User ||--o{ user_roles Role ||--o{ user_roles

Location ||--o{ Group : contains Group ||--o| Location : belongs_to

Child }o--o| Group : assigned_to Group ||--o{ group_children Child ||--o{ group_children

Group ||--o{ group_teachers User ||--o{ group_teachers

Location ||--o| User : lead Location ||--o| User : lead_2nd Group ||--o| User : lead

Location ||--o{ LocationDevice

' ============================================================================= ' RELATIONSHIPS - AUTH ' =============================================================================

User ||--o| Passwd User ||--o| Pin Role ||--o| Permissions User ||--o{ APIToken : created_by

' ============================================================================= ' RELATIONSHIPS - CARE ' =============================================================================

CareDay }o--|| Location CareDay }o--|| Group Child ||--o{ children_caredays CareDay ||--o{ children_caredays

Child ||--o{ AbsenceNotification User ||--o{ AbsenceNotification : submitted_by User ||--o{ AbsenceNotification : acknowledged_by

' ============================================================================= ' RELATIONSHIPS - MESSAGING ' =============================================================================

User ||--o{ ParentalLetter : created_by User ||--o{ ParentalLetter : delegated_to User ||--o{ ParentalLetter : reviewer User ||--o{ ParentalLetter : lasteditedby Location ||--o{ ParentalLetter Group ||--o{ ParentalLetter

ParentalLetter ||--o{ ParentalLetterRead User ||--o{ ParentalLetterRead

User ||--o{ Message : created_by User ||--o{ Message : lasteditedby Child ||--o{ Message Message ||--o{ message_recipients User ||--o{ message_recipients

Message ||--o{ MessageRead User ||--o{ MessageRead

User ||--o{ MessageTemplate

' ============================================================================= ' RELATIONSHIPS - NEWS & DOCS ' =============================================================================

User ||--o{ News : created_by Location ||--o{ News Group ||--o{ News

News ||--o{ NewsRead User ||--o{ NewsRead

User ||--o{ Document : created_by User ||--o{ BlackboardDocument : created_by

' ============================================================================= ' RELATIONSHIPS - SYNC ' =============================================================================

User ||--o{ SyncProcessingLog : triggered_by

@enduml `

/workspace/Wippidu/app/docs/tech/reference/database-schema.md:5

feat

Administration, Einrichtung, Verwaltung: Webinterface (hauptsächlich PC), rev. 1, feat

feat~webinterface~1

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:114

Eltern: App für Android und iOS, rev. 1, feat

feat~smartphone-app~1

  • Wird benötigt für automatische Benachrichtigungen
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:117

Eltern: Kinder Status melden, rev. 1, feat

feat~kinder-status~1

  • krankmelden, entschuldigen mit Bemerkung - Automatisiert: Vielen Dank für die Meldung, Gute Besserung!
  • Urlaube melden
  • Rückmeldung an Eltern im GUI dass Kind abgemeldet/angemeldet
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:4

Eltern: Ändern von Betreuungstagen, rev. 1, feat

feat~management-betreuungstage~1

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:107

Essensplan mit Datenbank, rev. 1, feat

feat~essensplan-datenbank~1

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:95

GUI: Visuell eindeutig sichtbar welches Kind gerade betrachtet wird, rev. 1, feat

feat~kind-unterscheidung~1

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:85

Kalender, rev. 1, feat

feat~kalender~1

  • kein Terminkalender
  • Jahresübersicht
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:99

Mitarbeiter: Dokumentenverwaltung/-verteilung, rev. 1, feat

feat~schwarzes-brett~1

  • Essenspläne/Wochenpläne
  • Digitaler Einrichtungsaushang, Schwarzes Brett
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:41

Mitarbeiter: Elternbriefe, rev. 1, feat

feat~elternbriefe~1

  • Lesebestätigungen
  • Übersetzungsfunktion? (ggf. Browsergestützt)
  • Rückantworten (Keine Chatfunktion, einmalige eingeforderte Antwort)
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:23

Mitarbeiter: Elternzugriffsmanagement, rev. 1, feat

feat~elternzugriffsmanagement~1

  • Zugriffe für Kindsinformationen, von Tag 1 bis letzter Tag - Gruppenleitungen können Zugriffstag bis zu 6 Monate nach vorn bzw. hinten ausdehnen
  • Alles was darüber hinausgeht wird von der Gruppenleitung separat bearbeitet
  • Sperrung? Administrative Blockierungen für später
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:62

Mitarbeiter: Gruppenübersicht (kurzfristig) an-/abgemeldete Kinder, rev. 1, feat

feat~gruppenuebersicht~1

  • kurzfristig: Krank, Urlaub
  • Gruppenleitungen/Team
  • klare Rechtevergabe
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:14

Mitarbeiter: Meldesystem, Warnmeldungen, meldepflichtige Krankheiten, rev. 1, feat

feat~meldesystem~1

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:49

Mitarbeiter: Nachrichten an Eltern, rev. 1, feat

feat~eltern-nachrichten~1

  • Teamdisziplin, klare Rollenverteilung und Vertretung
  • Textverfassen unabhängig von Abschicken
  • Rechtevergabe?
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:32

Rechtevergabe, rev. 1, feat

feat~rechtevergabe~1

Die App benoetigt eine feingranulare vernünftige Rechtevergabe, die innerhalb der App managebar ist.

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:75

Rechtschreibprüfung bei Nachrichten, rev. 1, feat

feat~rechtschreibprüfung~1

Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:90

System: Import/Export, rev. 1, feat

feat~import-export~1

  • Kinder/Gruppen/Mitarbeiter/Gruppenleitungen
  • Push-Interface von Intranet zu App
Needs: req

/workspace/Wippidu/app/docs/tech/reference/reqs/highlevel.md:54

impl

abwesenheitsmeldungen-design-1007492626, rev. 0, impl

impl~abwesenheitsmeldungen-design-1007492626~0

/workspace/Wippidu/app/backend/internal/model/db.go:144

abwesenheitsmeldungen-design-1665696587, rev. 0, impl

impl~abwesenheitsmeldungen-design-1665696587~0

/workspace/Wippidu/app/backend/internal/model/db.go:391

abwesenheitsmeldungen-design-3445873214, rev. 0, impl

impl~abwesenheitsmeldungen-design-3445873214~0

/workspace/Wippidu/app/backend/internal/controller/notify.go:6

abwesenheitsmeldungen-design-386023524, rev. 0, impl

impl~abwesenheitsmeldungen-design-386023524~0

/workspace/Wippidu/app/backend/internal/controller/employee.go:6

benutzereinstellungen-405838107, rev. 0, impl

impl~benutzereinstellungen-405838107~0

/workspace/Wippidu/app/backend/internal/controller/settings.go:5

Out: 1
datenbank-design-4219237982, rev. 0, impl

impl~datenbank-design-4219237982~0

/workspace/Wippidu/app/backend/internal/model/db.go:5

datenbank-design-739736630, rev. 0, impl

impl~datenbank-design-739736630~0

/workspace/Wippidu/app/backend/internal/model/user.go:5

dokumentenverwaltung-design-2359268494, rev. 0, impl

impl~dokumentenverwaltung-design-2359268494~0

/workspace/Wippidu/app/backend/internal/model/db.go:368

dual-api-architektur-1007364823, rev. 0, impl

impl~dual-api-architektur-1007364823~0

/workspace/Wippidu/app/backend/internal/route/auth.go:6

dual-api-architektur-1887194819, rev. 0, impl

impl~dual-api-architektur-1887194819~0

/workspace/Wippidu/app/backend/internal/controller/child.go:6

dual-api-architektur-2256015073, rev. 0, impl

impl~dual-api-architektur-2256015073~0

/workspace/Wippidu/app/backend/internal/controller/auth.go:6

dual-api-architektur-2834364568, rev. 0, impl

impl~dual-api-architektur-2834364568~0

/workspace/Wippidu/app/backend/internal/controller/child.go:24

elternbriefe-design-2132093502, rev. 0, impl

impl~elternbriefe-design-2132093502~0

/workspace/Wippidu/app/backend/internal/controller/parental_letters.go:6

elternbriefe-design-2424787296, rev. 0, impl

impl~elternbriefe-design-2424787296~0

/workspace/Wippidu/app/backend/internal/model/db.go:162

elternbriefe-design-4016943265, rev. 0, impl

impl~elternbriefe-design-4016943265~0

/workspace/Wippidu/app/backend/internal/model/db.go:304

gui-abwesenheitshistorie-2520062160, rev. 0, impl

impl~gui-abwesenheitshistorie-2520062160~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/notify-edit.html:1

gui-abwesenheitshistorie-2531551126, rev. 0, impl

impl~gui-abwesenheitshistorie-2531551126~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/notify-history.html:1

gui-abwesenheitsmeldung-1972683558, rev. 0, impl

impl~gui-abwesenheitsmeldung-1972683558~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/notify.html:1

gui-admin-benutzerverwaltung-2892045113, rev. 0, impl

impl~gui-admin-benutzerverwaltung-2892045113~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/admin-users-detail.html:1

gui-admin-benutzerverwaltung-3964874119, rev. 0, impl

impl~gui-admin-benutzerverwaltung-3964874119~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/admin-users-list.html:1

gui-admin-kinderverwaltung-1884159652, rev. 0, impl

impl~gui-admin-kinderverwaltung-1884159652~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/admin-children-detail.html:1

gui-admin-kinderverwaltung-2720305893, rev. 0, impl

impl~gui-admin-kinderverwaltung-2720305893~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/admin-children-list.html:1

gui-admin-sync-1933161995, rev. 0, impl

impl~gui-admin-sync-1933161995~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/admin-sync.html:1

gui-ankuendigung-erstellen-3368589935, rev. 0, impl

impl~gui-ankuendigung-erstellen-3368589935~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-create.html:1

gui-ankuendigung-erstellen-3830138857, rev. 0, impl

impl~gui-ankuendigung-erstellen-3830138857~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-edit.html:1

gui-ankuendigungen-2029456071, rev. 0, impl

impl~gui-ankuendigungen-2029456071~0

/workspace/Wippidu/app/backend/internal/controller/news.go:6

gui-ankuendigungen-3224731854, rev. 0, impl

impl~gui-ankuendigungen-3224731854~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-detail.html:1

gui-ankuendigungen-3658895794, rev. 0, impl

impl~gui-ankuendigungen-3658895794~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-detail-employee.html:1

gui-ankuendigungen-4025266204, rev. 0, impl

impl~gui-ankuendigungen-4025266204~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-list-parent.html:1

gui-ankuendigungen-452986800, rev. 0, impl

impl~gui-ankuendigungen-452986800~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/news-list-employee.html:1

gui-eltern-nachrichten-1117702737, rev. 0, impl

impl~gui-eltern-nachrichten-1117702737~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parent-received-messages.html:1

gui-eltern-nachrichten-2132039106, rev. 0, impl

impl~gui-eltern-nachrichten-2132039106~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parent-message-form.html:1

gui-eltern-nachrichten-3060562572, rev. 0, impl

impl~gui-eltern-nachrichten-3060562572~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parent-message-edit.html:1

gui-eltern-nachrichten-3408954123, rev. 0, impl

impl~gui-eltern-nachrichten-3408954123~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parent-message-detail.html:1

gui-eltern-nachrichten-775006377, rev. 0, impl

impl~gui-eltern-nachrichten-775006377~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parent-messages.html:1

gui-elternbrief-erstellen-174896260, rev. 0, impl

impl~gui-elternbrief-erstellen-174896260~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letter-review.html:1

gui-elternbrief-erstellen-3090541439, rev. 0, impl

impl~gui-elternbrief-erstellen-3090541439~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letter-create.html:1

gui-elternbrief-erstellen-3323566236, rev. 0, impl

impl~gui-elternbrief-erstellen-3323566236~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letter-edit.html:1

gui-elternbriefe-1571977465, rev. 0, impl

impl~gui-elternbriefe-1571977465~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letter-view-parent.html:1

gui-elternbriefe-1870319405, rev. 0, impl

impl~gui-elternbriefe-1870319405~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letter-view-employee.html:1

gui-elternbriefe-1914621401, rev. 0, impl

impl~gui-elternbriefe-1914621401~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letters-list-employee.html:1

gui-elternbriefe-2580976542, rev. 0, impl

impl~gui-elternbriefe-2580976542~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/parental-letters-list-parent.html:1

gui-gruppenuebersicht-2295157731, rev. 0, impl

impl~gui-gruppenuebersicht-2295157731~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/location-children.html:1

gui-gruppenuebersicht-2322233632, rev. 0, impl

impl~gui-gruppenuebersicht-2322233632~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/notifications.html:1

gui-gruppenuebersicht-2520262440, rev. 0, impl

impl~gui-gruppenuebersicht-2520262440~0

/workspace/Wippidu/app/backend/internal/controller/employee.go:7

gui-home-290280304, rev. 0, impl

impl~gui-home-290280304~0

/workspace/Wippidu/app/backend/internal/controller/home.go:6

gui-home-4210299068, rev. 0, impl

impl~gui-home-4210299068~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/home.html:1

gui-kalender-1063701151, rev. 0, impl

impl~gui-kalender-1063701151~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/calendar-day.html:2

Out: 1
gui-kalender-1431531597, rev. 0, impl

impl~gui-kalender-1431531597~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/calendar.html:2

Out: 1
gui-kalender-1938239976, rev. 0, impl

impl~gui-kalender-1938239976~0

/workspace/Wippidu/app/backend/internal/controller/calendar.go:6

Out: 1
gui-kalender-detail-1934080573, rev. 0, impl

impl~gui-kalender-detail-1934080573~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/calendar-event-detail.html:2

Out: 1
gui-kalender-ereignis-3958074968, rev. 0, impl

impl~gui-kalender-ereignis-3958074968~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/calendar-event-form.html:2

Out: 1
gui-kind-seite-3219290313, rev. 0, impl

impl~gui-kind-seite-3219290313~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/employee-child.html:1

gui-kind-seite-695697499, rev. 0, impl

impl~gui-kind-seite-695697499~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/child.html:1

gui-login-3461014877, rev. 0, impl

impl~gui-login-3461014877~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/login.html:1

gui-menu-struktur-3111884657, rev. 0, impl

impl~gui-menu-struktur-3111884657~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/includes/menus.html:1

gui-menu-struktur-958284711, rev. 0, impl

impl~gui-menu-struktur-958284711~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/layouts/base.html:1

gui-responsive-382220212, rev. 0, impl

impl~gui-responsive-382220212~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/layouts/base.html:1

gui-zugriffszeiten-168815978, rev. 0, impl

impl~gui-zugriffszeiten-168815978~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/location-access-times-list.html:1

gui-zugriffszeiten-2667012661, rev. 0, impl

impl~gui-zugriffszeiten-2667012661~0

/workspace/Wippidu/app/backend/cmd/app-server/templates/pages/location-access-times-edit.html:1

import-export-design-1990768644, rev. 0, impl

impl~import-export-design-1990768644~0

/workspace/Wippidu/app/backend/internal/route/intranet.go:5

import-export-design-2828151441, rev. 0, impl

impl~import-export-design-2828151441~0

/workspace/Wippidu/app/backend/internal/service/sync_processor.go:6

import-export-design-3344789874, rev. 0, impl

impl~import-export-design-3344789874~0

/workspace/Wippidu/app/backend/internal/controller/intranet_api.go:6

kalender-design-4164519465, rev. 0, impl

impl~kalender-design-4164519465~0

/workspace/Wippidu/app/backend/internal/model/calendar_event.go:23

Out: 1
nachrichten-design-1066966756, rev. 0, impl

impl~nachrichten-design-1066966756~0

/workspace/Wippidu/app/backend/internal/model/db.go:321

nachrichten-design-2676048949, rev. 0, impl

impl~nachrichten-design-2676048949~0

/workspace/Wippidu/app/backend/internal/controller/parent_messages.go:6

rechtevergabe-design-2181190408, rev. 0, impl

impl~rechtevergabe-design-2181190408~0

/workspace/Wippidu/app/backend/internal/model/user.go:346

rechtevergabe-design-2476567617, rev. 0, impl

impl~rechtevergabe-design-2476567617~0

/workspace/Wippidu/app/backend/internal/model/user.go:477

rechtevergabe-design-3294160842, rev. 0, impl

impl~rechtevergabe-design-3294160842~0

/workspace/Wippidu/app/backend/internal/controller/auth.go:7

stellvertretung-design-1701636405, rev. 0, impl

impl~stellvertretung-design-1701636405~0

/workspace/Wippidu/app/backend/internal/controller/stand_in.go:6

Out: 1
zugriffsmanagement-design-1255174311, rev. 0, impl

impl~zugriffsmanagement-design-1255174311~0

/workspace/Wippidu/app/backend/internal/model/db.go:48

zugriffsmanagement-design-2292967769, rev. 0, impl

impl~zugriffsmanagement-design-2292967769~0

/workspace/Wippidu/app/backend/internal/controller/location_access_times.go:6

zugriffsmanagement-design-3829339505, rev. 0, impl

impl~zugriffsmanagement-design-3829339505~0

/workspace/Wippidu/app/backend/internal/service/users.go:854

zugriffsmanagement-design-4151244302, rev. 0, impl

impl~zugriffsmanagement-design-4151244302~0

/workspace/Wippidu/app/backend/internal/controller/admin_users.go:1124

zugriffsmanagement-design-595989878, rev. 0, impl

impl~zugriffsmanagement-design-595989878~0

/workspace/Wippidu/app/backend/internal/model/user.go:345

req

Abwesenheitsmeldungen, rev. 1, req

req~abwesenheitsmeldungen~1

Eltern können Abwesenheiten ihrer Kinder (Krankheit, Urlaub) über die App melden. Mitarbeiter sehen diese Meldungen in der Gruppenübersicht.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:43

App Architectur, rev. 1, req

req~highlevel-architektur~1

Die highlevel Architektur der App muss folgenden Kriterien genuegen:

  • Die App muss aus dem gleichen Backend zwei Pfade erlauben - Ein API Level Interface - Für Implementierungen einer modernen Webapp - Und Implementierungen von Teil-nativen Smartphone Apps (Android/iOS) - Ein HTML Interface - Als Fallback-Interface für alle Fälle - Muss im Hintergrund die gleiche API bedienen (ggf. intern routen)
Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:26

Datenbank modell, rev. 1, req

req~datenbank-modell~1

Die App benötigt für ihre Funktionalität ein ausgereiftes Datenbankmodell.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:5

Dokumentenverwaltung, rev. 1, req

req~dokumentenverwaltung~1

Dokumente können hochgeladen und für Eltern/Mitarbeiter bereitgestellt werden. Unterstützt Essenspläne, Wochenpläne und Aushänge.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:128

Elternbriefe System, rev. 1, req

req~elternbriefe-system~1

Mitarbeiter können Elternbriefe erstellen und an Eltern senden. Lesebestätigungen und optionale Rückantworten werden unterstützt.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:58

GUI: Ankündigung/Meldung schreiben, rev. 1, req

req~gui-ankuendigung-schreiben~1

Eingabe Formular

Dropdown für Meldungstyp? [tbd]

Feld Überschrift, one-liner

Textfeld für Eingabe von Meldung. (Sollte Markdown unterstützen)

Reviewer - Dropdown, Leitung, Gruppenleitung, andere Gruppenleitungen des selben Standorts? [tbd] Ggf. mehrere wählbar.

!Skizze: Ankündigung schreiben

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:165

GUI: Ankündigungen/Meldungen, rev. 1, req

req~gui-ankuendigungen-meldungen~1

Seite wie ein Blog mit den Ankündigungen/Meldungen sortiert nach Datum, neueste zuerst. Nur Überschriften, um Meldung zu lesen muss diese selektiert werden.

Tabellenaufbau möglich, vorne Datum/Uhrzeit, dann Überschrift plus ggf. Icon für Art der Ankündigung.

Aktualisierung (2025-03-10):

  • Unterscheidung: - Meldung: meldepflichtige Krankheit, -> Schliessung - Anzeige nur für definierte Tage, Verfallsdatum - Mit Signalton bei App - KEINE HISTORIE! für Eltern sichtbar - Ankündigung: bspw: Tag der offenen Tür
  • Nice to have: Update von Meldungen, mit neuem Datum!

Icons können beinhalten:

  • Warndreieck mit ! für Krankheitsmeldungen bzw. meldepflichtige Krankheiten
  • Stoppzeichen für geschlossene Gruppen wegen Personalmangel oder anderem
  • Info-Icon für normale aber dennoch wichtige Informationen
  • ...

!Skizze: Ankündigungen

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:125

GUI: Einrichtungsdokumente, rev. 1, req

req~gui-einrichtungsdokumente~1

Dokumentenübersicht.

!Skizze: Dokumentenübersicht

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:393

GUI: Eltern-Nachrichten, rev. 1, req

req~gui-eltern-nachrichten~1

Ähnlich zu Elternbrief müssen Eltern-Nachrichten einen Reviewer haben bspw. GL. (tbd)

  • > Ggf. von EL definierbar, Rechte/Reviewer Einstellungen

Klarstellung für die Autoren, dass diese Nachrichten schriftlich dokumentiert sind aber den Regeln eines Tür und Angel Gesprächs folgen.

Statt der Auswahl für welche Gruppe oder Einrichtung die Nachricht ist, wird hier ein Kind und damit dessen Eltern ausgewählt.

Das Drop-Down-Feld muss zwingend die Suche erlauben.

Ansonsten ist der Inhalt einer Nachricht identisch mit einem Elternbrief, genauso wie die Antwortmöglichkeit oder das Erzwingen einer Antwort.

Ideen:

  • Feingranulare Lese-Rechtevergabe an User möglich, nicht per default
Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:366

GUI: Elternbrief anzeigen, rev. 1, req

req~gui-elternbrief-anzeigen~1

  • Nachrichten-/Elternbriefübersicht*

Icon oben rechts in der App sollte auf Nachrichten/Elternbriefe aufmerksam machen.

Aktiviert man das Icon bekommt man eine Übersicht über die Nachrichten/Elternbriefe.

Bspw. als Tabelle

"Ein neuer Elternbrief" -> führt direkt zum neuesten oder der liste der Elternbriefe um einen der neuesten zu wählen

"Eine neue Nachricht" -> selbiges nur für Nachrichten

Bisherige Elternbriefe -> Liste von Elternbriefen, sortiert nach Datum

Bisherige Nachrichten -> Liste von Nachrichten, sortiert nach Datum

!Skizze: Elternbriefliste

  • Elternbrief/Nachricht anzeigen*

Simples Display der Nachricht mit Titel darüber.

Falls Antwort aktiviert, Antwortfeld darunter.

Falls Antwort zwingend, highlight des Antwortfeldes und Hinweis, dass eine Antwort erwartet wird.

  • Skizze*

!Skizze: Elternbrief

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:291

GUI: Elternbrief schreiben, rev. 1, req

req~gui-elternbrief-schreiben~1

Formular Skizze:

Elternbrief auswahl für

  • Einrichtung (nur EL und GL haben diese Auswahlmöglichkeit)
  • Gruppe a
  • Gruppe b
  • Gruppe c

Titel feld und Textfeld (Markdown).

Checkbox, wenn Eltern eine Antwort verfassen können sollen. Checkbox, wenn die Antwort zwingend erforderlich ist.

Ideen:

  • Bei mehreren Usern pro Kind als Eltern, zeige immer eine bereits erfolgte Antwort für dieses Kind bei allen Usern zum Kind an.
  • Dritte Checkbox: Antwort von jedem User zum Kind, Standard ist eine Antwort

!Skizze: Elternbrief schreiben

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:333

GUI: Elternbriefe, rev. 1, req

req~gui-elternbriefe~1

Elternbriefe, dürfen nur von (Gruppen-)Leitungen bestätigt und gesendet werden. (tbd) Geschrieben werden dürfen sie grundsätzlich von jedem. (tbd)

Regeln:

  • Gruppen-Elternbrief geschrieben von Mitarbeiter -> Gruppenleitung muss bestätigen und senden.
  • Gruppen-Elternbrief geschrieben von Gruppenleitung -> Einrichtungsleitung muss bestätigen -> GL/EL kann senden, bzw. andere GL bestätigt, AutorGL sendet.
  • Gruppen-Elternbrief geschrieben von EL -> GL muss bestätigen -> EL kann senden. (tbd)
  • Elternbrief für ganze Einrichtung - kann nur von GL oder EL geschrieben werden - EL schreibt -> GL bestätigt -> EL kann senden - GL schreibt -> EL bestätigt und kann senden

Nice to have:

  • Regeln ggf. von EL managebar
  • Nicht unbedingt per default drin - kann aber als default hinterlegt sein
  • Auf Freiwilligenbasis, siehe oben das Reviewer-Feld - Mehrfachauswahl, mit Overwrite
  • Ggf. auch Gegenlesen der GF
Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:258

GUI: Gruppenübersicht, rev. 1, req

req~gui-gruppenuebersicht~1

Übersichtsseite, Tabelle mit allen Kindern der gewählten Gruppe.

On Top: Abgemeldete Kinder, mit Bild, Grund und bis wann sie abgemeldet sind

Hauptansicht:

Kinderliste in einem Tabellenformat. Felder: Bild, Name, Button mit "Jetzt gebracht", Button mit "Jetzt abgeholt"

Ist das Kind noch nicht gebracht worden, ist der Button "Jetzt abgeholt" nicht betätigbar.

Wurde der Button gebracht betätigt, wird stattdessen ein Haken/Ok/"Gebracht" und die Uhrzeit angezeigt

Bei abgeholten Kindern ebenso, ggf. andere Farbe und die Uhrzeit.

Weiterführende Ideen:

  • Portrait der Kinder anklickbar -> liefert Kindübersicht -> TODO!
  • Spalte mit Nachrichten-Icon um eine Elternnachricht zu schreiben. - Könnte aber auch über Kindübersicht geregelt werden

!Skizze: Gruppenübersicht

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:191

GUI: Kind-Seite, rev. 1, req

req~kind-seite~1

Liefert Übersicht über das Kind

Inhalt:

  • Grosses Portrait des Kindes mit Name
  • darunter kleine Portraits der Eltern, falls verfügbar, mit Namen
  • Ggf. Liste mit abholberechtigten Personen, mit Portrait und Name - Separate Tabelle in der DB, von Eltern wartbar
  • folgend - letzte Nachrichten an die Eltern - letzte Elternbriefe - Anwesenheitshistorie - Betreuungstage

Ideen 10. März:

  • Allgemeine letzte Nachrichtenübersicht, an welche Kinder sind Nachrichten rausgegangen

!Skizze: Kind-Seite

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:227

GUI: Menüstrukturen, rev. 1, req

req~gui-menu-structures~1

Hier als Baumstruktur angegeben

Elternansicht:

??? note "Elternansicht - details"

- Ankündigungen/Meldungen [tbd]
- Kind anzeigen
- Status/Abwesenheit für Kind melden
- Nachrichten von < Location >
    - Persönliche Nachrichten
- Elternbriefe
- < Location > Dokumente
- Digitaler Aushang -> Schwarze Brett
!Skizze: Eltern Home Ansicht

Mitarbeiteransicht:

  • Ankündigungen/Meldungen - Ankündigung/Warnmeldung schreiben (Review von (Gruppen-)Leitung)
  • Aktuelle Kindermeldungen
  • Anwesenheitsliste < Gruppe > - (Kinder mit Meldungen werden hervorgehoben) - Kinderliste sollte immer gleichbleibend dargestellt werden - bspw alphabetisch, oder Alter? - An/Abmeldung ist fraglich, ggf. als Test probieren - Ein/Ausloggen von kindern, ist erstmal nice to have
  • Elternnachricht schreiben
  • Bei Doppelrolle, Mitarbeiter und Eltern, Rollenwechsel, dass nur eine Rolle angezeigt wird

Ideen:

  • Gruppengeräte - Einmalige Anmeldung in der App auf Gerät - danach Freischaltung und Identifikation mit MA-PIN - MA-PIN eindeutig! muss ggf. vergeben werden ohne Möglichkeit sie zu ändern

Gruppenleitungsansicht (includiert Mitarbeiteransicht):

  • Elternbrief von Gruppe
  • Dokumentenverwaltung
  • (Eltern Zugriffsmanagement für Gruppe [tbd?])
  • Verwaltung des digitalen Aushangs

Standortleitungsansicht (includiert Gruppenleitungsansicht, da normalerweise auch Gruppenleitung):

  • Elternbrief von Standort
  • Dokumentenverwaltung (mit mehr Rechten)
  • Eltern Zugriffsmanagement für Standort

Administratoransicht (includiert alles vorherige):

  • Standort wechseln
  • Rollenvergabe/-änderung
  • ggf. weitere Management Ansichten

Ideen:

  • Delegieren von Elternbrief-Schreibrechten, auf Zeit

!Skizze: Mitarbeiter Home Ansicht

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:49

GUI: Status melden, rev. 1, req

req~gui-kinder-status~1

Formular über zwei Seiten.

Auf 1. Seite:

  • Kind wählen für das der Status gemeldet werden soll.
  • ein oder mehrere möglich
  • Wenn nur ein Kind in der Location, dann vorausgewählt
  • Mindestens eines muss ausgewählt sein

Auf 2. Seite:

  • Status selektieren
  • Krankheit
  • Urlaub
  • Datum von + Datum bis
  • Optionale Message.

!Skizze: Status Melden

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:5

GUI: Statusübersicht [tbd], rev. 1, req

req~gui-status-overview~1

Unterhalb der Kinderauswahl bei Status melden sollten die letzten Stati aufgelistet sein, bzw. der ggf. aktive Status ganz oben gelistet und hervorgehoben sein.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/gui.md:36

Import/Export System, rev. 1, req

req~import-export-system~1

Daten aus dem Intranet-System können über eine API in die App importiert werden. Unterstützt Kinder, Gruppen, Einrichtungen, Mitarbeiter und Zuordnungen.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:86

Nachrichten System, rev. 1, req

req~nachrichten-system~1

Mitarbeiter können direkte Nachrichten an Eltern senden. Unterstützt verschiedene Interaktionstypen (informell, Antwort möglich, Antwort erforderlich).

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:72

Rechtevergabe System, rev. 1, req

req~rechtevergabe-system~1

Die App implementiert ein rollenbasiertes Berechtigungssystem. Rollen: Parent, Employee, GroupLead, LocationLead, Admin.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:114

Zugriffsmanagement, rev. 1, req

req~zugriffsmanagement~1

Elternzugriffe auf Kinderdaten werden über Gültigkeitszeiträume gesteuert. Gruppenleitungen können Zugriffszeiträume anpassen.

Needs: dsn

/workspace/Wippidu/app/docs/tech/reference/reqs/requirements.md:100

utest

abwesenheitsmeldungen-design-607100803, rev. 0, utest

utest~abwesenheitsmeldungen-design-607100803~0

/workspace/Wippidu/app/backend/internal/controller/notify_test.go:5

datenbank-design-1927502863, rev. 0, utest

utest~datenbank-design-1927502863~0

/workspace/Wippidu/app/backend/internal/controller/child_test.go:6

datenbank-design-1943709973, rev. 0, utest

utest~datenbank-design-1943709973~0

/workspace/Wippidu/app/backend/internal/model/user_test.go:6

dual-api-architektur-3194958269, rev. 0, utest

utest~dual-api-architektur-3194958269~0

/workspace/Wippidu/app/backend/internal/controller/auth_test.go:5

dual-api-architektur-3684039427, rev. 0, utest

utest~dual-api-architektur-3684039427~0

/workspace/Wippidu/app/backend/internal/controller/child_test.go:5

elternbriefe-design-654558828, rev. 0, utest

utest~elternbriefe-design-654558828~0

/workspace/Wippidu/app/backend/internal/controller/parental_letters_test.go:5

gui-abwesenheitshistorie-3144734317, rev. 0, utest

utest~gui-abwesenheitshistorie-3144734317~0

/workspace/Wippidu/app/backend/internal/controller/notify_test.go:7

gui-abwesenheitsmeldung-2150667610, rev. 0, utest

utest~gui-abwesenheitsmeldung-2150667610~0

/workspace/Wippidu/app/backend/internal/controller/notify_test.go:6

gui-ankuendigungen-3871859430, rev. 0, utest

utest~gui-ankuendigungen-3871859430~0

/workspace/Wippidu/app/backend/internal/service/news_test.go:3

gui-eltern-nachrichten-3967198174, rev. 0, utest

utest~gui-eltern-nachrichten-3967198174~0

/workspace/Wippidu/app/backend/internal/controller/parent_messages_test.go:6

gui-elternbrief-erstellen-3496299089, rev. 0, utest

utest~gui-elternbrief-erstellen-3496299089~0

/workspace/Wippidu/app/backend/internal/controller/parental_letters_test.go:7

gui-elternbriefe-3239077351, rev. 0, utest

utest~gui-elternbriefe-3239077351~0

/workspace/Wippidu/app/backend/internal/controller/parental_letters_test.go:6

gui-gruppenuebersicht-2036323971, rev. 0, utest

utest~gui-gruppenuebersicht-2036323971~0

/workspace/Wippidu/app/backend/internal/controller/home_test.go:6

gui-home-2560507822, rev. 0, utest

utest~gui-home-2560507822~0

/workspace/Wippidu/app/backend/internal/controller/home_test.go:5

gui-kind-seite-798283953, rev. 0, utest

utest~gui-kind-seite-798283953~0

/workspace/Wippidu/app/backend/internal/controller/child_test.go:7

gui-login-1264761087, rev. 0, utest

utest~gui-login-1264761087~0

/workspace/Wippidu/app/backend/internal/controller/auth_test.go:7

gui-zugriffszeiten-2529789536, rev. 0, utest

utest~gui-zugriffszeiten-2529789536~0

/workspace/Wippidu/app/backend/internal/controller/location_access_times_test.go:6

import-export-design-3014355560, rev. 0, utest

utest~import-export-design-3014355560~0

/workspace/Wippidu/app/backend/internal/controller/intranet_api_test.go:5

import-export-design-3091593681, rev. 0, utest

utest~import-export-design-3091593681~0

/workspace/Wippidu/app/backend/internal/service/sync_processor_test.go:5

kalender-design-2453614773, rev. 0, utest

utest~kalender-design-2453614773~0

/workspace/Wippidu/app/backend/internal/service/calendar_test.go:3

Out: 1
nachrichten-design-3645969649, rev. 0, utest

utest~nachrichten-design-3645969649~0

/workspace/Wippidu/app/backend/internal/controller/parent_messages_test.go:5

rechtevergabe-design-1831359705, rev. 0, utest

utest~rechtevergabe-design-1831359705~0

/workspace/Wippidu/app/backend/internal/model/user_test.go:5

rechtevergabe-design-4280558252, rev. 0, utest

utest~rechtevergabe-design-4280558252~0

/workspace/Wippidu/app/backend/internal/controller/auth_test.go:6

rechtevergabe-design-858669925, rev. 0, utest

utest~rechtevergabe-design-858669925~0

/workspace/Wippidu/app/backend/internal/middleware/authorization_test.go:5

registrierung-workflow-339602949, rev. 0, utest

utest~registrierung-workflow-339602949~0

/workspace/Wippidu/app/backend/internal/service/registration_test.go:5

Out: 1
zugriffsmanagement-design-1798007470, rev. 0, utest

utest~zugriffsmanagement-design-1798007470~0

/workspace/Wippidu/app/backend/internal/controller/location_access_times_test.go:5