Phần 01
Hiện trạng ngày 08/10 — pha nào đã đóng
Chatbot đi theo đường A người dùng chọn ngày 25/09: đọc cùng vùng dữ liệu mà báo cáo và bản tin dùng, không đọc vùng dữ liệu cá nhân. Từ đó tới nay mọi pha đã chạy; còn phần máy CEO và một lần đọc nhật ký sau hai tuần dùng.
| Pha | Nội dung | Kết quả | Ngày |
|---|---|---|---|
| 0–2 | Chốt quyết định, chặn file cấu hình khỏi git, bộ câu vàng, dời bảng tên nhân viên sang vùng cá nhân (A2) | Đạt | 25–29/09 |
| 3 | Vai claude_ro: 8 cài đặt an toàn, thu hồi 16 hàm lấy khoá đồng bộ khỏi mọi vai (D-3), giới hạn file tạm 1 GB (D-10) | Đạt 33/33 ô | 26–29/09 |
| 4 | Máy chủ MCP tự viết, từ điển dữ liệu, thư mục hỏi riêng, thử tab Chat | Đạt · tab Chat đạt có điều kiện | 25–26/09 |
| 5 | Hỏi 44 câu qua chatbot và chấm; ba câu dễ lộ (N4); không bí mật trong git; ghim máy chủ | Đạt theo quyết định người về một câu lệch 0,011% | 27–29/09 |
| 6 | Đêm đầu có vai chatbot; biên bản; dựng lại thư mục hỏi trên máy thứ hai (N10) | Đạt · N10 đạt trên PC ngày 07/10 | 27/09 · 07/10 |
| 7 · laptop | Chatbot trên laptop đọc kho của PC qua NetBird, vai riêng claude_ro_laptop | Đóng — người ký 08/10 | 07–08/10 |
| 7 · máy CEO | Cùng cách, vai claude_ro_ceo, máy của CEO | Chờ plan nhỏ chờ người duyệt trên máy CEO | — |
| 6.3 | Người đọc nhật ký sau khoảng hai tuần dùng, quyết giữ hay mở rộng | Chưa tới hạn | ~10/10 |
"Chọn đường A, bỏ qua vấn đề rời máy chỉ là số tổng hợp — vì thực tế chatbot chỉ có 2 tài khoản dùng. Để đường E về sau triển khai, hoặc phương án mã hoá, khi mở rộng hệ thống cho các phòng ban." — người dùng, 25/09/2026
Phản biện vẫn giữ nguyên từ ngày chọn: "chỉ hai người dùng" trả lời câu ai đọc câu trả lời, không trả lời câu dữ liệu của ai đi ra. Mã khách và hồ sơ khách giả danh vẫn là dữ liệu của khách hàng, và chúng đi tới nhà cung cấp dịch vụ AI. Điều khoản lưu giữ dữ liệu theo loại tài khoản Claude của từng người: chưa kiểm. Khi máy CEO vào, lịch sử hỏi nằm thêm trên một tài khoản Claude thứ hai.
Phần 02
Kiến trúc trong một hình
Kho nằm trên PC. Docker vẫn chỉ nghe loopback; máy khác vào được bằng đúng một đường: NetBird → tường lửa hẹp → chuyển tiếp cổng Windows. Chỗ dữ liệu rời máy là mũi tên đỏ — và nó mang theo kết quả truy vấn, không chỉ câu hỏi.
Khung nét đứt = chưa dựng hoặc không phải đường chính. Mũi tên đỏ = chỗ dữ liệu rời máy. IP NetBird không phải bí mật (ghi trong runbook Pha 7).
Phần 03
Hỏi ở đâu — bốn thư mục, hai ngày dữ liệu
Chatbot không có trên web, điện thoại hay Teams. Nó chạy ở một thư mục hỏi trên một máy có máy chủ MCP và có mật khẩu của một vai chỉ đọc. Hiện có ba thư mục chạy được, một thư mục đang chờ duyệt.
| Thư mục hỏi | Máy | Đọc kho nào, bằng vai nào | Dùng để |
|---|---|---|---|
SIXDO_CHATBOT_PC\ | Laptop | Kho PC qua NetBird · claude_ro_laptop · số mới nhất (đo 08/10: đến 07/10) | ✓ Hỏi hằng ngày của chủ dự án |
SIXDO_CHATBOT\ | PC | Kho PC tại chỗ · claude_ro · loopback | ✓ Người ngồi tại PC; nghiệm thu N10 ngày 07/10 |
SIXDO_CHATBOT\ | Laptop | DB dev của laptop · claude_ro · số dừng ở 02/10 | ! Chỉ để thử khi sửa chatbot. Docker laptop tắt thì báo lỗi kết nối |
SIXDO_CHATBOT_HUB\ | Máy CEO | Kho PC qua NetBird · claude_ro_ceo | Chờ Plan nhỏ ngày 08/10, người duyệt trên máy CEO |
Hai thư mục trên cùng laptop trả hai ngày dữ liệu khác nhau. Chỗ phân biệt duy nhất là dòng đầu mỗi câu trả lời: "Dữ liệu đến …". Máy chủ chỉ in ngày, không cảnh báo khi số đã cũ. Người hỏi đọc lướt qua dòng đó là dùng số 02/10 như số mới.
Vì sao thư mục hỏi phải nằm ngoài repo
Claude Code nạp file luật CLAUDE.md của thư mục đang mở và của mọi thư mục cha. Mở trong repo là nạp nguyên bộ luật phát triển, có công cụ ghi trên mã đang chạy thật và đọc được file mật khẩu. Thư mục hỏi có một file luật ngắn (7 luật đọc số, luôn trả lời tiếng Việt, không liệt kê mã khách), một skill, từ điển dữ liệu, và file cấu hình máy chủ. Mẫu nằm trong repo ở bi/chatbot/khong_gian_hoi/ (đuôi .mau); cài bằng bi/chatbot/cai_khong_gian_hoi.py, kiểm lại bằng --kiem.
Danh sách cấm 46 luật — theo tài khoản Claude, không theo máy
File .claude/settings.json của thư mục hỏi cho phép đúng một công cụ (truy_van) và cấm 46 công cụ khác: dòng lệnh, sửa file, trình duyệt, gửi tin sang phiên khác, hẹn giờ, đăng trang, connector thư / tệp / lịch. Đo 26/09: luật cấm chặn lúc gọi ở cả chế độ default lẫn auto. Đo 07/10 trên PC: mã của connector đi theo tài khoản Claude — PC dùng cùng tài khoản nên cùng mã. Tài khoản của CEO sẽ có mã khác, nên phải soát lại trước khi CEO hỏi (bước C5 của plan máy CEO).
Tab Chat của Claude Desktop — đạt có điều kiện, chưa đo trên máy CEO
Thử ngày 26/09 trên máy dev: ứng dụng đang chạy ghi đè file cấu hình bằng bản trong bộ nhớ, nên chỉ thêm được máy chủ khi ứng dụng đã tắt hẳn (cả khay hệ thống). Thêm xong thì máy chủ còn sau khi tắt mở lại. Hỏi chung chung "dữ liệu đến ngày nào" thì tab Chat không gọi công cụ; phải nhắc tên nguồn trong câu hỏi. Tab Chat không đọc file luật hay skill — nên mọi luật an toàn phải nằm trong máy chủ. Đã gỡ khỏi máy dev; phép chấm thật dời sang máy CEO (quyết định D-11).
Ba câu để bắt đầu
Hỏi như hỏi một người phân tích — bằng tiếng Việt, không cần viết truy vấn. Câu trả lời mở đầu bằng ngày dữ liệu và kết thúc bằng câu SQL đã chạy. Sổ 84 câu chia nhóm và hạng khó: Phụ lục 6.
Phần 04
Một câu hỏi đi qua những đâu
Chín bước, theo thư mục hỏi hằng ngày trên laptop. Bước 8 là chỗ kết quả rời máy. Thư mục hỏi trên PC đi cùng đường, bỏ bước 5.
SIXDO_CHATBOT_PC\.truy_van.select/with/values/table/explain/show · không chứa tên hàm lấy khoá · ngoài giờ 00:30–03:00 theo đồng hồ laptop · chuỗi kết nối không mang mật khẩu. Trượt một luật là từ chối, không nối kho.claude_ro_laptop; mật khẩu lấy từ pgpass.conf của tài khoản Windows, không nằm trong cấu hình.loopback.bi_pii; đặt lại 60 giây / 3 giây chờ khoá / 0 luồng song song; đọc bảng khoá — đồng bộ đêm đang giữ khoá 91626 thì từ chối. Chỉ đọc bảng khoá, không bao giờ tự lấy.bt_kpi_ngay) và ghi một dòng nhật ký trên laptop. Trên PC, Postgres ghi thêm câu lệnh vào nhật ký container (vai này bật log_statement = all).Bước 3, 6 và 7 nằm trong máy chủ, không nằm trong lời nhắc. Lời nhắc có thể bị mô hình bỏ qua hoặc không tới được (tab Chat không đọc file luật). Luật trong máy chủ chạy ở mọi giao diện, mọi lần. Và tất cả đều chỉ là lớp xếp chồng: ranh giới thật là quyền của vai trong Postgres.
Phần 05
Chatbot thấy gì — và cái gì đi lên máy chủ AI
Hai vai chatbot là thành viên của đúng một nhóm: bi_reader — vùng mà bản tin Teams đang đọc. Không thuộc bi_pii. Tập đọc được không liệt kê bằng tay; nó bằng tập của bi_reader tại lúc chạy, và phép nghiệm thu so hai tập tự động.
| Loại dữ liệu | Ở đâu | Rời máy? | Ghi chú |
|---|---|---|---|
| Số tổng hợp theo ngày | bt_kpi_ngay, bt_kenh_nhom | Có | ≈ 153,5 nghìn dòng ngày × kênh × cửa hàng (ước lượng thống kê, PC 08/10) — cùng số với bản tin |
| Dòng hàng, đơn hàng | fact_sales, fact_order_bi, fact_payment | Có | Khung nhìn trên ≈ 5,18 triệu dòng hàng; mã đơn, mã hàng, mã cửa hàng, mã nhân viên bán, mã khách |
| Hồ sơ khách giả danh | dim_customer_bi | Có | Mã khách, giới tính, nghề, tỉnh/quận/phường, hạng thẻ, điểm. Đo 25/09: 2.257 mã khách có dạng số điện thoại, tất cả là khách chưa có đơn bán. Chưa đo lại trên PC |
| Dòng một khách của bản tin | bt_khach_mua_dau, bt_khach_ngay | Có | Khoá khách là mã băm, không phải mã gốc |
| Danh mục, thuế suất, cổng chất lượng | dim_* (8), dim_thue_gtgt, 8 bảng dq_* | Có | Địa chỉ và SĐT cửa hàng là thông tin doanh nghiệp |
| Tên nhân viên | dim_salesperson_bi, dim_salesperson | Không | A2: dời sang vùng bi_pii ngày 26/09. Chatbot xếp hạng nhân viên theo mã |
| Tên, SĐT, email, ngày sinh, địa chỉ giao của khách | dim_customer, dim_customer_pii, fact_order, fact_order_line | Không | Vùng bi_pii, 6 quan hệ — Postgres từ chối |
| Bảng đối chiếu chi tiết | dq_order_recon, dq_exception, dq_fk_check | Không | Mang mã khách và mã đơn lệch — chỉ vai chủ đọc |
| Dữ liệu thô, lớp làm sạch | schema raw, staging | Không | Vai chatbot không có quyền vào schema |
Số dòng ghi "≈" là ước lượng thống kê của Postgres (reltuples), không phải đếm từng dòng. Bản đồ đầy đủ các lớp: Phụ lục 7.
Con số ra theo định nghĩa nào
Chatbot không có định nghĩa riêng. Mô tả công cụ truy_van mang 7 luật đọc số, máy chủ gửi kèm ở mọi giao diện:
| Chỉ tiêu | Cột / luật | Nguồn quyết định |
|---|---|---|
| Doanh thu | sum(dt) trên bt_kpi_ngay, sum(doanh_thu) trên fact_sales — không gồm phí ship, không dùng amount | GATE B, ký 27/09 |
| Số lượng bán | sum(sl_ban) — SL thuần FAST, không lọc line_kind | GATE B (B3, B3b); sửa mô tả công cụ 07/10 |
| Kênh "POS" | kenh_hien_thi: cửa hàng thật; đơn POS gõ ở kho online tách dòng riêng | D-13, 27/09 |
| Đơn khuyến mãi | Đơn có quà tặng | D-16, Marketing xác nhận 28/09 |
| Kỳ từ 09/2025 | Kèm cảnh báo Q22 (thẻ trả trước) | Kế toán, Q22 phương án (a) |
| "% DT khách định danh" | Kèm ghi chú tài khoản gộp Shopee | D4, 24/09 |
Phần 06
Không va với đồng bộ đêm 01:00
Chatbot đọc thẳng khung nhìn trên 5 triệu dòng — đúng thứ mà đồng bộ đêm dựng lại mỗi đêm. Ngày 20/09 một phiên truy vấn bị bỏ quên đã giữ khoá 3 tiếng và làm kẹt cả lượt dựng lại. Sáu lớp dưới đây để chuyện đó không lặp lại, và để một câu hỏi viết sai không làm đầy đĩa.
| Lớp | Cơ chế | Chặn được | Không chặn được |
|---|---|---|---|
| L1 | Giao dịch bỏ quên tự đóng sau 30 giây (cài trên vai) | Kiểu sự cố 20/09 — 30 giây thay vì 3 tiếng | — |
| L2 | Mỗi câu tối đa 60 giây (vai + máy chủ đặt lại mỗi câu) | Một câu nặng giữ khoá lâu | 60 giây vẫn là 60 giây dbt phải chờ |
| L3 | Chờ khoá tối đa 3 giây | Chatbot xếp hàng sau dbt | — |
| L4 | Máy chủ đọc bảng khoá: đồng bộ đang giữ khoá 91626 thì từ chối · 16 hàm lấy khoá đã thu hồi khỏi mọi vai (D-3, 26/09) | Pha nạp của đồng bộ; chatbot không thể giành khoá | Pha dựng lại (dbt) — chạy sau khi khoá đã nhả |
| L5 | Máy chủ từ chối trong 00:30–03:00 theo đồng hồ máy chạy máy chủ | Lượt đêm trên PC: đo 06/10 chạy 01:00:01 → 01:51:17 (đọc lại 90 ngày), nằm gọn trong giờ cấm | Lượt chạy bù buổi sáng khi PC tắt lúc 01:00 · máy CEO đặt sai múi giờ |
| L6 | File tạm mỗi phiên tối đa 1 GB (D-10) | Một câu sai ghi đĩa vô hạn. Đo 07/10 trên PC: câu nặng nhất (K03) đỉnh 764,8 MiB = 74,7% | View nặng thêm sau một thay đổi dbt → câu K03 vượt 1 GB, báo lỗi 53400 |
Nói thẳng: L1–L3 là gờ giảm tốc, không phải tường — phiên đăng nhập tự gỡ được. Rào chắn thật chỉ có hai: vai chatbot không có một quyền ghi nào, và nó không đọc được vùng cá nhân. Biên của L6 đang mỏng dần: file tạm của các câu lõi đã gấp đôi sau P2.13 (26/09 → 29/09), và "theo dõi lỗi 53400" hiện chỉ là một dòng báo cáo khi chạy phép nghiệm thu, chưa có cảnh báo tự động.
Phần 07
Máy chủ MCP — tự viết, một file, một công cụ
Máy chủ MCP là chương trình nhỏ đứng giữa Claude và kho: bi/mcp/mcp_datahub_ro.py, chạy bằng Python 3.13 và psycopg 3.3.5, không cài thêm gói nào. Tự viết (D-2, 25/09) vì gói có sẵn postgres-mcp 0.3.0 có lỗ CVE-2026-85620 chưa vá và không có chỗ đặt luật giờ cấm, khoá, ngày dữ liệu.
Mười một luật chạy trong máy chủ
bi_pii · đặt lại 60 s / 3 s / 0 luồng · đọc bảng khoá, đồng bộ đang chạy thì từ chối · dòng đầu "Dữ liệu đến …".| Phép kiểm | Kết quả | Ngày |
|---|---|---|
| Bộ kiểm máy chủ | 135/135 ca (gồm giao thức qua stdio thật, giờ cấm bằng đồng hồ giả, khoá giả, kho tắt) · 26/26 lần cố tình làm hỏng một luật đều bị bắt | 25/09 · 07/10 |
| Tham số hoá vai / máy (bộ cài, script tạo vai, phép nghiệm thu) | 39/39 + 29/29 ca · 13/13 đột biến bị bắt · bắt thêm một lỗi cũ: \quit 1 của psql thoát 0 | 07/10 |
| Chạy thật trên kho | Vùng cá nhân → 42501 · câu ghi giấu trong câu đọc → 25006 · hai câu lách luật tách câu → Postgres từ chối (42601) · lượt thật lúc 01:02 ngày 26/09 bị từ chối giờ cấm sau 2 ms | 25–26/09 |
| Nhật ký tới 28/09 | 108 lượt: 104 thành công · 2 lần chatbot đoán sai tên cột · 0 lần vượt giới hạn file tạm · chậm nhất 36,4 s | 29/09 |
Phát hiện khi soát lại trang này (08/10): mã băm ghim máy chủ trong biên bản (N8, 29/09) không còn khớp file đang chạy. File đổi hai lần ngày 07/10 (P2.10-51, P2.10-52) — chỉ phần mô tả công cụ: thêm tên cột order_date, và luật doanh thu / số lượng theo GATE B. Thư mục hỏi trên PC và laptop đã cài bản mới. Kịch bản hỏng: người kiểm lại theo biên bản thấy lệch, không biết là đổi có chủ đích hay bị sửa trộm. Ghi vào danh sách phát hiện, chưa sửa biên bản.
Phần 08
Nghiệm thu — mười một phép đo
Bảng đầy đủ kèm bằng chứng: bi/reports/3_report/P2.10.md §2 và §13. Kết luận chính thức là của người ký; agent soạn và đo, không tự duyệt.
| # | Đo gì | Kết quả |
|---|---|---|
| N1 | Tập đọc được, đăng nhập thật | Đạt 29/09 — tập của claude_ro trùng bi_reader (24) · vùng cá nhân 4/4 bảng thử → 42501 · đọc file hệ thống, lấy khoá → 42501. Trên PC 07/10 cho claude_ro_laptop: 0/31 ô trượt |
| N2 | Chỉ đọc là thật | Đạt 29/09 — tự gỡ chế độ chỉ đọc được, nhưng create table vẫn bị từ chối vì không có quyền |
| N3 | Bộ câu vàng hỏi bằng tiếng Việt | Đạt theo quyết định người — 31 câu phải trả lời: 29 đạt, 1 đạt theo định nghĩa lúc hỏi, 1 lệch 1.168.000 đ (0,011%, người chấp nhận) · 13 câu phải từ chối: 12 đạt, 1 từ chối đúng nhưng bằng tiếng Anh (trước khi có luật "luôn tiếng Việt") · 30/30 mở đầu đúng ngày |
| N4 | Ba câu dễ lộ | Đạt 29/09 (laptop) và 07/10 (qua NetBird) — 0 tên, 0 SĐT, 0 email, 0 mã khách; người xác nhận câu chữ 08/10 |
| N5 | Hồi quy quyền | Đạt 29/09 — báo cáo và bản tin không đổi quyền |
| N6 | Đêm đầu | Đạt 27/09 (laptop) và 07/10 (PC) |
| N7 | Không bí mật trong git | Đạt 29/09 — 5 mật khẩu × 0 lần trong lịch sử |
| N8 | Ghim máy chủ | Đạt 29/09 · ! mã băm đã cũ từ 07/10 (Phần 07) |
| N9 | Luật máy chủ ở cả hai giao diện | Tab Code Đạt · tab Chat dời sang máy CEO |
| N10 | Dựng lại trên máy thứ hai | Đạt 07/10 trên PC (lần 2, sau sửa mẫu); tài khoản Windows thứ hai: người chốt không cần |
| N11 | Đường vào từ máy khác | Bản laptop: Đóng 08/10 — 5 đạt, 1 ghi theo số đo phía PC, 1 bỏ qua, 1 không đo được, 0 trượt (Phần 09) · bản máy CEO: chờ |
Giới hạn của chính phép nghiệm thu: câu hỏi ở N3 chạy ở chế độ auto và mức suy nghĩ thấp, không phải cấu hình CEO sẽ dùng. Mọi lần từ chối ở N3 và N4 đều xảy ra ở tầng lời nhắc (0 lần chatbot gặp 42501); tầng quyền được đo riêng bằng script, không bằng chính chatbot. Bộ câu vàng chỉ đo được những câu đã soạn.
Phần 09
Đường vào từ máy khác — Pha 7 bản laptop
Từ đêm 05→06/10 kho nằm trên PC, còn chủ dự án hỏi từ laptop mang đi. Ngày 07/10 người chọn cho laptop đọc thẳng kho của PC qua VPN, và chốt năm điều dưới đây.
| # | Người chọn | Vì sao, và khác thiết kế gốc ở đâu |
|---|---|---|
| D-19 | Laptop đọc thẳng kho PC qua VPN | Không chép bản dump về laptop |
| D-20 | Chuyển tiếp cổng Windows trên IP NetBird của PC | Thiết kế gốc cho Docker nghe trên IP VPN — bỏ, vì Docker lên trước NetBird thì container không gắn được IP và kho PROD không lên. Cách này không đổi docker-compose.yml |
| D-21 | Vai riêng claude_ro_laptop | Cùng quyền claude_ro, mật khẩu riêng, ghi mọi câu lệnh vào nhật ký PC — gỡ một vai là cắt một máy |
| D-22 | Xong N6 / N10 trên PC trước | Đúng điều kiện plan |
| D-23 | Chỉ xoay mật khẩu vai yếu | Đo trên PC: 4 vai đăng nhập đều 32 ký tự sinh ngẫu nhiên; người xác nhận không vai nào tự đặt → không xoay |
N11 bản laptop — tám dòng
| # | Phép thử | Kết quả |
|---|---|---|
| 1 | Vai laptop qua NetBird: tập đọc = bi_reader, vùng cá nhân → 42501 | Đạt — trên PC 0/31 trượt, từ laptop 0 trượt / 2 bỏ qua |
| 2 | Vai chủ / vai Power BI từ laptop | Đạt — sai mật khẩu cả 4 vai. Chặn bằng mật khẩu, không bằng mạng: Postgres trong container không lọc được theo IP |
| 3 | Máy trong LAN văn phòng không có NetBird | Bỏ qua — người chốt. Chứng cứ gián tiếp: PC chỉ nghe loopback + IP NetBird |
| 4 | Thiết bị thứ ba trong NetBird | Không đo được — mới có 2 máy |
| 5 | PC khởi động lại, chưa ai đăng nhập | Ghi theo số đo phía PC: chuyển tiếp cổng mở lại được, nhưng Docker chưa lên trước khi có người đăng nhập → chatbot không dùng được |
| 6 | PC khởi động lại, đã đăng nhập | Đạt 08/10 — chuyển tiếp cổng không tự nghe lại; task hệ thống SIXDO-DataHub-GiuCongNetBird sửa sau ~2'20"; laptop vào được 10:13 |
| 7 | Giờ cấm | Đạt — từ chối trước khi nối kho |
| 8 | Nhật ký PC khớp nhật ký laptop | Đạt 07/10 — 4 câu = 4 dòng |
Sự cố thật ngày 07/10: đứt 3 giờ 40 phút, không ai được báo
PC được khởi động lại lúc 18:23. Sau đó chuyển tiếp cổng không nghe lại trên IP NetBird, dù cấu hình, dịch vụ và luật tường lửa còn nguyên. Laptop không vào được tới 22:06, khi người khởi động lại dịch vụ iphlpsvc bằng tay. Agent lúc đầu đoán nhầm là lỗi NetBird; đo phía PC bác bỏ. Sửa bền: task chạy bằng tài khoản hệ thống, 3 phút sau khởi động rồi mỗi 15 phút kiểm cổng, tự khởi động lại dịch vụ tối đa hai lần, không được thì gửi một thẻ vào kênh Vận hành. Đã cứu đúng 3/3 lần khởi động ngày 08/10.
Phần 10
Rủi ro còn lại sau khi làm hết
| Mức | Rủi ro | Kịch bản hỏng cụ thể · giảm thiểu |
|---|---|---|
| Cao | Dữ liệu từng dòng rời máy | CEO hỏi "10 khách mua nhiều nhất tháng này, ở phường nào, hạng thẻ gì". Chatbot trả mười mã khách kèm phường, nghề, hạng thẻ — ai có danh sách khách là nhận ra người. Giảm: luật "không liệt kê mã khách"; N4 đo 0 lần lộ — nhưng đây là tầng lời nhắc, không phải cấu trúc |
| Cao | Cổng kho PROD mở ra ngoài loopback lần đầu | Laptop mất hoặc nhiễm mã độc → kẻ giữ pgpass.conf đọc toàn vùng bi_reader của PC từ mọi mạng laptop đi qua, tới khi có người gỡ. Giảm: vai riêng (ALTER ROLE claude_ro_laptop NOLOGIN) + gỡ máy khỏi NetBird — hai lệnh có sẵn, chưa diễn tập |
| Cao | Số sai mà trông hợp lý | Ví dụ thật ở N3: chatbot viết "cùng tên gọi với Power BI" nhưng gom dòng hàng theo cách khác, lệch 1.168.000 đ. Giảm: định nghĩa nằm trong mô tả công cụ; câu trả lời kèm SQL; bản tin vẫn là nguồn số tất định mỗi sáng |
| TB | Hạn đăng nhập NetBird của laptop | Hết hạn 14/10/2026 15:10 giờ VN → chatbot laptop báo lỗi kết nối tới khi người đăng nhập lại NetBird. Không ai được báo trước |
| TB | PC khởi động lại lúc vắng người | Docker chạy theo phiên đăng nhập → kho không lên → chatbot và cả lượt đêm 01:00 cùng dừng. Task canh gác gửi thẻ "chưa đăng nhập" (đã thấy 08/10 10:00) — việc của P2.7 |
| TB | Danh sách cấm theo mã tài khoản | Tài khoản Claude của CEO có connector thư / tệp / lịch với mã khác → không bị cấm → mô hình đọc được thư của CEO trong phiên hỏi số. Giảm: bước C5 bắt buộc trước khi CEO hỏi |
| TB | Chữ lạ trong dữ liệu nguồn lái câu trả lời | Một tên hàng trong FAST chứa câu lệnh dành cho mô hình. Quyền kho vẫn chặn đọc thêm và ghi, nhưng câu trả lời có thể bị lái. Bộ câu vàng không đo được điều này |
| TB | Hai ngày dữ liệu trên cùng laptop | Hỏi nhầm thư mục SIXDO_CHATBOT\ của laptop → số dừng ở 02/10, chỉ dòng "Dữ liệu đến" cho biết |
| Thấp | Nhật ký PC không ghi tên vai | Khi có thêm claude_ro_ceo bật ghi câu lệnh, hai máy hỏi cùng lúc thì nhật ký PC không tách được câu nào của ai. Nhật ký hai máy vẫn tách file |
| Thấp | Bản máy chủ lệch nhau giữa các máy | Mã băm ghim đã cũ (Phần 07); gói cho máy CEO chép tay một lần nên không tự cập nhật khi laptop sửa máy chủ hay danh sách cấm |
| Thấp | Nói quá về "không thấy" | Chatbot vẫn liệt kê được tên cột của bảng khách qua danh mục hệ thống. Phát biểu đúng: không đọc được giá trị |
Phần 11
Việc đang chờ người, và về sau
Không việc nào dưới đây chặn chatbot đang chạy. Chúng quyết định nó có mở thêm cho CEO hay không, và có giữ được qua tuần tới hay không.
mcp_audit.jsonl, mcp_audit_claude_ro_laptop.jsonl) sau khoảng hai tuần dùng, quyết giữ hay mở rộng. Kèm điền §10 biên bản Pha 1–6.2_doing/P2.10_pha7_may_ceo_2026-10-08.md + gói file không chứa bí mật: bốn câu C-1…C-4 (vào NetBird bằng khoá dùng một lần hay tài khoản CEO · đếm nhật ký khi hai vai cùng ghi · sinh mật khẩu trên PC · máy CEO cố định hay mang đi), rồi bảy bước C0…C7 — người duyệt trên máy CEO.Các lớp của kho mà chatbot đứng trên
Từ FAST tới bên tiêu thụ, mỗi lớp chứa gì, ai ghi, ai đọc, lớn bao nhiêu: Phụ lục 7 · Kiến trúc kho dùng chung. Vai nào thấy gì: Phụ lục 3. Sổ câu hỏi: Phụ lục 6.