// title title Task Management Web App Data Model // Kullanıcı Yönetimi users [icon: user, color: yellow] { id string pk username string email string password_hash string display_name string avatar_url string created_at timestamp last_login timestamp is_active boolean encrypted boolean } roles [icon: shield, color: orange] { id string pk name string description string } member_roles [icon: shield, color: lightorange] { id string pk name string // Yönetici, Üye, İzleyici description string } user_workspace_roles [icon: users, color: lightblue] { id string pk user_id string workspace_id string role_id string joined_at timestamp } // Proje ve Çalışma Alanı Yönetimi workspaces [icon: briefcase, color: blue] { id string pk name string description string created_at timestamp owner_id string encrypted boolean backup_enabled boolean restore_enabled boolean } projects [icon: folder, color: purple] { id string pk workspace_id string name string description string parent_project_id string team_id string responsible_user_id string // Added responsible_user_id start_date date end_date date status string project_type string created_at timestamp updated_at timestamp } subprojects [icon: folder, color: lightpurple] { id string pk project_id string name string description string responsible_user_id string team_id string start_date date end_date date created_at timestamp updated_at timestamp } teams [icon: users, color: teal] { id string pk name string project_id string team_leader_id string created_at timestamp } team_members [icon: users, color: lightteal] { id string pk user_id string team_id string member_role_id string status string // Aktif, Pasif } // Görev Yönetimi tasks [icon: check-square, color: green] { id string pk project_id string subproject_id string assigned_to string assigned_team_id string title string description string status string priority string due_date date start_date date repeat_schedule string parent_task_id string task_type_id string task_output_type_id string board_position int calendar_position int gantt_position int created_at timestamp updated_at timestamp } task_dependencies [icon: link, color: gray] { id string pk task_id string depends_on_task_id string } subtasks [icon: check, color: lightgreen] { id string pk task_id string title string description string status string priority string due_date date created_at timestamp updated_at timestamp } task_types [icon: list, color: blue] { id string pk name string // Test, Tasarım, Yazılım description string } task_output_types [icon: list, color: lightblue] { id string pk name string description string } // İletişim comments [icon: message-circle, color: lightyellow] { id string pk user_id string task_id string project_id string subproject_id string content string created_at timestamp updated_at timestamp parent_comment_id string } mentions [icon: at-sign, color: pink] { id string pk comment_id string mentioned_user_id string } chat_rooms [icon: message-square, color: cyan] { id string pk project_id string name string created_at timestamp } chat_messages [icon: message-circle, color: lightcyan] { id string pk chat_room_id string user_id string content string created_at timestamp } // Belgeler document_types [icon: file, color: lightbrown] { id string pk name string // Gerber Dosyası, Mekanik Çizim description string } documents [icon: file-text, color: brown] { id string pk project_id string subproject_id string task_id string name string description string document_type_id string template_id string url string preview_url string uploaded_by string version int created_at timestamp updated_at timestamp } // Özel Alanlar custom_fields [icon: tag, color: magenta] { id string pk name string field_type string options string created_at timestamp } task_custom_fields [icon: tag, color: lightmagenta] { id string pk task_id string custom_field_id string value string } // Bildirimler ve Aramalar notifications [icon: bell, color: red] { id string pk user_id string task_id string project_id string subproject_id string content string notification_type string // in-app, email created_at timestamp is_read boolean } saved_searches [icon: search, color: green] { id string pk user_id string name string query string created_at timestamp updated_at timestamp } // Olaylar ve Kurallar events [icon: calendar, color: darkblue] { id string pk name string description string created_at timestamp updated_at timestamp workspace_id string project_id string user_id string } rules [icon: settings, color: darkgray] { id string pk event_id string name string action_type string is_active boolean created_at timestamp updated_at timestamp workspace_id string project_id string user_id string } // İlişkiler (Sistematik Sıralama) user_workspace_roles.user_id > users.id user_workspace_roles.workspace_id > workspaces.id user_workspace_roles.role_id > roles.id workspaces.owner_id > users.id projects.workspace_id > workspaces.id projects.parent_project_id > projects.id projects.team_id > teams.id projects.responsible_user_id > users.id // Added relationship for responsible_user_id subprojects.project_id > projects.id subprojects.responsible_user_id > users.id subprojects.team_id > teams.id teams.project_id > projects.id teams.team_leader_id > users.id team_members.user_id > users.id team_members.team_id > teams.id team_members.member_role_id > member_roles.id tasks.project_id > projects.id tasks.subproject_id > subprojects.id tasks.assigned_to > users.id tasks.assigned_team_id > teams.id tasks.parent_task_id > tasks.id tasks.task_type_id > task_types.id tasks.task_output_type_id > task_output_types.id task_dependencies.task_id > tasks.id task_dependencies.depends_on_task_id > tasks.id subtasks.task_id > tasks.id comments.user_id > users.id comments.task_id > tasks.id comments.project_id > projects.id comments.subproject_id > subprojects.id comments.parent_comment_id > comments.id mentions.comment_id > comments.id mentions.mentioned_user_id > users.id chat_rooms.project_id > projects.id chat_messages.chat_room_id > chat_rooms.id chat_messages.user_id > users.id documents.project_id > projects.id documents.subproject_id > subprojects.id documents.task_id > tasks.id documents.document_type_id > document_types.id documents.uploaded_by > users.id task_custom_fields.task_id > tasks.id task_custom_fields.custom_field_id > custom_fields.id notifications.user_id > users.id notifications.task_id > tasks.id notifications.project_id > projects.id notifications.subproject_id > subprojects.id saved_searches.user_id > users.id events.workspace_id > workspaces.id events.project_id > projects.id events.user_id > users.id rules.event_id > events.id rules.workspace_id > workspaces.id rules.project_id > projects.id rules.user_id > users.id