Smart Lab Platform

Nền tảng chuyển đổi số và AI cho cả một tổ chức: từ test engineer, test automation group đến purchasing, planning, warehouse và operations.

PLATFORMReactFlaskPostgreSQLMQTTAzure AIMCP
Kiến trúc ↓
source.yamlAI build
provider:
azure-devops
visibility:
private
built_at:
2026-10-25
sources:
private work repo: lab platform web app (read-only) private work repo: edge gateway firmware (read-only) pull-request history, 1,070 PRs (read-only) Khoa's answers to the brief questions (2026-10-25) Khoa's framing of the platform and its users (2026-10-25)
approved:
Khoa · 25/10/2026
Bản vẽ sơ đồ, không theo tỷ lệ.
Module API
52
Thiết bị IoT
200+
Pull request
1.070
Test tự động
3.000+
01 / Tổng quan

Bài toán và cách giải

Smart Lab Platform là nền tảng chuyển đổi số và AI cho cả một tổ chức. Khoảng 150 người đang dùng nền tảng này, từ test engineer, test automation group đến purchasing, planning, warehouse và operations.

Nền tảng ra đời ở một lab kiểm thử. Lab từng chạy trên nhiều công cụ và bảng tính rời nhau: kế hoạch test và nhân lực, fixture, hiệu chuẩn thiết bị, vật tư, hướng dẫn công việc, đánh giá 7S, phản hồi của khách tham quan, theo dõi mua hàng, và các thiết bị IoT gắn trên chamber, trên máy. Smart Lab Platform gom chúng vào một web app, dùng chung một lần đăng nhập và một mô hình phân quyền. Trợ lý AI trả lời câu hỏi trên mọi module.

Kết quả: toàn bộ quy trình của lab chuyển từ làm thủ công sang tự động.

Ghi chú kỹ thuật đầy đủ

Hệ thống gồm những gì

Backend có 52 module API, frontend có 41 nhóm trang. README chia chúng thành 13 mảng chức năng, từ kế hoạch test trên Gantt 3 cấp tới đánh giá 7S và mua hàng. Phân quyền gồm 129 quyền trong 35 nhóm. Cây phân quyền cho biết mỗi quyền của một người đến từ đâu. Khách tham quan có role chỉ gửi được phản hồi. Role Viewer chỉ xem được, không sửa được dữ liệu.

Một job định kỳ chép dữ liệu kế hoạch và mua hàng từ Lab Management System. Đây là hệ thống của công ty mà Khoa khởi xướng khi làm Senior Lab Automation Engineer. Trạng thái test plan lấy từ hệ thống đó và chỉ đọc trên nền tảng. Mục tiêu là cả ba cấp kế hoạch dùng chung một nguồn dữ liệu gốc.

Phác thảo màn hình kế hoạch: các kế hoạch trên Gantt 3 cấp. Chỉ là sơ đồ, không có dữ liệu thật.

Thiết bị và OTA

Hơn 200 thiết bị đang chạy production. Chúng thuộc bốn họ, dùng chung một bảng thiết bị:

  • Cảm biến nhiệt độ, độ ẩm trên board ESP32-S3, mỗi cái có cấu hình hiệu chuẩn riêng.
  • Chamber kiểm thử nhiệt ẩm, bụi và bụi kim loại. Nền tảng lưu bản đồ thanh ghi Modbus của chúng.
  • Máy, ví dụ máy hút bụi và máy rung.
  • Edge gateway công nghiệp chạy ESP32-S3. Gateway có 16 chân cấu hình được với 11 chế độ, lọc Kalman và scale riêng cho từng chân, và Modbus RTU. Mặc định cứ 60 giây nó gửi một lô số đo qua MQTT.

Thiết bị tự đăng ký với API bằng device API key, rồi tải cấu hình về. Key này chỉ đọc và ghi được dữ liệu thiết bị và firmware. Từ tháng 7/2026, cấu hình gateway là một hộp thoại có ba tab Pins, Modbus và Raw JSON. Trước đó người dùng phải sửa JSON bằng tay.

OTA là kéo về qua HTTP. Admin tải lên file firmware cho từng họ thiết bị và từng cỡ màn hình. Cứ 5 phút, mỗi thiết bị hỏi nền tảng xem có bản mới hơn không. Nếu có, thiết bị tải bản đó qua HTTP, flash, khởi động lại và báo phiên bản mới. Lệnh “update” qua MQTT bắt thiết bị kiểm tra ngay. File firmware không bao giờ đi qua broker. Mỗi họ thiết bị luôn nhận bản mới nhất.

Trạng thái online của thiết bị lấy từ sự kiện connect và disconnect của broker, không phải hỏi vòng từng thiết bị. Trình duyệt xem dữ liệu thiết bị trực tiếp qua MQTT trên WebSocket, đi qua Nginx.

Phác thảo các màn hình thiết bị: danh sách thiết bị, dữ liệu MQTT trực tiếp, chân I/O của gateway và OTA. Chỉ là sơ đồ, không có dữ liệu thật.

