[DDD] Thiết kế Chi tiết Tính năng chỉnh sửa chi tiết bài đăng
Tóm tắt tài liệu
Tài liệu này trình bày thiết kế kỹ thuật chi tiết cho luồng chỉnh sửa nội dung video trên dashboard. Bao gồm thiết kế UI, luồng chỉnh sửa, xác thực dữ liệu, API, và các biện pháp bảo mật.
1. Tổng quan (Overview)
1.1. Bối cảnh và Vấn đề
Tính năng chỉnh sửa video cho phép người dùng cập nhật thông tin, hình ảnh, và các thuộc tính liên quan đến video đã đăng tải. Đảm bảo dữ liệu luôn nhất quán, bảo mật và thân thiện với người dùng.
1.2. Mục tiêu & Phi mục tiêu (Goals and Non-Goals)
Mục tiêu (Goals)
- Cho phép chỉnh sửa chi tiết video: thông tin dự án, giá, diện tích, tiện ích, hình ảnh, v.v.
- Hỗ trợ đa ngôn ngữ cho nội dung video.
- Xác thực dữ liệu đầu vào (giá, diện tích, địa chỉ, v.v.).
- Cập nhật hình ảnh/video mới.
- Giao diện chuyển bước (multi-step) trực quan, có thể quay lại hoặc tiếp tục.
Phi mục tiêu (Non-Goals)
- Chỉnh sửa video trực tiếp (video editing).
- Quản lý quyền truy cập nâng cao (ACL).
Ghi chú
Các "phi mục tiêu" sẽ được phát triển trong tài liệu riêng để giữ phạm vi tập trung.
2. Kiến trúc Tổng thể (Overall Architecture)
Luồng chỉnh sửa video gồm các thành phần sau:
3. Thiết kế Chi tiết (Detailed Design)
3.1. Thiết kế Giao diện & Luồng người dùng (UI & User Flow)
Luồng người dùng:
- Người dùng truy cập trang chỉnh sửa nội dung.
- Trang hiển thị thành từng bước rõ ràng:
- Bước 1: Nhập thông tin chung về dự án và video.
- Bước 2: Nhập giá, diện tích, và tình trạng giấy tờ.
- Bước 3: Thêm tiện ích và tải lên hình ảnh/video.
- Người dùng có thể bấm "Tiếp" để sang bước sau, hoặc "Quay lại" nếu muốn sửa lại bước trước.
- Ở mỗi bước, hệ thống sẽ kiểm tra:
- Giá có hợp lý không (phải lớn hơn 0).
- Diện tích đúng định dạng.
- Địa chỉ không được để trống.
- Khi người dùng bấm "Lưu":
- Hệ thống gửi thông tin lên máy chủ để lưu lại.
- Nếu có hình ảnh/video mới, sẽ tự động tải lên dịch vụ lưu trữ.
- Sau đó, người dùng sẽ thấy thông báo:
- Nếu thành công: “Cập nhật thành công!”
- Nếu lỗi: “Có lỗi xảy ra, vui lòng thử lại.”
3.2. Luồng Tương tác (Interaction Flow)
3.3. Thiết kế API (API Design)
Endpoint: PUT /api/v1/content/:id
Request Body:
{
"price": 12000000, // Giá (VNĐ/tháng)
"area": 35, // Diện tích (m2)
"legalStatus": "xxx", // Trạng thái pháp lý (ví dụ: "sổ hồng")
"location": {
"latitude": 10.762622, // Vĩ độ
"longitude": 106.660172 // Kinh độ
},
"languages": {
"vi": {
"projectName": "••••••••••••••••••", // Tên dự án
"description": "••••••••••••••••••••••••••••", // Mô tả
"address": "••••••••••••••••••••••" // Địa chỉ
},
"en": {
"projectName": "••••••••••••••••••",
"description": "••••••••••••••••••••••••••••",
"address": "••••••••••••••••••••••"
},
"ko": {
"projectName": "••••••••••••••••••",
"description": "••••••••••••••••••••••••••••",
"address": "••••••••••••••••••••••"
}
},
"images": [
"••••••••.jpg" // Tên file ảnh
],
"amenities": [
"••••", "•••" // Các tiện ích
]
}
Response (Success - 200 OK):
{
"success": true,
"message": "Operation successful",
"data": {
...
}
}
Response (Error):
- 400 Bad Request: Dữ liệu không hợp lệ.
- 404 Not Found: Không tìm thấy video.
- 401 Unauthorized: Người dùng không có quyền chỉnh sửa.
Lưu ý bảo mật
Chỉ cho phép người dùng sở hữu video hoặc admin chỉnh sửa. Kiểm tra quyền ở backend.
4. Xác thực dữ liệu (Validation)
- Giá: > 0.
- Diện tích: > 0.
- Tọa độ: Không được để trống.
- Thông tin ngôn ngữ: Mỗi ngôn ngữ phải có đủ các trường bắt buộc (tên dự án, mô tả, địa chỉ, v.v.).
- Hình ảnh: Tối đa 5 ảnh, chỉ nhận định dạng hợp lệ (
jpg,png).
5. Các yếu tố ngoài chức năng (Non-Functional Requirements)
5.1. Bảo mật (An toàn hệ thống)
- Đăng nhập bằng mã bảo mật: Mỗi lần người dùng chỉnh sửa video đều phải có mã xác thực (token).
- Chỉ người có quyền mới được chỉnh sửa: Người đăng video hoặc quản trị viên mới có quyền chỉnh sửa video đó.
- Kiểm tra file tải lên: Hệ thống chỉ chấp nhận ảnh hoặc video đúng định dạng.
5.2. Tốc độ & Mở rộng
- Hỗ trợ tải lên file lớn: Dùng kỹ thuật chia nhỏ file khi tải lên để tránh lỗi và nhanh hơn.
- Tăng tốc xử lý dữ liệu: Cải thiện cách hệ thống lưu và tìm kiếm video để phản hồi nhanh hơn.
6. Rủi ro và Cách giảm thiểu
| Vấn đề có thể xảy ra | Mức độ nghiêm trọng | Dễ xảy ra không? | Giải pháp phòng tránh |
|---|---|---|---|
| Tải file quá lớn làm chậm hệ thống | Trung bình | Có thể xảy ra | Giới hạn dung lượng file và chia nhỏ file khi tải. |
| Người không có quyền chỉnh sửa video | Rất nghiêm trọng | Hiếm khi | Kiểm tra kỹ quyền người dùng và ghi lại lịch sử thay đổi. |
| Dữ liệu nhập vào không hợp lệ gây lỗi | Trung bình | Thỉnh thoảng | Kiểm tra kỹ dữ liệu từ cả phía người dùng và hệ thống. |
Tài liệu tham khảo: