.yaml định nghĩa các key cho ngôn ngữ tiếng Anh

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 38)

Hình 11: Tập tin vi.yaml định nghĩa các key cho ngôn ngữ tiếng Việt.

Đặc biệt, hệ thống cũng thiết lập Vue I18n sử dụng lazy-loading tương ứng với ngôn ngữ hiện tại người dùng đã chọn. Điều này có nghĩa là khi mới vào sử dụng hệ thống, người dùng sẽ chỉ tải về một tập tin duy nhất ứng với ngôn ngữ mà người dùng đã sử dụng trước đó. Trong quá trình sử dụng, chỉ khi người dùng đổi sang ngơn ngữ khác thì hệ thống mới cho phép người dùng tải về tập tin cịn lại, và trong suốt q trình sử dụng sau đó, hệ thống sẽ tự động cache lại trong trình duyệt, người dùng sẽ khơng cần phải tải lại nữa.

Đây là một yếu tố quan trọng giúp tăng hiệu suất của hệ thống bởi khi hệ thống càng lớn, các tập tin định nghĩa ngôn ngữ sẽ rất nặng, có thể lên tới hơn 1.000 dịng, do đó sử dụng lazy-loading là điều rất thiết yếu.

2.2.2 Back-end: NestJS

NestJS: Một framework được xây dựng dựa trên nền tảng framework Express của

NodeJS. Đây là một framework mới mẻ và linh hoạt, kết hợp các đặc điểm cứng rắn, nhất

quán và bảo thủ (opinionated) của Spring Java, kiến trúc mơ-đun hóa tinh gọn và dễ mở rộng của Angular với NodeJS – một platform xây dựng ứng dụng Web đã quá nổi tiếng nhờ vào hiệu năng khá tốt. Ngồi ra, NestJS sử dụng ngơn ngữ lập trình Typescript đã khắc phục được các nhược điểm về kiểu của Javascript mà vẫn giữ được sự uyển chuyển của Javascript trong quá trình hiện thực. Một điểm mạnh nữa của NestJS là sự hỗ trợ gần như toàn diện các use-

case của một hệ thống web điển hình, ví dụ như: Validation, Serialization, Caching, Database (SQL, No-SQL), Logging, Websocket, Server-sent event, Job Queue, v.v..

Việc lựa chọn NestJS cho phép nhóm làm đề tài thống nhất về mặt ngôn ngữ giữa phần front-end và back-end, giảm bớt quá trình tìm hiểu và học hỏi các ngơn ngữ lập trình khác nhau. NestJS được xây dựng dựa trên nền tảng là NodeJS cũng là một điểm mạnh nữa cần nhắc đến, bởi NodeJS có một cộng đồng open-source đơng đảo cung cấp phong phú nhiều loại thư viện phục vụ hầu hết các use-case của một back-end truyền thống.

2.2.3 Database: PostgreSQL

PostgreSQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở trung hòa hai yếu tố: đảm bảo tuân thủ tiêu chuẩn ANSI SQL, đồng thời vẫn ln đi đầu trong các tính năng mới mẻ để phục vụ nhu cầu use case ngày càng phong phú. Các tính năng độc đáo mà PostgreSQL hỗ trợ có thể kể đến như:

 Full-text Search phục vụ mục đích tìm kiếm nâng cao.

 Materialized View phục vụ truy vấn các dữ liệu tổng hợp hiệu quả  Regular Expression.

 Khả năng mơ hình quan hệ kế thừa trong EERD bằng từ khóa INHERITANCE.  Cung cấp các kiểu dữ liệu mới như range, array,…

 Cung cấp kiểu dữ liệu json và jsonb để phục vụ nhu cầu sử dụng các mơ hình phi quan hệ.

Hệ thống sử dụng PostgreSQL làm hệ thống quản trị cơ sở dữ liệu khơng chỉ vì tính năng động như đã trình bày ở trên mà cịn bởi hiệu suất mạnh mẽ và có phần nhỉnh hơn so với các hệ cơ sở dữ liệu đương thời. Khả năng hỗ trợ nhiều cách lưu trữ dữ liệu cũng là một điểm nổi bật để quan tâm, bởi lẽ các hệ thống lớn ln có nhu cầu chuyển các bảng quan hệ có tính độc lập cao thành dữ liệu JSON để tăng hiệu suất.

2.2.4 ActionML

ActionML là một tập hợp các giải pháp Machine Learning giúp giải quyết nhiều bài toán khác nhau, trong đó Hệ thống giới thiệu là cốt lõi. Hệ thống giới thiệu The Universal Recommender với cốt lõi là thuật toán Correlated Cross-Occurrence đã được giới thiệu ở phần Cơ sở lý thuyết giúp cho việc giới thiệu linh hoạt hơn bằng cách tiếp nhận nhiều sự kiện chuyển đổi khác nhau trong hệ thống.