AI chỉ được đọc dữ liệu

Một model router chuyển mỗi câu hỏi tới một trong 5 agent chuyên trách: kho và tài sản, báo cáo, hướng dẫn công việc, kế hoạch bảo trì, và tư vấn kiểm thử. Mỗi agent có tool riêng và chỉ nạp skill khi cần. Tháng 9/2026, skill được tách từ 5 file lớn thành 22 file nhỏ. Giờ mỗi agent chỉ nạp khoảng 20 dòng thay vì khoảng 100. Câu trả lời stream về trình duyệt qua Server-Sent Events.

Model là một tham số đổi được lúc chạy. Tên model có chữ “claude” thì đi tới Claude chạy trên Azure, còn lại đi tới Azure OpenAI.

Trợ lý chỉ đọc database qua 33 view chỉ đọc. Role database của nó chỉ được SELECT trên các view đó, mỗi câu lệnh có timeout 10 giây. Ràng buộc nằm ngay trong database, điều mà một danh sách từ khoá cấm không làm được. Tháng 8/2026, một lần kiểm tra lại tìm ra 13 tool có sẵn vẫn query bảng gốc, và cả 13 được chuyển sang view. Sau đó các cột giá bị bỏ khỏi view. API ẩn giá với người không có quyền xem giá. Luồng AI và MCP thì không biết người dùng là ai để kiểm tra quyền đó.

Phác thảo trợ lý AI: một router, 5 agent chuyên trách và các view chỉ đọc. Chỉ là sơ đồ, không có dữ liệu thật.

Azure AI Content Understanding đọc hướng dẫn công việc, rồi Azure AI Search lập chỉ mục. Tìm kiếm kết hợp từ khoá, vector 3.072 chiều và semantic ranking. Từ tháng 8/2026, agentic retrieval tách một câu hỏi phức tạp thành nhiều truy vấn con.

Model tự ghi chú cho từng người dùng bằng tool call vào PostgreSQL. 10 ghi chú mới nhất được đưa vào prompt. Cách này thay cho Mem0 và Neo4j.

MCP server cung cấp 18 tool chỉ đọc và 5 prompt qua Streamable HTTP, trên cùng các view đó. Nó nhận API key hoặc HTTP Basic, cả hai lưu dưới dạng hash. Có Basic vì connector của Power Apps và Copilot Studio hỗ trợ sẵn kiểu này.

Phản hồi của khách đi qua một pipeline có chốt chặn. Bước phân loại chạy trước. Phản hồi tích cực chuyển cho agent ghi nhận điểm mạnh, mục rủi ro thấp bỏ qua bước lập kế hoạch hành động. Nhờ vậy AI thôi bịa nguyên nhân gốc và thôi gán sai mức độ cho phản hồi tích cực. AI còn mô tả hình trong hướng dẫn công việc và soạn BOM. Nó cũng viết tóm tắt bảo trì dự đoán hằng tuần và phân loại issue người dùng báo.

Dự án được làm thế nào

Smart Lab Platform bắt đầu từ tháng 7/2025, là một hệ thống quản lý IoT nhỏ cho cảm biến ESP32 và chamber. Cập nhật firmware có ngay trong tài liệu yêu cầu đầu tiên. Từ đó nền tảng lớn dần theo từng module, thành nền tảng chính của lab. Bỏ commit merge và commit trùng thì repo có hơn 2.900 commit. Khoa viết 73%, tài khoản của một nhóm AI coding agent viết 12%.

Từ tháng 7/2026, mọi thay đổi đều đi qua pull request: 1.070 PR tính tới 25/10/2026, trong đó 1.062 PR đã merge. Từ giữa tháng 8, test trên CI phải qua thì mới merge được. Repo có 1.873 hàm test backend và 1.152 test case frontend.

Từ tháng 10/2026, Khoa làm nền tảng cùng nhóm AI coding agent đó và điều phối công việc của nhóm. Nhóm chạy trên Claude Code, trong một agent swarm. Riêng tháng 10, nhóm mở 468 trong 483 PR của tháng. Reviewer agent để lại kết luận bằng văn bản trên 369 PR trong số đó. Kết luận thường là chặn, sau đó có commit sửa và review lại. Khoa duyệt các lần merge. Tính trên toàn bộ lịch sử, 44% commit ghi Claude là đồng tác giả, bắt đầu từ tháng 3/2026.

Nền tảng chạy trên một server on-prem bằng Docker Compose. Nginx phục vụ React app, đứng cạnh API, MCP server, Redis, MQTT broker và một container solver riêng. Solver đó dùng cho bộ xếp lịch kế hoạch, hiện vẫn đang phát triển. PostgreSQL và InfluxDB là dịch vụ bên ngoài.

Deploy chạy theo lịch. Từ 15/10/2026, một pipeline riêng deploy hai lần mỗi ngày và bỏ qua ngày không có commit mới. Thay đổi schema chỉ thêm, không xoá, và chạy lúc app khởi động, không có bước migration riêng. Chỉ có một đường deploy, trên một host.

