Start of dev pages
This commit is contained in:
434
templates/wiki/tabs/models.html
Normal file
434
templates/wiki/tabs/models.html
Normal file
@@ -0,0 +1,434 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<!-- Overview Section -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-3">Data Models Overview</h5>
|
||||
<p class="text-muted lead">
|
||||
DocuPulse uses SQLAlchemy ORM with PostgreSQL to manage a comprehensive set of data models that support
|
||||
multi-tenant document management, user collaboration, and system administration. The database schema
|
||||
is designed for scalability, security, and efficient querying with proper relationships and constraints.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Core Models -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Core Models</h5>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">User Management</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• <strong>User:</strong> Core user accounts with roles</li>
|
||||
<li class="mb-2">• <strong>PasswordResetToken:</strong> Secure password recovery</li>
|
||||
<li class="mb-2">• <strong>PasswordSetupToken:</strong> Initial account setup</li>
|
||||
<li class="mb-2">• <strong>ManagementAPIKey:</strong> API authentication</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">Workspace & Collaboration</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• <strong>Room:</strong> Document workspaces</li>
|
||||
<li class="mb-2">• <strong>RoomMemberPermission:</strong> Granular access control</li>
|
||||
<li class="mb-2">• <strong>Conversation:</strong> Real-time messaging</li>
|
||||
<li class="mb-2">• <strong>Message:</strong> Individual chat messages</li>
|
||||
<li class="mb-2">• <strong>MessageAttachment:</strong> File attachments</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">File Management</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• <strong>RoomFile:</strong> Files and folders in rooms</li>
|
||||
<li class="mb-2">• <strong>UserStarredFile:</strong> User favorites system</li>
|
||||
<li class="mb-2">• <strong>TrashedFile:</strong> Deleted file management</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">System & Administration</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• <strong>SiteSettings:</strong> Company configuration</li>
|
||||
<li class="mb-2">• <strong>DocuPulseSettings:</strong> System limits</li>
|
||||
<li class="mb-2">• <strong>KeyValueSettings:</strong> Dynamic configuration</li>
|
||||
<li class="mb-2">• <strong>Event:</strong> Audit logging system</li>
|
||||
<li class="mb-2">• <strong>Notif:</strong> Notification system</li>
|
||||
<li class="mb-2">• <strong>EmailTemplate:</strong> Email templates</li>
|
||||
<li class="mb-2">• <strong>Mail:</strong> Email tracking</li>
|
||||
<li class="mb-2">• <strong>Instance:</strong> Multi-tenant management</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Detailed Model Documentation -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Model Details</h5>
|
||||
|
||||
<!-- User Model -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-user me-2"></i>User Model
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-3">Core user account with authentication, roles, and profile information.</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Primary Fields</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>id</code> - Primary key</li>
|
||||
<li class="mb-1"><code>username</code> - Unique username</li>
|
||||
<li class="mb-1"><code>email</code> - Unique email address</li>
|
||||
<li class="mb-1"><code>password_hash</code> - Encrypted password</li>
|
||||
<li class="mb-1"><code>is_admin</code> - Administrator role</li>
|
||||
<li class="mb-1"><code>is_manager</code> - Manager role</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Profile Fields</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>last_name</code> - User's last name</li>
|
||||
<li class="mb-1"><code>phone</code> - Contact phone</li>
|
||||
<li class="mb-1"><code>company</code> - Company name</li>
|
||||
<li class="mb-1"><code>position</code> - Job position</li>
|
||||
<li class="mb-1"><code>profile_picture</code> - Avatar image</li>
|
||||
<li class="mb-1"><code>preferred_view</code> - UI preference</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Room Model -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-door-open me-2"></i>Room Model
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-3">Document workspace with member management and file organization.</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Core Fields</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>id</code> - Primary key</li>
|
||||
<li class="mb-1"><code>name</code> - Room name</li>
|
||||
<li class="mb-1"><code>description</code> - Room description</li>
|
||||
<li class="mb-1"><code>created_at</code> - Creation timestamp</li>
|
||||
<li class="mb-1"><code>created_by</code> - Creator user ID</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Relationships</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>creator</code> - Room creator (User)</li>
|
||||
<li class="mb-1"><code>members</code> - Room members (User)</li>
|
||||
<li class="mb-1"><code>member_permissions</code> - Member permissions</li>
|
||||
<li class="mb-1"><code>files</code> - Room files (RoomFile)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RoomFile Model -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-file me-2"></i>RoomFile Model
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-3">Files and folders stored within rooms with metadata and access tracking.</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">File Information</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>id</code> - Primary key</li>
|
||||
<li class="mb-1"><code>name</code> - File/folder name</li>
|
||||
<li class="mb-1"><code>path</code> - File path</li>
|
||||
<li class="mb-1"><code>type</code> - 'file' or 'folder'</li>
|
||||
<li class="mb-1"><code>size</code> - File size in bytes</li>
|
||||
<li class="mb-1"><code>modified</code> - Last modified timestamp</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Access Control</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>room_id</code> - Parent room</li>
|
||||
<li class="mb-1"><code>uploaded_by</code> - Uploader user ID</li>
|
||||
<li class="mb-1"><code>uploaded_at</code> - Upload timestamp</li>
|
||||
<li class="mb-1"><code>deleted</code> - Deletion status</li>
|
||||
<li class="mb-1"><code>deleted_by</code> - Deleter user ID</li>
|
||||
<li class="mb-1"><code>deleted_at</code> - Deletion timestamp</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Conversation Model -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-comments me-2"></i>Conversation Model
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="text-muted mb-3">Real-time messaging conversations with member management.</p>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Conversation Details</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>id</code> - Primary key</li>
|
||||
<li class="mb-1"><code>name</code> - Conversation name</li>
|
||||
<li class="mb-1"><code>description</code> - Conversation description</li>
|
||||
<li class="mb-1"><code>created_at</code> - Creation timestamp</li>
|
||||
<li class="mb-1"><code>created_by</code> - Creator user ID</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">Relationships</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>creator</code> - Conversation creator</li>
|
||||
<li class="mb-1"><code>members</code> - Conversation members</li>
|
||||
<li class="mb-1"><code>messages</code> - Conversation messages</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Settings Models -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-cogs me-2"></i>Settings Models
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">SiteSettings</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>primary_color</code> - Brand primary color</li>
|
||||
<li class="mb-1"><code>secondary_color</code> - Brand secondary color</li>
|
||||
<li class="mb-1"><code>company_name</code> - Company name</li>
|
||||
<li class="mb-1"><code>company_logo</code> - Logo filename</li>
|
||||
<li class="mb-1"><code>company_website</code> - Company website</li>
|
||||
<li class="mb-1"><code>company_email</code> - Contact email</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted mb-2">DocuPulseSettings</h6>
|
||||
<ul class="list-unstyled small">
|
||||
<li class="mb-1"><code>max_rooms</code> - Maximum rooms per instance</li>
|
||||
<li class="mb-1"><code>max_conversations</code> - Max conversations</li>
|
||||
<li class="mb-1"><code>max_storage</code> - Storage limit in bytes</li>
|
||||
<li class="mb-1"><code>updated_at</code> - Last update timestamp</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Database Relationships -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Database Relationships</h5>
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<div class="d-flex align-items-start">
|
||||
<div class="flex-shrink-0 me-3">
|
||||
<div class="rounded-circle p-2" style="background-color: var(--primary-opacity-15);">
|
||||
<i class="fas fa-users" style="color: var(--primary-color);"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1" style="color: var(--primary-color);">User Relationships</h6>
|
||||
<p class="text-muted small mb-0">Users can create rooms, upload files, send messages, and participate in conversations with proper permission controls</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="d-flex align-items-start">
|
||||
<div class="flex-shrink-0 me-3">
|
||||
<div class="rounded-circle p-2" style="background-color: var(--primary-opacity-15);">
|
||||
<i class="fas fa-folder-tree" style="color: var(--primary-color);"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1" style="color: var(--primary-color);">File Hierarchy</h6>
|
||||
<p class="text-muted small mb-0">Files are organized in rooms with folder structures, starring capabilities, and trash management for deleted items</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="d-flex align-items-start">
|
||||
<div class="flex-shrink-0 me-3">
|
||||
<div class="rounded-circle p-2" style="background-color: var(--primary-opacity-15);">
|
||||
<i class="fas fa-shield-alt" style="color: var(--primary-color);"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1" style="color: var(--primary-color);">Permission System</h6>
|
||||
<p class="text-muted small mb-0">Granular permissions control access to rooms, files, and conversations with role-based and user-specific settings</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="d-flex align-items-start">
|
||||
<div class="flex-shrink-0 me-3">
|
||||
<div class="rounded-circle p-2" style="background-color: var(--primary-opacity-15);">
|
||||
<i class="fas fa-history" style="color: var(--primary-color);"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-1" style="color: var(--primary-color);">Audit Trail</h6>
|
||||
<p class="text-muted small mb-0">Comprehensive event logging tracks all user actions, file operations, and system changes for security and compliance</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
<!-- Quick Reference -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-info-circle me-2"></i>Quick Reference
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<h6 class="text-muted mb-2">Model Categories</h6>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">User Management</span>
|
||||
<span class="badge bg-primary">4 Models</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">File Management</span>
|
||||
<span class="badge bg-success">3 Models</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">Communication</span>
|
||||
<span class="badge bg-info">3 Models</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">System Settings</span>
|
||||
<span class="badge bg-warning">8 Models</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<h6 class="text-muted mb-2">Key Features</h6>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">Multi-tenant</span>
|
||||
<span class="badge bg-success">✓</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">Role-based access</span>
|
||||
<span class="badge bg-success">✓</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">Audit logging</span>
|
||||
<span class="badge bg-success">✓</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-1">
|
||||
<span class="small">File versioning</span>
|
||||
<span class="badge bg-success">✓</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Database Schema -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-database me-2"></i>Database Schema
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<h6 class="text-muted mb-2">Database Type</h6>
|
||||
<div class="p-2" style="background-color: var(--primary-bg-light); border-radius: 6px;">
|
||||
<div class="fw-bold" style="color: var(--primary-color);">PostgreSQL</div>
|
||||
<small class="text-muted">Primary database</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<h6 class="text-muted mb-2">ORM Framework</h6>
|
||||
<div class="p-2" style="background-color: var(--secondary-bg-light); border-radius: 6px;">
|
||||
<div class="fw-bold" style="color: var(--secondary-color);">SQLAlchemy</div>
|
||||
<small class="text-muted">Object-relational mapping</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<h6 class="text-muted mb-2">Migration Tool</h6>
|
||||
<div class="p-2" style="background-color: var(--primary-bg-light); border-radius: 6px;">
|
||||
<div class="fw-bold" style="color: var(--primary-color);">Alembic</div>
|
||||
<small class="text-muted">Schema versioning</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Model Best Practices -->
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-lightbulb me-2"></i>Model Best Practices
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Use proper foreign key constraints
|
||||
</li>
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Implement cascade delete where appropriate
|
||||
</li>
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Add indexes for frequently queried fields
|
||||
</li>
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Use JSON fields for flexible data storage
|
||||
</li>
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Include audit timestamps on all models
|
||||
</li>
|
||||
<li class="mb-2 small">
|
||||
<i class="fas fa-check text-success me-2"></i>
|
||||
Implement soft deletes for data recovery
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user