reConsents — MÔ TẢ TOÀN HỆ THỐNG
Bản v1.1 · 20/08/2026 · CTCP Axion Tài liệu này viết để ai đọc cũng hiểu: nhà đầu tư, luật sư, nhân viên kinh doanh, kỹ sư, cán bộ nhà mạng, cán bộ quản lý nhà nước. Không cần đọc tài liệu nào khác trước.
0. ĐỌC TÀI LIỆU NÀY THẾ NÀO
Tài liệu chia làm 4 tầng. Đọc đến đâu đủ dùng thì dừng.
| Bạn là ai | Đọc phần | Mất khoảng |
|---|---|---|
| Người nghe lần đầu, cần hiểu "nó là cái gì" | 1 → 3 | 10 phút |
| Người bán hàng, đối tác, nhà đầu tư | 1 → 9 | 30 phút |
| Luật sư / cán bộ tuân thủ / DPO | 4 → 9 + 16 | 30 phút |
| Kỹ sư, người sẽ tích hợp hoặc bàn giao | 10 → 17 | 60 phút |
Quy ước: chữ in đậm là khái niệm có định nghĩa trong Từ điển thuật ngữ (mục 17).
1. MỘT TRANG TÓM TẮT
1.1. Vấn đề
Ở Việt Nam, gọi điện tiếp thị cho người chưa đồng ý là hành vi bị cấm và bị phạt (Nghị định 91/2020, Nghị định 13/2023 về bảo vệ dữ liệu cá nhân, Luật Bảo vệ dữ liệu cá nhân 91/2025). Nhưng trên thực tế:
- Doanh nghiệp nói là khách đã đồng ý — nhưng khi bị khiếu nại thì không chứng minh được. Một dòng trong Excel không phải bằng chứng: ai cũng sửa được.
- Nhà mạng bị kẹt ở giữa: thuê bao kêu bị làm phiền, cơ quan quản lý hỏi, nhà mạng chỉ có log cuộc gọi chứ không có cơ sở pháp lý của cuộc gọi đó.
- Người dân không có chỗ nào để hỏi "ai cho phép gọi tôi, và tôi rút lại kiểu gì".
Cả ba bên đều thiếu cùng một thứ: một tờ bằng chứng đồng ý mà không bên nào sửa được, và cả ba bên đều đọc được.
1.2. reConsents làm gì
reConsents là nền tảng bằng chứng đồng ý nhận cuộc gọi. Nhiệm vụ duy nhất:
Khi một người bấm "đồng ý nhận cuộc gọi", reConsents chụp lại toàn bộ hoàn cảnh của cái bấm đó, đóng dấu chữ ký số, xâu vào một cuốn sổ không sửa được, và phát ra một mã tra cứu mà doanh nghiệp, nhà mạng, người dân và cơ quan quản lý đều kiểm tra được — kể cả khi reConsents đã ngừng hoạt động.
Chỉ vậy. Không hơn.
1.3. reConsents KHÔNG làm gì (quan trọng ngang phần trên)
Ranh giới này là quyết định chiến lược, không phải hạn chế kỹ thuật:
- ❌ Không làm tổng đài. Không dựng lại lõi kiểu Callio/Stringee. Đó là cuộc chơi 1–2 năm để hoàn thiện sản phẩm, và các hãng đó đang chật vật vì luật siết.
- ❌ Không bán cước viễn thông. Doanh nghiệp ký hợp đồng thoại thẳng với nhà mạng. Axion không đứng giữa bán lại dịch vụ viễn thông — vì bán lại dịch vụ viễn thông là ngành có điều kiện, cần giấy phép.
- ❌ Không gọi hộ khách hàng. Khi cuộc gọi đã hợp lệ mà tỉ lệ chuyển đổi kém, khách sẽ quay ra đổ lỗi cho người gọi. reConsents đứng ngoài kết quả bán hàng.
- ❌ Không bán, không môi giới, không làm giàu dữ liệu cá nhân. Không có sản phẩm nào tên là "danh sách khách hàng".
- ❌ Không quyết định thay doanh nghiệp rằng một lượt đồng ý là hợp lệ hay không (xem mục 6 — nguyên tắc GHI ≠ CHẤP NHẬN).
1.4. Vì sao mô hình này bền
Ba lý do, xếp theo độ khó bắt chước:
- Bằng chứng có giá trị vì bên thứ ba kiểm được. Càng nhiều nơi công nhận cách kiểm này, bằng chứng càng có giá — và giá trị đó dồn về nơi phát hành.
- Không đụng vào miếng cơm của ai. Không cạnh tranh tổng đài, không cạnh tranh nhà mạng, không cạnh tranh CRM. Ai cũng có thể là kênh phân phối.
- Càng siết luật càng cần. Rủi ro pháp lý tăng thì nhu cầu chứng minh tăng.
2. AI DÙNG — NĂM MẶT PHẲNG
Hệ thống chia làm 5 mặt phẳng hoàn toàn tách nhau. Đây là ranh giới kiến trúc, không phải ranh giới giao diện: mỗi mặt phẳng dùng một loại vé đăng nhập riêng (cookie riêng), và có một tường lửa mặt phẳng chặn trước mọi xử lý — cầm vé của mặt phẳng này thì gõ cửa mặt phẳng kia là bị chặn ngay ở vòng ngoài, không đi vào được bên trong.
| # | Mặt phẳng | Ai | Cửa vào | Vé (cookie) |
|---|---|---|---|---|
| A | Doanh nghiệp (merchant) | Chủ DN, quản lý, sale, kế toán, DPO, kiểm toán nội bộ | /app.html | rc_session |
| B | Vận hành nền tảng (ops) | Axion: quản trị, thẩm định, kế toán, hỗ trợ, pháp chế | /ops.html | rc_ops |
| C | Đối tác phân phối (partner) | Đại lý bán hàng, tổng đài/CRM tích hợp | /partner.html | rc_partner |
| D | Nhà mạng (carrier) | Cán bộ đối soát, cán bộ theo dõi của nhà mạng | /carrier.html | rc_carrier |
| E | Công khai | Người dân, luật sư, cán bộ kiểm tra, phóng viên — không cần đăng nhập | /verify.html, /congdan.html, /tinh-trang.html | — |
2.1. Vai trong mặt phẳng doanh nghiệp (A)
| Vai | Thấy gì | Làm được gì |
|---|---|---|
owner — Chủ | Tất cả | Tất cả, kể cả tiền và tên miền |
manager — Quản lý | Đội ngũ + toàn bộ lead | Chia việc, duyệt câu chữ, đặt tiêu chí |
agent — Nhân viên gọi | Chỉ lead được giao cho mình | Ghi kết quả gọi, đặt lịch gọi lại |
accountant — Kế toán | Số dư, sao kê credit, tính năng & giá | Chỉ xem — không nạp ví, không bật/tắt tính năng (hai việc đó cần quyền billing:pay, hiện chỉ Chủ có) |
dpo — Phụ trách dữ liệu cá nhân | Bằng chứng, yêu cầu của chủ thể dữ liệu | Xử lý yêu cầu rút quyền / truy cập / xoá |
viewer — Kiểm toán nội bộ | Xem tất cả | Không sửa được gì |
Nguyên tắc: nhân viên gọi chỉ nhìn thấy phần việc của mình. Không ai được xem toàn bộ danh bạ chỉ vì tò mò.
3. VÒNG ĐỜI MỘT BẰNG CHỨNG — KỂ BẰNG MỘT CÂU CHUYỆN
Chị Lan đang xem căn hộ trên website của Công ty Sao Mai.
Bước 1 — Widget xuất hiện. Dưới form đăng ký có một ô nhỏ: "Nha Khoa Sao Mai (MST 0107778899) xin phép gọi điện tư vấn…", kèm nút Đồng ý và nút Không, cảm ơn to bằng nhau.
Bước 2 — Mở phiên. Trước khi chị Lan bấm gì, trình duyệt đã hỏi reConsents: "khoá website này có thật không, và người này có đang bị chặn không?". reConsents kiểm:
- Khoá website (
site_key) có đúng của tên miền đang mở không — sai tên miền là chặn ngay (chống trộm khoá đem dán chỗ khác). - Người này đã từng từ chối hoặc nằm trong danh sách không gọi (DNC) chưa — nếu rồi thì widget không hiện.
- Người này đã đồng ý và còn hiệu lực chưa — nếu rồi thì cũng không hỏi lại (không làm phiền hai lần).
Bước 3 — Nhận diện, pha sàng lọc (miễn phí). Lúc này hệ thống chưa hỏi nhà mạng "người này là ai" — hỏi thế là tốn tiền cho cả những người chỉ lướt ngang qua. Nó chỉ cần một câu YES/NO: có được phép hỏi người này không. Kết quả tạm thời là mức nhận diện bậc thấp trong thang 5 bậc (mục 5), và bằng chứng sau này sẽ nói thật đúng mức đó nếu không có gì nâng lên. Câu hỏi đắt tiền để dành tới bước 5b. Chi tiết ở mục 5b.
Bước 3b — Đo hành trình (miễn phí). Song song, widget ghi lại khách đến từ chiến dịch quảng cáo nào, đã xem mấy trang. Không dùng dữ liệu của nhà mạng, không dùng dữ liệu cá nhân.
Bước 4 — Widget tự đo chính mình. Ngay tại trình duyệt, widget đo:
- cỡ chữ thật của dòng xin phép (px)
- độ tương phản chữ/nền (theo chuẩn WCAG)
- kích thước nút từ chối (px)
- kiểu đồng ý: bấm tay / có sẵn dấu tích / không tương tác
Đây là điểm khác biệt: hầu hết hệ thống chỉ lưu "khách đã tick". reConsents lưu khách đã nhìn thấy cái gì.
Bước 5 — Chị Lan bấm Đồng ý.
Bước 5b — GIỜ mới hỏi nhà mạng (trả phí). Đến khoảnh khắc này mới đáng bỏ tiền hỏi "thuê bao nào", và cũng chỉ hỏi nếu doanh nghiệp đã tự tay bật tính năng đó. Mức nhận diện được nâng lên bậc cao nhất. Mỗi đồng trả ra đều gắn với một người đã tự nguyện đồng ý.
Bước 6 — Đóng gói. reConsents dựng một bản ghi gồm: thời điểm, website, sản phẩm, nguyên văn câu chữ chị Lan đọc (lưu bằng mã băm để chống sửa), số đo hiển thị ở bước 4, mức nhận diện ở bước 3, và một mã tham chiếu thuê bao — không phải số điện thoại thô.
Bước 7 — Chấm tiêu chí, ngay lúc phát hành. Bản ghi được đối chiếu với bộ tiêu chí doanh nghiệp tự đặt. Đạt hay không đạt đều được ghi vào bằng chứng, không hồi tố: đổi tiêu chí ngày mai không làm bằng chứng hôm nay đẹp lên hay xấu đi.
Bước 8 — Ký hai chữ ký. Bằng chứng được ký bởi Axion và bởi cổng nhà mạng. Hai bên độc lập cùng ký — một bên chối thì chữ ký bên kia vẫn còn.
Bước 9 — Xâu vào sổ. Mã băm của bằng chứng được nối vào mắt xích — mỗi bản ghi mang dấu vân tay của bản ghi trước. Sửa một bản ghi giữa sổ là đứt xích ở mọi bản ghi phía sau, nhìn là biết.
Bước 10 — Niêm phong theo ngày. Cuối ngày, toàn bộ bằng chứng trong ngày được gộp thành một dấu niêm phong duy nhất (Merkle root), rồi ký. Sau này chỉ cần giữ dấu niêm phong đó là chứng minh được cả ngày hôm ấy không ai sửa gì. Giới hạn phải nói rõ: dấu này hiện do chính reConsents ký, nên nó chứng minh được với mọi bên KHÁC, nhưng chưa chứng minh được thời điểm trước một bên nghi ngờ chính reConsents — muốn thế thì gốc ngày phải được một tổ chức cấp dấu thời gian được cấp phép đóng dấu (xem src/tsa.js, hiện trả TSA_PENDING).
Bước 11 — Chị Lan nhận mã. Ví dụ CT-3C8149. Chị vào /verify.html, dán mã vào, thấy: ai xin phép, xin lúc nào, xin để làm gì, chữ chị đọc là chữ gì, và một nút RÚT QUYỀN. Bấm là xong — không cần gọi tổng đài, không cần email, không cần chứng minh mình là ai với người đã làm phiền mình.
Bước 12 — Rút quyền. Rút quyền không xoá bằng chứng cũ (bằng chứng là sự thật lịch sử: chị đã từng đồng ý). Nó ghi thêm một sự kiện rút, và từ giây đó van kiểm trước cuộc gọi chặn mọi cuộc gọi tới chị.
4. BẰNG CHỨNG GỒM GÌ, VÀ AI KIỂM ĐƯỢC
4.1. Ba lớp lưu trữ
| Lớp | Tên | Xoá được? | Vì sao thiết kế vậy |
|---|---|---|---|
| 1 | records — bản ghi đầy đủ | Có | Luật cho phép chủ thể yêu cầu xoá dữ liệu cá nhân. Phải xoá được thật. |
| 2 | chain — mắt xích chỉ chứa mã băm | Không | Chỉ có dấu vân tay, không có dữ liệu cá nhân → xoá lớp 1 vẫn giữ được lớp 2, vẫn chứng minh được "đã từng có một bằng chứng ở đúng vị trí này, đúng thời điểm này". |
| 3 | roots — dấu niêm phong ngày, có chữ ký | Không | Một dòng cho cả ngày. Có thể công bố ra ngoài, đóng dấu thời gian độc lập. |
Đây là cách giải một mâu thuẫn tưởng như không giải được: vừa xoá được theo luật, vừa không sửa được.
4.2. Năm lớp kiểm — công cụ kiểm chạy được khi không có mạng
Gói bằng chứng (rc-evidence-bundle-1) tải về là một file. Công cụ tools/verify-offline.js kiểm 5 lớp mà không cần gọi về máy chủ reConsents:
| Lớp | Kiểm cái gì | Trả lời câu hỏi |
|---|---|---|
| L1 | Toàn vẹn bản ghi | Nội dung có bị sửa một chữ nào không? |
| L2 | Mắt xích | Bản ghi này có đúng vị trí trong sổ không? |
| L3 | Đường chứng Merkle | Nó có thật sự nằm trong ngày đã niêm phong không? |
| L4 | Chữ ký dấu niêm phong | Dấu niêm phong ngày đó có phải do Axion ký không? |
| L5 | Token hai chữ ký | Cả Axion và nhà mạng có cùng ký bằng chứng này không? |
Vì sao "chạy offline" là điều quan trọng nhất trong toàn bộ tài liệu này: nếu phải hỏi máy chủ reConsents mới biết bằng chứng thật hay giả, thì bằng chứng chỉ đáng tin bằng độ đáng tin của Axion. Kiểm offline được nghĩa là bằng chứng sống lâu hơn công ty phát hành ra nó. Toà án năm 2032 vẫn kiểm được một bằng chứng cấp năm 2026, kể cả khi Axion không còn tồn tại.
4.3. Bằng chứng KHÔNG chứa gì
Không chứa số điện thoại thô. Trong toàn bộ token chỉ có mã tham chiếu thuê bao — một chuỗi thay thế. Có một chốt chặn trong code: nếu bộ nhận diện lỡ trả về một số điện thoại dạng thô, hệ thống ném lỗi và từ chối phát hành, chứ không âm thầm ghi vào.
🔴 Việc còn nợ (đã biết, chưa làm): mã tham chiếu hiện dùng chung một khoá cho cả nền tảng. Đúng ra mỗi doanh nghiệp phải có khoá riêng, để hai doanh nghiệp không thể ghép sổ với nhau mà suy ra "cùng một người". Đây là thay đổi kiến trúc duy nhất còn phải làm lại — xem mục 16.
5. THANG NHẬN DIỆN 5 MỨC — "TOKEN PHẢI NÓI THẬT NÓ MẠNH CỠ NÀO"
Không phải bằng chứng nào cũng nặng như nhau. Thay vì giả vờ mọi bằng chứng đều vàng ròng, reConsents dán nhãn độ mạnh ngay trên bằng chứng:
| Mức | Tên | Nghĩa là | Sức nặng |
|---|---|---|---|
| 5 | carrier_identified | Nhà mạng xác nhận đúng thuê bao đó | Mạnh nhất |
| 4 | form_otp | Khách nhập OTP gửi về máy | Mạnh |
| 3 | platform_reconstructed | Nền tảng ghép lại từ dữ liệu phiên | Trung bình |
| 2 | form_only | Chỉ có số khách tự điền vào form | Yếu |
| 1 | compliance_only | Chỉ đủ để chứng minh có tuân thủ quy trình | Yếu nhất |
Nhãn này hiện công khai trên trang tra cứu. Người mua bằng chứng biết mình mua hàng loại nào. Doanh nghiệp muốn bằng chứng nặng hơn thì trả tiền cho lượt nhận diện qua nhà mạng — đó chính là chỗ nhà mạng kiếm được tiền.
5b. HAI TẦNG NHẬN DIỆN — TẦNG MIỄN PHÍ NUÔI TẦNG TRẢ PHÍ
Bổ sung 20/08/2026. Đây là quyết định kinh tế quan trọng nhất của sản phẩm, và nó quyết định luôn việc merchant có dám nhúng widget hay không.
5b.1. Vì sao phải tách
Ban đầu hệ thống hỏi nhà mạng "đây là ai" ngay khi mở phiên — tức là cho mọi người chỉ ghé ngang qua trang. Nếu nhà mạng tính tiền theo lượt hỏi thì merchant phải trả cho cả những người không bao giờ bấm gì. Kết cục: không ai dám nhúng widget, và sản lượng của nhà mạng bằng 0.
Nên tách làm hai pha:
| Pha | Chạy khi | Trả lời câu hỏi | Mức nhận diện | Tiền |
|---|---|---|---|---|
| Sàng lọc | Mở phiên (mọi lượt ghé) | "Có được phép hỏi người này không?" — một câu YES/NO về việc bị chặn, không phải phép tra danh tính | Hạ xuống platform_reconstructed | Miễn phí |
| Phân giải | Khách đã bấm Đồng ý | "Thuê bao nào?" | Nâng lên carrier_identified | Trả phí |
Nguyên tắc đi kèm: mặc định an toàn nghiêng về phía không tiêu tiền của khách hàng — ai quên khai pha thì được cái rẻ, không phải cái đắt. Và pha trả phí chỉ chạy khi merchant đã tự tay bật tính năng Nhận diện qua nhà mạng (mặc định TẮT).
Lập luận để đàm phán với nhà mạng: tính tiền theo mọi lượt ghé → sản lượng 0. Tính theo lượt chuyển đổi → đơn giá cao hơn, sản lượng thật, và mỗi lượt hỏi đều gắn với một người đã tự nguyện đồng ý — sạch cả về chi phí lẫn pháp lý.
5b.2. Tầng miễn phí: hành trình khách theo thời gian thực
Vì pha sàng lọc không hỏi nhà mạng, phần "khách này là ai, đến từ đâu" được dựng 100% bằng dữ liệu bên thứ nhất do chính widget đo. Đây là một Google Analytics bản rút gọn, miễn phí, gắn thẳng vào nghiệp vụ đồng ý:
- lượt xem trang · nguồn / chiến dịch quảng cáo (utm) · thiết bị
- widget hiện lúc nào, khách có thật sự nhìn thấy không (≥50% lọt khung nhìn liên tục ≥1 giây)
- đọc bao lâu trước khi quyết, và cân nhắc bao lâu từ lúc thấy tới lúc bấm
- bấm đồng ý hay từ chối — hoặc bỏ đi mà không bấm gì, đây là dữ liệu quý nhất của phễu
Màn hình: Trực tiếp (đang có ai trên trang, từ nguồn nào) và Nguồn & chiến dịch trong Thống kê — phễu 5 nấc xem trang → thấy ô xin phép → bấm đồng ý → ra bằng chứng, đếm theo người chứ không theo lượt tải lại trang.
5b.3. Ba rào chắn quyền riêng tư của tầng này
Xây một tầng analytics là bước dễ trở thành thứ mình đang phê phán nhất. Ba luật cứng:
- Mã người xem riêng theo từng doanh nghiệp. Trình duyệt gửi lên một chuỗi ngẫu nhiên; hệ thống băm bằng muối riêng của từng merchant trước khi lưu. Cùng một trình duyệt ghé hai doanh nghiệp sẽ ra hai mã khác hẳn nhau, không ai ghép được — kể cả người vận hành nền tảng. Đây chính là Luật Hai Chìa (mục 9.3) áp xuống tầng analytics, và là bản mẫu cho việc sửa mã tham chiếu thuê bao ở mục 16.
- Không dữ liệu cá nhân. Chỉ lấy đường dẫn trang (vứt toàn bộ query string trừ tham số
utm_*), chỉ lấy host của trang giới thiệu. Không đọc nội dung form, không dấu vân tay trình duyệt. - Không quay lại phiên làm việc, không toạ độ chuột, không ghi phím. Chỉ các sự kiện rời rạc có tên. Đây là ranh giới đã tuyên bố công khai khi từ chối chép tính năng session replay của đối thủ Mỹ.
Thêm, về hạn lưu: bản đầu đặt tự xoá sau 90 ngày, nhưng PO bác (20/08): không tự xoá gì cả — dữ liệu hành trình là tài sản (so mùa này với mùa trước, và là chỗ thu phí duy trì về sau). Giữ vô hạn vẫn đứng được về pháp lý vì bảng này không có dữ liệu cá nhân (mã người xem đã băm, đường dẫn đã vứt query). Thứ luật đòi là đường xoá theo yêu cầu — có sẵn, xoá đích danh theo từng người-từng doanh nghiệp, không có lệnh "xoá hết".
5b.4. Món lợi kèm theo: bằng chứng nặng hơn hẳn
Một bản tóm tắt hành trình được đính thẳng vào bằng chứng khi phát hành: đã xem mấy trang, đã thấy ô xin phép chưa, đọc bao lâu, cân nhắc bao lâu, đến từ chiến dịch nào.
"Ở trên trang 47 giây, cuộn qua đoạn chữ đồng ý, rồi mới bấm" là bằng chứng đồng ý có hiểu biết — mạnh hơn rất nhiều so với một cái tick trần.
Nói cách khác: tầng analytics miễn phí đang nuôi chính món trả phí. Merchant nhúng widget vì muốn xem số liệu; mỗi lượt xem lại làm bằng chứng của họ dày thêm.
(Kỹ thuật: các số này vào token dưới dạng số nguyên — canonical JSON cấm số thực, xem mục 11.3.)
6. NGUYÊN TẮC NỀN TẢNG: GHI ≠ CHẤP NHẬN
Đây là doctrine quan trọng nhất của sản phẩm. Nói gọn:
Nền tảng luôn ghi sự thật — không cấu hình được. Doanh nghiệp tự chọn ngưỡng chấp nhận — cấu hình được.
Ví dụ cụ thể: có nên cho phép đồng ý bằng ô đã tích sẵn không?
- Cách làm sai #1 — cấm cứng: nền tảng từ chối ghi. Kết quả: doanh nghiệp bỏ đi dùng chỗ khác, mà chỗ khác thì chẳng ghi gì cả. Nghiêm quá thì không ra doanh số, và cũng chẳng bảo vệ được ai.
- Cách làm sai #2 — nhắm mắt: ghi tuốt, không phân biệt. Bằng chứng mất giá trị.
- Cách reConsents làm: ghi tuốt, nhưng ghi đúng nó là loại gì. Ô tích sẵn được ghi là ô tích sẵn, hiện nhãn độ mạnh công khai trên trang tra cứu, và khi doanh nghiệp bật cho phép loại này thì hệ thống ghi một dòng nhật ký riêng kèm nguyên văn cảnh báo pháp lý (trích Nghị định 13/2023 Điều 11 và Luật 91/2025). Sau này ai hỏi "sao lại chấp nhận loại này", nhật ký chỉ đúng người, đúng lúc, và chứng minh người đó đã đọc cảnh báo.
Điều này học từ TrustedForm (Mỹ): trong hệ thống của họ, opt_in_types_allowed là bộ lọc của bên nhận lead, không phải tuyên bố của nền tảng rằng loại nào hợp pháp. Nền tảng ghi thật; bên nhận tự đặt khẩu vị rủi ro của mình.
6.1. Bộ tiêu chí kiểm bằng chứng (doanh nghiệp tự đặt)
| Tiêu chí | Mặc định khuyến nghị |
|---|---|
| Bắt buộc nêu tên doanh nghiệp trong câu xin phép | Bật |
| Cỡ chữ tối thiểu | 13 px |
| Độ tương phản tối thiểu | 7:1 |
| Nút từ chối tối thiểu | 44 px |
| Cho phép đồng ý bấm tay | Bật |
| Cho phép ô tích sẵn | Tắt (bật được, có cảnh báo + nhật ký) |
| Cho phép đồng ý không tương tác | Tắt |
| Mức nhận diện tối thiểu | form_only |
| Bắt buộc dùng câu chữ đã duyệt | Tắt |
7. CÂU CHỮ ĐỒNG Ý — QUẢN LÝ NHƯ QUẢN LÝ HỢP ĐỒNG
Mỗi lượt đồng ý mang theo nguyên văn câu chữ khách đã đọc. Hệ thống tự gom các biến thể lại thành một danh sách (nhận diện bằng mã băm nội dung), đếm mỗi biến thể xuất hiện bao nhiêu lần, lần đầu và lần cuối khi nào.
Doanh nghiệp có 3 trạng thái để dán lên mỗi biến thể: chưa duyệt · đã duyệt · từ chối.
Vì sao cần: một công ty có 20 landing page, marketing sửa chữ liên tục, và không ai biết ngoài kia đang chạy bao nhiêu phiên bản câu xin phép. Khi bị thanh tra, câu hỏi đầu tiên là "khách đã đọc chính xác cái gì". Màn này trả lời câu đó trong 5 giây — và chỉ ra ngay biến thể nào đang chạy mà chưa ai duyệt.
8. RÚT QUYỀN, DANH SÁCH KHÔNG GỌI, VÀ TÁI ĐỒNG Ý
8.1. Van kiểm trước cuộc gọi
Trước mỗi cuộc gọi, hệ thống trả lời một câu hỏi duy nhất: được gọi số này không? Chặn nếu: đã rút quyền · nằm trong DNC · đồng ý hết hiệu lực · vượt tần suất cho phép.
Van này không phải tính năng bật/tắt được. Trong danh mục tính năng có một nguyên tắc bất di bất dịch được ghi thẳng vào mã nguồn: không bao giờ có tính năng kiểu "tắt kiểm DNC", "bỏ qua van chặn". Bán quyền tắt rào chắn là bán chính uy tín làm nên sản phẩm.
8.2. Chiến dịch tái đồng ý (QT-07)
Doanh nghiệp có danh sách khách cũ, không có bằng chứng đồng ý. Thay vì gọi liều, họ gửi lời mời tái đồng ý qua ZNS/SMS brandname — khách bấm vào, đọc, tự quyết.
Luật cứng trong hệ thống: ai đã từng từ chối thì bị loại khỏi danh sách mời, không mời lại. Không có cách nào cấu hình để lách.
(Kênh gửi ZNS/SMS brandname hiện ở trạng thái chờ pháp chế — xem mục 16.)
9. RANH GIỚI THƯƠNG MẠI & PHÁP LÝ
9.1. Ai ký gì với ai
Doanh nghiệp ──── hợp đồng thoại ────► Nhà mạng
│ ▲
│ hợp đồng phần mềm │ hợp đồng thứ tự dùng
▼ │ (thuê chỗ, SMS brandname,
Axion ─────────────────────────────────► lượt nhận diện)
Ba hợp đồng tách bạch. Axion không bao giờ đứng giữa bán lại dịch vụ viễn thông — đó là ngành có điều kiện. Axion bán phần mềm, và mua từ nhà mạng những thứ hạ tầng mình dùng.
9.2. Nguyên tắc một chiều tiền
Tiền chỉ chảy Axion → Nhà mạng. Axion không nhận chia doanh thu cước từ nhà mạng. Lý do: nhận chia cước là bước đầu tiên biến mình thành đại lý viễn thông — đúng cái mìn cần tránh.
9.3. Luật Hai Chìa
Bản đồ dữ liệu xuyên nhiều doanh nghiệp (ví dụ: "số này đã đồng ý cho bao nhiêu công ty") là thứ có giá trị thật — TrustedForm ở Mỹ vẫn làm. Nhưng cũng là thứ nguy hiểm nhất nếu làm bừa.
Giải pháp không phải lời hứa "chúng tôi sẽ không làm", mà là cấu trúc: bản đồ chỉ vẽ được khi hai chìa cùng xoay — một chìa của Axion, một chìa của bên còn lại (nhà mạng, hoặc cơ quan có thẩm quyền). Một mình Axion không vẽ được, kể cả khi muốn, kể cả khi bị ép.
Điều này cũng là cách đón đầu khi có sàn dữ liệu quốc gia: khi cơ quan có thẩm quyền yêu cầu, cơ chế hai chìa cho phép đáp ứng đúng thủ tục thay vì phải phá vỡ cam kết đã đưa ra với khách hàng.
10. BẢN ĐỒ MÀN HÌNH
10.1. Mặt phẳng doanh nghiệp — /app.html (19 màn)
| # | Màn | Dùng để |
|---|---|---|
| p0 | Websites | Thêm site, lấy đoạn mã nhúng, bật chế độ thử nghiệm |
| p8 | Việc hôm nay | Màn mở đầu của nhân viên gọi: hôm nay gọi ai |
| p1 | Sổ lead | Danh sách lead, ai đang giữ, trạng thái |
| p9 | Lịch hẹn gọi lại | Hẹn giờ, nhắc việc |
| p2 | Tái đồng ý | Đánh thức khách cũ đúng luật (trước gọi là "Chiến dịch" — đổi tên vì trùng nghĩa với chiến dịch quảng cáo) |
| p3 | Đội ngũ | Mời người, đặt vai, chia việc |
| p18 | Trực tiếp | Ai đang trên trang ngay lúc này, từ nguồn nào, đã thấy ô xin phép chưa — miễn phí, realtime |
| p4 | Thống kê | Tỉ lệ đồng ý, tỉ lệ gọi được, theo site + phễu Nguồn & chiến dịch |
| p5 | Số dư credit | Ví, lịch sử trừ tiền |
| p10 | Nhật ký hành động | Ai làm gì, lúc nào, từ IP nào |
| p17 | Việc cần làm | 6 nhóm việc khởi động, tự dò tiến độ — không phải tick tay |
| p11 | Câu chữ đồng ý | Duyệt / từ chối các biến thể (mục 7) |
| p12 | Tiêu chí kiểm bằng chứng | Đặt ngưỡng chấp nhận (mục 6) |
| p13 | Tên miền | Xác minh sở hữu qua bản ghi TXT, mời đối tác xác nhận nguồn |
| p14 | Tính năng & giá | Bật/tắt tính năng trả phí, mỗi lần bật ghi một dòng đồng ý mức giá |
| p15 | Tích hợp | Kho khoá API/webhook, mã hoá AES-256-GCM, không bao giờ hiện lại giá trị bí mật |
| p16 | Cá nhân & bảo mật | Đổi mật khẩu, bật 2FA (TOTP), mã dự phòng |
| p6 | Cài đặt | Thông tin doanh nghiệp, giao diện |
| p7 | Bằng chứng & yêu cầu chủ thể | Tra bằng chứng, tải gói kiểm offline, xử lý yêu cầu của chủ thể dữ liệu |
10.2. Bốn mặt phẳng còn lại
Vận hành nền tảng — /ops.html: tổng quan hệ thống · thẩm định hồ sơ doanh nghiệp (KYB) · duyệt/từ chối chiến dịch · quản lý DNC toàn nền tảng · nạp/trừ credit · tạm ngưng doanh nghiệp vi phạm · niêm phong & xuất bằng chứng · nhật ký toàn nền tảng · quản lý tài khoản & 5 vai của Axion.
Đối tác — /partner.html: danh sách doanh nghiệp mình giới thiệu · lời mời · hoa hồng và chốt kỳ · đội ngũ đối tác (chủ / kinh doanh / kế toán).
Nhà mạng — /carrier.html: tổng quan sản lượng · doanh thu · tải file đối soát CSV · tình trạng cổng. Hai vai: đối soát (tải được file) và theo dõi (chỉ xem).
Công khai — không cần đăng nhập:
/verify.html— dán mã bằng chứng, xem sự thật, rút quyền tại chỗ/congdan.html— cổng người dân: quyền của tôi, ai đang được phép gọi tôi/tinh-trang.html— tình trạng hệ thống theo thời gian thực/huong-dan.html— hướng dẫn sử dụng theo vai (9 mục)/xac-nhan-nguon.html— trang cho đối tác xác nhận nguồn tên miền/bat-dau.html— hướng dẫn khởi động cho doanh nghiệp mới
11. KIẾN TRÚC KỸ THUẬT
11.1. Nguyên tắc chọn công nghệ
Toàn hệ thống chạy trên Node.js 22 thuần, không có bước build, đúng một thư viện ngoài (jose để ký JWS), cơ sở dữ liệu là SQLite tích hợp sẵn trong Node (node:sqlite).
Vì sao khắc nghiệt vậy — ba lý do:
- Bàn giao được. Người nhận bàn giao chỉ cần
node src/server.js. Không webpack, không docker-compose, không 900 gói phụ thuộc để một trong số đó bị chiếm quyền. - Kiểm toán được. Hệ thống bằng chứng mà chính nó là hộp đen thì vô nghĩa. Ít phụ thuộc = đọc hết được.
- Sống lâu. Ít phụ thuộc thì ít lý do vỡ khi nâng cấp.
Mọi chú thích trong mã nguồn viết bằng tiếng Việt, và giải thích vì sao chứ không phải làm gì.
11.2. Bản đồ mã nguồn (~6.750 dòng)
| Nhóm | Tệp | Việc |
|---|---|---|
| Lõi | server.js (1.354) | Định tuyến, tường lửa mặt phẳng, phát hành bằng chứng |
db.js (15) | Ba hàm: one / q / run | |
canonical.js (37) | Chuẩn hoá JSON để mọi ngôn ngữ ra byte giống hệt nhau | |
crypto.js (77) | Băm, ký, kiểm | |
| Bằng chứng | ledger.js (96) | Sổ 2 tầng, Merkle root |
identify.js (79) | Thang nhận diện 5 mức · hai pha sàng lọc/phân giải · chốt chặn số điện thoại thô | |
journey.js (416) | Hành trình khách: mã người xem theo từng merchant, phễu theo chiến dịch, tóm tắt gắn bằng chứng | |
criteria.js (178) | Bộ tiêu chí + chấm điểm | |
consent-language.js (92) | Gom & duyệt biến thể câu chữ | |
tsa.js (24) | Đóng dấu thời gian độc lập (giao diện đóng băng, chờ cấp phép) | |
rotation.js (113) | Xoay khoá ký | |
| Mặt phẳng | ops.js (943) · partners.js (728) · carrier.js (446) · cskh.js (608) | Bốn mặt phẳng B/C/D + nghiệp vụ chăm sóc khách hàng |
perm.js (163) | 6 vai doanh nghiệp + phân quyền | |
| Vành đai | guard.js (101) | Giới hạn tần suất, khoá đăng nhập sai, chính sách mật khẩu |
twofa.js (209) | TOTP RFC 6238 tự cài bằng thư viện chuẩn | |
audit.js (48) | Nhật ký hành động | |
backup.js (56) | Sao lưu tự động 24h, giữ 14 bản | |
health.js (148) | Tình trạng hệ thống — cố ý không lộ số liệu khách hàng | |
| Kinh doanh | billing.js (79) · features.js (282) · checklist.js (195) | Ví, tính năng & giá, tiến độ khởi động |
domains.js (232) · integrations.js (183) | Xác minh tên miền, kho khoá mã hoá | |
invite-channel.js (72) · notify.js (57) · alerts.js (50) | Kênh mời, thông báo, cảnh báo | |
gate-mock.js (50) | Cổng nhà mạng giả lập để chạy độc lập |
11.3. Chuẩn hoá JSON — chi tiết nhỏ, hệ quả lớn
Để hai máy khác nhau, viết bằng hai ngôn ngữ khác nhau, cùng kiểm được một chữ ký, thì cả hai phải dựng lại chính xác từng byte nội dung đã ký. Quy tắc:
- Khoá sắp xếp theo thứ tự Unicode
- Không khoảng trắng thừa
- Chỉ chấp nhận số nguyên an toàn — cấm số thực
Điều cuối cùng nghe kỳ quặc nhưng là bắt buộc: số thực (9.2) được các ngôn ngữ in ra khác nhau (9.2 / 9.200000000000001), làm chữ ký lệch. Vì thế các số đo hiển thị vào token dưới dạng số nguyên nhân thang: font_px_x10 = 140 thay vì 14.0, contrast_x100 = 910 thay vì 9.1. Bản số thực vẫn được giữ riêng để hiển thị cho người đọc.
11.4. Bảo mật
| Lớp | Cách làm | |
|---|---|---|
| Mật khẩu | scrypt (không phải MD5/SHA1) | |
| Hai lớp (2FA) | TOTP RFC 6238, bước 30 giây, chống phát lại, 10 mã dự phòng băm bằng scrypt. Doanh nghiệp có thể bắt buộc 2FA toàn tài khoản | |
| Khoá tích hợp | AES-256-GCM, dữ liệu bổ trợ ràng theo `cred_id | merchant_id` → khoá của doanh nghiệp A không giải được ở doanh nghiệp B |
| Chống dò mật khẩu | 8 lần sai trong 10 phút theo cặp email+IP → khoá 10 phút | |
| Chống trộm khoá website | Kiểm Origin/Referer khớp tên miền đã đăng ký, sai thì 403 + ghi vết | |
| Chống rác API công khai | 600 lượt/phút mỗi IP | |
| Tách mặt phẳng | 5 cookie riêng, chặn trước mọi xử lý | |
| Rò rỉ bí mật | Hàm assertNoSecretLeak() chạy thật ở mọi đường trả dữ liệu ra ngoài |
11.5. Vận hành
/healthz— một dòng cho hệ thống giám sát/v1/health— chi tiết 5 thành phần: cơ sở dữ liệu · sổ · niêm phong · cổng nhà mạng · kênh mời- Sao lưu tự động mỗi 24h (
VACUUM INTO), giữ 14 bản - Nhật ký hành động ghi: thời điểm · doanh nghiệp · tài khoản · vai · IP · hành động · đối tượng · chi tiết
12. GIAO DIỆN LẬP TRÌNH (API)
Khoảng 90 điểm cuối. Nhóm chính:
| Nhóm | Điểm cuối tiêu biểu |
|---|---|
| Widget (công khai) | POST /v1/sessions · POST /v1/consents · POST /v1/consents/deny · POST /v1/events · GET /px.gif |
| Bằng chứng | GET /v1/verify/:key/bundle · GET /v1/evidence · GET /v1/root · POST /v1/chain/verify · GET /jwks |
| Doanh nghiệp | /v1/me · /v1/sites · /v1/leads · /v1/campaigns · /v1/team · /v1/stats · /v1/pipeline · /v1/my-day · /v1/callbacks |
| Hành trình | POST /v1/journey (công khai, sendBeacon) · /v1/journey/live · /v1/journey/funnel · /v1/journey/visitor/:id |
| Đợt 3 | /v1/criteria · /v1/consent-language · /v1/domains · /v1/features · /v1/integrations · /v1/checklist · /v1/2fa/* · /v1/audit · /v1/perf |
| Vận hành | /v1/ops/* (27 điểm cuối) |
| Đối tác | /v1/partner/* (9) |
| Nhà mạng | /v1/carrier/* (7, gồm reconcile.csv) |
| Sức khoẻ | /healthz · /v1/health |
Mô tả máy đọc được: openapi.yaml.
13. TIỀN
13.1. Hai lớp giá (đừng trộn)
- Credit theo giao dịch — trừ theo lead / phút gọi.
- Tính năng cộng thêm — tính bằng VNĐ, bật/tắt được.
13.2. Danh mục tính năng (10 mục — khung tham chiếu, chốt theo hợp đồng)
| Tính năng | Giá | Mặc định |
|---|---|---|
| Thu đồng ý qua widget | Miễn phí | Bật |
| Lọc trùng lead | Miễn phí | Bật (không tắt được) |
| Phát hành bằng chứng ký số | Miễn phí | Bật |
| Gói kiểm offline | Miễn phí | Bật |
| Tra cứu công khai | Miễn phí | Bật |
| Lưu giữ bằng chứng dài hạn | 100–500 đ/bản ghi/tháng | Tắt |
| Xác minh bằng chứng | 200–1.000 đ/lượt | Tắt |
| Van kiểm trước cuộc gọi | 100–500 đ/lượt | Tắt |
| Chiến dịch tái đồng ý | 1.000–3.000 đ/lời mời | Tắt |
| Nhận diện qua nhà mạng | 500–2.000 đ/lượt | Tắt |
Mỗi lần bật một tính năng trả phí sinh một dòng nhật ký ghi rõ: tài khoản nào, lúc nào, từ IP nào, và đã nhìn thấy giá bao nhiêu tại thời điểm bật. Đây là lá chắn tranh chấp thương mại rẻ nhất có thể — không cần chữ ký, không cần phụ lục hợp đồng.
Ngoài ra: nạp ví tự động (dưới ngưỡng thì nạp thêm), và ghi nhận chấp nhận điều khoản theo phiên bản văn bản tại thời điểm bấm.
13.3. Lọc trùng lead — trả phí đúng một lần cho một người
Doanh nghiệp chạy nhiều landing page trong hệ thống. Cùng một người đồng ý lần nữa — trên trang khác, hoặc sau khi bản cũ hết hạn/bị rút — thì không thu thêm phí lead. Ba điểm đáng nói:
- Khoá trùng là mã tham chiếu danh tính đã băm, không phải chuỗi số điện thoại — đổi định dạng số không lách được (mạnh hơn cách lọc trùng của đối thủ Mỹ).
- Bằng chứng vẫn phát hành đầy đủ — lượt đồng ý mới là sự thật pháp lý mới; chỉ hoá đơn là không lặp (đúng nguyên tắc GHI ≠ CHẤP NHẬN, áp sang tiền).
- Sao kê hiện một dòng 0đ nói rõ vì sao — sự công bằng phải nhìn thấy được, không phải tin lời. Lead trùng cũng không bị trừ lại phí nhận diện.
Ca rút-quyền-được-hoàn rồi đồng ý lại vẫn tính là trùng: chấp nhận thiệt về phía nền tảng, không bao giờ nhập nhằng về phía doanh nghiệp.
13.4. Phân bổ tính năng theo gói
Mỗi tính năng trong danh mục có thể gắn gói thấp nhất được bật (thang Dùng thử < Khởi Động < Tăng Tốc < Chuyên Nghiệp). Cơ chế đã dựng sẵn trong code; chưa gán bậc cho mục nào — gán bậc là quyết định biểu giá, chốt cùng hợp đồng thật. Nguyên tắc hiển thị: gói thấp vẫn nhìn thấy tính năng gói cao (kèm nhãn gói) — thẻ khoá là lời mời nâng gói; thẻ tàng hình thì không ai nâng gói vì thứ mình không biết tồn tại. Tắt thì luôn được — không ai bị giam trong tính năng.
14. CHẤT LƯỢNG — 665 TEST TỰ ĐỘNG
| Bộ test | Số test | Kiểm gì |
|---|---|---|
carrier-boundary | 193 | Nhà mạng không lấn sang dữ liệu doanh nghiệp |
partner-boundary | 174 | Đối tác chỉ thấy doanh nghiệp mình giới thiệu |
dot3 | 70 | Toàn bộ tính năng Đợt 3 |
ops-roles | 60 | 5 vai vận hành, ai làm được gì |
red-items | 34 | Các điểm rủi ro đã từng suýt sai |
hardening | 24 | Vành đai: tần suất, khoá đăng nhập, mật khẩu |
evidence | 17 | Sổ, mắt xích, Merkle, chữ ký |
qt07 | 17 | Tái đồng ý — nhất là luật "đã từ chối thì không mời lại" |
vectors | 17 | Vector chuẩn: chuẩn hoá JSON, TOTP RFC 6238 |
widget-sdk | 17 | Ràng buộc tên miền, phiên bản SDK, hiệu năng, thang nhận diện |
journey | 42 | Hành trình: miễn phí lúc mở phiên · trả phí đúng lúc · không theo dõi xuyên website · lọc trùng lead |
Chạy tất cả: node test/hardening.test.js && node test/evidence.test.js && …
15. XEM DEMO
15.1. Bốn lệnh
cd reconsents-proto
node src/server.js # cửa sổ 1 — máy chủ ở cổng 8787
node seed-demo.js # cửa sổ 2 — dựng dữ liệu nền
RC_DOMAIN_MOCK=1 node seed-dot3.js # cửa sổ 2 — dựng dữ liệu Đợt 3
(Trên Windows: bấm đúp KHOI-DONG.bat.)
15.2. Tài khoản demo — mật khẩu chung matkhau123
| Vào đâu | Là ai | |
|---|---|---|
/app.html | chu@saomai.vn | Chủ doanh nghiệp (đầy đủ nhất) |
/app.html | hoa@saomai.vn | Nhân viên gọi — để thấy chỉ nhìn được lead của mình |
/app.html | dpo@saomai.vn | Phụ trách dữ liệu cá nhân |
/app.html | chu@hoasen.vn | Doanh nghiệp thứ hai — để thấy hai DN không thấy nhau |
/ops.html | admin@reconsents.vn | Vận hành nền tảng |
/partner.html | chu@binhminh.vn | Đối tác phân phối |
/carrier.html | doisoat@nhamang.vn | Cán bộ đối soát nhà mạng |
15.3. Kịch bản đi demo 12 phút
/widget.html— bấm Đồng ý như một người khách. Nhận mã bằng chứng./verify.html— dán mã. Xem sự thật hiện ra. Bấm nút Rút quyền.- Quay lại
/widget.html, thử lại bằng cùng người đó → widget không hiện nữa. Đây là khoảnh khắc thuyết phục nhất. /app.html(chu@saomai.vn) → Tiêu chí kiểm → xem bộ ngưỡng. → Bằng chứng → tải gói kiểm offline.- Chạy
node tools/verify-offline.js <file vừa tải>→ 5 lớp đều xanh, không cần mạng. - Câu chữ đồng ý → thấy 3 biến thể, một cái đã duyệt, một cái bị từ chối.
- Đăng nhập lại bằng
hoa@saomai.vn→ thấy chỉ có lead của Hoa. /carrier.html(doisoat@nhamang.vn) → tải CSV đối soát → thấy nhà mạng có sản lượng và tiền, nhưng không có danh sách khách hàng của ai cả./tinh-trang.html— trang tình trạng công khai.
Bước 3, 5 và 8 là ba bước nên dành thời gian nhất: chúng là ba lời hứa cốt lõi của sản phẩm, và cả ba đều chạy thật.
16. TRẠNG THÁI THẬT — CÁI GÌ THẬT, CÁI GÌ GIẢ LẬP, CÁI GÌ CHƯA CÓ
Mục này viết ra để không ai bị bất ngờ. Đọc kỹ trước khi demo cho người ngoài.
✅ Thật, chạy được ngay
Đăng ký/đăng nhập · 6 vai doanh nghiệp + 5 vai vận hành + 3 vai đối tác + 2 vai nhà mạng · widget đo hiển thị thật · phát hành bằng chứng ký số · sổ 2 tầng + Merkle root + chữ ký · kiểm offline 5 lớp · rút quyền + DNC + van kiểm · tiêu chí kiểm · câu chữ đồng ý · tên miền (TXT thật) · 2FA TOTP · kho tích hợp mã hoá · nhật ký · sao lưu · tính năng & giá · ví + nạp tự động · checklist tự dò · trang tình trạng · hành trình khách realtime + phễu theo chiến dịch · lọc trùng lead · 665 test.
🟡 Giả lập có chủ đích (giao diện đã đóng băng, chỉ chờ bật)
| Phần | Hiện tại | Chờ gì |
|---|---|---|
| Cổng nhà mạng | gate-mock.js ký bằng khoá thử | Kết nối MobiFone thật |
| Nhận diện qua nhà mạng | Adapter dùng cổng giả | Như trên |
| Nhận diện bằng OTP | available: false | Xây giao diện OTP |
| Kênh mời ZNS/SMS brandname | available: false, chỉ có link demo | Pháp chế duyệt |
| Đóng dấu thời gian độc lập | Trả TSA_PENDING | Đơn vị cấp dấu thời gian được cấp phép |
🔴 Chưa làm, đã biết, có tên
- Mã tham chiếu thuê bao theo từng doanh nghiệp — hiện dùng chung một khoá. Phải đổi sang khoá riêng mỗi doanh nghiệp. Đây là thay đổi kiến trúc duy nhất phải làm lại, và càng để lâu càng đắt vì dữ liệu cũ phải chuyển đổi. (Cách làm đã có bản mẫu chạy thật: mã người xem trong
journey.jsđúng là kiểu muối-riêng-từng-merchant cần áp cho mã tham chiếu thuê bao — xem mục 5b.3.) - Đặc tả API cho đối tác (để tổng đài/CRM khác gọi vào từ ứng dụng sẵn có của họ).
- Đặc tả sẵn sàng cho sàn dữ liệu — chứng thư theo lô, xác minh hàng loạt, trường căn cứ pháp lý, chỗ trống cho định danh điện tử của cơ quan nhà nước.
- Hồ sơ an toàn thông tin theo Nghị định 85.
- Sổ tay vận hành (khi hỏng thì làm gì).
- Ba trang web còn lại: cách hoạt động · bằng chứng · giá.
- Nhãn hiệu reConsents (Cục SHTT, nhóm 42 + 35).
⏳ Đang chờ người khác
- Nhà mạng trả lời về cấu trúc tách vai ba hợp đồng (mục 9.1) và tên văn bản quy định mua buôn sản lượng.
- Chốt biểu giá thật thay cho khung tham chiếu ở mục 13.
17. TỪ ĐIỂN THUẬT NGỮ
| Từ | Nghĩa trong tài liệu này |
|---|---|
| Bằng chứng | Bản ghi đầy đủ hoàn cảnh một lượt đồng ý, đã ký số |
| Mã bằng chứng | Chuỗi kiểu CT-3C8149 để tra cứu công khai |
| Mắt xích | Chuỗi mã băm nối các bản ghi — sửa một cái là đứt cả đoạn sau |
| Dấu niêm phong ngày (Merkle root) | Một mã băm đại diện cho toàn bộ bằng chứng của một ngày |
| Gói bằng chứng | File tải về, kiểm được offline 5 lớp |
| Mặt phẳng | Một không gian người dùng tách biệt hoàn toàn (có 5) |
| Mức nhận diện | Nhãn độ mạnh của bằng chứng, 5 bậc |
| Tiêu chí kiểm | Ngưỡng chấp nhận do doanh nghiệp tự đặt |
| Van kiểm trước cuộc gọi | Cửa chặn cuối cùng trước khi quay số |
| DNC | Danh sách không được gọi |
| Tái đồng ý | Mời khách cũ đồng ý lại, đúng luật |
| GHI ≠ CHẤP NHẬN | Nền tảng ghi sự thật; doanh nghiệp chọn ngưỡng chấp nhận |
| Luật Hai Chìa | Bản đồ xuyên doanh nghiệp chỉ vẽ được khi hai bên cùng mở khoá |
| KYB | Thẩm định hồ sơ pháp lý doanh nghiệp |
| DPO | Người phụ trách bảo vệ dữ liệu cá nhân |
| TOTP | Mã 6 số đổi mỗi 30 giây trong ứng dụng xác thực |
18. MỘT CÂU CUỐI
Nếu chỉ được giữ lại một câu trong tài liệu này:
reConsents không bán danh sách khách hàng, không bán cước, không gọi hộ ai. Nó bán một thứ duy nhất: khả năng chứng minh — trước toà, trước cơ quan quản lý, trước chính khách hàng — rằng cuộc gọi này đã được cho phép, bằng một tờ giấy mà chính người phát hành ra nó cũng không sửa được.
CTCP Axion · reConsents v1.1 · 20/08/2026 Tài liệu liên quan: Master Spec · Mô tả nghiệp vụ 12 quy trình · Blueprint cổng ↔ 3C · Khung hồ sơ ĐGTĐ · Phụ lục DPA dự thảo · Nghiên cứu ActiveProspect/TrustedForm