Mã nguồn nằm trong repo công việc riêng tư, nên trang này không có link mã nguồn.

Stack lấy từ repo
ReactFlaskPostgreSQLMQTTAzure AIMCP
02 / Kiến trúc

Dữ liệu đi qua hệ thống thế nào

Vẽ lại từ file compose, cấu trúc thư mục và config trong repo.

  1. edgeThiết bị ESP32Cảm biến, bộ điều khiển chamber và máy, edge gateway 16 chân
  2. brokerMQTT brokerEMQX, QoS 2
  3. apiAPI của nền tảngFlask-RESTX, Gunicorn + gevent, 52 module
  4. dataDữ liệuPostgreSQL, Redis 8, InfluxDB
  5. aiLớp AIAzure OpenAI, Claude, Azure AI Search
  6. uiWeb appReact 19, MUI 9, Nginx
03 / Module chính

Các thư mục chính trong repo

module-planning/Kế hoạch testMaster plan, nhóm yêu cầu test và test plan trên Gantt 3 cấp, bảng kế hoạch Excel và ma trận nhân lực. Trạng thái đồng bộ từ Lab Management System.
fixtures/Fixture và bàn testDanh mục, mượn và trả, ma trận nhu cầu và yêu cầu đặt hàng. Solver đề xuất ngày bắt đầu mới còn đang phát triển.
equipment/Thiết bị, máy và phòngDanh sách tài sản, lịch hiệu chuẩn và bảo trì, phụ tùng, lịch chạy test và sơ đồ lab.
material/Vật tưDanh mục, nhập và xuất kho, giữ hàng khi duyệt và trừ kho khi giao, kiểm tra đầu vào, và yêu cầu vật tư.
wi/Hướng dẫn công việc và BOMAI đọc tài liệu và hình trong đó, lập chỉ mục để tìm kiếm, và soạn BOM.
sevens/Lỗi và đánh giá 7SGhi nhận lỗi, đánh giá, checklist, tài liệu EHS và nhắc việc. Ảnh chụp từ camera an toàn được đưa về đây để xem xét.
visitor-feedback/Phản hồi của kháchForm công khai, AI phân loại, tìm nguyên nhân gốc và lập hành động khắc phục có theo dõi SLA, dashboard xuất ra slide.
purchasing/Mua hàng và nhà cung cấpTheo dõi yêu cầu mua và báo giá chép từ Lab Management System, theo dõi dự án với nhà cung cấp và bảng chấm điểm.
iot/Thiết bị và OTADanh sách và cấu hình thiết bị, cài đặt Modbus và chân I/O, xem MQTT trực tiếp, kho firmware và trung tâm tải phần mềm.
chat/Trợ lý AIMột router và 5 agent chuyên trách trên các view chỉ đọc, tìm kiếm tài liệu, dự đoán bảo trì và bộ nhớ theo từng người dùng.
mcp/MCP server18 tool chỉ đọc để AI client bên ngoài truy vấn dữ liệu lab.
admin/Quản trịRole và nhóm, cây phân quyền cho biết mỗi quyền đến từ đâu, yêu cầu cấp quyền, cài đặt và lịch chạy job.
04 / Hoạt động gần đây
scheduler · dev22/10/2026Đang phát triển: xếp lịch fixture bằng Google OR-Tools CP-SAT, chạy trong container riêng, có màn hình cho người lập kế hoạch và bước Apply.
agent team02/10/2026Một nhóm AI coding agent bắt đầu mở PR. Tới 25/10, reviewer agent đã để lại kết luận bằng văn bản trên 369 trong 468 PR của nhóm. Người thật duyệt từng lần merge.
5 agents11/09/2026Một router và 5 agent chuyên trách, nạp 22 file skill nhỏ khi cần.
safe ai data31/07/2026AI và MCP chỉ đọc database qua 33 view, bằng một role chỉ đọc.
ai + mcp04/05/2026Trợ lý nhiều agent đầu tiên và MCP server.
modules02/03/2026Thiết bị, vật tư, hướng dẫn công việc có AI trích xuất, fixture, phòng, và job định kỳ chép dữ liệu từ Lab Management System.
lab platform02/02/2026Role, đăng nhập một lần (SSO), trung tâm tải phần mềm, một danh sách thiết bị chung và edge gateway.
start30/07/2025Bắt đầu là một hệ thống quản lý IoT: tài liệu yêu cầu, Flask API cho cảm biến ESP32 và chamber, cập nhật firmware.
$ cat HOW_THIS_PAGE_WAS_BUILT
  1. 01
    Đọc repo
  2. 02
    Phân tích README, docs, compose, package
  3. 03
    Viết nội dung, bỏ thông tin nội bộ
  4. 04
    Reviewer agent đối chiếu với nguồn
  5. 05
    Khoa duyệt trang, rồi deploy
← Tất cả dự án