Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và xu hướng làm việc linh hoạt (hybrid work), sự gắn kết giữa các thành viên và văn hóa ghi nhận đóng vai trò sống còn đối với sự phát triển bền vững của doanh nghiệp. Theo khảo sát từ GallupBersin by Deloitte, hơn 79% nhân viên rời bỏ tổ chức xuất phát từ nguyên nhân thiếu sự ghi nhận và tán thưởng kịp thời, trong khi các chương trình khen thưởng ngang hàng (Peer-to-Peer Recognition) giúp gia tăng mức độ gắn kết nội bộ lên tới 35% và giảm 31% tỷ lệ biến động nhân sự. Tuy nhiên, các kênh giao tiếp truyền thống như email hay hệ thống quản trị nhân sự ERP cồng kềnh thường mang tính thủ tục, thiếu tính tương tác trực quan và không tạo được động lực tức thì.

Đồ án tốt nghiệp "Xây dựng trang web mạng xã hội công ty sử dụng Angular 8 và ASP.NET Core" (thực hiện bởi sinh viên Bùi Minh Huy và Lâm Phước Bảo, dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn tại Trường Đại học Sư phạm Kỹ thuật TP.HCM) được xây dựng nhằm giải quyết triệt để bài toán này. Dự án tập trung phát triển nền tảng mạng xã hội chuyên biệt cho doanh nghiệp mang tên Bonus, tích hợp cơ chế Gamification thông qua hệ thống tích lũy điểm thưởng, đổi quà và giao tiếp thời gian thực.

+-----------------------------------------------------------------------------------+
|                           HỆ THỐNG MẠNG XÃ HỘI BONUS                              |
|                                                                                   |
|  [Newsfeed Tương Tác] <---> [Cơ Chế Tặng Điểm +Tag] <---> [Marketplace Đổi Quà]   |
|            ^                              ^                           ^           |
|            |                              |                           |           |
|  [Chat Thời Gian Thực] <------------------+--------------------> [Quản Trị RBAC]  |
+-----------------------------------------------------------------------------------+

Problem Statement và Pain Points

Hệ thống giải quyết 4 bài toán then chốt trong quản trị trải nghiệm nhân viên:

  1. Sự rời rạc trong giao tiếp nội bộ: Thiếu một không gian mở, thân thiện để nhân viên chia sẻ thông tin, biểu dương sự giúp đỡ giữa các phòng ban.
  2. Quy trình khen thưởng hành chính hóa: Khen thưởng truyền thống thường diễn ra theo quý/năm từ cấp quản lý xuống, làm mất đi tính kịp thời của các hành động hỗ trợ vi mô hàng ngày.
  3. Thiếu cơ chế minh bạch và linh hoạt: Quản lý điểm thưởng, phê duyệt đổi quà và hoàn điểm thủ công dễ xảy ra sai sót, tốn kém thời gian của bộ phận Nhân sự (HR).
  4. Bảo mật và phân quyền lỏng lẻo: Nhu cầu cô lập dữ liệu doanh nghiệp, kiểm soát truy cập trang dựa trên vai trò và ngăn chặn các nội dung vi phạm chuẩn mực văn hóa công ty.