Ngồi ra ActionML cung cấp một máy chủ có tên là Harness dùng để triển khai các mơ hình Machine Learning. Điểm mạnh của máy chủ này đó là các API cung cấp đa dạng và dễ dàng sử dụng. Một người lập trình khơng cần nhiều hiểu biết về thuật tốn cũng có thể hiện thực cho mình một hệ thống giới thiệu sử dụng các công cụ này.

ElasticSearch là một cơ sở dữ liệu phục vụ mục đích tìm kiếm. Điểm đặc biệt của ElasticSearch là ở chỗ nó khơng chỉ hỗ trợ tìm kiếm full-text, mà cịn đa dạng các nhu cầu tìm kiếm khác như tìm kiếm một phần, search-as-you-type, fuzzy search (nhập sai chính tả), tìm kiếm vector (được nhóm làm đề tài sử dụng để hiện thực chức năng tìm kiếm tương đồng ngữ nghĩa), v.v..

NestJS được tích hợp khá tốt với ElasticSearch khi nó cung cấp một thư viện để giúp người lập trình có thể dễ dàng viết các câu lệnh tìm kiếm và cập nhật dữ liệu thay vì gọi trực tiếp thơng qua gửi API.

2.2.6 FastAPI

Đây là framework hiện thực API của Python sử dụng cơ chế lập trình async – await thay vì synchronous như các framework Python truyền thống. Hệ thống sử dụng công nghệ này để hiện thực API bao quanh mơ hình tìm kiếm tương đồng về ngữ nghĩa cũng viết bằng ngôn ngữ Python. Điểm mạnh của FastAPI dẫn đến quyết định sử dụng trên đó là sự đơn giản và dễ dàng trong việc hiện thực nhanh các API mà khơng tốn q nhiều thời gian cấu hình.

3 Yêu cầu hệ thống

Bởi vì bản chất hệ thống là sự kết hợp giữa Hệ quản trị đào tạo và Mạng xã hội nên dẫn tới hệ quả là khơng có một luồng hoạt động tổng qt nào có thể miêu tả các u cầu, tính năng của tồn bộ hệ thống. Do đó, nhóm làm đề tài sẽ không đề xuất ra luồng hoạt động nào mà thay vào đó sẽ liệt kê chi tiết các yêu cầu, tính năng mà hệ thống cung cấp. Qua đó khi kết hợp các u cầu, tính năng này với nhau có thể ra bất kỳ một luồng hoạt động nào và chúng đều có độ quan trọng là gần tương đương nhau.

3.1 Functional requirements

Dưới đây là sơ đồ các use-case của tồn bộ hệ thống:

3.2 Non-functional requirements

 Hệ thống đảm bảo các chính sách riêng tư của người dùng.

 Hệ thống đảm bảo máy chủ khơng gặp sự cố khi có 2,000 người truy xuất trong cùng một thời điểm.

 Dung lượng truyền tải của tồn bộ phần front-end khơng q 8 MB (sử dụng gzip).  Máy chủ phân tán của từng dịch vụ khơng bị sập q 60 giờ/tháng.

 Bảo trì và cập nhật hệ thống không quá 3 ngày (nguyên nhân chủ quan) và không quá 1 tuần (nguyên nhân khách quan). Nếu vượt q sẽ ln có đền bù xứng đáng.

 Hệ thống dễ dàng sử dụng, chỉ cần dưới 30 phút để người dùng hiểu hết các tính năng.

4 Đặc tả chi tiết các use-case

4.1 Chỉnh sửa thông tin cá nhân4.1.1 Kịch bản 4.1.1 Kịch bản

Người dùng thơng thường có thể chỉnh sửa thông tin cá nhân của bản thân bao gồm:

 Tên.

 Ngành nghề.  Nơi làm việc.  Giới thiệu bản thân.

4.1.2 Đặc tả chi tiết

Use-case name Chỉnh sửa thông tin cá nhân

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 16/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor thực hiện việc chỉnh sửa thông tin cá nhân bao gồm:  Tên.

 Ngành nghề.  Nơi làm việc.  Giới thiệu bản thân.

Pre-condition Actor phải ở trang “Cài đặt tài khoản” và đang chọn tab “Thông tin cá nhân”.

Normal Flow 1. Actor nhập các thông tin muốn chỉnh sửa.

2. Actor nhấn vào nút “Lưu”.

3. Hệ thống lưu các thơng tin mới được chỉnh sửa.

