Thay đổi ARCHITEC.md cập nhật các thông tin để chuẩn bị refactor lại dự án
This commit is contained in:
+45
-23
@@ -4,48 +4,70 @@ Tài liệu này tổng hợp toàn bộ cấu trúc hệ thống phục vụ qu
|
||||
|
||||
## 1. Mô hình Dữ liệu (Database Schema - MongoDB)
|
||||
|
||||
### User (Người dùng)
|
||||
- `username`: String (Unique)
|
||||
- `email`: String (Unique)
|
||||
### 1.1. User (Người dùng)
|
||||
- `_id`: ObjectId
|
||||
- `username`: String (Unique, bắt buộc)
|
||||
- `email`: String (Unique, bắt buộc)
|
||||
- `password`: String (Hashed)
|
||||
- `role`: String ['admin', 'Chủ sở hữu', 'editor', 'moderator', 'Thành viên']
|
||||
- `role`: String ['admin', 'moderator', 'user', 'guest'] (Chuẩn hóa mới)
|
||||
- `fullName`: String
|
||||
- `avatarUrl`: String
|
||||
- `agreedToRules`: Boolean
|
||||
- `avatarUrl`: String (Đường dẫn stream ảnh đại diện)
|
||||
- `agreedToRules`: Boolean (Trạng thái đồng ý điều khoản)
|
||||
- `storage.used`: Number (Dung lượng đã dùng - bytes)
|
||||
- `storage.quota`: Number (Hạn mức dung lượng - bytes)
|
||||
- `createdAt`: Date
|
||||
- `updatedAt`: Date
|
||||
|
||||
### Asset (Tệp tin/Phương tiện)
|
||||
### 1.2. Asset (Tệp tin/Phương tiện)
|
||||
- `_id`: ObjectId
|
||||
- `filePath`: String (Đường dẫn vật lý)
|
||||
- `fileSize`: Number (Bytes)
|
||||
- `uploadedBy`: ObjectId (Ref: User)
|
||||
- `coordinates`: Object { `lat`: Number, `lng`: Number } (GPS từ EXIF)
|
||||
- `coordinates`: Object { `lat`: Number, `lng`: Number } (Tọa độ GPS trích xuất từ EXIF)
|
||||
- `createdAt`: Date
|
||||
|
||||
### Scene (Cảnh 360)
|
||||
- `name`/`title`: String
|
||||
- `description`: String
|
||||
- `assetId`: ObjectId (Ref: Asset)
|
||||
- `scene_url`: String
|
||||
- `gps`: Object { `lat`: Number, `lng`: Number }
|
||||
### 1.3. Tour (Cấu trúc Tour - Đề xuất mới)
|
||||
- `_id`: ObjectId
|
||||
- `name`: String (Tên của tour)
|
||||
- `description`: String (Mô tả tổng quát)
|
||||
- `location`: Object { `lat`: Number, `lng`: Number } (Vị trí trung tâm của tour)
|
||||
- `createdBy`: ObjectId (Ref: User)
|
||||
- `tourId`: ObjectId (Ref: Scene) - ID của cảnh gốc tạo nên tour
|
||||
- `rootSceneId`: ObjectId (Ref: Scene - Cảnh khởi đầu)
|
||||
- `privacy`: String ['public', 'private', 'member', 'shared']
|
||||
- `scenes`: Array [ObjectId (Ref: Scene)] (Danh sách các cảnh thuộc tour)
|
||||
- `createdAt`: Date
|
||||
- `updatedAt`: Date
|
||||
|
||||
### 1.4. Scene (Cảnh 360)
|
||||
- `_id`: ObjectId
|
||||
- `tourId`: ObjectId (Ref: Tour - Tour cha sở hữu)
|
||||
- `name`: String (Tên cảnh)
|
||||
- `description`: String (Mô tả chi tiết cảnh)
|
||||
- `assetId`: ObjectId (Ref: Asset)
|
||||
- `scene_url`: String (Đường dẫn ảnh đã xử lý)
|
||||
- `gps`: Object { `lat`: Number, `lng`: Number } (Vị trí địa lý riêng của cảnh)
|
||||
- `createdBy`: ObjectId (Ref: User)
|
||||
- `uploadedAt`: Date (Thời gian gốc của ảnh được upload)
|
||||
- `status`: String ['processing', 'completed', 'failed']
|
||||
- `shareToken`: String (Dùng cho link truy cập nhanh)
|
||||
- `shareToken`: String (Dùng cho link chia sẻ)
|
||||
- `shareTokenExpires`: Date
|
||||
- `sharedWith`: Array [ObjectId (Ref: User)]
|
||||
- `sharedEmails`: Array [String]
|
||||
- `views`: Number
|
||||
- `views`: Number (Tổng lượt xem)
|
||||
- `viewHistory`: Array [ { `date`: Date, `count`: Number } ]
|
||||
- `createdAt`: Date
|
||||
|
||||
### Hotspot (Điểm điều hướng)
|
||||
- `parent_scene_id`: ObjectId (Ref: Scene)
|
||||
- `target_scene_id`: ObjectId (Ref: Scene)
|
||||
- `title`: String
|
||||
### 1.5. Hotspot / Link (Điểm điều hướng & Liên kết)
|
||||
- `_id`: ObjectId
|
||||
- `parent_scene_id`: ObjectId (Ref: Scene - Cảnh chứa điểm này)
|
||||
- `target_scene_id`: ObjectId (Ref: Scene - Cảnh đích đến)
|
||||
- `target_tour_id`: ObjectId (Ref: Tour - Dùng cho liên kết sang tour khác)
|
||||
- `title`: String (Tên của liên kết/hotspot)
|
||||
- `description`: String
|
||||
- `coordinates`: Object { `yaw`: Number, `pitch`: Number }
|
||||
- `is_auto_return`: Boolean (Tự động tạo link quay lại)
|
||||
- `is_auto_return`: Boolean (Đánh dấu link quay lại tự động)
|
||||
|
||||
### Setting (Cấu hình hệ thống)
|
||||
### 1.6. Setting (Cấu hình hệ thống)
|
||||
- `timezone`: String (Mặc định: 'Asia/Ho_Chi_Minh')
|
||||
- `language`: String (Mặc định: 'vi')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user