Chương 9 - Chương 9: Lỗi Dữ Liệu Không Tự Sinh Ra
Chương 9: Lỗi Dữ Liệu Không Tự Sinh Ra
Câu hỏi của Chu Mẫn rơi xuống giữa bàn họp như một vật nặng không ai kịp đỡ. Tôi nhìn Hứa Mạn, lần đầu tiên thấy nụ cười quen thuộc trên môi chị ấy mất đi một nhịp rất nhỏ. Không phải hoảng hốt, cũng không phải sợ hãi rõ ràng. Chỉ là một khe hở thoáng qua, đủ để tôi hiểu rằng câu hỏi này không nằm trong phần chị ấy đã chuẩn bị. Từ sáng đến giờ, Hứa Mạn luôn trả lời bằng những câu có đường lui: hiểu nhầm, hỗ trợ, theo hệ thống, xử lý khách hàng lớn. Nhưng “vì sao một yêu cầu khẩn lại cần dùng tài khoản của người chưa vào khu làm việc” không còn là câu có thể dùng cảm xúc để lấp nữa.
Hứa Mạn đặt hai tay lên bàn, giọng nhanh hơn một chút nhưng vẫn cố giữ bình tĩnh. “Quản lý Chu, emergency override vốn dùng để xử lý tình huống khách hàng gấp. Tài khoản nhân sự mới chỉ là target visibility, không phải tài khoản đăng nhập thật. Khi cần kiểm tra owner hiển thị thế nào trên portal, hệ thống có thể dùng một đối tượng test bất kỳ để mô phỏng luồng phân quyền. Tôi không hiểu vì sao mọi người lại diễn giải thành dùng Giang Ninh để gán trách nhiệm.” Chị ấy nói đến chữ “mô phỏng” rất chắc, như thể chỉ cần đổi tên một hành vi thành thuật ngữ kỹ thuật thì phần sắc nhọn của nó sẽ tự cùn đi.
Chu Mẫn không ngắt lời. Chị chờ Hứa Mạn nói hết, rồi mới quay sang La Dương. “Trong reason của override có từ nào là ‘mô phỏng’ không?” La Dương phóng to dòng chữ trên màn hình. Lý do vẫn nằm ở đó, lạnh lẽo và ngay ngắn: “Khách hàng yêu cầu xác nhận rule gấp, dùng tài khoản nhân sự mới để test owner visibility.” Chu Mẫn hỏi tiếp: “Người nhập reason là hệ thống tự sinh hay operator nhập?” La Dương đáp: “Trường reason bắt buộc nhập tay. Console không có template mặc định cho câu này.” Tôi nghe đến đó, trong đầu bỗng hiện lên một câu rất đơn giản: lỗi dữ liệu không tự sinh ra. Một dòng lý do không tự nhảy vào ô trống. Một cái tên cũng không tự bò từ danh sách nhân sự mới sang record khách hàng.
Hứa Mạn lập tức nói: “Nhập tay không có nghĩa là nhập sai mục đích. Lúc đó tôi nhận được thông tin khách hàng muốn xác nhận rule gấp, cần kiểm tra xem nếu chuyển owner thì notification có hiển thị đúng không. Giang Ninh là nhân sự mới trong nhóm, hệ thống đã pre-create tài khoản, chọn em ấy làm đối tượng test không ảnh hưởng gì đến vận hành thực tế.” Tạ Vi ngẩng đầu rất khẽ khi nghe đến hai chữ “trong nhóm”. Tôi cũng ngẩng lên. Sáng nay, tôi còn không biết máy nước ở đâu, cũng chưa được cấp đủ quyền vào portal. Vậy mà trong miệng Hứa Mạn, tôi đã trở thành một “đối tượng test” hợp lý đến mức có thể dùng để mở quyền khẩn cấp cho khách hàng lớn.
Chu Mẫn hỏi: “Thông tin khách hàng muốn xác nhận rule gấp đến lúc nào?” Hứa Mạn đáp ngay: “Trước khi tôi gọi cho Trần Kỳ.” “Kênh nào?” “Điện thoại.” “Có ghi âm, biên bản hoặc ticket khách hàng không?” Hứa Mạn im nửa giây. “Khách hàng lớn không phải lúc nào cũng tạo ticket trước. Nhiều việc phải xử lý nhanh rồi bổ sung sau.” Chu Mẫn gật đầu, không phủ nhận cách làm đó, chỉ nói: “Vậy ta kiểm tra thứ có thời gian trước. La Dương, mở timeline từ 08:40 đến 11:10. Chỉ lấy các hành động liên quan đến B-17, jiangning.temp, VM-BH và emergency override.”
Màn hình chuyển sang bảng timeline. La Dương đọc từng dòng, giọng cẩn thận như sợ chỉ cần đọc nhanh là bỏ sót một vết xước nhỏ. “08:48:13, station B-17 được reserve, requester XuMan, approver XuMan, lý do: onboarding temporary setup. 08:52:06, tạo emergency override ticket, requester xuman.ops, phạm vi VM-BH owner visibility. 08:54:31, ticket được duyệt theo cơ chế single-person emergency approval, approver role là escalation contact. 08:57:09, hệ thống cấp temporary visibility token cho target account jiangning.temp tại station B-17. 09:31:44, trong nhóm dự án, XuMan nhắn không ghi Giang Ninh là owner, để Tạ Vi trước. 10:42, khách hàng gửi contact window cho XuMan. 11:06:22, owner record cập nhật Giang Ninh từ station B-17.” Đến dòng cuối, La Dương dừng lại. Không ai hỏi vì sao. Vì mọi người đều thấy cùng một điều: có những hành động xảy ra trước khi khách hàng gửi file, trước khi tên tôi đáng lẽ được dùng trong bất cứ ngữ cảnh nghiệp vụ nào.
Hứa Mạn hơi nghiêng người về phía màn hình. “Timeline như vậy không chứng minh tôi muốn đẩy trách nhiệm cho Giang Ninh. Ngược lại, tin nhắn 09:31 đã nói rõ không ghi em ấy là owner. Nếu tôi muốn dựng kịch bản từ đầu, tại sao lại nhắn như vậy?” Lần này chị ấy chọn một điểm có vẻ có lợi cho mình. Vài người trong phòng có thể đã nghĩ đến điều đó. Tôi cũng nghĩ. Nhưng vừa nghĩ xong, tôi lại thấy lạnh hơn. Nếu lúc 09:31 Hứa Mạn còn nói không ghi tôi là owner, vậy từ 09:31 đến 11:06 đã xảy ra chuyện gì khiến tên tôi bị đưa vào owner record? Và nếu không phải ngẫu nhiên, thì thứ thay đổi không phải dữ liệu. Thứ thay đổi là ý định của người đang cầm quyền sửa dữ liệu.
Chu Mẫn đặt bút xuống, hỏi rất nhẹ: “Hứa Mạn, lúc 09:31 chị biết Giang Ninh không phải owner. Đến 11:06, owner record lại ghi Giang Ninh. Khoảng giữa hai mốc đó, ai đưa ra quyết định đổi?” Hứa Mạn nhìn chị, giọng thấp xuống: “Tôi đã nói, đây là xử lý khẩn cấp. Tạ Vi là daily owner nhưng rule cần test bằng tài khoản khác để xem hiển thị chuyển giao. Sau khi test, hệ thống có thể tạm lưu trạng thái. Có thể người vận hành chưa rollback kịp.” Tạ Vi khẽ nắm chặt tay. Cô ấy không nhìn Hứa Mạn nữa mà nhìn Chu Mẫn. “Quản lý Chu, từ 08:40 đến sau 11 giờ, em ở kênh dự án. Không ai yêu cầu em test owner visibility, cũng không ai thông báo có trạng thái cần rollback. Nếu có yêu cầu chính thức, em phải là người nhận trước vì lúc đó em vẫn là daily owner.”
Chu Mẫn ghi lại câu đó, rồi hỏi La Dương: “Owner record có phải trạng thái test tự lưu không?” La Dương lắc đầu. “Không. Test visibility dùng sandbox flag, không ghi vào production owner record. Muốn thay đổi owner record production phải có submit action riêng. Dòng 11:06 là submit action, không phải cache.” Phòng họp lại yên. Tôi thấy Hứa Mạn mím môi. Chị ấy đã dùng được nhiều từ: hỗ trợ, mô phỏng, tạm lưu, rollback. Nhưng khi La Dương nói “submit action”, những từ đó đều rơi xuống như giấy mỏng gặp nước. Một lần nữa, hệ thống không nói hộ ai. Nó chỉ chỉ ra ai đã chạm vào đâu, vào lúc nào, bằng quyền gì.
Lúc ấy, tôi nghe giọng mình vang lên, nhỏ nhưng rõ hơn tôi tưởng: “08:57 em chưa có quyền đăng nhập portal.” Mấy ánh mắt quay sang. Tôi đặt tay lên cuốn sổ, cố để giọng không run. “Em nhận tài khoản tạm sau phần ký xác nhận bảo mật. Email cấp quyền đầu tiên gửi đến hòm thư cá nhân của em lúc 09:18, nhưng password tạm được HR đưa sau khi em ký biên bản sử dụng hệ thống. Nếu cần, có thể đối chiếu với log check-in và hồ sơ onboarding. Trước thời điểm đó, em không biết jiangning.temp tồn tại trong portal.” Nói xong, lưng tôi vẫn cứng đờ. Tôi không tố cáo ai. Tôi chỉ nói phần mình biết. Nhưng trong một căn phòng đầy log, phần mình biết cũng có thể là một mảnh ghép.
Chu Mẫn nhìn tôi một giây rồi gật đầu. “Ghi nhận. La Dương, kiểm tra trạng thái account jiangning.temp lúc 08:57.” La Dương gửi thêm truy vấn cho IT Security. Hứa Mạn quay sang tôi, ánh mắt không sắc nhưng nặng. “Giang Ninh, em mới vào, có nhiều quy trình chưa hiểu. Target account không phải đăng nhập cá nhân. Em đừng vì lo lắng mà biến việc kỹ thuật thành nghi ngờ người khác.” Nếu là buổi sáng, có lẽ tôi sẽ cúi đầu xin lỗi vì đã nói chen vào. Nhưng lúc này, tôi chỉ nhìn lại chị ấy. Tôi vẫn sợ. Tim tôi vẫn đập nhanh. Nhưng nỗi sợ đã không còn đủ lớn để bắt tôi tự nuốt câu mình vừa nói.
Phản hồi của IT Security đến sau gần một phút. La Dương mở email, đọc chậm hơn mọi lần: “Tại 08:57, jiangning.temp là HR shell account, trạng thái locked, chưa hoàn tất security acknowledgement. Temporary visibility token được sinh qua emergency override, không phải user login. Token type: borrowed visibility token. Target: jiangning.temp. Initiator role: escalation contact. Attached evidence: VM-BH_contact_window_v2.xlsx.” Cậu dừng lại, kéo xuống phần thông tin file đính kèm. “File này được upload vào ticket lúc 08:53:12.” Chu Mẫn hỏi: “So với file khách hàng gửi lúc 10:42 thì sao?” La Dương mở công cụ so sánh mã băm. Hai chuỗi hiện ra khác nhau hoàn toàn.
Hứa Mạn lập tức nói: “Có thể là bản nháp nội bộ. Contact window có nhiều phiên bản, không lạ nếu hash khác.” Chu Mẫn không phản ứng với chữ “có thể”. Chị chỉ nói: “Mở preview metadata.” La Dương làm theo. Bảng thuộc tính hiện lên trên màn hình. Tên file giống file khách hàng gửi sau đó, nhưng thời gian tạo là 08:51:37, nguồn tạo là máy nội bộ SH-MKT-OPS-23, người sửa cuối cùng hiển thị XuMan. Trong sheet VM-BH, cột daily owner vẫn là Tạ Vi, cột escalation vẫn là Hứa Mạn, nhưng cột new trainee observer không còn trống. Ở đó có ba chữ: Giang Ninh.
Trong khoảnh khắc ấy, tôi không còn nghe rõ tiếng máy lạnh nữa. Tôi chỉ nhìn tên mình nằm trong một file được gọi là bằng chứng khách hàng, được upload trước khi khách hàng gửi file thật, và được dùng để mở một quyền khẩn cấp. Hứa Mạn không nói ngay. Lần im lặng này dài hơn tất cả những lần trước. Chu Mẫn đóng nắp bút, giọng vẫn bình tĩnh nhưng từng chữ đều rất nặng: “Từ thời điểm này, đóng băng toàn bộ record VM-BH, owner history, notification rule, báo cáo tuần và emergency ticket liên quan. Mời HRBP và IT Security duty manager vào phòng họp.” Chị dừng lại, nhìn Hứa Mạn. “Chương trình kiểm tra nội bộ không còn chỉ là xác minh hiểu nhầm dữ liệu nữa.”
La Dương vừa gửi lịch mời khẩn thì màn hình lại báo có phản hồi mới từ Security. Cậu nhìn lướt qua, sắc mặt thay đổi lần thứ hai trong buổi chiều. “Quản lý Chu,” cậu nói, giọng thấp đến mức cả phòng phải im hẳn mới nghe rõ, “Security nói ticket 08:52 còn có một bản sửa lý do lúc 11:04, ngay trước khi owner record được submit. Lý do ban đầu là ‘test visibility’. Lý do sau khi sửa thành ‘new staff has taken over support, urgent customer rule verification’.” Ngón tay tôi siết chặt mép sổ. Hóa ra không chỉ dữ liệu bị sửa. Ngay cả lý do của dữ liệu cũng đã bị sửa, đúng vào lúc tên tôi chuẩn bị bị đẩy lên hàng chịu trách nhiệm.