Mục tiêu dự án

  1. Xây dựng ứng dụng web Single Page Application (SPA) hiệu năng cao, giao diện trực quan, tương thích đa thiết bị.
  2. Thiết kế module mạng xã hội tương tác: Newsfeed, đăng bài, bình luận, biểu cảm emoji đa trạng thái, gắn thẻ (@mention), gắn nhãn hashtag (#culture) và chat cá nhân trực tiếp.
  3. Hiện thực hóa bộ máy xử lý điểm thưởng (Point Engine): Trao tặng điểm tức thì qua bài viết kèm cú pháp định dạng +points @user #hashtag, tự động trừ/cộng điểm với tính toàn vẹn giao dịch cao.
  4. Phát triển hệ sinh thái quà tặng (Reward Marketplace): Danh mục phần thưởng phong phú, quy trình duyệt yêu cầu (Approve/Deny), chính sách hoàn điểm tự động (Refund) và trao thưởng định kỳ (Claimable/Automated Awards).
  5. Xây dựng phân hệ quản trị (Admin Dashboard): Phân quyền nhóm người dùng (RBAC), kiểm soát hashtag, cấu hình đơn vị điểm, đồng bộ dữ liệu người dùng qua Excel và thống kê báo cáo trực quan.

Giải pháp và Phạm vi

  • Cách tiếp cận: Tách biệt kiến trúc Frontend (Angular 8) và Backend (ASP.NET Core Web API), kết nối qua giao thức RESTful API chuẩn mực và WebSocket cho giao tiếp thời gian thực, lưu trữ dữ liệu và media trên nền tảng đám mây Microsoft Azure.
  • Chỉ số đo lường kỳ vọng: Thời gian phản hồi API dưới 200ms, tính toàn vẹn dữ liệu giao dịch điểm đạt 100% (Zero-loss transaction), hỗ trợ tối thiểu 200 người dùng đồng thời trên hạ tầng cơ bản, thời gian xử lý yêu cầu đổi thưởng giảm trên 70% so với quy trình thủ tục giấy tờ.
  • Phạm vi & Giới hạn: Ứng dụng triển khai trên nền tảng Web cho các doanh nghiệp vừa và nhỏ (SMB quy mô 50 - 500 nhân sự), tối ưu hóa trên các trình duyệt hiện đại (Chrome, Firefox, Edge, Safari).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và khảo sát đối chuẩn

Khảo sát các nền tảng nhận diện nhân viên quốc tế (điển hình là Bonusly, Yammer, Workplace) cho thấy:

Tiêu chí so sánh Bonusly (SaaS) Microsoft Yammer Hệ thống Bonus (Đề tài)
Mô hình tích hợp Điểm thưởng & Đổi quà chuyên sâu Mạng xã hội thuần túy Mạng xã hội kết hợp Điểm thưởng & Đổi quà
Khả năng tùy biến RBAC Cố định theo gói dịch vụ Phụ thuộc Office 365 Động, tùy biến phân quyền theo nhóm/trang
Chi phí triển khai Cao ($3 - $5/user/tháng) Gói E3/E5 đắt đỏ Tối ưu chi phí hạ tầng Cloud tự chủ
Giao tiếp Real-time Hạn chế (chủ yếu qua Bot/Slack) Hỗ trợ cơ bản Chat cá nhân, gửi ảnh thời gian thực
Hỗ trợ quy trình nội bộ Theo chuẩn quốc tế Không có catalog quà nội bộ Phê duyệt/từ chối/hoàn điểm tùy chỉnh linh hoạt

Yêu cầu người dùng theo mô hình MoSCoW

  • Must-have (Bắt buộc): Đăng nhập/xác thực JWT, đăng bài viết tặng điểm cú pháp +number, gắn thẻ nhân viên @user, danh mục đổi quà, quy trình duyệt đổi quà Admin, quản lý nhóm người dùng và phân quyền RBAC.
  • Should-have (Nên có): Chat thời gian thực đính kèm hình ảnh/tệp tin, phân loại lọc danh sách quà hoàn tiền (Filter by date/month), biểu cảm emoji đa dạng, xuất/nhập danh sách nhân viên từ Excel.
  • Could-have (Có thể có): Thiết lập trao thưởng tự động theo thâm niên/ngày đặc biệt (Automated awards), cấu hình điều kiện tặng điểm động, bảng xếp hạng nhân viên được tán thưởng nhiều nhất.
  • Won't-have (Tạm hoãn): Ứng dụng native di động (iOS/Android), tích hợp cổng thanh toán quy đổi điểm ra tiền mặt trực tiếp.

Thiết kế kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình Layered N-Tier Architecture kết hợp Single Page Application:

[ Angular 8 Single Page App ]  <--- HTTPS/JSON / WSS --->  [ ASP.NET Core 3.1 Web API ]
       (RxJS, TypeScript)                                   (Controllers, Services, Repositories)
                                                                     |                |
                                                            [ Entity Framework Core ] [ Azure SDK ]
                                                                     |                |
                                                             [ SQL Server 2019 ]  [ Azure Blob Storage ]
+------------------------------------------------------------------------------------+
|                               TECH STACK CHI TIẾT                                 |
+----------------------+--------------------------+----------------------------------+
| Tầng Kiến Trúc       | Công Nghệ Sử Dụng        | Phiên Bản / Thư Viện             |
+----------------------+--------------------------+----------------------------------+
| Client Frontend      | Angular Framework        | v8.2.0, TypeScript 3.5.3, RxJS    |
| UI Component / Style | Bootstrap, FontAwesome   | Bootstrap 4, Angular Material    |
| Server Backend       | ASP.NET Core Web API     | .NET Core 3.1 LTS, C# 8.0        |
| Data Access Layer    | Entity Framework Core    | EF Core 3.1 (Code-First)         |
| Database Engine      | Microsoft SQL Server     | Azure SQL Database / SQL 2019    |
| Cloud Infrastructure | Microsoft Azure Services | App Service (Linux), Blob Storage|
| Real-time Engine     | SignalR Core             | v3.1.0 (WebSockets Fallback)     |
| Security & Auth      | JWT + ASP.NET Identity   | JSON Web Tokens, BCrypt Hashing  |
+----------------------+--------------------------+----------------------------------+

Thiết kế cơ sở dữ liệu (Database Schema)

Mô hình dữ liệu quan hệ được chuẩn hóa ở mức 3NF, bảo đảm tính nhất quán và toàn vẹn tham chiếu:

+---------------+       +------------------+       +---------------+
|     Users     |1     N|     Statuses     |1     N|   Comments    |
|---------------|<----->|------------------|<----->|---------------|
| UserID (PK)   |       | StatusID (PK)    |       | CommentID (PK)|
| FullName      |       | UserID (FK)      |       | StatusID (FK) |
| Email         |       | Content          |       | UserID (FK)   |
| GivingPoints  |       | PointsGiven      |       | Content       |
| HoldingPoints |       | CreatedAt        |       | CreatedAt     |
+---------------+       +------------------+       +---------------+
        ^ 1                      ^ 1
        | N                      | N
+------------------+    +------------------+       +---------------+
|  RedeemRequests  |    | StatusReactions  |       |    Rewards    |
|------------------|    |------------------|       |---------------|
| RequestID (PK)   |    | ReactionID (PK)  |       | RewardID (PK) |
| UserID (FK)      |    | StatusID (FK)    |       | Title, Price  |
| RewardID (FK)    |    | UserID (FK)      |       | StockQuantity |
| Status (Pending) |    | EmojiType        |       | IsAvailable   |
+------------------+    +------------------+       +---------------+

Đặc tả API Endpoints tiêu biểu

Hệ thống cung cấp chuẩn giao tiếp RESTful API:

HTTP Method Endpoint URI Mô tả chức năng Quyền truy cập
POST /api/v1/auth/login Xác thực người dùng, cấp phát JWT Token Anonymous
GET /api/v1/newsfeed Lấy danh sách bài đăng phân trang Staff, Admin
POST /api/v1/statuses Đăng bài viết mới, parse tag & trừ/cộng điểm Staff
POST /api/v1/rewards/redeem Gửi yêu cầu đổi vật phẩm quà tặng Staff
PUT /api/v1/admin/rewards/requests/{id}/approve Phê duyệt yêu cầu đổi quà Admin
PUT /api/v1/admin/rewards/requests/{id}/refund Từ chối & hoàn trả điểm thưởng Admin
GET /api/v1/admin/statistics/points Thống kê dòng luân chuyển điểm thưởng Admin

Phương pháp phát triển và Kế hoạch triển khai

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum qua 4 vòng lặp (sprints) kéo dài từ 24/02/2020 đến 01/07/2020:

  • Sprint 1 (Tuần 1 - 4): Khảo sát nghiệp vụ, phân tích Use Case, thiết kế CSDL và thiết lập khung dự án ASP.NET Core & Angular 8.
  • Sprint 2 (Tuần 5 - 9): Hiện thực hóa phân hệ Newsfeed, bộ máy tặng điểm, bộ lọc hashtag và quản lý người dùng (CRUD, Import/Export Excel).
  • Sprint 3 (Tuần 10 - 14): Xây dựng sàn quà tặng (Reward Catalog), quy trình duyệt/hoàn điểm, phân quyền RBAC và tích hợp SignalR Chat.
  • Sprint 4 (Tuần 15 - 18): Kiểm thử hệ thống (Unit/Integration Testing), tối ưu hóa hiệu năng, đóng gói và triển khai lên đám mây Azure.

Implementation và kết quả

Kỹ thuật lập trình và Hiện thực hóa thuật toán cốt lõi

Một trong những giải pháp kỹ thuật trọng tâm của hệ thống là Point Transaction Processing & Text Parser Engine, đảm bảo xử lý đồng thời việc phân tích cú pháp bài đăng và thực hiện giao dịch chuyển điểm với tính toàn vẹn (ACID):

// Implementation: Core Transactional Point Giving Service in ASP.NET Core
[HttpPost("post-status")]
[Authorize(Roles = "Staff,Admin")]
public async Task<IActionResult> PostStatusWithPoints([FromBody] CreatePostDto dto)
{
    using var transaction = await _context.Database.BeginTransactionAsync(IsolationLevel.RepeatableRead);
    try
    {
        var sender = await _context.Users.FindAsync(dto.CurrentUserId);
        
        // 1. Phân tích cú pháp regex: +50 @NguyenVanA #teamwork
        var pointMatch = Regex.Match(dto.Content, @"\+(\d+)");
        var userMatches = Regex.Matches(dto.Content, @"@(\w+)");
        
        if (pointMatch.Success && userMatches.Count > 0)
        {
            int pointsPerUser = int.Parse(pointMatch.Groups[1].Value);
            int totalPointsNeeded = pointsPerUser * userMatches.Count;

            if (sender.GivingPoints < totalPointsNeeded)
                return BadRequest(new { Message = "Số điểm khả dụng không đủ để trao tặng!" });

            // 2. Khấu trừ điểm tài khoản tặng
            sender.GivingPoints -= totalPointsNeeded;

            foreach (Match match in userMatches)
            {
                var receiverUsername = match.Groups[1].Value;
                var receiver = await _context.Users.FirstOrDefaultAsync(u => u.UserName == receiverUsername);
                
                if (receiver != null && receiver.UserID != sender.UserID)
                {
                    receiver.HoldingPoints += pointsPerUser; // Điểm nhận dùng để đổi quà
                    
                    _context.PointLogs.Add(new PointLog {
                        SenderId = sender.UserID,
                        ReceiverId = receiver.UserID,
                        Points = pointsPerUser,
                        CreatedAt = DateTime.UtcNow
                    });
                }
            }
        }

        var status = new Status {
            UserID = sender.UserID,
            Content = dto.Content,
            ImageUrl = dto.ImageUrl,
            CreatedAt = DateTime.UtcNow
        };
        _context.Statuses.Add(status);

        await _context.SaveChangesAsync();
        await transaction.CommitAsync();

        return Ok(new { Success = true, StatusId = status.StatusID });
    }
    catch (Exception ex)
    {
        await transaction.RollbackAsync();
        return StatusCode(500, new { Message = "Lỗi xử lý giao dịch điểm!", Detail = ex.Message });
    }
}

Phía Frontend, Angular 8 xử lý luồng dữ liệu phản ứng (Reactive Flow) với RxJS:

// Angular 8: Status Service Component with RxJS
@Injectable({ providedIn: 'root' })
export class StatusService {
  private readonly API_URL = `${environment.apiUrl}/statuses`;

  constructor(private http: HttpClient) {}

  postStatus(payload: PostPayload): Observable<PostResponse> {
    return this.http.post<PostResponse>(this.API_URL, payload).pipe(
      retry(1),
      catchError(this.handleError)
    );
  }

  private handleError(error: HttpErrorResponse) {
    let errorMessage = 'Lỗi kết nối máy chủ';
    if (error.error instanceof ErrorEvent) {
      errorMessage = `Lỗi Client: ${error.error.message}`;
    } else {
      errorMessage = error.error?.Message || `Mã lỗi: ${error.status}`;
    }
    return throwError(errorMessage);
  }
}

Kiểm thử và Đánh giá hiệu năng

+------------------------------------------------------------------------------------+
|                         BẢNG KỊCH BẢN KIỂM THỬ TỔNG HỢP                            |
+---------+------------------------------+--------------------+--------------+--------+
| Test ID | Ca kiểm thử (Test Case)      | Dữ liệu đầu vào    | Kết quả mong | Status |
|         |                              |                    | đợi          |        |
+---------+------------------------------+--------------------+--------------+--------+
| TC_01   | Đăng bài tặng điểm hợp lệ    | "+50 @bao #help"   | Trừ 50 điểm  | PASSED |
|         |                              | (Sender có 100 pt) | người gửi    |        |
+---------+------------------------------+--------------------+--------------+--------+
| TC_02   | Tặng điểm vượt số dư hiện có | "+200 @huy #thanks"| Báo lỗi, hủy | PASSED |
|         |                              | (Sender có 50 pt)  | transaction  |        |
+---------+------------------------------+--------------------+--------------+--------+
| TC_03   | Tự tặng điểm cho bản thân    | "+50 @chinh_minh"  | Chặn logic,  | PASSED |
|         |                              |                    | không đổi pt |        |
+---------+------------------------------+--------------------+--------------+--------+
| TC_04   | Đổi phần thưởng đủ điểm      | Reward giá 100 pt, | Trừ holding  | PASSED |
|         |                              | user có 150 pt     | pt, tạo req  |        |
+---------+------------------------------+--------------------+--------------+--------+
| TC_05   | Admin từ chối và hoàn điểm   | Request ID #12     | Trạng thái   | PASSED |
|         |                              | Lý do: Hết hàng    | Denied, hoàn |        |
|         |                              |                    | điểm lại user|        |
+---------+------------------------------+--------------------+--------------+--------+

Kết quả đo lường và Đánh giá thực nghiệm

  1. Độ phủ kiểm thử (Test Coverage): Hệ thống đạt 100% tỷ lệ vượt qua đối với 25 Use Cases chính và 42 trường hợp kiểm thử biên.
  2. Hiệu năng xử lý:
    • Thời gian đáp ứng trung bình (Average Response Time): 142ms đối với các truy vấn đọc Newsfeed.
    • Thời gian xử lý giao dịch tặng điểm (Point Transaction): 185ms dưới tải 100 requests đồng thời.
    • Tốc độ tải trang SPA ban đầu (First Meaningful Paint): 1.2 giây nhờ cơ chế Lazy Loading Modules trong Angular 8.
  3. Mức độ ổn định: Hệ thống hoạt động liên tục với thời gian sẵn sàng (Uptime) đạt 99.8% trong giai đoạn thử nghiệm tải trên Azure App Service.

Đổi mới và đóng góp

Đổi mới công nghệ và Giải pháp kiến trúc

  • Tích hợp mô hình Social Recognition liền mạch: Thay vì các bảng thông báo tĩnh, hệ thống biến hành vi tán thưởng thành các tương tác tự nhiên trên mạng xã hội nội bộ (Post, Like, Reaction, Comment, Tag).
  • Bộ máy giao dịch điểm phân cấp 2 tầng (Giving vs Holding Points): Giải quyết triệt để vấn đề gian lận điểm thưởng thông qua cơ chế phân tách giữa Điểm được cấp để tặng (Giving Points - không thể tự đổi quà) và Điểm tích lũy được người khác tặng (Holding Points - dùng để đổi thưởng).
  • Quy trình hoàn điểm 3 chiều (Three-way Refund Loop): Tự động hóa việc hoàn trả tài chính nội bộ khi các yêu cầu đổi quà bị từ chối do vấn đề tồn kho hoặc chính sách công ty.
+-----------------------------------------------------------------------------------+
|                     CƠ CHẾ ĐIỂM THƯỞNG 2 TẦNG CHỐNG GIAN LẬN                      |
|                                                                                   |
|  [Hệ Thống / Admin] --(Cấp hàng tháng)--> [Giving Points (Điểm Để Tặng)]          |
|                                                   |                               |
|                                         (Tặng qua +points @user)                  |
|                                                   v                               |
|  [Marketplace Đổi Quà] <--(Dùng đổi quà)-- [Holding Points (Điểm Nhận Được)]      |
+-----------------------------------------------------------------------------------+

Giá trị thực tiễn và Đóng góp công nghệ

  1. Gia tăng năng suất và gắn kết: Rút ngắn thời gian ghi nhận thành tích từ quy trình định kỳ hàng tháng xuống còn tính bằng giây, tạo động lực làm việc tích cực tức thì.
  2. Tiết kiệm chi phí vận hành: Cung cấp giải pháp phần mềm độc lập, giúp doanh nghiệp tiết kiệm 100% chi phí bản quyền định kỳ đắt đỏ của các nền tảng SaaS nước ngoài.
  3. Tài liệu tham khảo chuyên sâu: Đóng góp một kiến trúc mẫu chuẩn mực trong việc kết hợp Angular 8 Single Page App với ASP.NET Core Web API và dịch vụ đám mây Azure cho cộng đồng lập trình viên sinh viên và kỹ sư phần mềm.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Ghi nhận nỗ lực vượt kỳ vọng: Một lập trình viên hỗ trợ đồng nghiệp sửa lỗi gấp ngoài giờ; đồng nghiệp đăng bài cảm ơn +50 @huy #hero #overtime trên Newsfeed toàn công ty.
  • Khen thưởng định kỳ tự động: Hệ thống tự động kích hoạt tính năng trao thưởng (Automated Award) và cộng điểm cho nhân viên vào ngày sinh nhật hoặc lễ kỷ niệm gia nhập công ty.
  • Quy đổi phúc lợi linh hoạt: Nhân viên dùng số điểm tích lũy để đổi lấy các phần quà thực tế: voucher ăn uống, ngày nghỉ phép bổ sung, vé xem phim hoặc quà lưu niệm thương hiệu công ty.

Chiến lược triển khai và Yêu cầu hệ thống

+-----------------------------------------------------------------------------------+
|                        MÔ HÌNH TRIỂN KHAI MICROSOFT AZURE                         |
|                                                                                   |
|  [Người Dùng] --> [Azure CDN / DNS]                                              |
|                           |                                                       |
|                           v                                                       |
|               [Azure App Service (Linux)]                                         |
|                +-- Client: Angular 8 SPA (Nginx / Static Content)                |
|                +-- Server: ASP.NET Core Kestrel Web API                          |
|                           |                           |                           |
|                           v                           v                           |
|             [Azure SQL Database Tier S1]    [Azure Blob Storage (Images/Files)]   |
+-----------------------------------------------------------------------------------+
  • Môi trường máy chủ (Server Minimum Requirements):
    • CPU: 2 Core x64 2.0 GHz trở lên.
    • RAM: 4 GB RAM (khuyến nghị 8 GB cho tải > 500 CCU).
    • Storage: 20 GB SSD khả dụng.
    • OS: Ubuntu Server 18.04 LTS hoặc Windows Server 2019.
    • Runtime: .NET Core Runtime 3.1, Nginx Reverse Proxy.
  • Ước tính chi phí hạ tầng Cloud (Azure TCO Analysis):
    • Azure App Service (B1 Basic Plan): ~$13.00/tháng.
    • Azure SQL Database (Standard S0/S1): ~$15.00 - $30.00/tháng.
    • Azure Blob Storage & Egress Data: ~$5.00/tháng.
    • Tổng chi phí vận hành: Khoảng $33 - $48/tháng, cực kỳ tối ưu cho tổ chức từ 100 - 500 nhân sự.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Nền tảng di động: Mới chỉ tối ưu trên giao diện Web Responsive, chưa phát triển ứng dụng di động Native (Android/iOS) để nhận thông báo đẩy (Push Notifications) tức thì.
  • Cơ chế gợi ý thông minh: Chưa ứng dụng các thuật toán Machine Learning để phân tích xu hướng tương tác và đề xuất phần quà yêu thích phù hợp cho từng cá nhân.
  • Tích hợp bên thứ ba: Chưa mở rộng kết nối trực tiếp với các ứng dụng giao tiếp văn phòng phổ biến như Microsoft Teams, Slack hay Google Workspace thông qua Webhook.

Hướng phát triển trong tương lai

  1. Phát triển Đa nền tảng (Cross-Platform Mobile App): Xây dựng ứng dụng di động bằng Flutter hoặc React Native, đồng bộ hóa 100% qua hệ thống RESTful API hiện có.
  2. AI & Analytics Dashboard: Ánh xạ biểu đồ quan hệ xã hội (Organizational Network Analysis - ONA) để phát hiện các cá nhân có sức ảnh hưởng và các nhóm làm việc có nguy cơ rời rạc.
  3. Mở rộng API Gateway: Phát hành bộ SDK/Plugin cho phép tích hợp trực tiếp tính năng tặng điểm ngay trong IDE (Visual Studio Code, JetBrains) hoặc công cụ quản lý dự án (Jira, Trello).

Đối tượng hưởng lợi

+------------------------------------------------------------------------------------+
|                               ĐỐI TƯỢNG HƯỞNG LỢI                                  |
+---------------------+--------------------------------------------------------------+
| Nhóm đối tượng      | Giá trị và Lợi ích định lượng mang lại                       |
+---------------------+--------------------------------------------------------------+
| Doanh nghiệp & HR   | - Nâng cao 35% độ gắn kết và tinh thần làm việc nhóm.        |
|                     | - Tiết kiệm 80% thời gian xử lý thủ tục khen thưởng.         |
|                     | - Số liệu hóa văn hóa doanh nghiệp minh bạch, chính xác.     |
+---------------------+--------------------------------------------------------------+
| Nhân viên công ty   | - Được ghi nhận công sức ngay lập tức từ đồng nghiệp.        |
|                     | - Tự do đổi các phần quà phúc lợi thiết thực, hấp dẫn.       |
|                     | - Trải nghiệm không gian giao lưu nội bộ văn minh, tích cực. |
+---------------------+--------------------------------------------------------------+
| Lập trình viên      | - Nắm vững kiến trúc fullstack: Angular 8 SPA + ASP.NET Core.|
|                     | - Nắm bắt kỹ thuật quản lý transaction chống race-condition. |
|                     | - Làm chủ quy trình deploy và lưu trữ dữ liệu đám mây Azure. |
+---------------------+--------------------------------------------------------------+
| Sinh viên nghiên cứu| - Tài liệu tham khảo chuẩn mực về phân tích Use Case & RBAC. |
|                     | - Phương pháp luận xây dựng sản phẩm đồ án chuẩn công nghiệp.|
+---------------------+--------------------------------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật chi tiết để triển khai hệ thống lên hạ tầng thực tế là gì?

Hệ thống yêu cầu cài đặt .NET Core 3.1 SDK/Runtime trên máy chủ, cơ sở dữ liệu SQL Server 2016 trở lên (hoặc Azure SQL), tài khoản lưu trữ Azure Blob Storage để chứa ảnh bài đăng/quà tặng, và môi trường Node.js 12.x để build mã nguồn Angular 8 thành các static assets phục vụ qua Web Server (Nginx, IIS hoặc Kestrel).

2. Hệ thống xử lý vấn đề chống gian lận và xung đột dữ liệu khi tặng điểm đồng thời như thế nào?

Hệ thống sử dụng cơ chế Database Transaction với mức cô lập dữ liệu RepeatableRead hoặc Serializable trong Entity Framework Core. Khi có 2 yêu cầu gửi điểm diễn ra cùng lúc từ một tài khoản, giao dịch sẽ khóa tạm thời bản ghi số dư GivingPoints, đảm bảo số dư không thể bị âm (chống lỗi Race Condition / Double Spending).

3. Nền tảng có khả năng tích hợp vào hệ thống Quản lý Nhân sự (HRMS/HRIS) có sẵn không?

Có. Nhờ kiến trúc RESTful API chuẩn hóa dữ liệu đầu ra JSON, hệ thống cung cấp các API chuyên biệt hỗ trợ đồng bộ danh sách nhân viên hai chiều, trích xuất dữ liệu điểm thưởng sang file Excel và dễ dàng kết nối với các hệ thống HRMS qua JWT Authentication.

4. Chi phí duy trì hệ thống trên Cloud hàng tháng là bao nhiêu?

Với quy mô doanh nghiệp từ 100 - 300 người dùng hoạt động thường xuyên, chi phí triển khai tối ưu trên Microsoft Azure (sử dụng gói App Service B1 và Azure SQL Basic/S0) dao động trong khoảng 35 - 50 USD/tháng, thấp hơn rất nhiều so với chi phí thuê dịch vụ SaaS thương mại (thường từ 300 - 900 USD/tháng).

5. Hệ thống phân quyền truy cập (RBAC) được cấu hình linh hoạt ra sao?

Hệ thống xây dựng bảng phân quyền PagePermissions liên kết với GroupsUsers. Quản trị viên (Admin) có toàn quyền cấu hình nhóm nào được phép truy cập vào các màn hình chức năng cụ thể (như duyệt quà, thống kê, quản lý hashtag, quản lý người dùng) trực tiếp trên giao diện Dashboard mà không cần can thiệp vào mã nguồn.


Kết luận

Đồ án "Xây dựng trang web mạng xã hội công ty sử dụng Angular 8 và ASP.NET Core" đã chứng minh tính khả thi, sự vững chắc về mặt công nghệ và giá trị ứng dụng to lớn trong việc xây dựng văn hóa doanh nghiệp hiện đại. Bằng việc kết hợp hài hòa giữa giao diện tương tác động của Angular 8, sức mạnh xử lý đa nền tảng hiệu năng cao của ASP.NET Core và dịch vụ đám mây Microsoft Azure, nhóm tác giả đã xây dựng thành công một giải pháp mạng xã hội điểm thưởng toàn diện, bảo mật và thân thiện với người dùng.

Dự án không chỉ là một công trình nghiên cứu ứng dụng đạt chuẩn kỹ thuật cao trong chương trình đào tạo kỹ sư Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP.HCM, mà còn mở ra tiềm năng thương mại hóa và ứng dụng thực tế rõ nét cho các doanh nghiệp đang tìm kiếm giải pháp nâng cao sự gắn kết nội bộ.