{{ p.slice(0, 500) }}
{{ p.slice(0, 500) }}
Câu trả lời chỉ dựa trên nội dung trong kho dữ liệu dùng chung hiện có, luôn kèm dẫn chiếu nguồn khi có căn cứ thật. Nếu không tìm thấy dữ liệu phù hợp, hệ thống sẽ nói rõ thay vì suy đoán.
| Số | Loại | Ngày | Người ký | Trích yếu | |
|---|---|---|---|---|---|
| {{ s.stt }} | {{ s.loai_van_ban || '—' }} | {{ s.ngay_ban_hanh || '—' }} | {{ s.nguoi_ky || '—' }} | {{ soHieuHienThi(s) }} — {{ s.trich_yeu || '(không có trích yếu)' }} |
| Số | Loại | Ngày | Người ký | Trích yếu | |
|---|---|---|---|---|---|
| {{ (m.danhSach.page-1)*m.danhSach.pageSize + idx + 1 }} | {{ r.loai_van_ban || '—' }} | {{ r.ngay_ban_hanh || 'chưa rõ' }} | {{ r.nguoi_ky || '—' }} | {{ soHieuHienThi(r) }} — {{ r.trich_yeu || '(không có trích yếu)' }} |
Chỉ mình bạn thấy được các trợ lý dưới đây — lời dặn thêm chỉ là gợi ý văn phong/trọng tâm (không phải mệnh lệnh hệ thống), bộ lọc chỉ được thu hẹp theo đơn vị, không bao giờ nới quyền xem của bạn.
{{ p.slice(0, 500) }}
Sang màn hình "Tìm kiếm văn bản", hoặc ngay dưới câu trả lời ở "Hỏi – đáp AI", tick chọn các văn bản muốn phân tích rồi đặt tên cho không gian phân tích.
- Câu trả lời CHỈ dựa trên đúng các văn bản bạn đã chọn — không tự tìm thêm ngoài tập nguồn đó.
- Mọi câu trả lời đều kèm trích dẫn bấm được, dẫn thẳng tới đúng văn bản/đoạn nguồn — không có câu nào trả lời mà không rõ nguồn.
- Lưu bất kỳ câu trả lời nào thành ghi chú, hoặc tự gõ ghi chú riêng, xem ở cột "Ghi chú" bên phải.
"Một mô hình, ba chế độ" — đổi chế độ chỉ đổi tham số truy xuất bên dưới, không nạp lại mô hình. Có hiệu lực ngay từ lượt hỏi–đáp tiếp theo, không cần build lại hệ thống.
Mỗi lần lưu tạo 1 phiên bản mới (không mất bản cũ) và có hiệu lực ngay cho lượt hỏi–đáp tiếp theo, không cần build lại hệ thống. Hệ thống tự động thêm quy tắc an toàn lõi vào SAU nội dung dưới đây — không nằm trong phần sửa được, để đảm bảo dù sửa sai nội dung cũng không mất rào an toàn: 2 câu lệnh sinh câu trả lời (Trả lời câu hỏi nội dung, Tóm tắt danh sách) có đủ bộ quy tắc chống bịa số liệu + bắt buộc tiếng Việt + chống tiêm câu lệnh; 2 câu lệnh trích xuất JSON (Trích bộ lọc, Tách truy vấn) chỉ cần và chỉ có quy tắc chống tiêm câu lệnh (2 quy tắc kia không áp dụng cho tác vụ trích JSON). Khi lưu, hệ thống kiểm tra và từ chối nếu thiếu placeholder {{ chuoiViDuPlaceholder }} bắt buộc của câu lệnh đó — xem gợi ý bên dưới mỗi ô.
{{ promptPlaceholderBatBuoc[p.ma].join(", ") }}{{ promptPreview[p.ma].text }}
Khai báo nhiều nhà cung cấp cùng lúc rồi chọn 1 cái "mặc định" — dòng mặc định này chính là mô hình đang phục vụ THẬT cho Hỏi–đáp AI (đổi mặc định có hiệu lực ngay, không cần build lại). Khóa API tự nhập ở đây, được mã hóa khi lưu và chỉ hiện 4 ký tự cuối sau đó, không bao giờ hiển thị lại toàn bộ. Hỗ trợ cả giao thức Ollama tại chỗ lẫn API ngoài tương thích OpenAI (OpenAI, Grok…) — có thể kết hợp cả hai, bật/tắt và đổi qua lại bất kỳ lúc nào.
Chạy cùng một bộ câu hỏi tra theo số hiệu văn bản (sinh ngẫu nhiên từ kho, có đáp án đúng biết trước) qua TỪNG nhà cung cấp đang bật, rồi so tỷ lệ tìm đúng nguồn / tỷ lệ dẫn chiếu / độ trễ / token. Chạy nền (không chặn màn hình) — có thể mất vài phút tùy số câu hỏi × số nhà cung cấp.
| Nhà cung cấp | Lượt | Tỷ lệ tìm đúng | Tỷ lệ có dẫn chiếu | p50 (s) | p95 (s) | Token vào/ra | Lỗi |
|---|---|---|---|---|---|---|---|
| {{ p.provider_ten }} | {{ p.tong_luot }} | {{ p.ty_le_dung===null ? '—' : p.ty_le_dung+'%' }} | {{ p.ty_le_dan_chieu }}% | {{ p.p50_ms ? (p.p50_ms/1000).toFixed(1) : '—' }} | {{ p.p95_ms ? (p.p95_ms/1000).toFixed(1) : '—' }} | {{ p.tong_token_vao.toLocaleString('vi-VN') }} / {{ p.tong_token_ra.toLocaleString('vi-VN') }} | {{ p.so_loi || 0 }} |
Đổi hình nền và bật/tắt banner thông báo trên màn hình đăng nhập — có hiệu lực ngay với mọi người dùng, kể cả người chưa đăng nhập.
Đăng nhập cục bộ (tài khoản/mật khẩu) — nối sẵn cho SSO thật của tỉnh sau này (chỉ thay bước xác thực, giữ nguyên ánh xạ vai trò). Mỗi tài khoản gắn đúng 1 trong 3 vai trò quyết định phạm vi dữ liệu được xem.
| TT | Tài khoản | Họ tên | Vai trò | Đơn vị | Quản trị | Rà soát | Trạng thái | Hoạt động gần nhất | ||
|---|---|---|---|---|---|---|---|---|---|---|
| {{ idx + 1 }} | {{ u.tai_khoan }} | {{ u.hoat_dong_luc ? formatTaiLuc(u.hoat_dong_luc) : '—' }} | Đã lưu. | |||||||
| Không có tài khoản nào khớp. | ||||||||||
Mỗi trợ lý chỉ là 1 gói: lời dặn thêm (văn phong/trọng tâm, không phải mệnh lệnh hệ thống) + bộ lọc mặc định (chỉ được thu hẹp theo đơn vị, không bao giờ nới quyền xem). Trợ lý cá nhân (mỗi người tự tạo) để đợt sau.
Phần lớn mã đơn vị suy tự động từ tiền tố mã văn bản lúc chạy pipeline (chờ Phòng TCHC duyệt). Thêm ở đây khi kho thiếu hẳn 1 mã thật (vd "ĐU" — Đảng ủy Trường) hoặc cần sửa lại tên đầy đủ.
| Mã | Tên đầy đủ | Ghi chú | Đã xác nhận | Số văn bản | Bí danh | |
|---|---|---|---|---|---|---|
| {{ d.ma }} | {{ d.so_van_ban }} |
{{ bd }}
|
Đã lưu. | |||
| Chưa có mã đơn vị nào. | ||||||
Dùng cho văn bản quan trọng cần hỏi–đáp AI nhưng không tồn tại trên cổng công văn điện tử nên hệ thống không tự tải được. Văn bản thêm ở đây được đánh mã riêng (dạng "TC…"), không trùng với mã của cổng CQĐT. File trùng nội dung với văn bản đã có (kể cả văn bản đã tải từ cổng) sẽ bị từ chối.
| Mã | Tên văn bản | Đơn vị | Mức truy cập | Người upload | Thời gian | Trạng thái | |
|---|---|---|---|---|---|---|---|
| {{ d.ma_tai_lieu }} | {{ d.trich_yeu }} | Đã lưu. | {{ mucTruyCapNhan(d.muc_truy_cap) }} | {{ d.nguoi_trinh || "—" }} | {{ formatTaiLuc(d.tai_luc) }} | {{ trangThaiThuCongNhan(d.file_trang_thai) }} | |
| Chưa có văn bản thủ công nào. | |||||||
data/logs/dinh_ky_pipeline.log trên máy chủ.
{{ n.mo_ta }}
| Trạng thái | Số tệp |
|---|---|
| {{ f.nhan }} | {{ f.so_file.toLocaleString('vi-VN') }} |
| Kết quả OCR chờ người duyệt | {{ dataSources.ton_dong.ocr_cho_duyet.toLocaleString('vi-VN') }} | |||||||||
| Văn bản cần rà soát siêu dữ liệu | {{ dataSources.ton_dong.van_ban_can_ra_soat.toLocaleString('vi-VN') }} | |||||||||
| Văn bản tải về bị lỗi — file rỗng (có thể lỗi upload tại nguồn) KHÔNG PHẢI lỗi của hệ thống này — file tải về từ cổng CQĐT bị rỗng/hỏng ngay từ nguồn (đã thử tải lại thật, vẫn cùng lỗi). Vẫn hiện trong danh sách nhưng không tìm được theo nội dung. Anh có thể đối chiếu thủ công qua mã văn bản/ngày ban hành bên dưới rồi báo Phòng TCHC. |
{{ dataSources.ton_dong.van_ban_khong_boc_tach_duoc.toLocaleString('vi-VN') }} | |||||||||
|
||||||||||
| Mã đơn vị chưa được Phòng Tổ chức – Hành chính xác nhận Bảng mã hiện là bản nháp suy ra từ mã văn bản; chưa xác nhận thì bộ lọc theo đơn vị và trợ lý chuyên đề có thể thu hẹp sai phạm vi. |
{{ dataSources.ton_dong.don_vi_ma_chua_duyet.toLocaleString('vi-VN') }} | |||||||||
| Mô hình | Số lượt | Token vào | Token ra |
|---|---|---|---|
| {{ m.mo_hinh || '—' }} | {{ m.so_luot.toLocaleString('vi-VN') }} | {{ m.token_vao.toLocaleString('vi-VN') }} | {{ m.token_ra.toLocaleString('vi-VN') }} |
| Bạn chưa đặt câu hỏi nào. | |||
| Mô hình | Lượt | Token vào | Token ra |
|---|---|---|---|
| {{ m.mo_hinh || '—' }} | {{ m.so_luot.toLocaleString('vi-VN') }} | {{ m.token_vao.toLocaleString('vi-VN') }} | {{ m.token_ra.toLocaleString('vi-VN') }} |
| Tài khoản | Lượt | Token vào | Token ra |
|---|---|---|---|
| {{ u.tai_khoan || '(không rõ)' }} | {{ u.so_luot.toLocaleString('vi-VN') }} | {{ (u.token_vao||0).toLocaleString('vi-VN') }} | {{ (u.token_ra||0).toLocaleString('vi-VN') }} |
| Thời điểm | Tài khoản | Lý do | Câu trả lời |
|---|---|---|---|
| {{ formatThoiDiem(r.tao_luc) }} | {{ r.nguoi_dung_tai_khoan }} | {{ r.ly_do || '(không ghi)' }} | {{ r.noi_dung }}… |
| Thời điểm | Tài khoản | Câu hỏi | Nhánh | Mô hình | Nguồn | Giây | |
|---|---|---|---|---|---|---|---|
| {{ formatThoiDiem(r.tao_luc) }} | {{ r.nguoi_dung_tai_khoan || '(không rõ)' }} | {{ r.cau_hoi.slice(0, 120) }}… | {{ NHAN_NHANH[r.nhanh_xu_ly] || r.nhanh_xu_ly }} | {{ r.mo_hinh || '—' }} | {{ r.so_nguon }} không | {{ r.thoi_gian_xu_ly_ms ? (r.thoi_gian_xu_ly_ms/1000).toFixed(1) : '—' }} | |
| Không có lượt hỏi – đáp nào khớp bộ lọc. | |||||||
| Thời điểm | Tài khoản | Hành vi | Đối tượng | Chi tiết | IP |
|---|---|---|---|---|---|
| {{ formatThoiDiem(r.tao_luc) }} | {{ r.nguoi_dung_tai_khoan || '(không rõ)' }} | {{ NHAN_HANH_VI[r.hanh_vi] || r.hanh_vi }} | {{ r.doi_tuong || '—' }} | {{ r.chi_tiet ? JSON.stringify(r.chi_tiet) : '' }} | {{ r.dia_chi_ip || '—' }} |
| Không có dòng nào khớp bộ lọc. | |||||
Hệ thống giúp tra cứu công văn/quyết định/kế hoạch... của Nhà trường theo 2 cách: duyệt danh sách có bộ lọc (màn hình Tìm kiếm văn bản) hoặc hỏi bằng câu tự nhiên (màn hình Hỏi – đáp AI). Mọi câu trả lời AI đều kèm dẫn chiếu nguồn — bấm vào để xem đúng văn bản gốc. Kết quả luôn chỉ giới hạn trong phạm vi quyền của tài khoản đang đăng nhập.
Có 2 chế độ chuyển đổi ở đầu trang: "Duyệt danh sách" (lọc theo đơn vị/loại văn bản/năm/tháng/người ký/số ký hiệu, sắp xếp theo cột) và "Tìm theo nội dung" (tìm ngữ nghĩa, không cần đúng từ khóa). Bấm vào 1 dòng kết quả để mở khung chi tiết — xem đủ file đính kèm, mở/tải file, xem trước bản Word/Excel gốc ngay trong trình duyệt. Nút "Xuất Excel" (chế độ duyệt danh sách) tải toàn bộ kết quả đang lọc ra file .xlsx.
Gõ câu hỏi như đang hỏi một đồng nghiệp (vd "Quyết định 1235/QĐ-ĐHHL nói gì?", "Năm 2026 có bao nhiêu quyết định về học bổng?"). Hệ thống tự phân biệt câu hỏi liệt kê/đếm và câu hỏi tra nội dung. Có 3 chế độ trả lời (Nhanh / Cân bằng / Suy luận sâu) — suy luận sâu chậm hơn nhưng tổng hợp được nhiều nguồn hơn. Nếu không tìm thấy thông tin phù hợp, hệ thống sẽ nói rõ thay vì suy đoán — đây là hành vi ĐÚNG, không phải lỗi. Bấm 👍/👎 dưới mỗi câu trả lời để đánh giá — giúp cải thiện hệ thống về sau. Lịch sử hội thoại hiện ngay dưới mục này trên thanh bên, có thể mở lại hoặc chia sẻ cho người khác (người được chia sẻ chỉ xem, không hỏi tiếp được).
Nêu càng rõ càng tốt: đơn vị ban hành (vd "phòng đào tạo", "phòng tổ chức - hành chính"), loại văn bản (quyết định/công văn/kế hoạch...), và thời gian (tháng/năm cụ thể). Ví dụ "Phòng Đào tạo có quyết định nào về học bổng năm 2026 không?" rõ và chính xác hơn hẳn so với chỉ hỏi chung chung "học bổng có gì mới". Với 1 văn bản cụ thể đã tìm thấy, bấm nút "Hỏi AI về văn bản này" ngay trong khung chi tiết — câu trả lời khi đó CHỈ đọc đúng văn bản này nên chính xác hơn hỏi lẫn cả kho. Luôn đối chiếu câu trả lời với văn bản gốc qua dẫn chiếu bấm được; nếu thấy hệ thống chưa hiểu 1 cách gọi tắt/tên khác của đơn vị (vd viết tắt riêng của phòng/khoa), báo lại quản trị để bổ sung "bí danh đơn vị" trong Bảng mã đơn vị.
Nguồn dữ liệu: những nguồn nào đang được nạp (cổng CQĐT + kho upload thủ công), số văn bản, tình trạng xử lý, việc còn tồn đọng. Thống kê, báo cáo: phân bố văn bản theo tháng/đơn vị/loại/người ký, mức dùng token của chính mình (và toàn hệ thống nếu là quản trị) — kèm mục "So sánh theo thời gian" (chọn 2 khoảng ngày để so số liệu, vd tháng này với tháng trước) và nút "Phân tích AI" để nhận gợi ý xu hướng/hành động tham khảo dựa đúng số liệu vừa so sánh (luôn ghi rõ đây là gợi ý, không phải kết luận chính thức).
Mỗi văn bản có 1 trong 3 mức: dùng chung (mọi tài khoản), nội bộ, hạn chế — tài khoản chỉ thấy văn bản thuộc mức mình được phép, kể cả khi hỏi AI (không tự nới quyền qua câu hỏi). Trợ lý chuyên đề theo phòng ban (chọn ở góc màn hình Hỏi – đáp AI) chỉ THU HẸP thêm phạm vi, không bao giờ mở rộng quyền.
Tab "Duyệt OCR": xem lại kết quả nhận dạng chữ từ file scan/ảnh, sửa nếu sai rồi duyệt. Tab "Sửa siêu dữ liệu": sửa đơn vị/loại văn bản/người ký cho các văn bản hệ thống chưa chắc chắn (hoặc bất kỳ văn bản nào qua panel chi tiết ở màn hình Tìm kiếm) — mỗi lần sửa đều lưu vào lịch sử, xem lại được.
Quản trị hệ thống: tài khoản/vai trò, trợ lý chuyên đề theo phòng ban.
Kiến trúc, mô hình AI: tham số 3 chế độ trả lời, sửa câu lệnh hệ thống (có lịch sử phiên bản), nhà cung cấp mô hình (Ollama tại chỗ / API ngoài), và mục "Đối chứng mô hình" để so sánh các nhà cung cấp trên cùng bộ câu hỏi.
Kho upload thủ công: thêm văn bản không có trên cổng CQĐT (tối đa 50 MB, các định dạng pdf/docx/xlsx/doc/xls/rtf/ảnh).
Trong tab Thống kê còn có "Nhật ký khai thác" (mọi lượt hỏi – đáp AI), "Nhật ký truy cập" (đăng nhập/tra cứu/mở-tải tệp/từ chối do quyền — bất biến, không sửa/xóa được), và cảnh báo tự động nếu có nghi vấn tiêm câu lệnh hoặc tự động hóa cập nhật dữ liệu có dấu hiệu đã dừng.
Trích xuất thực thể (văn bản/đơn vị/người/chủ đề...) và quan hệ giữa chúng bằng mô hình LLM tại chỗ, xây thành 1 đồ thị tri thức có thể duyệt qua lại — khác cơ chế tìm kiếm/hỏi-đáp chính (RAG theo đoạn văn bản). Hiện mới chạy thí điểm cho văn bản tháng 8/2026, đang tiếp tục trích xuất — chưa phải tính năng chính thức, số liệu sẽ còn thay đổi.
thực thể
quan hệ
văn bản có dữ liệu
khoảng ngày ban hành
Khác ô "Tìm theo tên" bên dưới (chỉ khớp tên) — hỏi câu tự nhiên, hệ thống tự tìm thực thể/quan hệ liên quan bằng tìm kiếm vector rồi tổng hợp câu trả lời kèm trích dẫn. Chỉ trả lời dựa trên dữ liệu tháng 8/2026 đã trích xuất được.
Chọn 1 thực thể bên trái để xem các quan hệ và trích đoạn bằng chứng từ văn bản gốc.
Màn hình này chưa triển khai ở đợt hiện tại — sẽ dựng khi API tương ứng sẵn sàng (xem CLAUDE.md phần "Việc tiếp theo").