Chương 16: Lịch Sử Truy Cập Bắt Đầu Lên Tiếng
Ủng hộ Lăng Kính Truyện
Mở ưu đãi một lần để tiếp tục đọc. Thông báo này chỉ hiện lại sau 4 giờ.
Mở ưu đãi và tiếp tục đọcBa chữ manual_rule_set nằm im trên màn hình như một vật không biết thở, nhưng cả phòng họp lại vì nó mà nín thở. Tôi nhìn vào trường triggered_by thêm vài giây, cảm giác lạnh từ đầu ngón tay bò dọc lên cổ tay. Lúc trước, tôi cứ nghĩ cái đáng sợ nhất là một file được đặt trước mặt mình và một người đứng bên cạnh nói ký đi. Bây giờ tôi mới hiểu, trước khi tờ giấy ấy chạm tới tay tôi, đã có một đường ray được đặt sẵn trong hệ thống. Chữ ký của tôi không phải điểm bắt đầu. Nó chỉ là cái nút cuối cùng để con tàu lao đi.
Lâm Du không lập tức hỏi Hứa Mạn. Chị nhìn Tần Hạo, giọng bình đến mức khiến người nghe càng thấy căng. “Truy audit của manual_rule_set. Phạm vi chỉ gồm rule id, người thao tác, thời điểm, quyền truy cập, điều kiện kích hoạt và lịch sử xem. Không mở nội dung phản hồi khách hàng.” Chu Mẫn tiếp lời ngay, như đóng thêm một vòng khóa quanh câu lệnh. “Xuất read-only. Mọi truy vấn từ giờ phải ghi lại hash. Nếu có dữ liệu ngoài VM-BH hoặc ngoài file acknowledgement, dừng để xin phạm vi mới.”
Hứa Mạn cười một tiếng rất ngắn. “Các chị đang làm như tôi là người duy nhất từng dùng manual rule. Client packager có exception thì tạo rule chờ điều kiện là bình thường. Không thể cứ thấy chữ manual là suy ra có người cố ý.”
“Chưa ai suy ra,” Lâm Du nói. “Chúng tôi đang đọc lịch sử.”
Tần Hạo nhập lệnh. Màn hình chuyển từ pending_transfer sang rule_audit_view. Những dòng chữ xếp lại thành một bảng gọn, nhưng càng gọn càng giống một bản tường trình không biết nói dối. rule_id: VM-BH_ack_hold_GN. module: client_packager.rule_console. created_at: 09:27:48. created_by: xuman.ops. source_workstation: B17-OPS-03. permission_context: escalation_handler. condition: required_signature_user = GN. action_on_condition_met: package_to_client_portal. release_deadline: 11:05.
Tôi nghe Gia Mẫn hít vào rất khẽ bên cạnh. Không ai cần giải thích dòng condition ấy có nghĩa gì. Nó không phải “chờ xác nhận nội bộ”. Nó không phải “template chung”. Nó ghi thẳng tên viết tắt của tôi như người ta đóng một chiếc đinh vào đúng vị trí đã đo trước. Nếu tôi ký, file sẽ không nằm yên trong folder draft nữa. Nó sẽ được đóng gói, gửi đi, rồi trở thành một phần của lịch sử phản hồi khách hàng. Lúc đó, dù tôi có nói mình bị ép ký, hệ thống vẫn sẽ chỉ hiển thị một sự thật lạnh lùng hơn: chữ ký hợp lệ, rule hợp lệ, gửi hợp lệ.
Hứa Mạn đặt hai tay lên bàn. “GN là case owner trong ca đó, hệ thống tự map theo người đang phụ trách ticket. Tôi không ngồi gõ tên em ấy vào rule.”
Tần Hạo không nhìn chị ta. Anh kéo cột input_method sang phải. Một ô nhỏ hiện ra, ngắn tới mức tàn nhẫn: typed_value.
Không khí trong phòng như bị rút bớt một lớp. Hứa Mạn khựng lại đúng nửa nhịp, rồi lập tức nói: “Typed value không có nghĩa là cố ý nhắm vào ai. Khi tạo exception rule, có nhiều trường không auto-fill được. Tôi nhập theo dữ liệu ticket.”
Chu Mẫn hỏi: “Dữ liệu ticket lúc 09:27 đã yêu cầu chữ ký cá nhân của Giang Ninh chưa?”
Tần Hạo chuyển sang inbound_request_log theo đúng phạm vi Chu Mẫn vừa cho phép. Anh chỉ mở metadata: thời điểm, loại yêu cầu, trạng thái đính kèm. Từ 09:00 đến 09:40, VM-BH có một cập nhật trạng thái lúc 09:11 về lỗi owner record, một câu hỏi SLA lúc 09:42, và không có dòng nào là request_acknowledgement, không có attachment yêu cầu chữ ký, không có ticket comment nhắc tên tôi. Hàng chữ no client signature request before 09:40 hiện ra rất bình thường. Chính vì bình thường, nó mới làm lời giải thích của Hứa Mạn trở nên khó đứng vững.
La Dương cúi đầu nhìn hai bàn tay mình. “Tôi không biết có rule này,” anh nói chậm. “Lúc chị Mạn nhắn tôi approve bridge, chị ấy chỉ nói notification bị kẹt. Không nói trước đó đã tạo package chờ chữ ký.”
Hứa Mạn quay sang anh. “Anh không biết vì đó không phải phần của anh. Anh phụ trách owner approval, tôi xử lý escalation. Mỗi người một phần thì mới kịp giờ.”
“Đúng,” Lâm Du nói. “Vì mỗi người một phần nên chúng ta mới phải xem toàn bộ chuỗi.” Chị nhìn Tần Hạo. “Mở access history trước thời điểm 09:27. Chỉ các hành động liên quan đến GN, risk_ack template và client_packager.”
Lần này, bảng hiện ra dài hơn. Tôi không đọc hết ngay được. Những mốc thời gian nối nhau như các dấu chân trên nền gạch ướt: 09:08:12, xuman.ops search user_profile GN. 09:09:03, open notification_status GN. 09:12:44, open template ops_risk_ack_internal.dotx. 09:16:21, access denied rule_packager_write. 09:18:07, create document VM-BH_Onboarding_Risk_Ack_GN.docx. 09:24:10, save to draft. 09:26:55, reopen client_packager.rule_console. 09:27:48, create manual rule VM-BH_ack_hold_GN.
Tôi nhìn dòng access denied lâu hơn những dòng còn lại. Hóa ra trước khi rule được tạo thành công, đã có một lần thử mở quyền viết bị chặn. Không phải hệ thống tự đẩy một người vào luồng có sẵn. Có người đã đi tìm đúng cửa, bị từ chối, rồi quay lại bằng một ngữ cảnh quyền khác. Tôi không biết mình đang giận hay đang sợ. Hai cảm giác ấy trộn vào nhau, nặng và đắng, như ly cà phê nguội bị bỏ quên từ sáng.
Chu Mẫn chỉ vào permission_context. “Vì sao 09:16 bị từ chối, 09:27 lại tạo được?”
Tần Hạo mở chi tiết quyền truy cập. “09:16 chị Hứa Mạn dùng normal_ops role, không có quyền rule_packager_write. 09:26:31 hệ thống chuyển context sang escalation_handler vì ticket VM-BH được đánh dấu emergency_queue. Quyền này cho phép tạo manual rule dạng hold_until_condition, nhưng không cho phép sửa notification state. Vì vậy 09:31 mới cần ops_admin.bridge để chuyển delivered.” Anh dừng lại một chút. “Nói cách khác, rule chờ chữ ký được tạo trước. Bridge delivered được dùng sau để làm điều kiện acknowledgement trông hợp lệ hơn.”
Không ai nói “cố ý”, nhưng câu ấy đã đặt mọi thứ vào đúng thứ tự. Tôi bỗng nhớ lại lúc ở B-17, Hứa Mạn đứng hơi nghiêng phía sau vai tôi, giọng vừa đủ nhỏ để không thành một mệnh lệnh công khai, vừa đủ chắc để tôi thấy mình đang cản đường cả đội. Chị ta nói khách hàng cần người chịu trách nhiệm. Chị ta nói escalation không thể treo mãi. Chị ta không nói rằng ở đâu đó trong hệ thống, một rule đang chờ đúng chữ ký của tôi để tự động gửi file đi.
Gia Mẫn run giọng. “Vậy lúc chị Ninh chưa ký, có ai biết file vẫn chưa gửi không ạ?”
Câu hỏi ấy làm Hứa Mạn nhìn cô rất nhanh. Lâm Du cũng nhìn sang, nhưng ánh mắt chị không trách. Tần Hạo trả lời thay cho tất cả. “Ai có quyền mở pending_transfer hoặc rule status đều thấy status là hold_missing_signature.” Anh kéo xuống phần access_after_created. “09:33:10, xuman.ops view pending_transfer. 09:37:42, xuman.ops view rule status. 10:22:31, xuman.ops view pending_transfer trên workstation B-17. 10:36:58, xuman.ops manual refresh. 10:37:19, manual refresh. 10:37:44, manual refresh.”
Ba lần manual refresh nằm sát nhau như ba tiếng gõ vào cửa. Tôi nhớ 10:38. Nhớ màn hình B-17. Nhớ ô chữ ký sáng lên, nhớ Hứa Mạn nói tôi đừng làm cả team chờ. Thì ra không phải chỉ có người đang chờ ngoài kia. Có cả một tiến trình đang chờ trong hệ thống, và người đứng cạnh tôi biết rất rõ nó đang chờ gì.
Hứa Mạn bật ra: “Tôi refresh để kiểm tra tình trạng package, không có gì sai. Một escalation trước deadline mười một giờ thì ai cũng sẽ refresh liên tục.”
“Refresh không sai,” Chu Mẫn nói. “Vấn đề là chị refresh một package mà chị vừa nói là chỉ chuẩn bị trước, trong khi package đó được cấu hình tự động gửi nếu Giang Ninh ký.”
Hứa Mạn mím môi. Sự sắc bén thường ngày của chị ta vẫn còn, nhưng nó không còn đủ để cắt xuyên qua bảng log đang sáng trên màn hình. Lúc ấy tôi chợt nhận ra vì sao Tần Hạo từng nói người quản trị không chọn phe. Anh không cần chọn. Những dòng truy cập đã tự đứng vào hàng, từng dòng một, và bắt đầu nói thay cho những người sáng nay bị ép phải im.
Lâm Du lật sang trang mới trong biên bản. “Ghi nhận: manual rule được tạo bởi xuman.ops lúc 09:27:48, target condition nhập thủ công là GN, không có yêu cầu chữ ký từ khách hàng trước thời điểm đó. Ghi nhận thêm các lần truy cập pending_transfer và manual refresh trước thời điểm file được đưa cho Giang Ninh ký.” Chị ngẩng lên. “Tần Hạo, kiểm tra access history từ phía target user. Tôi muốn biết hệ thống có ghi nhận Giang Ninh từng xem acknowledgement, rule status hay file preview trước 10:38 không.”
Tôi lập tức ngẩng đầu. “Em chưa từng mở.” Câu ấy bật ra nhanh hơn tôi nghĩ. Có lẽ vì sau quá nhiều dòng log, tôi bắt đầu sợ ngay cả sự im lặng của mình cũng bị hiểu thành chấp nhận. “Trước khi chị Mạn đưa file ở B-17, em không biết có file đó.”
Lâm Du nhìn tôi, giọng dịu đi một chút nhưng vẫn giữ nhịp của phiên xác minh. “Chị biết. Chúng ta kiểm tra để khóa bằng chứng.”
Tần Hạo nhập truy vấn mới. Lần này màn hình chỉ có vài dòng. user: GN. scope: risk_ack, notification_status, file_preview, signature_panel. 09:00 đến 10:38. Tôi nhìn chằm chằm vào vùng trống giữa các cột, tự nhủ nếu không có gì thì chỉ cần một dòng no access là xong. Nhưng hệ thống không trả về một dòng trống.
09:29:11, proxy_view_as GN. object: VM-BH_Onboarding_Risk_Ack_GN.docx. source_module: client_packager.preview. operator: masked_support_viewer. status: success.
Tôi thấy lưng mình cứng lại. Gia Mẫn quay sang nhìn tôi, mắt mở to. La Dương ngẩng phắt đầu. Ngay cả Hứa Mạn cũng không lên tiếng ngay. Dòng đó không nói tôi đã đăng nhập. Nó nói có ai đó đã xem bản preview dưới tư cách của tôi, trước cả khi trạng thái notification bị chuyển delivered, trước cả khi file được đưa tới B-17. Một người đã thử nhìn tờ giấy ấy bằng đôi mắt mà hệ thống gắn tên tôi.
Chu Mẫn hỏi rất khẽ: “Operator bị mask vì lý do gì?”
Tần Hạo mở tooltip, mặt anh cũng trầm xuống. “Support privacy mask. Chỉ hiện khi người thao tác dùng quyền preview thay người dùng cuối. Muốn unmask cần approval của Compliance Lead hoặc Incident Owner.”
Lâm Du nhìn Chu Mẫn. Chu Mẫn không chần chừ, đặt bút xuống cạnh laptop. “Tôi approve trong phạm vi incident VM-BH và acknowledgement GN. Mở tên operator.”
Tần Hạo gõ lệnh xác nhận. Màn hình xoay một vòng tải ngắn ngủi. Tôi nghe tiếng quạt máy trong phòng bỗng rõ hơn tiếng thở của mình. Rồi một cửa sổ cảnh báo hiện ra, không phải tên người, không phải mã nhân sự, mà là một câu khiến tất cả những gì vừa được xếp lại lại nghiêng đi.
Unmask denied. Operator belongs to elevated reviewer group. Secondary authorization required.
Bên dưới, chỉ có một dòng định danh tạm thời được phép hiển thị: reviewer_session_02.
Tôi nhìn dòng ấy, cổ họng khô đến mức không nuốt nổi. Hóa ra trước khi lịch sử truy cập bắt đầu lên tiếng, đã có người bị hệ thống che mặt đứng ở phía sau nó. Và người đó không chỉ biết file tồn tại. Người đó đã từng nhìn nó bằng tên của tôi.
