mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 07:56:24 +00:00
131 lines
3.0 KiB
Plaintext
131 lines
3.0 KiB
Plaintext
@startuml Meeting Service Database Schema
|
|
!theme mono
|
|
|
|
'=== Core Tables ===
|
|
entity "meetings" {
|
|
* **meeting_id : VARCHAR(50)
|
|
--
|
|
title : VARCHAR(200) NOT NULL
|
|
purpose : VARCHAR(500)
|
|
description : TEXT
|
|
scheduled_at : TIMESTAMP NOT NULL
|
|
started_at : TIMESTAMP
|
|
ended_at : TIMESTAMP [V3]
|
|
status : VARCHAR(20) NOT NULL
|
|
organizer_id : VARCHAR(50) NOT NULL
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
template_id : VARCHAR(50)
|
|
}
|
|
|
|
entity "meeting_participants" {
|
|
* **meeting_id : VARCHAR(50) [FK]
|
|
* **user_id : VARCHAR(100)
|
|
--
|
|
invitation_status : VARCHAR(20)
|
|
attended : BOOLEAN
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
}
|
|
|
|
entity "minutes" {
|
|
* **id : VARCHAR(50)
|
|
--
|
|
meeting_id : VARCHAR(50) [FK] NOT NULL
|
|
user_id : VARCHAR(100) [V3]
|
|
title : VARCHAR(200) NOT NULL
|
|
status : VARCHAR(20) NOT NULL
|
|
version : INT NOT NULL
|
|
created_by : VARCHAR(50) NOT NULL
|
|
finalized_by : VARCHAR(50)
|
|
finalized_at : TIMESTAMP
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
}
|
|
|
|
entity "minutes_sections" {
|
|
* **id : VARCHAR(50)
|
|
--
|
|
minutes_id : VARCHAR(50) [FK] NOT NULL
|
|
type : VARCHAR(50) NOT NULL
|
|
title : VARCHAR(200) NOT NULL
|
|
**content : TEXT
|
|
order : INT
|
|
verified : BOOLEAN
|
|
locked : BOOLEAN
|
|
locked_by : VARCHAR(50)
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
}
|
|
|
|
'=== V3 New Tables ===
|
|
entity "agenda_sections" {
|
|
* **id : VARCHAR(36)
|
|
--
|
|
minutes_id : VARCHAR(36) [FK] NOT NULL
|
|
meeting_id : VARCHAR(50) [FK] NOT NULL
|
|
agenda_number : INT NOT NULL
|
|
agenda_title : VARCHAR(200) NOT NULL
|
|
ai_summary_short : TEXT
|
|
discussions : TEXT
|
|
decisions : JSON
|
|
pending_items : JSON
|
|
opinions : JSON
|
|
**todos : JSON [V4]
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
}
|
|
|
|
entity "ai_summaries" {
|
|
* **id : VARCHAR(36)
|
|
--
|
|
meeting_id : VARCHAR(50) [FK] NOT NULL
|
|
summary_type : VARCHAR(50) NOT NULL
|
|
source_minutes_ids : JSON NOT NULL
|
|
result : JSON NOT NULL
|
|
processing_time_ms : INT
|
|
model_version : VARCHAR(50)
|
|
keywords : JSON
|
|
statistics : JSON
|
|
created_at : TIMESTAMP
|
|
}
|
|
|
|
entity "todos" {
|
|
* **todo_id : VARCHAR(50)
|
|
--
|
|
meeting_id : VARCHAR(50) [FK] NOT NULL
|
|
minutes_id : VARCHAR(50) [FK]
|
|
title : VARCHAR(200) NOT NULL
|
|
description : TEXT
|
|
assignee_id : VARCHAR(50) NOT NULL
|
|
due_date : DATE
|
|
status : VARCHAR(20) NOT NULL
|
|
priority : VARCHAR(20)
|
|
extracted_by : VARCHAR(50) [V3]
|
|
section_reference : VARCHAR(200) [V3]
|
|
extraction_confidence : DECIMAL(3,2) [V3]
|
|
completed_at : TIMESTAMP
|
|
created_at : TIMESTAMP
|
|
updated_at : TIMESTAMP
|
|
}
|
|
|
|
'=== Relationships ===
|
|
meetings ||--o{ meeting_participants : "1:N [V2]"
|
|
meetings ||--o{ minutes : "1:N"
|
|
meetings ||--o{ agenda_sections : "1:N [V3]"
|
|
meetings ||--o{ ai_summaries : "1:N [V3]"
|
|
meetings ||--o{ todos : "1:N"
|
|
minutes ||--o{ minutes_sections : "1:N"
|
|
minutes ||--o{ agenda_sections : "1:N [V3]"
|
|
|
|
'=== Legend ===
|
|
legend right
|
|
V2 = Migration 2 (2025-10-27)
|
|
V3 = Migration 3 (2025-10-28)
|
|
V4 = Migration 4 (2025-10-28)
|
|
[FK] = Foreign Key
|
|
**bold** = Important fields
|
|
end legend
|
|
|
|
@enduml
|