4. Màn hình hiện thơng báo “Chỉnh sửa thông tin cá nhân thành công”. Đồng thời nút “Lưu” sẽ không cho phép nhấn nữa cho tới khi có thêm sự chỉnh sửa mới.

Bảng 2: Bảng đặc tả chi tiết use-case Chỉnh sửa thông tin cá nhân.

4.2 Thay đổi ảnh đại diện4.2.1 Kịch bản 4.2.1 Kịch bản

Người dùng thơng thường có thể thay đổi ảnh đại diện của mình.

4.2.2 Đặc tả chi tiết

Use-case name Thay đổi ảnh đại diện

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 17/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor thay đổi ảnh đại diện của bản thân.

Pre-condition  Actor phải ở trang “Cài đặt tài khoản” và đang chọn tab “Thông tin cá nhân”.

 Actor phải đang ở trang “Thơng tin cá nhân” của chính mình.

Post-condition Các ảnh cũ sẽ bị xóa khỏi dữ liệu trên đám mây và hệ thống máy chủ.

Normal Flow 1. Actor nhấn vào hình đại diện.

2. Một popup hiện ra yêu cầu người dùng chọn một ảnh để thay đổi.

3. Ảnh mới sẽ được tải lên trên hệ thống dữ liệu đám mây.

4. Hệ thống máy chủ lưu thông tin đường dẫn tới ảnh mới vừa được lưu.

Exceptions Tại Bước 2:

2a. Nếu ảnh vượt quá kích thước cho phép là 4 MB thì sẽ hiển thị thơng báo “Ảnh vượt q kích thước cho phép” rồi kết thúc Normal Flow.

4.3 Xem các thông tin metadata cá nhân4.3.1 Kịch bản 4.3.1 Kịch bản

Người dùng thông thường có thể xem các thơng tin metadata (Siêu dữ liệu) cá nhân được

thu thập bởi hệ thống trên trang “Thông tin cá nhân”.

4.3.2 Đặc tả chi tiết

Use-case name Xem thông tin metadata cá nhân

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 17/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor xem các thông tin metadata (siêu dữ liệu) của cá nhân. Các thông tin này được lưu trữ lại bởi hệ thống và không thể chỉnh sửa trực tiếp ở trang “Thông tin cá nhân”.

Pre-condition Actor phải ở trang “Thông tin cá nhân”.

Normal Flow 1. Actor mở tab tương ứng với thông tin metadata muốn xem.

Các thơng tin metadata có thể xem được bao gồm: – Danh sách các Khóa học đã/đang học hoặc dạy. – Danh sách các Nhóm đang tham gia.

– Danh sách các đã đạt được. – Danh sách bạn bè.

2. Tùy vào mỗi tab thì Actor có thêm các thao tác phụ trợ trên từng đơn vị trong danh sách như:

Chuyển đến các trang chính của Khóa học. Chuyển đến trang chính của Nhóm.

Chuyển đến trang “Thông tin cá nhân” của bạn bè. Bảng 4: Bảng đặc tả chi tiết use-case Xem các thông tin metadata cá nhân.

4.4 Kết bạn4.4.1 Kịch bản 4.4.1 Kịch bản

Người dùng thông thường có thể gửi lời mời kết bạn với những người dùng khác. Chức

năng bạn bè là chức năng chính để giúp cho Người dùng có thể nhắn tin riêng tư với nhau.

Use-case name Kết bạn.

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 10/12/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor gửi lời mời kết bạn với người dùng chưa nằm trong danh sách bạn bè và có thể truy cập được bởi Actor.

Pre-condition  Actor phải ở trang Thông tin cá nhân của người dùng đích mà actor muốn kết bạn.

 Người dùng đích phải chưa là bạn của Actor.

Post-condition Người dùng đích sẽ có thơng báo lời mời kết bạn từ Actor.

Normal Flow Để điều hướng đến trang Thông tin cá nhân của người dùng khác, actor có thể:

1. Tìm kiếm trong thanh tìm kiếm ở mục Bạn bè trong Thơng tin cá nhân.

2. Chọn vào danh sách bạn bè được gợi ý bởi hệ thống.

Sau khi đã điều hướng đến trang Thông tin cá nhân của người dùng đích, actor nhấn vào nút “Kết bạn”.

Bảng 5: Bảng đặc tả chi tiết use-case Kết bạn.

4.5 Nhắn tin riêng tư (trực tiếp)4.5.1 Kịch bản 4.5.1 Kịch bản

Người dùng thơng thường có thể gửi tin nhắn trực tiếp đến bạn bè của họ. Việc nhắn

tin này cũng có thể được thực hiện giữa giáo viên và học viên.

4.5.2 Đặc tả chi tiết

Use-case name Nhắn tin riêng tư (trực tiếp)

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 25/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Người dùng thông thường gửi tin nhắn trực tiếp với nhau thông qua danh sách bạn bè.

2. Actor chọn người dùng mà mình muốn nhắn tin trong danh sách người dùng.

3. Actor nhập nội dung mình muốn nhắn. 4. Actor nhấn Gửi để gửi tin nhắn.

5. Tin nhắn sẽ được hiển thị ở hộp thoại nhắn tin. Bảng 6: Bảng đặc tả chi tiết use-case Nhắn tin riêng tư (trực tiếp).

4.6 Xóa tin nhắn 4.6.1 Kịch bản

Người dùng thơng thường có thể xóa tin nhắn đã gửi. Tin nhắn bị xóa vẫn sẽ hiển thị với

trong lịch sử tin nhắn với những actor có liên quan dưới dạng tin nhắn có nội dung đặc biệt:

Tin nhắn đã bị xóa.

4.6.2 Đặc tả chi tiết

Use-case name Xóa tin nhắn.

Created by Trần Lê Anh Quân Last updated by Vương Chí Cường

Created at 25/11/2020 Last updated at 21/07/2020

Actor Người dùng thơng thường.

Description Người dùng thơng thường xóa tin nhắn trong lịch sử nhắn tin.

Pre-condition Actor phải ở trang “Nhắn tin” và đang ở hộp thoại nhắn tin với người dùng khác.

Post-condition Tin nhắn bị xóa sẽ hiển thị nội dung Tin nhắn đã bị xóa đối với người dùng khác actor trong cuộc trò chuyện.

Normal Flow 1. Với mỗi tin nhắn trong danh sách, Actor nhấn nút hình “Dấu 3

chấm”.

2. Popover với các tùy chọn hiện ra. 3. Actor nhấn nút “Xóa”

4. Nội dung của tin nhắn bị xóa sẽ hiển thị Tin nhắn đã bị xóa trong lịch sử tin nhắn.

Bảng 7: Bảng đặc tả chi tiết use-case Xóa tin nhắn.

4.7 Yêu cầu tham gia Khóa học4.7.1 Kịch bản 4.7.1 Kịch bản

Ngoài việc được Người điều hành thêm trực tiếp vào nhóm thì hệ thống cũng hỗ trợ cho những Người dùng thông thường được phép gửi các yêu cầu tham gia Khóa học.

4.7.2 Đặc tả chi tiết

Use-case name Yêu cầu tham gia Khóa học

Created by Vương Chí Cường Last updated by Vương Chí Cường

Created at 15/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor yêu cầu được tham gia vào một Khóa học.

Pre-condition Actor phải đang ở trong trang chính của một Khóa học.

Normal Flow 1. Actor nhấn nút “Tham gia khóa học”.

2. Hệ thống đưa yêu cầu tham gia khóa học của Actor vào danh sách chờ kiểm duyệt của Khóa học đó.

3. Nút “Tham gia nhóm” giờ sẽ chuyển thành “Đã gửi yêu cầu”. Bảng 8: Bảng đặc tả chi tiết use-case Yêu cầu tham gia Khóa học.

4.8 u cầu tham gia Nhóm4.8.1 Kịch bản 4.8.1 Kịch bản

Vì là hệ thống tích hợp mạng xã hội với cốt lõi là Nhóm nên Người dùng thơng thường khi muốn tham gia vào một Nhóm nào đó sẽ phải yêu cầu và phải được chấp thuận từ người có thẩm quyền trong Nhóm thì mới được tham gia và thực hiện các tác vụ khác trong Nhóm.

Use-case name Yêu cầu tham gia Nhóm

Created by Vương Chí Cường Last updated by Vương Chí Cường

Created at 15/11/2020 Last updated at 21/07/2021

Actor Người dùng thông thường.

Description Actor u cầu tham gia vào một Nhóm u thích.

Trigger Actor nhấn vào nút “Yêu cầu tham gia”.

Pre-condition Actor phải đang ở trong trang chính của một Nhóm.

Normal Flow 1. Actor nhấn nút “Tham gia Nhóm”.

2. Hệ thống đưa Yêu cầu tham gia Nhóm của Actor vào danh sách chờ kiểm duyệt của Nhóm đó.

3. Nút “Tham gia nhóm” giờ sẽ chuyển thành “Đã gửi yêu cầu”. Bảng 9: Bảng đặc tả chi tiết use-case Yêu cầu tham gia Nhóm.

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 38)

Tải bản đầy đủ (PDF)

(185 trang)