Ứng dụng Node.js thuần, không cần cài thêm thư viện, chạy trong máy hoặc mạng nội bộ. Bản 5.0 là bản chính thức đưa vào chạy lâu dài, đã rà soát tổng thể và trực quan hóa các tiện ích mở rộng.
Muốn nhờ AI (Claude hoặc trợ lý khác) tiếp tục nâng cấp một phần của hệ thống này sau này? Đưa cho AI đó tệp HUONG-DAN-CHO-AI.md (nằm cạnh tệp này) trước tiên, kèm theo mô tả cụ thể muốn sửa gì. Tệp đó viết riêng cho AI, giúp định hướng nhanh thay vì phải tự dò toàn bộ mã nguồn.
Tệp này (HUONG-DAN.md) là tài liệu gốc, đủ dùng cho phần lớn công việc hàng ngày. Các tính năng lớn thêm sau, cần bước bật riêng hoặc phức tạp hơn, có tệp hướng dẫn riêng, liệt kê dưới đây theo đúng thứ tự nên đọc khi cần:
HUONG-DAN-NHOM-LAM-THOI.md: phân quyền theo thời gian (kéo thả tài khoản vào nhóm có hạn), và giới hạn đọc theo bộ sưu tập, loại tài liệu.HUONG-DAN-NHAP-HANG-LOAT-EXCEL.md: nhập hàng loạt hồ sơ kèm tệp PDF từ một tệp Excel biên mục.HUONG-DAN-TONG-LUAN-TUYEN-VAN-DE-AI-NGOAI.md: viết tổng quan theo tuyến vấn đề, có thể nối AI ngoài.HUONG-DAN-BO-LOC-CHAN-VA-TRI-THUC-DON-VI.md, HUONG-DAN-CHATBOT-TRANG-CHU.md: chatbot trang chủ và tri thức riêng từng đơn vị.HUONG-DAN-CONG-KHAI-KHACH-THEO-NHOM.md, HUONG-DAN-XEM-THU-KHACH.md: mở/đóng cửa sổ đọc công khai cho khách vãng lai.HUONG-DAN-KHAO-SAT.md: công cụ khảo sát bạn đọc.HUONG-DAN-PHAN-LOAI-TAI-LIEU-IN.md: thủ thư phân loại, tạo ký hiệu xếp giá cho tài liệu in.HUONG-DAN-THU-PHI-DOC.md: thu phí đọc tài liệu qua mã QR ngân hàng.HUONG-DAN-TIM-KIEM-THONG-MINH.md: cách thanh tìm kiếm gộp nhiều nguồn hoạt động.HUONG-DAN-CHE-DO-KEP.md, HUONG-DAN-VI-TRI-TRANG-CHU-VA-DON-VI.md: tùy biến hiển thị trang chủ.HUONG-DAN-MOT-NOI-DANG-NHAP.md, HUONG-DAN-BAT-TAT-BIEU-MAU-VA-DANG-NHAP.md, HUONG-DAN-QUEN-MAT-KHAU-TOI-CAO.md: đăng nhập, mật khẩu, khóa một nơi đăng nhập.HUONG-DAN-PHAN-ANH.md: bạn đọc phản ánh, góp ý.HUONG-DAN-SUA-BAO-HET-LUOT.md, HUONG-DAN-SUA-TIM-CUM-NGOAC-KEP.md, HUONG-DAN-SUA-TIM-NGOAC-DSPACE-TRUC-TIEP.md: ghi chú sửa lỗi cụ thể, chỉ cần đọc nếu gặp đúng lỗi được nêu tên.Mục "Trung tâm học liệu AI" (BẢN 5.2), "Cấu hình AI ngoài dùng chung" (BẢN 5.3), và "Cán bộ phụ trách đơn vị" (BẢN 5.5) ở cuối tệp này là các tính năng mới nhất, cách bật và dùng nằm ngay trong tệp gốc này, không cần mở thêm tệp nào khác.
node server.js (đổi cổng: node server.js 8080).node server.js boc-kho bóc chữ các tệp PDF chưa gắn hồ sơ vào kho đối chiếu; node server.js bien-muc "Nhóm" "Khoa" biên mục tự động tệp có sẵn thành hồ sơ chờ duyệt.Gõ lệnh trong Command Prompt mỗi lần muốn chạy khá mất công. Có ba mức tiện lợi hơn, chọn mức phù hợp:
Mức 1: Bấm đúp thay vì gõ lệnh. Vào thư mục hệ thống, bấm đúp chay.bat. Tệp này tự kiểm tra hệ thống đã chạy sẵn chưa: nếu đã chạy thì chỉ mở trình duyệt, không khởi động lại; nếu chưa thì tự khởi động trong một cửa sổ riêng rồi mở trình duyệt. Muốn dừng, đóng đúng cửa sổ có tên "APAG-TuLieuSo" (không phải cửa sổ chạy chay.bat, cửa sổ đó tự đóng sau vài giây), hoặc chạy dung.bat.
Mức 2: Đưa lối tắt ra màn hình. Chuột phải vào chay.bat, chọn Gửi tới (Send to), Desktop (create shortcut). Đổi tên lối tắt thành "APAG-TuLieuSo" nếu muốn. Từ nay chỉ cần bấm đúp icon trên màn hình.
Mức 3: Tự khởi động cùng Windows, không cần tự tay làm gì nữa. Dùng Task Scheduler (Windows có sẵn, không cần cài thêm):
1. Mở Task Scheduler (gõ vào ô tìm kiếm Windows).
2. Chọn Create Task (không phải Create Basic Task, để có đủ tùy chọn).
3. Tab General: đặt tên ví dụ "APAG-TuLieuSo tu khoi dong". Tích "Run whether user is logged on or not" nếu muốn chạy cả khi chưa đăng nhập Windows; tích "Run with highest privileges".
4. Tab Triggers: New, chọn "At startup" (khi máy khởi động). Có thể thêm một trigger nữa "At log on" để chắc chắn.
5. Tab Actions: New, Program/script chọn wscript.exe, Add arguments điền đường dẫn đầy đủ tới chay-an.vbs, ví dụ "D:\tulieuso\bieu-mau-luan-van\chay-an.vbs". Tệp này chạy hoàn toàn ẩn, không hiện cửa sổ đen nào khi khởi động máy.
6. Tab Settings: bỏ tích "Stop the task if it runs longer than", vì hệ thống cần chạy liên tục.
7. Lưu lại. Từ nay mỗi lần bật máy chủ, hệ thống tự chạy sẵn, không cần tự tay kích hoạt lại nữa. Muốn dừng khi cần (ví dụ trước khi thay bản mới), chạy dung.bat.
Ba tệp chay.bat, dung.bat, chay-an.vbs nằm cạnh server.js. Cả ba tự dò đúng thư mục chứa chính nó, sao chép nguyên cụm ba tệp này đi đâu cũng chạy đúng, không cần sửa đường dẫn bên trong.
Lưu ý riêng cho mức 3: nếu đặt xong mà hệ thống không tự chạy, rất có thể do Task Scheduler không tìm thấy lệnh node (một số máy giới hạn đường dẫn khi chạy nền). Cách sửa: mở chay-an.vbs bằng Notepad, đổi dòng cuối shell.Run "node server.js", 0, False thành đường dẫn đầy đủ tới node.exe, ví dụ shell.Run """C:\Program Files\nodejs\node.exe"" server.js", 0, False (tìm đường dẫn thật bằng lệnh where node trong Command Prompt).
/ trang chủ: chọn nhóm gửi nộp, kiểm tra nhanh trùng tên, thống kê, bảng vinh danh người tặng, đếm lượt truy cập, chatbot hỗ trợ./bieu-mau?nhom=... biểu mẫu gửi nộp từng nhóm./sheet bảng dữ liệu, kiểm duyệt, cài đặt./kiem-ten kiểm tra trùng tên cho cán bộ, kèm quét nguồn ngoài./kiem-tra-lap kiểm tra trùng toàn văn cho cán bộ, kèm hàng đợi người học chờ xác nhận./kiem-trung khu người học tự nộp tài liệu chạy kiểm tra trùng lặp./tri-thuc quản trị tri thức chatbot.Trang chủ có 6 thẻ chính và các liên kết phụ:
1. Người học gửi nộp: khóa luận, luận văn, luận án, đề án, bài báo, đề tài của người học.
2. Viên chức, giảng viên gửi nộp: tài liệu nội sinh, tài liệu xuất bản với tổ chức bên ngoài. Dưới thẻ có liên kết Viên chức, giảng viên tặng tài liệu số cho thư viện.
3. Chương trình, đề cương.
4. Đề tài nghiên cứu khoa học.
5. Kỷ yếu hội thảo, tọa đàm và bài viết khoa học.
6. Phòng tư liệu số các khoa: chọn Loại tài liệu ở đầu biểu mẫu; ngoài văn bản còn nhận đủ các loại học thuật như nhóm 2, 3, 4, 5; biểu mẫu tự thích ứng theo loại.
Liên kết phụ: Bạn đọc tặng tài liệu (bắt buộc đính kèm tệp bản điện tử, chọn Người tặng là ai; người tặng được ghi nhận trên bảng vinh danh trang chủ sau khi duyệt); Bạn đọc đề nghị mua (nhận tệp danh sách xlsx, docx, pdf; hệ tự gửi email cho cán bộ nếu đã cấu hình SMTP); Người học tự nộp kiểm tra trùng lặp.
Các nhóm học thuật có ô Phân loại học liệu (Học liệu bắt buộc, Học liệu tham khảo) phục vụ danh mục học liệu.
Ở góc dưới bên phải mỗi biểu mẫu có nút Quản trị biểu mẫu. Tài khoản quản trị toàn quyền đăng nhập vào đây để chọn ẩn hoặc hiện từng trường cho từng nhóm biểu mẫu: chọn nhóm, bỏ tích các trường muốn ẩn, bấm Lưu cấu hình. Người nộp sẽ thấy biểu mẫu cập nhật khi tải lại trang. Các trường lõi bắt buộc như họ tên, tên đề tài, tệp toàn văn được giữ hiện, không cho ẩn để tránh hỏng biểu mẫu. Cấu hình lưu trong tệp cau-hinh.json, thuộc nhóm dữ liệu cần giữ khi cập nhật phiên bản.
Trang chủ có khối Danh mục luận văn, luận án đã công bố với ba nút: Xem tất cả, Luận văn, Luận án. Bạn đọc bấm vào để mở trang danh mục công khai, xem danh sách tài liệu đã kiểm duyệt, sắp mới nhất lên đầu, không cần đăng nhập. Trang danh mục có bốn nút lọc chính: Tất cả, Khóa luận, Luận văn, Luận án. Khi chọn Luận án, hiện thêm thanh lọc con theo tiêu chí: Tất cả luận án, Bảo vệ tại Học viện (luận án do người học của Học viện bảo vệ, thuộc nhóm Người học gửi nộp), Của giảng viên Học viện (luận án do giảng viên Học viện là tác giả, thuộc nhóm Viên chức, giảng viên gửi nộp). Trang có ô tìm theo tên đề tài, tác giả, chuyên ngành, và lọc theo khoa. Bảng danh sách có cột Đọc trực tuyến ở cuối: tài liệu có tệp toàn văn và được tác giả cho phép phục vụ thì hiện nút Đọc, bấm là mở bản đọc trực tuyến ngay trên trình duyệt; tài liệu có thêm tệp tóm tắt thì có nút Tóm tắt; tài liệu tác giả không cho phép phục vụ thì ghi Không phục vụ; tài liệu chưa đính kèm tệp thì ghi Chưa có tệp. Ngoài ra mỗi khối nhóm tài liệu trên trang chủ có liên kết Xem danh mục đã công bố để mở danh sách công khai của riêng nhóm đó. Trang này phục vụ công bố trên web cho bạn đọc tra cứu, khác với công cụ kết xuất Excel dành cho cán bộ trong bảng dữ liệu.
Công cụ kết xuất Excel danh mục cho cán bộ, mở bằng nút Danh mục LV, LA trên thanh tiêu đề bảng dữ liệu, cũng có đủ các nút lọc tương ứng: Tất cả, Khóa luận, Luận văn, Luận án, kèm hai tiêu chí con luận án là Bảo vệ tại Học viện và Của giảng viên Học viện. Tiêu đề tệp Excel đổi theo lựa chọn, ví dụ DANH MỤC KHÓA LUẬN, DANH MỤC LUẬN ÁN BẢO VỆ TẠI NHÀ TRƯỜNG, DANH MỤC LUẬN ÁN CỦA GIẢNG VIÊN NHÀ TRƯỜNG.
Biểu mẫu Người học gửi nộp có sáu loại tài liệu: Khóa luận, Luận văn thạc sĩ, Đề án thạc sĩ, Luận án tiến sĩ, Đề tài NCKH người học, Bài báo. Trường tệp toàn văn và tệp tóm tắt nhận tệp cho tất cả các loại này. Nhãn của hai trường tệp tự đổi theo đúng loại mà người nộp chọn, ví dụ chọn Khóa luận thì nhãn thành Tệp toàn văn khóa luận, chọn Đề án thạc sĩ thì thành Tệp toàn văn đề án. Khi chưa chọn loại, nhãn ghi đủ Tệp toàn văn khóa luận, luận văn, đề án, luận án để người nộp biết trường này dùng chung cho các loại. Đề án thạc sĩ được xếp cùng nhóm luận văn khi lọc danh mục, vì cùng trình độ thạc sĩ.
Trình xem trực tuyến không hiển thị tên tệp thật nữa. Thanh tiêu đề chỉ hiện mã hồ sơ và tên đề tài, ví dụ HS-0001 và tên đề tài của tài liệu. Tooltip cũng vậy. Nhờ đó bạn đọc không biết quy ước đặt tên tệp trong kho, không thấy đuôi tệp, giảm khả năng dò tìm tệp gốc. Riêng cán bộ đã đăng nhập, khi gặp lỗi không tìm thấy tệp, hệ mới gợi ý tên tệp để đối chiếu thư mục.
Tài khoản kiểm duyệt có thể chọn nhiều hồ sơ khóa luận, đề án, luận văn, luận án rồi đặt cho đọc hoặc không cho đọc trực tuyến tại trang công khai, thay vì sửa từng hồ sơ.
Cách làm: vào bảng dữ liệu, mỗi dòng thuộc bốn loại trên có một ô tích nhỏ ở cột số thứ tự. Ngay trên đầu cột số thứ tự có một ô tích tổng: bấm một cái là chọn toàn bộ hồ sơ đang lọc, bấm lần nữa là bỏ chọn hết. Ô tích tổng tự đồng bộ với các dòng: chọn tay đủ hết thì nó sáng, còn chọn một phần thì nó hiện mờ để báo đang chọn dở. Ngoài ra trình đơn cũng có mục Chọn tất cả khóa luận, đề án, luận văn, luận án cho cùng mục đích. Khi có hồ sơ được chọn, một thanh công cụ hiện ở đáy bảng, ghi số hồ sơ đang chọn kèm ba nút: Cho đọc trực tuyến, Không cho đọc, Bỏ chọn. Bấm nút cần dùng rồi xác nhận là xong.
Kết quả áp dụng ngay tại trang danh mục công khai: hồ sơ được cho đọc sẽ hiện nút Đọc để bạn đọc mở bản đọc trực tuyến, hồ sơ không cho đọc sẽ ghi Không phục vụ. Thao tác này ghi vào cột Cho phép phục vụ, đúng cột mà hệ vẫn dùng để quyết định quyền đọc, nên nhất quán với các phần khác. Hồ sơ ngoài nhóm mà tài khoản được phân quyền duyệt sẽ tự động bị bỏ qua và hệ báo lại số lượng bỏ qua. Kết hợp bộ lọc theo loại hoặc theo khoa trước khi chọn tất cả sẽ giúp đặt quyền đúng phạm vi mong muốn.
Chức năng này chỉ dành cho tài khoản quản trị toàn quyền là quantri@apag.edu.vn. Vào bảng dữ liệu, mở trình đơn Công cụ, chọn mục Bộ sưu tập và giới hạn đọc đồng thời.
Bộ sưu tập là một nhóm biểu ghi gom theo tiêu chí, gồm nhóm tài liệu, khoa, và loại. Để trống tiêu chí nào thì tiêu chí đó không xét. Ví dụ đặt tiêu chí loại là Luận án tiến sĩ thì bộ sưu tập gồm mọi luận án tiến sĩ. Một biểu ghi thuộc bộ sưu tập đầu tiên khớp tiêu chí, nên thứ tự các bộ sưu tập trong danh sách chính là thứ tự ưu tiên.
Với mỗi bộ sưu tập, quản trị đặt ba giới hạn độc lập, hệ kiểm cả ba và báo lý do cụ thể khi từ chối:
Tối đa cùng đọc cả bộ sưu tập: số tài khoản nhiều nhất được cùng đọc bất kỳ tài liệu nào thuộc bộ sưu tập tại một thời điểm. Ví dụ đặt 20 thì cả bộ sưu tập chỉ phục vụ đồng thời 20 người.
Tối đa cùng đọc mỗi loại tài liệu: số tài khoản nhiều nhất được cùng đọc trong phạm vi một loại tài liệu thuộc bộ sưu tập. Ví dụ bộ sưu tập gồm cả luận văn và luận án, đặt 5 thì luận văn phục vụ tối đa 5 người cùng lúc, luận án cũng 5 người cùng lúc, hai loại đếm riêng.
Tối đa cùng đọc mỗi tệp, tức mỗi bitstream: số tài khoản nhiều nhất được cùng đọc một tệp cụ thể. Điểm quan trọng: một biểu ghi thường có hai bitstream là tệp toàn văn và tệp tóm tắt, và hai tệp này được tính riêng. Đặt 1 thì mỗi tệp chỉ một người đọc một lúc, giống mượn bản in, nhưng người khác vẫn đọc được bản tóm tắt của chính biểu ghi đó.
Đặt số 0 nghĩa là không giới hạn ở mức đó.
Nhóm tài khoản: quản trị lập các nhóm, mỗi nhóm có tên và danh sách email. Trong mỗi bộ sưu tập, tích chọn nhóm nào thì giới hạn chỉ áp cho thành viên nhóm đó; không tích nhóm nào thì áp cho mọi tài khoản. Nhờ vậy có thể siết bạn đọc thường mà vẫn để giảng viên đọc tự do.
Phút giữ phiên: sau khoảng thời gian này mà tài khoản không tải thêm nội dung, hệ tự nhả chỗ cho người khác. Mặc định 10 phút. Mỗi lần tải nội dung, phiên được gia hạn, nên người đang đọc không bị mất chỗ.
Người có quyền kiểm duyệt hồ sơ không bị tính vào giới hạn, để cán bộ luôn xử lý được công việc.
Mục Phiên đang đọc cho quản trị xem ai đang đọc tài liệu nào, thuộc bộ sưu tập nào, còn bao nhiêu giây. Nút Giải phóng tất cả xóa mọi phiên khi cần mở khóa nhanh.
Nếu khi chạy máy chủ báo lỗi không tìm thấy tệp, ví dụ ENOENT no such file or directory với trang-chu.html, nghĩa là thư mục public bên cạnh server.js thiếu tệp. Máy chủ nay cảnh báo ngay lúc khởi động và ghi rõ thiếu tệp nào, đồng thời khi mở trình duyệt sẽ hiện trang hướng dẫn thay vì để trắng.
Cách xử lý theo thứ tự:
Giải nén lại gói bằng chức năng Extract All của Windows. Không mở tệp thẳng trong cửa sổ nén rồi kéo ra, vì cách này hay bỏ sót tệp lớn.
Giải nén vào thư mục có đường dẫn ngắn, ví dụ D:\tulieuso. Đường dẫn quá dài có thể khiến Windows bỏ qua một số tệp.
Kiểm tra phần mềm diệt vi rút. Tệp xem.html nặng khoảng 2 MB và thư mục pdfjs chứa thư viện đọc PDF, đôi khi bị chặn nhầm. Nếu bị chặn, hãy cho phép thư mục rồi giải nén lại.
Mở địa chỉ /api/tu-kiem-tra trên trình duyệt để xem máy chủ liệt kê chính xác những tệp còn thiếu.
Thư mục public đầy đủ phải có mười tệp html là trang-chu.html, index.html, sheet.html, danh-muc.html, xem.html, kiem-ten.html, kiem-tra-lap.html, nop-kiem-trung.html, tri-thuc.html, bao-cao-lap.html, cùng thư mục pdfjs chứa pdf.min.js, pdf.worker.min.js và pdf.worker.js.
Có nút Danh mục LV, LA ngay trên thanh tiêu đề của bảng dữ liệu, bấm là mở công cụ kết xuất, khỏi vào trình đơn. Công cụ kết xuất một tệp Excel khổ A4 nằm ngang, đầu trang có tiêu đề DANH MỤC LUẬN VĂN, LUẬN ÁN cùng dòng ghi ngày cập nhật và tổng số tài liệu, dùng để đăng công bố trên trang web hoặc in thông báo. Danh mục tự sắp xếp mới nhất lên đầu. Trong hộp có ba nút lọc: Cả hai, Luận văn, Luận án. Chọn Luận văn thì tiêu đề tệp thành DANH MỤC LUẬN VĂN và chỉ gồm luận văn; chọn Luận án thì thành DANH MỤC LUẬN ÁN và chỉ gồm luận án. Các cột gồm số thứ tự, tên đề tài, tác giả, loại, chuyên ngành, người hướng dẫn, năm, khoa. Có thể lọc thêm theo khoa, chỉ lấy tài liệu mới từ một ngày nhất định, hoặc giới hạn số lượng để chỉ lấy các tài liệu mới nhất. Phần xem trước hiển thị số lượng và danh sách mẫu trước khi tải.
Trích xuất theo từng loại ở chân mỗi nhóm tài liệu: khi người kiểm duyệt bấm vào một nhóm tài liệu ở thanh dưới để lọc, phần chân bảng dữ liệu hiện các liên kết trích xuất danh mục theo từng loại tài liệu có trong nhóm đó, kèm số lượng. Bấm một liên kết là tải ngay tệp Excel A4 danh mục của đúng loại đó trong nhóm, tiêu đề tệp lấy đúng tên loại, ví dụ DANH MỤC LUẬN VĂN THẠC SĨ. Cách này giúp công bố nhanh danh mục của từng loại tài liệu cụ thể mà không cần mở hộp và chọn tay.
Người học khi nộp luận văn, luận án thường để trống ô Phân loại học liệu, vì việc xác định một tài liệu là học liệu bắt buộc hay tham khảo thuộc thẩm quyền của khoa, đơn vị, không phải của người nộp. Do đó các tài liệu mới nộp thường chưa được tính vào cột bắt buộc, tham khảo trong thống kê. Đây là điều bình thường.
Cán bộ gán phân loại ngay trong bảng: bấm vào ô ở cột Phân loại học liệu của hồ sơ, một danh sách chọn hiện ra gồm Chưa phân loại, Học liệu bắt buộc, Học liệu tham khảo; chọn giá trị phù hợp, hệ tự lưu và bảng thống kê tự cập nhật ngay. Cột Cho phép phục vụ cũng dùng danh sách chọn tương tự để tránh gõ sai. Nhờ dùng danh sách chọn thay vì gõ tay, giá trị luôn khớp chuẩn nên thống kê chính xác.
Nếu muốn sửa thủ công trực tiếp trong tệp du-lieu.csv (không khuyến khích, dễ sai), giá trị hợp lệ của cột Phân loại học liệu chỉ gồm đúng hai chuỗi: Học liệu bắt buộc hoặc Học liệu tham khảo, để trống nghĩa là chưa phân loại. Gõ sai chính tả hoặc thêm dấu cách thừa sẽ khiến hồ sơ không được đếm.
Mở Cài đặt trong trang bảng dữ liệu, kéo tới khu Kho đối chiếu ngoài. Khu này có bảng thống kê bốn số liệu trực quan (số mục trong kho, số bóc từ tệp, số thu từ web, số tệp chưa gắn hồ sơ) và ba khối công cụ tách bạch:
Nói thẳng về giới hạn: các trang chặn robot như luanvan.moet.gov.vn, tailieu.vn, 123doc sẽ không thu được; nên dùng nguồn cho phép như tạp chí nền tảng OJS và trang của các trường.
Trong trình đơn của bảng dữ liệu có mục Xuất gói nhập DSpace 5.10. Chọn lọc theo nhóm, khoa, loại hình, giai đoạn năm, có kèm tệp toàn văn hay chỉ siêu dữ liệu; bấm là tải một tệp zip theo chuẩn Simple Archive Format kèm siêu dữ liệu Dublin Core. Chỉ gồm hồ sơ đã duyệt. Quyền phục vụ được ánh xạ đúng: hồ sơ cho phép ghi được phục vụ đọc trực tuyến, hồ sơ không cho phép ghi chỉ phục vụ tại chỗ. Trên máy DSpace, giải nén rồi chạy lệnh import trong tệp README kèm theo. Với hàng chục nghìn tệp nên xuất theo từng đợt lọc, ví dụ theo khoa hoặc giai đoạn, để mỗi gói vừa phải.
Xuất tăng dần, không lặp lại tài liệu đã xuất: hộp có tùy chọn Chỉ xuất hồ sơ chưa từng xuất, mặc định bật. Khi bật, hệ ghi nhớ mã các hồ sơ đã xuất ở những lần trước và lần sau chỉ xuất hồ sơ mới thêm, tránh nhập trùng vào DSpace. Phần xem trước cho biết bộ lọc khớp tổng bao nhiêu hồ sơ, trong đó bao nhiêu đã xuất và bao nhiêu mới. Nếu không còn hồ sơ mới, hệ báo rõ để khỏi tạo gói rỗng. Nút Đặt lại lịch sử xuất dùng khi cần tạo lại toàn bộ gói từ đầu, sau khi đặt lại mọi hồ sơ được coi là chưa xuất. Muốn xuất lại toàn bộ một lần mà không đổi lịch sử, chỉ cần bỏ tùy chọn Chỉ xuất hồ sơ chưa từng xuất. Danh sách hồ sơ đã xuất lưu trong tệp da-xuat-dspace.json cạnh server.js, thuộc nhóm dữ liệu cần giữ khi cập nhật phiên bản.
Báo đã xuất tới biểu ghi nào theo từng bộ sưu tập: mỗi bộ tiêu chí lọc, ví dụ một khoa hoặc một loại hình, được coi là một bộ sưu tập riêng. Hệ ghi lại mỗi bộ sưu tập đã xuất mấy đợt và tới biểu ghi có mã cao nhất là bao nhiêu. Khi mở hộp và khi xem trước, hệ hiển thị rõ bộ sưu tập này đã xuất tới biểu ghi nào, đợt gần nhất lúc nào. Nhờ vậy anh luôn biết đã đi tới đâu để tiếp tục cho đúng.
Giới hạn khoảng biểu ghi cho đợt xuất tiếp theo: trong hộp có ô Từ mã và đến mã. Anh nhập ví dụ từ HS-0004 đến HS-0100 thì đợt này chỉ xuất các biểu ghi có mã nằm trong khoảng đó. Để trống nghĩa là không giới hạn. Cách này dùng khi muốn chia kho lớn thành nhiều đợt vừa phải, hoặc xuất tiếp từ đúng chỗ đợt trước dừng. Xem trước luôn cho biết đợt này sẽ xuất từ mã nào đến mã nào, kèm số lượng, để anh kiểm trước khi tải.
Cấu hình trong Cài đặt: máy chủ, cổng, tài khoản, mật khẩu, email gửi đi, email cán bộ nhận đề nghị mua. Dùng cho hai việc: gửi đề nghị mua tài liệu, và gửi kết quả kiểm tra trùng cho người học khi cán bộ xác nhận.
/huong-dan, chính là tài liệu này được dựng thành trang web. Màn hình khởi động của máy chủ nay in đủ bốn địa chỉ: trang chủ kèm tìm kiếm gộp tại /, biểu mẫu /form, bảng dữ liệu /sheet, hướng dẫn /huong-dan.tim-gop.js). Tìm cùng lúc ba nguồn: kho Học viện, kho DSpace và phòng tư liệu các khoa..docx hoặc .doc chép vào kho tep-toan-van (kể cả các thư mục nhóm) được tự chuyển thành PDF cùng tên rồi đi tiếp vào luồng quét, biên mục như thường; bản gốc dời vào thư mục goc-docx nên không mất gì. Bộ canh chạy nền 12 giây một lần, chạy ngay trước mỗi lần bấm Quét kho, hoặc chạy tay bằng node server.js chuyen-docx. Máy chuyển đổi tự dò: có Microsoft Word (chỉ Windows, trung thực định dạng nhất) thì dùng Word, không thì dùng LibreOffice; chưa cài cái nào thì hệ thống báo rõ trong Cài đặt, mục Tự chuyển tệp Word sang PDF, nơi cũng chỉnh được máy chuyển và đường dẫn soffice. Phân hệ Hồ sơ khoa học có cùng tính năng cho kho tep-cong-trinh, chạy tay bằng node server.js chuyen-docx trong thư mục hoso-khoahoc.tep-toan-van được nén nhẹ dung lượng bằng cách hạ độ phân giải ảnh, giúp tải nhanh và tiết kiệm nơi lưu. Chạy nền 18 giây một lần, chậm hơn vòng chuyển đổi để PDF mới sinh kịp ổn định trước khi nén. Cần cài Ghostscript trên máy chạy hệ thống, nếu không có thì bộ nén tự bỏ qua, PDF giữ nguyên chứ không báo lỗi. Chỉnh trong Cài đặt, mục Nén dung lượng PDF trong kho: chọn mức Vừa (ảnh hạ về 150 DPI, hợp đọc màn hình và in thường), mức Mạnh (ảnh hạ về 72 DPI, nhẹ nhất cho lưu trữ và tải nhanh), hoặc Tắt để giữ nguyên. Mặc định là mức Vừa. Nơi này cũng khai được đường dẫn gs nếu cài ở chỗ lạ. Cơ chế an toàn: chỉ giữ bản nén nếu nó thật sự nhỏ hơn bản gốc, nén xong không nhỏ hơn thì bỏ bản nén và để nguyên tệp gốc; mỗi PDF chỉ xử lý một lần, đánh dấu bằng tệp đi kèm đuôi .da-nen để không nén lại. Tải Ghostscript bản Windows tại trang chính thức ghostscript.com, chọn bản AGPL miễn phí. Nói rõ giới hạn: nén mức Mạnh hạ độ phân giải ảnh khá sâu nên hình minh họa và bản scan sẽ mờ hơn; nếu tài liệu cần giữ ảnh nét để in chất lượng cao thì dùng mức Vừa hoặc Tắt.
Hệ thống chỉ đọc thư mục đồng bộ, không bao giờ ghi vào đó, vì ghi vào sẽ đồng bộ ngược lên cloud của khoa. Bấm Nạp kho các khoa ngay (hoặc chạy node server.js nap-khoa) để nạp: tệp PDF được bốc chữ vào kho đối chiếu kiểm trùng và vào chỉ mục tìm kiếm gộp, đọc được ngay trên trình xem bảo mật có dấu chìm; tệp Word được bốc chữ qua bản PDF tạm ngoài thư mục đồng bộ để kiểm trùng, không xem trực tuyến được. Nạp lại không nhân đôi. Trang /phong-tu-lieu-khoa trưng bày toàn bộ phòng tư liệu; trang chủ có khối cùng tên, tắt bật được trong Cài đặt trang chủ.
Từ bị bỏ được loại khỏi cả tử số lẫn mẫu số của phép tính phần trăm, và báo cáo ghi rõ quy tắc đã áp cùng số từ đã loại để minh bạch, tái lập được. Lưu ý phần trăm có thể tăng khi bỏ mục: ví dụ bỏ danh mục tham khảo vốn không trùng thì mẫu số co lại, phần trùng ở thân bài nổi rõ hơn, đó là hành vi đúng của phép đo.
Giới hạn quét từ trang tới trang: nhập ngay trên trang Kiểm tra trùng lặp, ai có quyền chạy đều dùng được vì chỉ thu hẹp phạm vi. Trang ngoài khoảng không vào phép tính.
Phân quyền: tài khoản cán bộ chính luôn được tùy chỉnh quy tắc lúc chạy. Tài khoản kiểm tra phụ mặc định chạy đúng quy tắc quản trị đặt; muốn tùy chỉnh phải được cấp quyền trong bảng tài khoản phụ trên trang Kiểm tra trùng lặp, cột Quyền quy tắc, bấm để cấp hoặc thu. Tài khoản phụ gửi tham số tùy chỉnh khi chưa được cấp thì máy chủ bỏ qua và báo cáo ghi rõ đã chạy theo quy tắc quản trị.
Nguyên tắc an toàn: chỉ đọc, không bao giờ ghi vào CSDL DSpace. Chỉ phục vụ tài liệu DSpace cho phép nhóm Anonymous đọc theo bảng resourcepolicy, kiểm lại quyền ngay trước mỗi lần trả tệp; tài liệu hạn chế hoặc hết hạn chỉ hiện tên kèm link sang DSpace để đăng nhập bên đó. Mật khẩu CSDL lưu trong cau-hinh.json và không bao giờ trả ra API.
Chuẩn bị trên máy DSpace: mở PostgreSQL cho máy này trong pg_hba.conf (dòng host, địa chỉ máy này, md5) và listen_addresses trong postgresql.conf; nên tạo tài khoản chỉ đọc riêng: CREATE USER apag_doc WITH PASSWORD '...'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO apag_doc; chia sẻ thư mục assetstore chỉ đọc qua SMB hoặc NFS rồi khai đường dẫn đã mount vào cấu hình. Kết nối viết bằng Node thuần theo giao thức PostgreSQL, chạy được với bản 9.2 của DSpace, không cần cài thêm gì.
Lệnh dòng lệnh: node server.js do-dspace dò cấu trúc bảng thật và in ra 25 trường siêu dữ liệu dùng nhiều nhất, chạy lệnh này đầu tiên khi nối máy thật; node server.js nap-dspace nạp toàn bộ tệp PDF công khai từ assetstore vào kho đối chiếu, kho lớn hàng nghìn tệp nên chạy qua đêm bằng lệnh này thay vì bấm nút. Tệp kiem-thu-dspace-gia.sql dựng CSDL DSpace giả trên PostgreSQL nội bộ để chạy bộ kiểm thử kiem-thu-dspace.sh khi chưa nối máy thật.
du-lieu.csv dữ liệu chính; cau-hinh.json tài khoản và cấu hình; tep-toan-van/ tệp gốc; chi-muc/ chỉ mục toàn văn; kho-ngoai/ kho đối chiếu ngoài; kiem-trung-nop/ phiếu người học tự nộp; tri-thuc/ tri thức chatbot; bao-cao-lap/ báo cáo trùng; luot-truy-cap.txt, luot-doc.csv.server.js và thư mục public/ mới đè vào, giữ nguyên các tệp dữ liệu trên.node server.js 8080.Ngoài các cột chuẩn của biểu mẫu nộp luận văn, quản trị toàn quyền thêm được các trường riêng của đơn vị. Mở trang Cài đặt trong phần quản trị, tìm thẻ Trường phụ tùy chỉnh cho biểu mẫu nộp.
Gõ tên các phần cách nhau bằng dấu phẩy nếu muốn chia trường thành nhóm. Bấm Thêm trường phụ để thêm từng trường. Mỗi trường đặt tên, chọn một trong sáu loại dữ liệu đầu vào là chữ ngắn, chữ dài, số, ngày tháng, chọn một từ danh sách, hoặc chọn nhiều. Tích bắt buộc nếu cần. Với loại chọn một hoặc chọn nhiều thì gõ các lựa chọn cho phép, mỗi dòng một lựa chọn. Bấm Lưu trường phụ.
Sau khi đặt, biểu mẫu nộp công khai sẽ hiện các trường phụ ở cuối, gom theo phần, đánh dấu sao ở trường bắt buộc. Hệ thống chặn gửi nếu trường bắt buộc còn trống và chặn giá trị ngoài danh sách lựa chọn.
Trường phụ lưu riêng trong một cột dữ liệu tách khỏi các cột chuẩn, nên không ảnh hưởng cấu trúc dữ liệu, không ảnh hưởng biên mục hay liên thông sang DSpace. Chỉ tài khoản quản trị toàn quyền mới đổi được cấu hình trường phụ.
Logic trường phụ dùng chung module truong-phu.js với phân hệ hồ sơ khoa học, nên sửa một chỗ là cả hai phân hệ được lợi.
Khác với mục 4 (người học nộp bài rồi chờ cán bộ chạy hộ), đây là chỗ người học
đăng nhập và tự chạy kiểm tra ngay. Cả hai luồng cùng tồn tại, dùng luồng nào
tùy nhu cầu của đơn vị.
Điều kiện dùng: phải có tài khoản do quản trị cấp, và tài khoản đó phải được
cấp quyền tự kiểm tra, còn trong thời hạn hiệu lực, còn lượt chạy.
Người học làm được hai việc trên trang này:
1. Kiểm tra tên đề tài dự kiến, đối chiếu với kho tài liệu của Học viện.
2. Gửi bản thảo PDF để đối chiếu nội dung, xem phần trăm trùng, nguồn trùng và
từng đoạn trùng cụ thể.
Kết quả chỉ để đọc trên màn hình. Hệ thống không cấp bản tải về, không sinh tệp
báo cáo, trang kết quả chặn lệnh in và phím tắt lưu. Cần nói rõ giới hạn: đây là
biện pháp ngăn thao tác thông thường, không chặn được tuyệt đối người cố tình
chụp màn hình. Không hệ thống web nào làm được điều đó.
Vào /sheet, mở Cài đặt, tìm bảng Nhóm tài khoản. Mỗi nhóm có cột Tự kiểm tra
trùng lặp gồm:
là chỉ nhận PDF.
Lưu ý về loại tệp: bộ đọc nội dung hiện chỉ xử lý được PDF. Nếu bật thêm loại
khác, hệ thống vẫn nhận tệp đúng loại đó nhưng sẽ báo rõ là chưa đọc được và
hướng dẫn người học xuất sang PDF, thay vì im lặng thất bại.
Cũng trong Cài đặt, khu Đặt quyền tự kiểm tra riêng cho một tài khoản. Gõ email,
bấm Xem hiện trạng để biết tài khoản đang hưởng quyền từ nhóm hay từ thiết đặt
riêng, còn hạn tới bao giờ, đã chạy mấy lượt.
Quy tắc gộp quyền: thiết đặt riêng thắng thiết đặt nhóm, nhưng mục nào để trống
thì vẫn kế thừa từ nhóm. Nhờ vậy cấp chung cho cả khóa rồi nới riêng cho vài
trường hợp đặc biệt được, không phải tách nhóm mới.
Trong Cài đặt có khu Rà soát tài khoản hết hiệu lực tự kiểm tra. Bấm Xem trước
để liệt kê ai đã hết hạn mà không đổi dữ liệu. Bấm Chuyển sang nhóm này để gom
các tài khoản hết hạn vào một nhóm riêng cho dễ theo dõi. Với số lượng tài khoản
lớn thì đây là cách kiểm soát nhanh nhất.
Tệp PDF người học gửi lên được GIỮ LẠI làm bằng chứng, không tự động xóa. Tệp
nằm trong thư mục tu-quet-luu-vet, chia thành thư mục con theo tháng. Cách chia
này để số tệp lớn không làm chậm hệ thống: khi ghi, chương trình chỉ chạm vào
đúng một thư mục con, không bao giờ quét toàn bộ kho.
Xem dung lượng và xóa kho tại trang Quản trị người dùng, mục Kho lưu vết. Việc
xóa cảnh báo hai lần: lần một hỏi xác nhận, lần hai bắt gõ đúng số tệp sẽ xóa.
Gõ sai số thì không xóa gì. Thao tác xóa không thể hoàn lại.
Trang riêng cho quản trị, mở từ menu Tệp trong /sheet hoặc vào thẳng đường dẫn.
Tìm theo email, khoa, nhóm. Lọc theo nhóm, theo vai trò (quản trị hoặc bạn đọc),
theo tình trạng (còn hiệu lực hoặc hết hiệu lực). Danh sách trả về theo trang,
không bao giờ đẩy cả ba mươi nghìn tài khoản về trình duyệt.
Tích chọn nhiều tài khoản rồi áp dụng một trong các việc: chuyển sang nhóm khác,
đặt thời hạn hiệu lực, bật hoặc tắt quyền tự kiểm tra, bỏ thiết đặt riêng để
theo lại mức nhóm, đặt lại lượt đã dùng.
Chuyển nhóm vẫn giữ kiểm soát chéo: hệ thống ghi lại nhóm cũ của từng tài khoản
và ghi vào nhật ký ai chuyển, chuyển bao nhiêu tài khoản, sang nhóm nào.
Bấm Tạo tài khoản, chọn vai trò Quản trị. Có hai kiểu:
gửi nộp, Viên chức giảng viên gửi nộp, Thư viện bổ sung, Bạn đọc tặng) và tích
từng quyền cụ thể.
Các quyền cấp lẻ được gồm: duyệt tài liệu, xóa tài liệu, quản lý tài khoản bạn
đọc, quản lý nhóm tài khoản, cấp quyền tự kiểm tra, xem nhật ký hoạt động, quản
lý nguồn đối chiếu, quản lý kho lưu vết, xuất dữ liệu báo cáo, đổi cấu hình hệ
thống.
Hệ thống luôn giữ ít nhất một tài khoản toàn quyền, không cho hạ hết quyền dẫn
tới khóa mất lối vào quản trị.
Đây là điểm quan trọng nhất. Mỗi tài khoản đặt được ngày bắt đầu và ngày hết
hiệu lực. Hết hạn nghĩa là mất TOÀN BỘ quyền trong hệ thống: không đăng nhập
được, mất quyền đọc trực tuyến, mất quyền tự kiểm tra, mất cả quyền quản trị nếu
là tài khoản quản trị.
Ngoại lệ duy nhất: tài khoản quản trị toàn quyền không bị khóa theo thời hạn, để
hệ thống luôn còn ít nhất một lối vào. Đây là chủ ý thiết kế, không phải sơ suất.
Mục Nhật ký hoạt động tra cứu được các thao tác quan trọng: tạo và sửa tài khoản,
xử lý hàng loạt, cấp quyền tự kiểm tra, người học chạy kiểm tra, rà soát hết hạn,
xóa kho lưu vết, đổi danh sách phân loại.
Lọc theo tài khoản thì tìm cả hai chiều: các thao tác do tài khoản đó thực hiện,
và các thao tác mà tài khoản đó là đối tượng bị tác động. Bấm nút Lưu vết ở mỗi
dòng trong bảng để xem nhanh lịch sử của tài khoản đó.
Nhật ký lưu trong thư mục nhat-ky, mỗi tháng một tệp, không nằm trong tệp cấu
hình để cấu hình không phình to.
Khối Danh mục công bố ở trang chủ mặc định có Khóa luận, Luận văn, Luận án.
Quản trị thêm bớt được các mục này.
Mỗi mục gồm: mã dùng trên đường dẫn, tên hiển thị, và danh sách từ khóa để đối
chiếu với cột Loại của tài liệu. Ví dụ mục Đề án có từ khóa "de an" sẽ gom mọi
tài liệu mà cột Loại chứa chữ đề án.
Nếu không nhập mã, hệ thống tự sinh mã từ tên tiếng Việt, ví dụ Báo cáo thực tập
thành bao-cao-thuc-tap.
Sửa danh sách này qua API /api/phan-loai, cần quyền đổi cấu hình hệ thống.
---
Tai khoan da dang nhap khi doc tai lieu tai /xem co mot thanh cong cu tren
dinh trang. Ngoai Boi mau, Gach chan va Ghi chu diem da co tu truoc, ban 5.1
them:
But viet ve tay tu do ngay tren trang, dung duoc chuot, ngon tay va
but cam ung nho pointer event
Tay re qua net nao thi xoa net do, gom lai gui mot lan
Do day net ba muc, mong vua day
Bay mau vang, xanh, hong, cam, do, tim, den
Hoan tac bo net vua ve
Bang danh dau liet ke moi danh dau cua tai lieu, bam de nhay toi trang
Moi net luu trong kho ca nhan cua chinh tai khoan do tai ban-doc/, khong ai
thay cua ai. Muon cho nguoi khac xem thi bat Chia se tren tung ghi chu:
Co liet ke email chi nhung email do doc duoc
Bo trong danh sach moi tai khoan cung doc duoc tai lieu nay deu thay
Net cua nguoi khac hien mo hon va ve net dut de phan biet voi net cua minh,
va chi doc, khong sua duoc.
Thiet lap but gom mau, do day, che do dang dung va co hien net nguoi khac hay
khong duoc luu theo tung tai khoan tren may chu, nen doi may van giu nguyen.
Net luu bang toa do tuong doi tu 0 den 1 theo kich thuoc trang, khi ve len thi
ke trong mot lop SVG rieng. Nho vay phong to thu nho hay doi man hinh, net van
nam dung cho va van sac.
GET /api/ban-doc/but-viet doc thiet lap but cua tai khoan
POST /api/ban-doc/but-viet luu thiet lap
GET /api/ban-doc/ghi-chu doc danh dau cua minh va duoc chia se toi minh
POST /api/ban-doc/ghi-chu them, sua, xoa, hoac xoa_nhieu cho cai tay
Khach chua dang nhap goi vao deu bi tra 401.
---
Day KHONG phai tien ich cho ban doc. Viec nay doc toan van toan bo kho nen
chi mo cho:
1. Tai khoan quan tri TOAN QUYEN, tuc quantri@apag.edu.vn va cac tai khoan
duoc dat toan quyen.
2. Tai khoan duoc quan tri cap quyen chi tiet "Viet tong quan theo tuyen
van de" trong trang Quan tri tai khoan.
3. Email nam trong danh sach cho phep o cau hinh tien ich.
Ngoai ba truong hop tren, moi loi goi deu bi tu choi, ke ca goi thang vao dia
chi API. Nut trong trang Bang du lieu chi hien voi tai khoan du quyen. Trong
khung chat, ai hoi cau nay ma khong du quyen se nhan loi giai thich chu khong
nhan noi dung.
Cap quyen cho nguoi khac la viec cua tai khoan toan quyen, lam ngay tren giao
dien, khong phai sua ma nguon.
Mac dinh chi tong quan LUAN VAN va LUAN AN, gom luan van thac si, de an thac si
va luan an tien si. Khoa luan khong nam trong pham vi mac dinh. Quan tri doi
duoc danh sach nay luc dang van hanh.
Voi tai khoan duoc cap quyen ma khong phai toan quyen, he con giao them mot lan
nua voi pham vi doc cua chinh tai khoan do, nen khong ai thay duoc noi dung
ngoai phan minh duoc phep doc.
Bang du lieu /sheet : mo tro ly goc phai duoi, nut "Viet tong quan theo
tuyen van de" (chi hien khi du quyen)
Khung chat : go "viet tong quan theo tuyen van de"
Dia chi truc tiep : /tong-quan-tuyen
GET /api/tong-quan-tuyen/cau-hinh xem cau hinh hien tai
PUT /api/tong-quan-tuyen/cau-hinh doi cau hinh, chi tai khoan toan quyen
Cac tham so doi duoc, khong phai dung may chu, khong phai sua ma nguon:
bat bat hoac tat han tien ich
loai_tai_lieu loai nao duoc dua vao tong quan
nhom_tai_lieu loc them theo nhom tai lieu, de trong la khong loc
so_tuyen_mac_dinh so tuyen mac dinh khi mo tien ich
do_dai_mac_dinh gon, chuan hoac sau
giong_mac_dinh trung tinh, phan bien hoac goi mo
viec_nang_cung_luc so viec nang chay cung luc, de thap de danh may cho
ban doc tra cuu, mac dinh la 1
email_duoc_dung mo them cho tung email cu the
Doi cau hinh xong he tu xoa chi muc cu va dung lai o lan dung ke tiep. Moi lan
doi deu duoc ghi vao nhat ky hoat dong.
Cai can chiu tai la BAN DOC TRA CUU va cac tien ich doc, khong phai viec viet
tong quan. Do tren kho 120 cong trinh, 300 ban doc cung luc, moi nguoi mot
phien gom mo trang chu, xem danh muc, tra danh muc luan van, tim toan van,
xem thong ke va hoi chatbot:
1800 luot trong mot dot, khong luot nao that bai
Do tre giua 1,63 giay
95% duoi 2,62 giay
Thong luong 656 luot mot giay
Do lai dung luc quan tri bam viet tong quan tren chi muc con nguoi:
Do tre giua cua ban doc 1,40 giay, khong xau di
Viec nang cua quan tri xong sau 2,82 giay
Nghia la viec nang cua quan tri khong lam ban doc phai cho. Ly do la viec doc
toan van cu vai tai lieu lai nhuong may mot lan, va so viec nang chay cung luc
bi gioi han bang cau hinh.
Phien dang nhap, chi muc va cac bo dem deu nam trong bo nho mot tien trinh.
Tach ra chay nhieu ban se lam nguoi dung bi dang xuat ngau nhien va moi ban lai
doc toan van mot lan rieng. Neu sau nay can tach, phai chuyen phien dang nhap
va chi muc ra kho dung chung truoc.
tong-quan-tuyen.js bo may nhan dien tuyen va viet van
public/tong-quan-tuyen.html giao dien tien ich
kiem-thu-tuyen.js chay thu bo may bang ngu lieu gia lap
kiem-thu-tai.js do tai ban doc, dung:
node kiem-thu-tai.js 3000 500 <token quan tri>
kiem-thu-toan-he.sh kiem thu ca he: but viet, nguon tim, cac phan
he va do tai 500 ket noi
---
Mot khu vuc gioi thieu cong cu AI (ChatGPT, Claude, Gemini...) cho ban doc tu hoc, kem meo dung nhanh va cau lenh mau. Mac dinh TAT, can hai buoc sau moi thay:
1. Nap noi dung mau: node khoi-tao-cong-cu-ai.js (nap san 13 cong cu, khong ghi de neu da co du lieu, chay lai voi --ep neu muon nap lai tu dau).
2. Dang nhap quantri@apag.edu.vn, vao dia chi /quan-tri-cong-cu-ai, bam Bat len o khoi Cong tac tong tren cung. Chi dung tai khoan nay bat/tat duoc muc nay.
/cong-cu-ai./quan-tri-cong-cu-ai.
Khac voi da so muc quan tri khac trong he thong, o day toan quyen he thong khong tu dong bien tap duoc. Chi quantri@apag.edu.vn tu dong co toan quyen; muon giao cho ai khac (du la toan quyen) phai vao Quan tri nguoi dung, cap rieng quyen "Bien tap Trung tam hoc lieu AI" cho tai khoan do (gan truc tiep hoac qua nhom lam thoi co han, xem HUONG-DAN-NHOM-LAM-THOI.md).
Neu ban doc co ghi nganh/khoa, cong cu phu hop nganh do se tu day len dau danh sach khi xem /cong-cu-ai. Dat "Nganh phu hop" cho tung cong cu trong trang quan tri; de trong nghia la phu hop moi nganh.
Trong trang quan tri co khoi "Tim cong cu AI moi": vai nut mo nhanh cac kenh hay cap nhat cong cu AI (Google, There's An AI For That, Futurepedia, Product Hunt) o tab moi, giup ranh sang tim ma khong roi trang.
Tim thay cong cu ung y roi, dan lien ket vao o "Do nhanh tu lien ket", bam Do thong tin: may chu tu mo trang do, doc the title va meta description, dien san Ten va Mo ta xuong form. Chi con chon nhom muc dich, chi phi, bo sung meo dung roi bam Them cong cu. Nho vay danh muc khong bao gio bi gioi han boi bo cong cu soan san luc dau, luon them duoc cong cu that su moi ma khong can go tay tu dau.
Tinh nang nay co chan dia chi mang noi bo co ban (localhost, 127.0.0.1, cac dai 10.x/172.16-31.x/192.168.x) de tranh may chu tu goi nguoc vao chinh no; chi tai khoan da duoc cap quyen bien tap moi dung duoc.
Khi bat, lien ket "Cong cu AI" tu hien (khong can dang nhap) tren: trang chu (goc tren phai, canh nut dang nhap), Goc ban doc, Danh muc cong khai, Phong tu lieu so cac khoa, Ban tin. Tat cong tac thi lien ket tu bien mat khoi tat ca cac trang nay, khong can sua tung trang.
Tai /cong-cu-ai: moi cong cu co nut "Quet bang dien thoai", hien ngay ma QR tro dung lien ket cong cu do. Rieng nut "Ma QR trang nay" o dau trang tao ma QR tro ve chinh trang /cong-cu-ai, phu hop in ra dan o ban doc thu vien, ai quet cung vao thang trang day du.
Dung thu vien QRCode.js (davidshimjs, MIT, 9k sao GitHub, dung rong rai tu nhieu nam) tai qua CDN, khong tu viet lai thuat toan QR. Day la lua chon co chu dich: tu viet thuat toan QR (ma hoa Reed-Solomon, dat module, chon mat na...) rat de sai sot tinh vi ma khong the tu kiem chung bang may quet that, trong khi thu vien co san da duoc hang trieu website kiem chung qua thoi gian dai. Can may co ket noi Internet khi mo trang de tai duoc thu vien nay; neu mat mang, phan con lai cua trang van dung binh thuong, chi rieng nut xem QR bao loi ro rang.
Vao /quan-tri-cong-cu-ai (hoac tu Bang du lieu, menu goc tren, muc "Trung tam hoc lieu AI (quan tri)..."), neu danh sach cong cu con trong se thay khung vang co nut "Nap bo cong cu mau". Bam la co ngay 13 cong cu, khong can biet gi ve dong lenh hay tep khoi-tao-cong-cu-ai.js. Tep do van con, dung cho ai thich thao tac qua dong lenh, hai cach cho cung mot ket qua.
Truoc day moi tinh nang AI ngoai (vi du Viet tong quan theo tuyen van de) phai tu khai dia chi va khoa API rieng. Gio gop lai MOT CHO DUY NHAT: vao /quan-tri-ai-ngoai (hoac tu Bang du lieu, menu goc tren, muc "Cau hinh AI ngoai dung chung..."). Khai dia chi, khoa API mot lan, MOI nghiep vu ben duoi co cong tac bat/tat rieng, khong anh huong nhau. Chi tai khoan quan tri toi cao xem va sua duoc trang nay, day la quyet dinh siet chat co chu dich vi khoa API la thong tin nhay cam nhat trong he thong.
Cac nghiep vu da co san cong tac:
/api/chatbot): khi bo loc theo tu khoa, loai, nam, khoa khong tim thay ket qua nao, AI thu tra loi dua DUNG tren danh sach tai lieu da duyet thuc su co trong he thong (toi da 300 ban ghi gan nhat lam ngu canh), khong duoc bia them tai lieu nao ngoai danh sach. AI duoc yeu cau ghi kem ma ho so khi nhac toi mot tai lieu, he tu trich ma do de dung lai danh sach lien ket bam duoc./api/tro-giup): khi khong khop bat ky quy tac co san nao, AI thu (1) tra loi neu khop voi mot cap hoi-dap chung da soan san, hoac (2) neu cau hoi la mot thu tuc/nghiep vu ro rang thuoc pham vi mot don vi cu the (Khoa, Trung tam, Vien... trong danh sach dang quan tri), TU DONG DIEU HUONG: bao ro ten don vi phu trach va ghi cau hoi vao hang cho cua DUNG don vi do de can bo bo sung. Day la diem khac biet quan trong so voi thiet ke ban dau: KHONG con bat buoc phai co san cap hoi-dap khop dung moi dung duoc AI, vi gia tri chinh la giup nguoi hoi biet dung nen hoi don vi nao, ngay ca khi chua co cau tra loi mau. AI chi duoc chon dung ma don vi co that trong danh sach dang quan tri, tuyet doi khong duoc bia ra don vi khong ton tai.
Sua loi mat tu khoa dieu huong khi luu danh sach don vi (BAN 5.4): trang Trung tam quan tri > 2. Don vi thuoc/truc thuoc TRUOC DAY khong doc, khong hien, khong luu lai truong tu_khoa_dieu_huong cua tung don vi. Hau qua: neu tung bam "Luu danh sach don vi" (du chi de doi thu tu hay them mot don vi moi), TOAN BO tu khoa dieu huong cua MOI don vi se bi xoa mat. Da sua ca ba cho: doc du lieu ve, hien o hop thoai Sua/Them don vi (o "Tu khoa de chatbot tu dieu huong..."), va gui du lieu di khi luu. Neu chatbot tung dieu huong dung truoc day nhung nay khong con dung nua, rat co the do da tung bam Luu o trang nay sau khi loi con ton tai; vao Trung tam quan tri > 2. Don vi, mo tung don vi quan trong, kiem va bo sung lai tu khoa neu thay trong.
Cach dat tu khoa dung: nghi tu khoa la "cau hoi ban doc se go", khong phai "ten day du cua don vi". Vi du Ban Quan ly dao tao nen co ca "tuyen sinh", "dang ky tin chi", "bao luu", "thoi hoc", "chuyen nganh", "cap bang", "xet tot nghiep"; Khoa Luat nen co ca "luat", "tu van phap ly", "khieu nai", "to cao". Cang nhieu tu khoa dung phu hop cang de nhan dien dung, khong can AI ngoai gi ca; day la co che rule-based da co san tu truoc, hoan toan mien phi. Khong gioi han so luong tu khoa moi don vi, tu do them bao nhieu tuy y.
Tranh dat tu khoa CHI MOT TU qua ngan hoac qua thong dung (vi du "hoc", "va", "cho"), vi cau hoi nao tinh co chua dung tu do cung se bi dieu huong nham, du khong lien quan. He thong tu dong canh bao (khong chan luu) khi phat hien tu khoa nhu vay sau khi bam Luu danh sach don vi; doc ky dong canh bao mau vang neu xuat hien va can nhac sua lai cho ro nghia hon, vi du dung ca cum "dang ky tin chi" thay vi chi "tin chi".
Ca hai deu tuan thu nguyen tac: AI CHI duoc dung dung du lieu that co san trong he thong lam ngu canh, khong duoc tu bia them thong tin, va neu AI loi hoac khong du cau hinh thi tu dong roi ve dung hanh vi rule-based cu, khong bao gio lam nguoi dung gap loi hay mat chuc nang.
Truoc day moi cau hoi bi dieu huong toi mot don vi deu don ve chung mot cho, chi tai khoan quan tri toi cao moi vao duoc de tra loi (trang /tri-thuc). Gio moi don vi co the co tai khoan rieng, chi xem va tra loi duoc DUNG hang cho cua don vi minh, khong thay duoc don vi khac.
Cach gan (chi toi cao lam duoc): vao Quan tri nguoi dung, sua tai khoan can bo phu trach, o muc "Don vi phu trach" chon dung don vi. Tai khoan do phai la tai khoan kiem duyet (dang nhap duoc o Bang du lieu).
Cach can bo su dung: dang nhap Bang du lieu binh thuong, o menu goc tren se tu hien muc "Tra loi cau hoi don vi toi phu trach..." (chi hien voi tai khoan da duoc gan don vi, tu dong an voi tai khoan khac). Bam vao, mo hop thoai ngay tai cho, khong can go dia chi rieng. Trong do thay hai khu: cau hoi dang cho tra loi (go cau tra loi, bam Luu la xong ngay, chatbot dung duoc tu lan hoi tiep theo), va danh sach da co cau tra loi (xoa duoc neu can).
Bao mat da kiem chung ky: may chu luon tu lay ma don vi TU CHINH TAI KHOAN dang dang nhap, khong nhan tu client, nen mot can bo khong the gia mao tra loi hoac xoa cau hoi cua don vi khac du co biet dung ma. Da tu kiem thu that qua may chu: tao hai tai khoan phu trach hai don vi khac nhau, xac nhan moi tai khoan chi thay dung pham vi minh, va thu gia mao ca hai chieu (tra loi ho, xoa ho) deu bi tu choi ro rang.
Loai tai khoan (tuy chon, chi de phan nhom cho de xem): khi sua tai khoan, co them muc "Loai tai khoan" voi bon lua chon co san: Chi phu trach tra loi don vi, Vien chuc hanh chinh, Giang vien, Nguoi hoc. Day CHI LA NHAN de de phan biet va loc danh sach (o thanh Tim kiem va loc, co them o "Loc theo loai tai khoan"), KHONG anh huong bat ky quyen han nao. Muon tai khoan thuc su chi tra loi duoc dung don vi minh thi van phai gan "Don vi phu trach" nhu tren, chon "Loai tai khoan" khong thay the duoc buoc do. Da kiem chung: dat "Loai tai khoan" la "Chi phu trach tra loi don vi" nhung CHUA gan "Don vi phu trach" thi tai khoan van bi chan, khong tu dong co quyen gi ca.
Tai khoan chi phu trach don vi khong con bi bat buoc chon khu vuc: truoc day moi tai khoan Quan tri (kiem duyet) deu phai chon it nhat mot khu vuc duyet tai lieu hoac Toan quyen, du chi de tra loi cau hoi don vi. Gio neu tai khoan da duoc gan "Don vi phu trach", buoc chon khu vuc duoc mien, tranh cap du quyen khong can thiet (mien la da gan don vi, khong quan tam gan luc nao).
Cap nhat hang loat qua Excel (BAN 5.6): trong trang "Tri thuc cua toi" (can bo tu mo tu menu Bang du lieu hoac Cong cu can bo o trang chu), co them khoi "Cap nhat hang loat bang tep Excel" o dau trang. Bam "Tai mau Excel" de tai ve mau co san huong dan chi tiet, dien nhieu cau hoi dap cung luc, roi "Chon tep da dien" de tai len. Sau khi xem truoc, chon MOT trong hai cach ap dung:
Ca hai cach deu CHI ap dung cho dung don vi cua tai khoan dang dang nhap, ma don vi luon lay tu chinh tai khoan, khong nhan tu du lieu gui len, tranh mot can bo lam anh huong don vi khac du co sua duoc du lieu gui di. Da tu kiem chung ca hai che do qua may chu that: chi cap nhat giu dung 1 cau cu + them 1 cau moi; ghi de xoa sach chi con dung noi dung tep moi.
Chuc nang nay tai su dung dung logic khop-cap-nhat-hoac-them da co san tu truoc (ham themMotCauDonVi dung chung voi viec tra loi tung cau qua giao dien), khong viet lai logic gop du lieu tu dau, giam rui ro loi.
Phat hien loi thuc te nghiem trong: neu can bo luu cau tra loi voi cau hoi mau DAI, DAY DU (vi du "Thu tuc bao luu ket qua hoc tap can nhung giay to gi") ma KHONG dien cot Tu khoa, thi khi ban doc hoi ngan gon hon theo cach khac (vi du "cho em hoi ve thu tuc bao luu"), he thong GAN NHU CHAC CHAN khong tim thay cau tra loi da luu, du dung dung don vi da nhan dien duoc, va bao "cau hoi da duoc ghi nhan..." nhu chua co ai tra loi ca.
Nguyen nhan: he thong co HAI TANG so khop khac han nhau. Tang nhan dien don vi (dung tu_khoa_dieu_huong cua don vi) rat de khop, chi can chua dung 1 tu. Nhung tang tim CAU TRA LOI CU THE trong kho cua don vi do lai cham diem theo ty le TU CUA CAU MAU duoc cau hoi that "phu" duoc bao nhieu phan tram; cau mau cang dai, ty le nay cang de bi loang, du chu de hoan toan giong nhau.
Da sua bang cach cham diem THEM MOT CHIEU NUA: xet cac TU CO NOI DUNG trong chinh cau hoi that (loai bo tu dem nhu "cho", "a", "la", "gi", "nao"...) co xuat hien du trong cau mau hay khong, thay vi chi xet chieu nguoc lai. Chi ap dung khi cau hoi that co tu 2 tu noi dung tro len, tranh mot tu chung chung khop bua voi ca kho cua don vi (phep tim nay von da duoc thu hep pham vi ve dung MOT don vi truoc do, nen linh hoat hon o day van an toan). Ap dung dong bo ca cho kho tri thuc chung lan kho theo tung don vi.
Da tu kiem thu 7 tinh huong doc lap truoc khi sua code that (gom ca tinh huong nguy hiem, khong duoc khop nham), va kiem chung lai bang may chu that dung dung kich ban loi da gap: luu cau mau dai khong tu khoa, hoi bang cach dien dat khac hay, tra loi dung ngay. Van con mot gioi han tu nhien: neu hai cach dien dat dung TU HOAN TOAN KHAC NHAU cho cung mot y (vi du "thu tuc" khac han "ho so"), he thong van co the khong nhan ra vi day la gioi han that su cua rule-based khong dung tu dien dong nghia (co the them AI de xu ly tot hon cac truong hop nay, xem muc AI ngoai).
Van khuyen nghi: du thuat toan da thong minh hon nhieu, VAN NEN dien Tu khoa khi co the, giup khop chac chan hon va nhanh hon.
Theo yeu cau ra soat hai co che an toan dang nhap. Ca hai deu DA CO SAN tu truoc, chi mot cho thieu duoc bo sung them trong ban nay.
1. Mot tai khoan dang nhap o thiet bi thu hai: da co san day du, KHONG can lam gi them. O Bang du lieu > Cai dat quyen kiem duyet, co checkbox "Moi tai khoan chi dang nhap mot noi" (mac dinh TAT, chi toi cao bat duoc). Bat len thi dang nhap o noi moi se TU DONG dang xuat moi noi khac dang dang nhap CUA CHINH tai khoan do ngay lap tuc, ap dung cho moi tai khoan ke ca toan quyen. Phien bi dang xuat se thay thong bao ro rang "Tai khoan nay vua dang nhap o mot noi khac..." thay vi bao chung chung het han, giup nguoi dung phan biet duoc la bi dang xuat vi ly do gi. Da tu kiem chung qua may chu that: bat cong tac, dang nhap thiet bi 1, dang nhap thiet bi 2 cung tai khoan, xac nhan phien thiet bi 1 lap tuc mat hieu luc (401, dung thong bao).
2. Khoa tam sau nhieu lan sai mat khau lien tiep: co che dem va khoa da co san tu truoc (chan-do-mat-khau.js), mac dinh sai 5 lan thi khoa 15 phut, co canh bao "con X lan thu" truoc khi bi khoa, moi lan khoa tiep nhan doi thoi gian. Phat hien THIEU DUY NHAT mot phan: truoc day CHUA CO giao dien nao de doi cac con so nay, muon doi phai tu sua truc tiep tep cau-hinh.json bang tay.
Da bo sung: o Trung tam quan tri tong the > muc "6. Chan do mat khau", gio co o nhap de doi: sai bao nhieu lan thi khoa, khoa bao nhieu phut lan dau, moi lan khoa tiep nhan bao nhieu, khoa lau nhat bao nhieu phut, khong sai them bao lau thi quen bo dem. CHI tai khoan quan tri toi cao (dung nhu yeu cau: "do quantri@apag.edu.vn thiet lap") moi thay va sua duoc cac o nay; tai khoan toan quyen khac chi xem duoc dong tom tat, khong sua duoc. Luu xong ap dung NGAY tu lan dang nhap tiep theo, khong can khoi dong lai may chu.
Da tu kiem chung qua may chu that: toi cao doi nguong tu 5 xuong 4 lan va thoi gian khoa tu 15 len 30 phut, thu sai mat khau 4 lan lien tiep dung nguong moi, xac nhan bi khoa dung 30 phut kem canh bao ro rang o hai lan thu truoc do ("con 2 lan", "con 1 lan").
Anh bao chua thay khu vuc ngoai sinh o trang chu. Da them mot khoi "Nhom" moi ("Nhóm ngoại sinh") ngay cuoi danh sach cac nhom tai trang chu (trang-chu.html), truoc phan chan trang - dung cau truc HTML giong het cac nhom co san (nhom-chinh, nhom-phu, nhom-xem) de dong bo giao dien. Khoi nay co ghi chu ro la khu vuc dac thu, chi tai khoan duoc quan tri cap quyen rieng moi nop duoc, tranh gay hieu lam nguoi hoc/ban doc thuong bam vao roi bi tu choi. Hai lien ket dan thang toi hai bieu mau /nop-ngoai-sinh-lvla va /nop-ngoai-sinh-bvkh.
Da kiem chung qua may chu that: khoi moi hien dung vi tri, dung noi dung, ca hai lien ket deu co mat tren trang. Chay kiem-thu-giao-dien.js dat 230/230.
Ba viec anh ra soat thay con sot, lam tron trong ban nay. Dau phien nay moi truong lam viec bi xoa trang; nguon duoc khoi phuc nguyen ven tu goi ban giao 113 (quy trinh dong goi tung ban da phat huy tac dung).
?loai= phia bieu mau (public/index.html, ham apLoaiTuURL) truoc day thieu han, nay da co: ap luc tai trang va ap lai lan nua sau khi danh sach loai dong ve xong. Danh sach loai theo nhom dat o bien chung window.LOAI_NOP_THEO_NHOM (trang-chu.html), dung chung cho ca dropdown lan bang quan tri.Truoc day o "Loai cong trinh" chi cho chon MOT loai hoac tat ca, lai hard-code ten loai CU truoc dot gop. Nay:
&loai=, POST gui mang trong JSON), chuoi don van chay nhu cu. BO danh sach trang cung LOAI_LUAN_VAN o buoc doc tham so vi no thieu cac ten moi sau gop va chan loai cua cac nhom khac (chi la bo loc doc nen mo la an toan).Truoc day tuyen tu dat CHI dung duoc voi cau noi AI ngoai (phai co khoa API that) - tuc co chuc nang ma khong co co che chay thuc te. Nay o khoi "Cách viết" co o "Viết theo tuyến tự đặt": chon mot tuyen, may viet thuan san co (khong can AI, khong ton chi phi) tu cham diem tu khoa cua tuyen tren ten de tai, chuyen nganh va toan van trong dung pham vi doc cua tai khoan, roi viet tong quan rieng cho tuyen do voi tieu de mang ten tuyen; dung duoc cho ca nut xuat Word. Tuyen khong ton tai hoac khong khop cong trinh nao thi bao loi ro rang bang tieng Viet, khong im lang. Phia may chu la ham tqtApTuyenTuDat noi TL.locTheoTuyen (cua tang tong luan) vao TQT.vietTongQuan (may viet thuan) qua pham_vi_ids va tieu_de - tai dung nguyen hai bo may co san, khong xay song song.
27 phep thu kich ban moi (dropdown du muc va dung URL; bac cau ?loai= chon san Luan an kem dau bat buoc dung; html co tg-day; nut Sua lua chon mo dung gia tri, luu xong select ve lai TUC THI va API xac nhan, khoi phuc sach; tong quan 1 loai = 2, 2 loai = 4, tat ca = 5 cong trinh dung so; POST mang loai chay dung; tuyen tu dat viet thuan ra tieu de mang ten tuyen va xuat duoc Word; id sai bao loi ro; xoa tuyen sach). Chay lai chong thoai lui: giao dien 239, nut trang chu 12, phan quyen 16, khach vang lai 36, tong luan giai doan 1 (17) va 2 (18) - tong 365 phep thu, 0 hong. Luu y khi tu chay 2 bo tong luan: phai truyen MK_KIEM_THU dung mat khau quan tri, thieu bien nay bo se dung ngay o buoc dang nhap.
Ghi chu du lieu mau: kho giao kem chua co toan van da boc chu nen ban tong quan (ca duong cu lan duong tuyen tu dat) chi ra doan mo dau ngan; tren kho that da boc chu se ra day du cac doan tuyen nhu thiet ke.
Anh chi ro cach hieu dung: quantri@apag.edu.vn vao Nhom 1, chon "Luận văn" thi ra bieu mau luan van, chon "Luận án" thi ra bieu mau luan an - va NGAY TAI DO chinh duoc (them/xoa/sua) tung tieu truong cua loai dang xem, khong phai mo bang rieng. Nguyen tac ap dong bo cho TAT CA cac nhom, va moi sua doi tu dong cap nhat toan he thong.
1. Dang nhap quantri@apag.edu.vn roi mo bieu mau bat ky (vi du Nhom 1). Goc duoi phai co nut xanh "Hiệu chỉnh biểu mẫu" - chi tai khoan Toan quyen thay.
2. Chon Loai o o "Loai" (vi du "Luận án") - bieu mau hien dung cac truong cua Luan an.
3. Bam nut de BAT che do hieu chinh. Moi truong hien cum nut nho goc phai:
4. Cuoi bieu mau co khu xanh "Thêm trường mới riêng cho loại ..." - dat ten, chon kieu, tich bat buoc, bam Them la truong hien NGAY tren bieu mau, chi voi dung Loai do (chua chon Loai thi ap ca nhom).
5. Moi thao tac luu NGAY va co bao "Đã lưu. Áp dụng ngay toàn hệ thống" goc duoi phai. Bam lai nut do de TAT che do, xem bieu mau dung nhu nguoi nop thay.
Che do nay KHONG tao kho luu rieng nao: moi thao tac ghi thang vao dung hai nguon su that da co tu BAN 8.0-8.2 (an/hien + doi nhan vao hien_truong_theo_loai qua /api/cau-hinh; truong phu vao truong_them qua /api/truong-them). Bang "Quản lý danh sách và trường" tren trang chu, bieu mau cua nguoi nop, va phan kiem cua may chu khi nhan ho so deu doc cung nguon do - sua o dau cung lan toa moi noi, khong can khoi dong lai may chu. Nut bat che do chi hien theo phien dang nhap phia trinh duyet, con MOI lenh ghi deu qua API co token va may chu chan 403 neu khong Toan quyen - ai gia mao phien cung chi thay nut, khong ghi duoc gi.
35 phep thu bang thao tac bam that: khach khong thay nut; quantri bat che do voi Luan an, mot cu bam an "Chức vụ" (the mo di ngay, nut doi thanh Hien lai), go doi nhan "Chuyên ngành" tai cho, them truong phu bat buoc "Số quyết định bảo vệ" hien ngay; mo trang moi voi vai KHACH thay dung het (Luan an: an + nhan moi + truong phu; Luan van: moi thu ve mac dinh); API xac nhan bang quan tri trang chu doc cung du lieu; quantri go bo tai cho tung thu mot deu tra ve ngay; kiem them tren Nhom 5 (chon loai qua o rieng) van dung nguyen tac; khoi phuc sach. Chay lai chong thoai lui 303 phep thu deu dat.
Hai yeu cau cua anh sau khi xem trang chu: (1) quantri@apag.edu.vn phai co nut hieu chinh ngay tai tung nhom, va phai du ca THEM / BOT / SUA tung truong voi tung loai chu khong chi an/hien; (2) cac lien ket phu dai dong trong moi card nhom phai GOM thanh dropdown menu nhu khoi "Nhom ngoai sinh".
Moi card nhom co tu 2 lien ket phu dang hien tro len se tu dong gom thanh MOT o chon + nut "Di", giong het kieu khoi Nhom ngoai sinh; lien ket goc chi bi an di, khong xoa. Chay SAU lop an lien ket theo cau hinh khu vuc (khong gom nham lien ket da tat), va dong bo voi ca co che bat/tat bieu mau: bieu mau nao bi quan tri tat thi muc tuong ung tu go khoi dropdown, dropdown rong thi an ca cum.
Tai khoan Toan quyen thay nut nho goc phai moi card nhom (1, 2, 4, 5, 6, 7, 8, 9); khach va tai khoan thuong khong thay. Bam nut la mo thang bang "Quản lý danh sách và trường", tab an/hien truong, DUNG nhom cua card do, khong phai chon lai.
Trong may chu, tinh nang "bo qua kiem bat buoc cho truong da bi an theo nhom" dang dung mot bang anh xa ten nhom sang so co cac ten CU cho nhom 5 den 8 (vi du "Sách chuyên khảo" cho nhom 6), lech voi ten nhom hien hanh - nghia la tinh nang do co the khong co tac dung voi 4 nhom nay tu truoc den gio. Khong dung den trong lan nay de tranh vo viec khac; ghi lai day de xu ly rieng khi anh yeu cau.
22 phep thu rieng cho ban nay bang thao tac bam that tren may chu that: dropdown gom du muc va sach ten; khach khong thay nut hieu chinh; toan quyen bam nut tren card mo dung nhom; doi nhan "Chuyen nganh" thanh ten moi rieng cho Luan an roi doi qua lai cac loai deu dung; them truong phu "So quyet dinh bao ve" bat buoc rieng Luan an - bieu mau chi hien voi Luan an; may chu CHAN nop Luan an thieu truong do, NHAN Khoa luan binh thuong va NHAN Luan an khi du; khoi phuc sach. Chay lai chong thoai lui 303 phep thu (giao dien 239, nut trang chu 12, phan quyen 16, khach vang lai 36) deu dat.
Xuat phat tu loi anh phat hien: bieu mau Nguoi hoc gui nop, chon Loai "Bài viết của người học" van hien truong "Nguoi huong dan khoa hoc" - va quan tri toi cao KHONG co cach nao tu sua nhung nham lan kieu do, phai cho sua code. Ban nay xay dung mot he thong hoan chinh de quantri@apag.edu.vn tu chinh duoc, ap dung ngay toan he thong khi van hanh.
11 danh sach lua chon co dinh truoc day nam rai rac trong code cua tung bieu mau, gio gom ve MOT cau hinh duy nhat tren may chu (doi tuong giang vien; dac diem tai lieu; phan loai hoc lieu; trinh do; cap de tai; cap hoi thao; xep loai; phan loai tap chi; loai van ban; loai tai lieu Vien chuc/GV; loai can "Phan loai hoc lieu"). May chu tra ve qua API cong khai /api/ten-co-quan; bieu mau chinh va CA HAI bieu mau ngoai sinh deu doc dong tu day, ve lai cac o chon ngay khi tai trang (giu nguyen lua chon nguoi dung dang chon do). Sua mot noi, moi bieu mau doi theo, khong can khoi dong lai may chu.
Truoc day ton tai song song 2 o gan nghia nhau ("Muc do su dung" va "Phan loai hoc lieu") gay roi. Da GOP thanh MOT o "Phan loai hoc lieu" duy nhat (gia tri mac dinh: Hoc lieu bat buoc / Hoc lieu tham khao, sua duoc qua danh sach o Phan 1). O nay hien khi: tai lieu Vien chuc/GV (noi sinh hoac xuat ban) thuoc mot dang SACH, HOAC khi tick dac diem "Tài liệu phục vụ giảng dạy các học phần" - truong hop tick thi con BAT BUOC phai chon (co dau sao do va bao loi ro rang).
He thong von co san lop "An truong" theo NHOM (o Quan tri khu vuc). Ban nay MO RONG dung co che do them chieu THEO LOAI ben trong nhom, khong xay co che song song roi rac. Cau truc cau hinh tren may chu:
* nghia la moi loai cua nhom.* truoc, muc loai cu the sau; trong moi muc ap "hien" truoc roi "an" sau - nen lenh "an" cua loai cu the co uu tien cao nhat.Mac dinh xuat xuong da sua ngay loi anh neu: Nhom 1 chon "Bài viết của người học" thi an "nguoi_huong_dan". Doi qua lai cac loai khac (Luan van, Luan an...) truong nay hien lai binh thuong kem dau bat buoc dung ngu canh.
Go bo 2 nut noi roi rac truoc day ("Loai tai lieu (Vien chuc, GV)" va "Loai can Hoc lieu bat buoc/tham khao"). Thay bang MOT nut "Quản lý danh sách và trường" (chi tai khoan Toan quyen thay), mo bang 2 tab:
Vi du cu the (dung cau hoi thuc te cua anh): muon an truong "Chuyen nganh" rieng cho loai "Luận án" cua Nguoi hoc gui nop - bam nut "Quản lý danh sách và trường" tren trang chu, sang tab "Ẩn/hiện trường theo loại", Nhom da san "Nhóm 1: Người học gửi nộp", o Loai chon "Luận án", tim dong "Chuyên ngành" trong bang, bam nut tron cot "Ẩn", bam "Lưu cho Nhóm và Loại này". Xong - nguoi nop chon Luan an se khong thay Chuyen nganh nua, chon loai khac van thay binh thuong.
An mot truong dang BAT BUOC cua loai do co the khien nguoi nop khong gui duoc bieu mau (he thong van kiem tra bat buoc du truong bi an boi lop nay). Vi vay chi nen an truong khong bat buoc voi loai do; mac dinh xuat xuong ("Bài viết" an "nguoi_huong_dan") an toan vi loai nay von khong bat buoc nguoi huong dan.
var cho danh sach o script sau lam LU (shadow) danh sach dong da nap -> danh sach sua tren trang chu khong lan toa. Da go cac khai bao lap..catch nuot LANG LE, toan bo cap nhat dong chet ma khong bao gi. Da chia se bien qua window kem ghi chu. Bai hoc: moi khoi .then co .catch rong phai duoc kiem chung bang hanh vi that, khong tin phan tich tinh.md5sum doi chieu ban chay thu voi nguon TRUOC khi tin bat ky ket qua kiem chung nao.Kiem chung bang may chu that + mo phong bam nut that: doi Loai qua lai nhieu lan o Nhom 1 (Bai viet an dung, Luan van/Luan an hien lai dung kem dau bat buoc); tick/bo tick dac diem giang day (Phan loai hoc lieu hien + bat buoc / an dung); mo bang quan tri, sua danh sach Xep loai va luu cau hinh an truong moi qua THAO TAC BAM NUT, xac nhan lan toa ngay sang bieu mau (loai vua cau hinh an dung truong, nhom khac nhan dung gia tri moi); hai bieu mau ngoai sinh doc dung danh sach dong. Chay lai toan bo cac bo kiem thu chong thoai lui: 468 phep thu deu dat, khong hong gi.
Theo yeu cau ra soat nghiem tuc: "khi doi cho co quan la lay danh sach don vi theo moi", va gom cac khoi trong Trung tam quan tri thanh nhom khoa hoc hon.
Tin tot truoc: he thong da co san mot co che "danh muc dung chung" rat tot (don-vi-xlsx.js, quan tri sua MOT file Excel, ca bon phan he doi theo). "Khoa" trong bieu mau chinh da dung dung co che nay tu truoc.
Nhung phat hien dung 4 cho van hard-code rieng cua APAG, KHONG tu doi khi chuyen co quan chu quan:
1. index.html (bieu mau nop chinh): o "Don vi nop" truoc day chi co 4 gia tri cung ("Ha Noi, Phan hieu Da Nang..."), trong khi du lieu that da co toi 7 co so that (Tru so chinh, Co so Xuan La, Co so Nguyen Hoang Ton...). Da sua doc dong tu co_so trong danh muc dung chung (API /api/ten-co-quan da co san, khong can sua server), giu 4 gia tri cu lam du phong neu API loi. Sua ham dung chung veLuaChon them buoc xoa noi dung cu truoc khi ve lai (an toan, tuong thich nguoc voi moi noi khac dang dung ham nay).
2. bao-cao-lap.html: chu "APAG" va ten hoc vien dong cung trong watermark bao cao trung lap - da gan thuoc tinh data-ten-co-quan/data-ten-ngan, them doan goi API dung chung mau da co o trang-chu.html.
3. kiem-tra-lap.html: tuong tu nhung la MOT HAM JS tra ve chuoi HTML (khong phai HTML tinh) - da sua dung bien toan cuc TEN_CO_QUAN_HIEN (fallback APAG, ghi de sau khi fetch xong) thay vi hard-code truc tiep trong chuoi.
4. ca-nhan.html: nhan "Kho DSpace APAG" dong cung. Tu phat hien va tu sua mot loi trong chinh lan sua nay: ban dau dung cach cap nhat DOM mot lan qua querySelectorAll sau khi fetch xong, nhung nhan ra neu giao dien duoc ve lai sau do (doi tab qua lai, ham veGia() tao lai HTML moi) se mat gia tri da cap nhat. Da sua lai dung bien truc tiep trong khuon mau (giong cach lam dung o kiem-tra-lap.html), dam bao dung moi lan ham duoc goi lai.
Da tu kiem chung CA 4 CHO bang may chu that, DOI TEN CO QUAN GIA DINH sang mot ten khac han ("TRUONG DAI HOC GIA DINH" / "INU") de xac nhan chac chan khong con dong cung APAG o dau nua - deu dung. Rieng index.html con kiem chung nop ho so that voi gia tri don vi moi (khong co trong 4 gia tri cu) - luu dung. Chay kiem-thu-giao-dien.js 238/238, kiem-thu-khach-vang-lai.js 36/36.
Tab "Quan ly truc quan" trong Trung tam quan tri tong the truoc day co 32 khoi xep "phang" theo thu tu danh so 1-33 (khong co khoi so 6, da bi xoa noi dung tu truoc, khong anh huong), kho tim theo chu de. Da gom lai thanh 6 nhom, CHI THAY DOI THU TU HIEN THI VA THEM TIEU DE PHAN CACH, KHONG DOI BAT KY DONG CODE CHUC NANG NAO BEN TRONG TUNG KHOI:
Cach lam an toan: dung script Python tach tung khoi theo dung id="ql-khN" (marker dang tin cay hon comment, vi phat hien khoi 28 thieu comment danh dau tu truoc), xac nhan DU 32 khoi, KHONG trung, KHONG mat mot dong nao (doi chieu tong so dong truoc/sau khi tach) TRUOC KHI sap xep va ghi lai - giam toi da rui ro sai sot khi di chuyen thu cong mot khoi luong lon HTML string.
Da tu kiem chung qua may chu that: mo tab, xac nhan dung 32 khoi + 6 tieu de nhom hien thi dung thu tu da dinh, cac khoi quan trong (khao sat, han che IP, thong ke doc) van hoat dong dung voi du lieu that, khong co loi JS nao. Chay kiem-thu-giao-dien.js 238/238.
Them field nguoi_nhap_du_lieu vao CUOI SCHEMA (truoc "them" - truong phu) de KHONG xao tron thu tu cot CSV da co san tu truoc - co che doc/ghi CSV da co san MAP THEO TEN NHAN (khong phai vi tri cot) nen an toan tuyet doi voi du lieu cu, tu dong xuat hien cot moi ngay lan ghi dau tien, khong can di tru gi them.
Them o nhap vao CA HAI bieu mau ngoai sinh (Luan van/luan an/khoa luan VA Bai viet khoa hoc), ghi chu ro phan biet voi "Ho ten tac gia" (tac gia goc cua tai lieu) - quan trong nhat voi ho so ngoai sinh vi can bo thuong nhap ho, khong phai chinh tac gia nop, nen can ghi ro AI da nhap de doi chieu/lien he khi can. Khong can sua gi o handleSubmit vi ham nay da co san co che tu dong lay MOI truong theo dung KEYS trong SCHEMA tu du lieu gui len.
Da tu kiem chung nop ho so THAT qua CA HAI giao dien (bam nut that, khong chi goi API tho): xac nhan dung phan biet "ho_ten" (tac gia goc) va "nguoi_nhap_du_lieu" (nguoi thao tac) duoc luu rieng biet, dung cot moi tu dong xuat hien trong du-lieu.csv.
Chay kiem-thu-giao-dien.js 238/238, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-nhom-cong-tac.js 28/28 - tong 318/318, tat ca dat tuyet doi. Kiem ban nguon that xac nhan sach tuyet doi, khong dinh ten thu nghiem hay ho so test nao.
Lan BAN 7.19 hieu SAI hoan toan vi tri cua "Phan loai hoc lieu" (gan vao Nhom 1 - Nguoi hoc). Anh sua lai 2 lan, cang lam cang ro: day la truong CO SAN TU TRUOC (option "Hoc lieu bat buoc"/"Hoc lieu tham khao"), chi ap dung cho bieu mau "Vien chuc, giang vien gui nop" (Nhom 2) khi tai lieu la mot dang SACH cu the.
Gan theo Nhom noi chung (1,2,4,5,6) va theo "Loai" cua rieng Nhom 1 (Khoa luan/Luan van...) - khong lien quan gi ca. Da go bo hoan toan.
Hieu dung la chuyen sang Nhom 2, nhung CHI ap dung cho nhanh "Tai lieu noi sinh cua giang vien Hoc vien", BO SOT nhanh "Tai lieu xuat ban voi to chuc ben ngoai" - trong khi anh xac nhan lai: CA HAI nhanh deu can, khong chi rieng noi sinh.
Thay vi chi lam 1 cau hinh tinh, ca danh sach "Loai tai lieu" (7 gia tri) VA danh sach "loai nao la sach" (5 gia tri) deu la MOT cau hinh dong duy nhat cfg.loai_tai_lieu_vc_gv = { ds_loai, ds_la_sach }, doc qua API cong khai (/api/ten-co-quan), ghi qua /api/cau-hinh (chi toan quyen). LUU Y: cau truc nay ve sau da duoc thay the o BAN 8.0 - hai danh sach tren gio nam trong danh_sach_tuy_chon (ma loai_tai_lieu_vc_gv va loai_can_hoc_lieu), doan mo ta o day chi con gia tri lich su.
Quan trong nhat: THEM NUT NOI THU BA tren trang-chu.html ("Loại tài liệu (Viên chức, GV)"), CHI hien cho quantri toan quyen, bam vao MO TRUC TIEP mot bang sua nhanh (them dong, xoa dong, sua ten, tick "La sach" cho tung dong, luu) - KHONG can vao Trung tam quan tri, dung nhu yeu cau "sua ngay tren giao dien trang chu linh hoat khi can".
Da tu kiem chung toan bo chuoi bang may chu that: nhanh Xuat ban gio co du Loai tai lieu + Phan loai hoc lieu dung nhu nhanh Noi sinh; mo nut noi tren trang chu, bam "+ Them loai", dien ten moi "Slide bài giảng", tick "La sach", bam Luu THAT qua nut bam - luu dung, panel tu dong; xac nhan qua API cong khai co dung loai moi; bieu mau chinh TU DONG co loai moi ngay, chon no thi Phan loai hoc lieu hien dung (vi da tick la sach). Chay lai kiem-thu-giao-dien.js 238/238, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-nut-bieu-mau-trang-chu.js 12/12, kiem-thu-nap-du-lieu.js 1/1 - tat ca dat tuyet doi. Kiem ban nguon that sach tuyet doi, khong con dinh cau hinh sai cua hai lan truoc.
Yeu cau gom 3 viec. Viec 2 (Phan loai hoc lieu chi cho sach trong de cuong hoc phan) can them xac nhan thiet ke truoc khi lam (nhom "Chuong trinh, de cuong" hien chua co phan loai sach/van ban/bai viet/tap chi, se la mot tinh nang moi hoan toan) - CHUA lam trong ban nay. Da hoan tat viec 1 va viec 3.
Gop lai con 5 gia tri theo dung yeu cau: Khoa luan; Luan van/ De an thac si (gop 2 loai cu); Luan an (doi ten tu "Luan an tien si"); De tai NCKH nguoi hoc; Bai viet cua nguoi hoc (doi ten/y nghia tu "Bai bao" - truoc day khong tinh la "nguoi hoc", gio sua dung ban chat).
Rui ro phat hien va xu ly can than truoc khi doi ten: nhieu noi khac trong he thong (gioi han doc theo loai, thong ke luan van/luan an cho cong cu "Viet tong quan theo tuyen van de") van dung TEN CU (Luan van thac si, De an thac si, Luan an tien si). Neu chi doi ten o index.html ma khong tinh toi, ho so DA NOP TRUOC DAY (voi ten cu) se bi "mat tich" khoi cac bang thong ke dung nhung ten do. Da xu ly: giu CA ten cu LAN ten moi trong danh sach dung cho thong ke (LOAI_LUAN_VAN), rieng danh sach GOC hien trong dropdown (LOAI_TAI_LIEU_GOC_APAG) thi dung DUNG 5 ten moi (khong con ten cu) de dropdown gon gang.
Vi day la MOT SU THAY DOI CAU TRUC SAU, phai sua dong bo O RAT NHIEU CHO (8 diem tham chieu input[name="loai"]:checked trong index.html - lay gia tri de an/hien Nguoi huong dan, ten tep goi y, du lieu gui khi nop...) thanh doc truc tiep gia tri cua the <select> moi. Sua tung diem mot, kiem cu phap sau moi buoc.
Van de phu phat hien va xu ly: danh muc dung chung (Trung tam quan tri, khoi 3) VAN con luu 3 ten CU (Luan van thac si, De an thac si, Luan an tien si) chua duoc cap nhat lai - neu khong loc, co che "tu dong them loai moi tu danh muc dung chung" (BAN 7.18) se hieu nham day la "loai khac" va them lai vao dropdown, gay TRUNG LAP y nghia voi ten gop moi da co. Da them danh sach loc rieng bo qua cac ten cu nay khi dong bo dong.
Da tu kiem chung day du bang may chu that: dropdown hien dung 5 lua chon, khong trung lap; chon tung loai deu dung logic an/hien (bat buoc huong dan, Phan loai hoc lieu); NOP HO SO THAT qua API voi gia tri moi - luu dung "Luan van/ De an thac si" vao du lieu. Chay lai toan bo 10 bo kiem thu lien quan (giao dien, nhom lam thoi, hang loat, tong luan giai doan 1-2, nap du lieu, nhap hang loat excel, khach vang lai, phan quyen, nut bieu mau) - tat ca dat tuyet doi, khong con dinh den ten cu/moi nao gay loi.
Xac nhan 4 noi co chuc nang nay: nop-ngoai-sinh-lvla.html, nop-ngoai-sinh-bvkh.html (rieng cho ngoai sinh, da dung tot tu truoc), quan-tri-khu-vuc.html (chi "Gop ten", khong co "them moi" - dung thiet ke, vi day la bao cao tu du lieu thuc te), quan-tri-tong-the.html khoi 3 (noi chinh quan ly Loai/Nhom tai lieu dung chung).
Them 2 thu:
1. quan-tri-tong-the.html: cho phep mo THANG mot tab cu the qua URL hash (vi du /trung-tam-quan-tri#quan-ly), thay vi luon mo mac dinh "Suc khoe he thong" roi phai tu bam chuyen tab.
2. trang-chu.html: them mot nut noi THU HAI ("Loai, don vi, danh muc"), xep doc canh nut "Bieu mau" da co san, CHI hien cho tai khoan toan quyen, dan thang toi /trung-tam-quan-tri#quan-ly.
Da tu kiem chung bang may chu that: mo link kem hash -> dung tab "Quan ly truc quan" duoc chon san, thay khoi 3 ngay khong can bam gi; nut noi tren trang chu ton tai dung, href dan dung noi.
Chay kiem-thu-giao-dien.js 238/238 sau khi hoan tat ca hai viec. Kiem ban nguon that sach tuyet doi.
Anh phat hien: bieu mau "Nguoi hoc gui nop" (Nhom 1) dang SAI - khi chon Loai la Khoa luan, Luan van/De an, Luan an (luan van/luan an CHINH THUC), o "Phan loai hoc lieu" (Hoc lieu bat buoc/tham khao) VAN hien ra, trong khi day la khai niem danh cho hoc lieu (giao trinh, tai lieu tham khao), khong ap dung cho luan van/luan an.
Logic an/hien "Phan loai hoc lieu" (BAN 7.18) CHI phu thuoc vao NHOM (Nhom 1 nam trong danh sach nhom duoc hien), KHONG phu thuoc vao Loai cu the duoc chon BEN TRONG Nhom 1 (chi Nhom 1 moi co truong "Loai": Khoa luan, Luan van thac si, De an thac si, Luan an tien si, De tai NCKH nguoi hoc...). Vi vay du chon Loai nao trong Nhom 1, o nay van hien nhu nhau - sai voi ban chat "Phan loai hoc lieu" von chi hop ly cho tai lieu hoc tap, khong hop ly cho luan van/luan an chinh thuc.
Them cau hinh moi cfg.loai_khong_can_phan_loai_hoc_lieu = { ds_loai: [...] }, mac dinh dung 4 loai trong LOAI_LUAN_VAN (Khoa luan, Luan van thac si, De an thac si, Luan an tien si - dung khop y anh mo ta "Khoa luan, Luan van/De an, Luan an"). Logic moi: "Phan loai hoc lieu" hien khi (Nhom nam trong danh sach nhom duoc cau hinh) VA (neu la Nhom 1 thi Loai dang chon KHONG nam trong danh sach loai tru nay). Cac nhom khac (2,4,5,6,9) khong co truong "Loai" nen khong ap dung tang loc nay, giu nguyen logic cu.
Them giao dien quan tri (khoi 3, ngay duoi phan chon nhom): o nhap danh sach loai (moi dong mot ten), nut luu rieng, doc/ghi qua cung API /api/cau-hinh va cong khai qua /api/ten-co-quan.
Da tu kiem chung bang may chu that RAT KY: chon lan luot ca 4 loai luan van/luan an -> deu AN dung; chon "De tai NCKH nguoi hoc" -> HIEN dung; doi qua doi lai nhieu lan -> van dung (khong dinh trang thai cu, nho co event delegation da sua o BAN 7.18); Nhom 5 (khong co truong Loai) khong bi anh huong. Sau khi them giao dien quan tri, kiem chung tiep qua thao tac BAM NUT THAT: sua danh sach chi con "Khoa luan", luu, xac nhan qua API cong khai va bieu mau chinh - "Luan van thac si" gio HIEN dung (da bo khoi danh sach tru), "Khoa luan" van AN dung (con trong danh sach tru).
Loi tu phat hien va tu sua ngay khi viet code, truoc khi kiem chung (khong phai loi da lot ra ngoai): vien JS quan tri viet Array.isArray(d.loai_khong_can_phan_loai_hoc_lieu) (kiem tra sai doi tuong - truong nay la mot OBJECT {ds_loai:[...]}, khong phai mang truc tiep) thay vi phai la Array.isArray(d.loai_khong_can_phan_loai_hoc_lieu.ds_loai). Phat hien ngay luc doc lai code truoc khi chay kiem chung, sua kip thoi.
Chay kiem-thu-giao-dien.js 238/238, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-nut-bieu-mau-trang-chu.js 12/12 - tong 302/302, tat ca dat tuyet doi. Kiem ban nguon that sach tuyet doi.
Ke thua tu BAN 7.17 (da lam dong "Don vi nop"). Anh xac nhan huong sua va yeu cau kiem soat nghiem ngat truoc khi tiep tuc.
index.html: 6 loai hard-code, kem logic rieng (bat buoc nguoi huong dan, danh cho nguoi hoc).DS_LOAI_TAI_LIEU trong server.js: cung 6 loai hard-code RIENG, dung cho gioi han quyen doc theo loai, validate nhap hang loat.danh-muc-dung-chung.json): noi DUY NHAT co giao dien quan tri (khoi 3, Trung tam quan tri) nhung chi co 4/6 loai, va KHONG chay toi hai noi tren.
Phat hien phu: khoi "Loai tai lieu" trong Trung tam quan tri (dù giao dien day du) that ra chi phuc vu MOT tinh nang AI khac ("Viet tong quan theo tuyen van de", cfg.tong_quan_tuyen) - trung ten gay hieu lam la noi cau hinh cho bieu mau nop chinh.
server.js: DS_LOAI_TAI_LIEU (hang so tinh) -> ham docDsLoaiTaiLieu() LUON gop DU 6 loai goc BAT BIEN cua APAG + moi loai KHAC tu danh muc dung chung (qua DMC.loaiTaiLieu()) chua co trong 6 loai goc. KHONG sua mac dinh trong danh-muc-chung.js vi module do dung CHUNG voi du an khac (IntracomIntegrated/INU) - sua o do se anh huong du an khac.DS_LOAI_TAI_LIEU (validate, gioi han doc, API tra danh sach...) thanh goi docDsLoaiTaiLieu().index.html: doc dong tu /api/truc-quan/loai-tai-lieu (cong khai, khong can dang nhap) - GIU NGUYEN 6 loai goc kem logic (can_huong_dan, nguoi_hoc), CHI THEM loai khac voi metadata mac dinh an toan (khong bat buoc huong dan, cho phep nguoi hoc nop).
Loi tu phat hien va tu sua trong chinh lan sua nay (lan thu 3 gap dung mau loi nay): gan su kien 'change' TRUC TIEP len tung radio "loai" - khi co loai moi duoc them (goi lai veLuaChon de ve lai toan bo radio), cac radio MOI duoc tao HOAN TOAN KHONG con listener cu, ẩn/hien "Nguoi huong dan khoa hoc" mat tac dung hoan toan. Da sua dung bang event delegation (gan MOT LAN duy nhat tren khung chua #chua-loai, khong bao gio mat du noi dung ben trong ve lai bao nhieu lan).
Ra soat ~20 cho an/hien theo "Nhom tai lieu" trong bieu mau chinh: 19/20 gan chat logic nghiep vu rieng cua tung nhom cu the (khong the tong quat hoa an toan), CHI 1 cho ("Phan loai hoc lieu") dung danh sach so nhom hard-code truc tiep khong qua bien ngu nghia - dung la truong hop nen va co the lam thanh cau hinh duoc.
Them cau hinh moi cfg.hien_phan_loai_hoc_lieu = { ds_nhom: [...] }, mac dinh 5 nhom goc. Giao dien: khoi 3 (Trung tam quan tri) them 8 checkbox theo tung nhom (kem ten nhom de hieu), nut luu rieng. index.html doc dong, GIU NGUYEN danh sach mac dinh neu server chua tra ve gi.
Kiem soat nghiem ngat theo dung yeu cau cua anh truoc khi tiep tuc lam them:
KiemThu@2026, chay lai voi dung bien moi truong MK_KIEM_THU thi dat tuyet doi).
Ra soat rong them cac phan con lai theo yeu cau: "Loai" va "Don vi nop" trong hai bieu mau ngoai sinh (LVLA, BVKH) da dung dong tu truoc (rieng biet, dung API /api/ngoai-sinh/thong-tin, co san co che "+ Them loai moi"); "Ngganh va Chuong trinh dao tao" da dung dong tu truoc (co san co che tao nganh moi, tu chuan hoa). Khong phat hien them lo hong hard-code nao dang ke.
Chay kiem-thu-giao-dien.js 238/238, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-nut-bieu-mau-trang-chu.js 12/12 - tat ca dat tuyet doi sau khi them giao dien khoi 3.
Theo yeu cau "tu duy" cho 3 viec, viec 3 (offline circulation - muon/tra tai lieu giay vat ly) da duoc anh xac nhan BO QUA (day la mot phan he hoan toan moi, khac han he thong so hien co, can thiet ke rieng neu sau nay can). Hoan thien viec 1 va 2.
Mo rong API /api/thong-ke-doc-khoang-tg (BAN 7.15) tan dung truong "khoa" da co san trong vet doc:
khoa (tuy chon) de loc rieng MOT khoa/don vi cu the./api/thong-ke-doc-khoang-tg/xuat - dung lai dung ham buildXlsx() co san (zero-dependency), moi dong 1 tai khoan kem khoa/don vi, sap theo khoa de tien loc trong Excel.Phat hien phu dang chu y: truong "khoa" cua mot tai khoan CHI gan duoc qua luong "phan cap khu vuc" rieng (mot tinh nang khac), KHONG PHAI qua man hinh "Quan tri nguoi dung" thong thuong - can luu y neu muon thong ke day du theo khoa cho nhieu tai khoan.
Da tu kiem chung qua may chu that: tao tai khoan co khoa cu the, doc tai lieu, xac nhan dung so lieu theo khoa, loc rieng dung, xuat Excel hop le; mo giao dien that, bam nut "Xem thong ke" va "Xuat Excel" deu hoat dong dung.
Quyet dinh ky thuat quan trong sau khi phan tich danh doi: CHI lam theo DAI IP (CIDR), KHONG tu dong loc theo ten quoc gia - de loc theo quoc gia can mot co so du lieu GeoIP rat lon, can cap nhat dinh ky, moi truong lam viec khong tai ve duoc mot nguon dang tin cay, va dung dich vu tra cuu truc tuyen moi luot se phat sinh do tre, phu thuoc ben ngoai, gioi han so luot, rui ro ro ri IP nguoi dung. Neu can gioi han theo mot quoc gia cu the, quan tri tu tim danh sach dai IP cong khai cua quoc gia do (vi du tu APNIC, RIPE) roi dan vao dung nhu mot "khu vuc".
Thiet ke AN TOAN, khong bao gio tu khoa chinh minh ra ngoai he thong:
/api/ (noi thuc su tra ve du lieu/noi dung); KHONG chan trang HTML/CSS/JS giao dien - trang dang nhap luon hien thi duoc o moi noi./api/dang-nhap luon duoc di qua rieng, khong bao gio bi chan.
Loi nghiem trong phat hien va sua ngay trong luc kiem chung: lan dau dat middleware chan IP SAU mot so route da co san tu truoc (/api/phien-ban, /api/tim...) trong danh sach if/else cua router - vi cac route do da return xong TRUOC KHI luong chay toi middleware, chung KHONG BAO GIO bi chan duoc, du cau hinh bat len. Test bang mot duong khong co that truoc do vo tinh cho ket qua dung nham, den khi test lai bang duong THAT moi lo ra ngay. Da sua: chuyen middleware len NGAY DAU router, chi sau buoc chuyen tiep phan he, truoc TOAN BO danh sach route /api/ - da ghi ro bai hoc nay ngay trong code de tranh lap lai.
Cau hinh moi cfg.han_che_ip = { bat, danh_sach_cho_phep: [...CIDR] }, xu ly luu co kiem tra dinh dang CIDR hop le (loai dong sai, giu dong dung, khong tu choi ca yeu cau). Giao dien: khoi "33. Han che truy cap theo dai IP" trong Trung tam quan tri tong the - hien ro IP hien tai cua nguoi dang xem (tien tham khao), o nhap danh sach CIDR (moi dong mot dai), canh bao neu bat ma danh sach rong (se khong chan duoc gi).
Da tu kiem chung RAT KY qua may chu that (day la thay doi anh huong toan bo he thong, rui ro cao nhat tung lam) voi dung duong API THAT (khong phai duong gia): IP ngoai vung + chua dang nhap -> 403 dung; IP trong vung + chua dang nhap -> qua duoc; IP ngoai vung NHUNG da dang nhap -> van qua duoc dung nhu thiet ke; /api/dang-nhap va trang HTML luon qua du IP nao; tat tinh nang -> hoat dong binh thuong hoan toan; mo giao dien that, bat/nhap/luu qua nut bam that -> dung, dong CIDR sai dinh dang bi loai dung, con dong dung duoc giu.
Chay kiem-thu-giao-dien.js dat 238/238, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-luu-vet.js 51/51, kiem-thu-khao-sat-api.js 38/38 - tong 379/379, tat ca dat tuyet doi. Day la middleware cham toi MOI request API nen da chay chong thoai lui rong nhat co the truoc khi dong goi.
Theo yeu cau "kiem tra nghiem tuc va ky" chuc nang ghi nhan so trang/so tai lieu da doc CUA TUNG TAI KHOAN theo tung khoang thoi gian, va "thiet ke du lieu luu vet luu vao cac thu muc rieng biet de thuan trong quan tri, don dep, di tru".
1. Bo dem "nguong gop y" (tich_luy_doc) truoc day nam LAN trong ban-doc/<email>.json - tep nay von dung cho gia sach, ghi chu, chia se, dang ky chu de... TRON LAN mot bo dem thong ke voi du lieu ho so ca nhan, kho tach rieng de don dep/di tru sau nay dung nhu anh lo ngai.
2. Vet "luot-doc" khong ghi kem so_trang tai DUNG THOI DIEM doc - moi lan bao cao phai JOIN voi du lieu ho so HIEN TAI de lay so_trang, nen neu ho so bi sua/xoa sau nay, bao cao cho cac thang TRUOC DO se bi sai lech, khong con phan anh dung thuc te luc doc.
3. Chua co cach xem thong ke rieng cho TUNG tai khoan - ban truoc chi co tong hop toan he thong, dung yeu cau cua anh la phai xem duoc "cua tung tai khoan".
May man la ban-doc/ va tich-luy-doc/ (thu muc moi) DEU CHUA CO DU LIEU THAT NAO tren may chu that cua anh (chua tung co ai dung qua) nen sua ngay khong lo mat du lieu can di tru.
1. Tach hoan toan bo dem ngưỡng ra thu muc rieng: them TICH_LUY_DOC_DIR (tich-luy-doc/) voi ham docTichLuyDoc/luuTichLuyDoc rieng, dat ten tep theo cach bam email GIONG HET ban-doc/ (an toan, khong lo lo email). Xoa han truong tich_luy_doc khoi docBanDoc/luuBanDoc - tu nay ban-doc/ CHI con chua dung ho so ca nhan (gia sach, ghi chu...), khong lien quan gi den so lieu thong ke nua. Muon don dep/sao luu/di tru rieng thong ke doc thi chi dung cham vao tich-luy-doc/, hoan toan khong anh huong ho so ca nhan cua ai va nguoc lai.
2. Ghi kem SNAPSHOT so_trang ngay tai thoi diem doc: sua ghiLuotDoc them tham so soTrangHoSo, ghi thang vao ban ghi vet luot-doc (luu-vet/luot-doc/, da la thu muc rieng tu truoc). Bao cao tu nay UU TIEN dung gia tri co san trong vet (o.so_trang), CHI fallback ve join voi ho so hien tai cho cac vet CU da ghi truoc ban nay (tuong thich nguoc, khong mat du lieu lich su).
3. Them thong ke theo tung tai khoan: API /api/thong-ke-doc-khoang-tg them tham so email (tuy chon) - de trong thi xem tong hop toan he thong KEM danh sach "Top 50 tai khoan doc nhieu nhat" trong khoang da chon; dien dung email thi CHI xem rieng cua tai khoan do. Giao dien (khoi 32, Trung tam quan tri tong the) them o nhap email va bang xep hang kem nut "Xem rieng" ngay tren tung dong - bam la tu dong dien email va loc lai ngay.
Da tu kiem chung rat ky qua may chu that: doc tai lieu that voi hai tai khoan khac nhau -> xac nhan tich-luy-doc/ co dung hai tep rieng biet, dung so lieu tung nguoi; ban-doc/ KHONG he duoc tao ra chi vi doc tai lieu (dung tach biet); goi API khong loc -> dung tong hop va dung bang xep hang; goi API loc rieng mot tai khoan -> dung chi con so lieu cua nguoi do; mo giao dien that, bam nut "Xem thong ke" va nut "Xem rieng" tren bang xep hang -> ca hai deu hoat dong dung, tu dong dien lai o email va loc lai chinh xac.
Chay kiem-thu-giao-dien.js dat 237/237, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-luu-vet.js 51/51, kiem-thu-phan-quyen.js 16/16, kiem-thu-nhom-cong-tac.js 28/28 - tong 368/368, tat ca dat tuyet doi.
Anh xac nhan lai: muon nut "Gop y" nam CHUNG mot cum voi Zalo, Facebook (khong tach rieng ben trai nhu BAN 7.11 nua), gon va dep. Da thiet ke lai hoan toan gop-y-widget.js:
Kieu dang moi: nut tron 42px, dung CHUNG class .nut-tuong-tac co san cua trang (dong bo kich thuoc, bong, hieu ung hover voi Chatbot/Facebook/Zalo), mau rieng (cam #e8912d) de phan biet, icon SVG bong bong gop y.
Logic thong minh, tu thich ung theo tung trang: neu trang DA CO san .cum-tuong-tac (vi du trang-chu.html) thi CHEN THEM nut vao CUOI CHINH cum do (append), khong tao cum rieng. Neu trang KHONG co cum nay (vi du xem.html khi doc tai lieu, trang nay von khong co Zalo/Facebook) thi widget TU TAO mot cum moi o dung vi tri quen thuoc (goc duoi ben phai) voi CSS rieng, van giu kieu dang tron dong bo - dam bao dep va nhat quan tren MOI trang du co san cum hay khong.
Phat hien va va mot loi nghiem trong trong luc kiem chung: nut Gop y hoan toan KHONG XUAT HIEN tren xem.html doi voi KHACH VANG LAI (chua dang nhap). Truy tan goc: dong nap widget bi dat NHAM vao CUOI mot IIFE co san cua cong cu ghi chu, ma IIFE do co dieu kien thoat som if (!nd || !nd.token) return; ngay dau (chi chay tiep neu da dang nhap) - dat sau dieu kien nay khien MOI DONG CODE PHIA SAU, bao gom ca dong nap widget, khong bao gio chay toi neu chua dang nhap. Day la loi nghiem trong vi tinh nang Gop y duoc thiet ke rieng de MO CHO CA KHACH VANG LAI - neu khong phat hien, moi khach doc tai lieu ma chua dang nhap se vinh vien khong bao gio thay duoc nut nay.
Da sua: TACH HAN dong nap widget ra khoi IIFE co dieu kien do, dat DOC LAP ngay sau khi IIFE ay da dong (})();), dam bao luon chay bat ke da dang nhap hay chua.
Cach dieu tra da dung: vi ket qua kiem chung ban dau khong ro rang (khong co loi JS nao duoc bao), da dung ky thuat "chia doi de tim" (them cac dong console.log danh dau tai nhieu diem doc theo file, dung them ca bat window.onerror va console handler day du cua jsdom) de xac dinh chinh xac dong code nao la diem dung, thay vi doan mo ho.
Tang cache-busting len ?v=3 (xem BAN 7.13 - moi lan sua noi dung file nay deu phai tang so, da ghi nho lai dung quy tac).
Da tu kiem chung qua may chu that va mo phong giao dien that: trang chu - nut Gop y dung vi tri thu 4/4 trong cum (sau Chatbot, Facebook, Zalo); trang doc tai lieu VOI KHACH VANG LAI (khong dang nhap) - nut Gop y xuat hien dung (tu tao cum rieng vi trang nay khong co san cum). Chay kiem-thu-giao-dien.js dat 237/237, kiem-thu-khach-vang-lai.js 36/36.
Anh bao da thay Zalo (dung BAN 7.12 sua) nhung nut "Gop y" van hien BEN PHAI thay vi ben trai da sua o BAN 7.11. Ra soat lai va tim dung nguyen nhan THAT SU (khac han code): file gop-y-widget.js duoc may chu phuc vu voi Cache-Control: public, max-age=86400 (giu cache 1 NGAY, khong tu hoi lai may chu) - day la thiet ke DUNG cho hieu nang thong thuong (tranh tai lai tep tinh khong doi moi lan), NHUNG lai gay ra dung tinh huong nay: trinh duyet cua anh da luu san ban CU (luc con o "right", tu BAN 7.9) tu TRUOC KHI BAN 7.11 sua thanh "left", va se tiep tuc dung ban cu do CHO TOI KHI HET HAN 1 NGAY, DU MAY CHU DA CO BAN MOI - vi day la file .js rieng (khac voi HTML dung no-cache, must-revalidate nen luon hoi lai may chu).
Da sua tan goc, khong con phai lo lai kieu nay ve sau: them cache-busting (?v=2) vao duong dan nap script trong ca trang-chu.html va xem.html - /gop-y-widget.js?v=2 la MOT DIA CHI HOAN TOAN KHAC voi /gop-y-widget.js (khong co query) doi voi trinh duyet, nen buoc phai tai lai tu dau, khong con dinh cache cu duoc nua. Da kiem chung: URL moi van tra ve dung noi dung file (query string khong anh huong logic tim tep o may chu, chi la khoa cache khac o phia trinh duyet).
Luu y quan trong cho lan sua sau nay: neu con sua tiep noi dung gop-y-widget.js, PHAI tang so trong ?v=2 len (vi du ?v=3) o CA HAI noi nap script, neu khong nguoi dung da tung mo trang truoc do se tiep tuc dinh ban cache cu them toi 1 ngay nua.
Chay kiem-thu-giao-dien.js dat 237/237.
Anh bao van bi an Zalo sau khi BAN 7.11 da "sua". Ra soat lai that ky va phat hien: chan doan o BAN 7.11 la SAI - khong phai do nut Gop y moi trung vi tri voi cum nut tuong tac (dieu do co that va da sua dung, nhung khong phai nguyen nhan chinh anh gap). Nguyen nhan THAT SU la mot loi thiet ke co san TU RAT LAU TRUOC (khong lien quan gi den cac tinh nang moi them gan day):
Trong trang-chu.html va ca trang-chuproduphong.html, khi quan tri TAT rieng chatbot (o cai dat "Hien thi trang chu"), doan ma cu:
if (!d.bat_chatbot) { var ct = document.querySelector('.cum-tuong-tac'); if (ct) ct.style.display = 'none'; ... }
AN LUON CA CUM .cum-tuong-tac (goc CHUA CA BA nut Chatbot, Facebook, Zalo), khong chi rieng nut chatbot. Ba nut nay la BA CHUC NANG HOAN TOAN DOC LAP - tat chatbot khong nen keo theo mat luon Facebook va Zalo, day la loi logic thiet ke tu truoc, khong phai do lan sua truoc gay ra.
Da sua dung goc: doi thanh chi an rieng nut chatbot (#cb-nut) va bang dieu khien chatbot (#cb-panel), GIU NGUYEN ca cum va cac nut Facebook, Zalo du chatbot dang tat hay bat. Sua dong bo ca hai file (trang-chu.html va trang-chuproduphong.html, ban du phong cung co dung loi nay).
Da tu kiem chung dung kich ban that: TAT bat_chatbot qua API /api/trang-chu-cau-hinh, mo lai trang chu qua may chu that -> xac nhan CA CUM khong con bi an (rong, binh thuong), nut Zalo VAN hien binh thuong, nut Facebook VAN hien binh thuong, CHI RIENG nut Chatbot bi an dung nhu y muon. Da khoi phuc lai bat_chatbot: true sau khi kiem chung xong. Chay kiem-thu-giao-dien.js dat 237/237.
Bai hoc rut ra: khi mot su co duoc bao lai la "van con" sau mot lan sua, khong nen mac dinh lan sua truoc la dung huong nhung chua du - can quay lai RA SOAT TOAN DIEN TU DAU thay vi chi kiem tra sau hon o cung mot gia thuyet cu, vi rat co the (nhu truong hop nay) nguyen nhan that su nam o mot cho hoan toan khac.
Anh bao "mat Zalo". Ra soat phat hien nguyen nhan CHINH XAC: nut noi "Gop y" them o BAN 7.9 va cum nut tuong tac co san (Chatbot, Facebook, Zalo) TRUNG Y HET vi tri CSS (right:18px; bottom:18px), nut moi (z-index cao hon) de len che mat ca cum nut cu. Day la loi thuc su do lan sua truoc gay ra. Da sua: doi nut Gop y sang GOC TRAI man hinh (left:18px), da kiem tra ky khong co gi khac chiem cho o goc trai tren ca trang-chu.html va xem.html. Da tu kiem chung qua may chu that: ca hai cum nut (Zalo... ben phai, Gop y ben trai) deu hien du, khong con de len nhau.
Khac voi "Nguong tu dong yeu cau gop y" (BAN 7.10, tich luy TU TRUOC DEN NAY theo tung tai khoan, khong co moc thoi gian), day la BAO CAO TONG HOP toan he thong cho MOT KHOANG NGAY BAT KY do quantri@apag.edu.vn tu chon MOI LAN xem (thang nay, quy nay, nam ngoai... khong phai cau hinh co dinh luu san, vi nhu cau xem bao cao thay doi lien tuc).
Tan dung dung nhat ky co san (luot-doc qua luuVet.doc, da co san co che loc theo tu_ngay/den_ngay), KHONG xay he thong ghi vet moi. JOIN voi du lieu ho so (records) de lay so_trang cua tung ma ho so, tinh: tong so luot doc, so tai lieu KHAC NHAU, tong so trang, so tai khoan khac nhau, va bang chi tiet theo tung ngay.
API moi GET /api/thong-ke-doc-khoang-tg?tu_ngay=...&den_ngay=... - CHI toan quyen xem duoc (thong ke tong hop toan he thong, khong phai cua rieng ai).
Loi phat hien va da va trong luc kiem chung: viet nham dinh dang ngay la ISO (yyyy-mm-dd) trong khi truong "luc" cua nhat ky luot-doc thuc te luu theo dinh dang dd/mm/yyyy hh:mm:ss (dung nhu ham ngayCua co san trong luu-vet.js, chi la ham do chua duoc export nen phai tu viet lai dung dinh dang trong server.js) - da sua va kiem chung lai dung.
Su co thao tac ngoai y trong luc kiem chung (khong phai loi code): mot chuoi lenh sao chep server.js sang moi truong thu nghiem bi ngat giua chung, khien mot lan kiem tra doc nham ban cu va tuong code van sai. Da truy ra tan goc bang md5sum, xac nhan ban nguon that da dung tu dau, chi la moi truong thu nghiem chua duoc dong bo dung - khong anh huong gi den ban giao that.
Giao dien: khoi "32. Thong ke doc theo khoang thoi gian" trong Trung tam quan tri tong the - hai o chon tu ngay/den ngay (tu dong dien san dau thang toi hom nay khi vao tab, tien dung ngay), nut "Xem thong ke", hien 4 so lieu tong hop va bang chi tiet tung ngay.
Da tu kiem chung day du qua may chu that va mo phong giao dien that: doc thuc te vai tai lieu, goi API xac nhan dung ca 4 chi so (khop tay voi du lieu vua tao); thieu tham so tra loi 400 dung; tai khoan khong toan quyen bi chan 403 dung; chua dang nhap bi chan 401 dung; mo khoi 32 qua giao dien - ngay mac dinh tu dien dung, bam nut "Xem thong ke" that hien dung ket qua va bang chi tiet theo ngay.
Chay kiem-thu-giao-dien.js dat 237/237, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-luu-vet.js 51/51 - tat ca dat tuyet doi.
Da soat ky truoc khi ban giao: xac nhan bang md5sum va diff rang khong co bat ky thao tac nao trong toan bo qua trinh lam viec (ke ca cac su co thao tac neu tren) lam thay doi du lieu that cua he thong (cau-hinh.json, du-lieu.csv, cac tep nhat ky luu-vet deu khong bi dung cham, moi thay doi chi dien ra tren ban sao thu nghiem rieng biet).
Trang chu: "Nop khoa luan / Nop luan van, de an / Nop luan an" truoc day la 3 lien ket phu rieng biet, gio gom thanh MOT dropdown (chon loai) + mot nut "Di" gon gang, van nam trong dung khoi .nhom ma '10' nhu cu (van tu an theo dung logic an/hien da co).
Theo yeu cau: quantri@apag.edu.vn cau hinh de tung tai khoan ban doc, doc du mot so luong tai lieu hoac so trang nhat dinh thi TU DONG hien yeu cau gop y.
Tan dung ha tang co san, khong xay trung: dung chinh co che ghi luot doc (ghiLuotDoc, moi tai khoan chi tinh 1 lan/ho so/ngay - tranh dem trung khi mo lai) va truong so_trang co san cua ho so (tu dong dem tu PDF). Them MOT bo dem TICH LUY rieng theo tung tai khoan (tich_luy_doc: { so_tai_lieu, so_trang }, luu trong ban-doc/<email>.json), cong don moi khi co luot doc MOI thuc su (khong phai doc lai) - ham _congDonTichLuyDoc.
Cau hinh (cfg.nguong_gop_y): bat (bat/tat), theo ('tai_lieu' hoac 'trang'), nguong (so de kich hoat). API GET /api/ban-doc/nguong-gop-y (yeu cau dang nhap - tich luy la theo tai khoan) tra ve tai khoan dang goi da dat nguong chua.
Reset sau khi gop y: gui gop y thanh cong (qua handleGopYGui, chi khi da dang nhap) thi TU DONG dua bo dem tich luy ve 0 - chu ky lai bat dau tu dau, tranh hoi lien tuc ngay sau khi vua gop y xong nhung van dam bao cuoi cung se hoi lai sau khi da dung du nhieu tiep theo.
Widget tach thanh tep dung chung public/gop-y-widget.js (truoc day viet truc tiep trong trang-chu.html, gio tach rieng de sua MOT CHO ap dung ca trang-chu.html LAN xem.html - tranh copy-dan hai lan, de bao tri hon). Widget tu dong goi API kiem tra nguong ngay khi tai trang (chi khi da dang nhap), neu dat nguong thi TU DONG MO SAN hop thoai gop y kem dong nhac ro rang ("Ban da doc N tai lieu. Hay danh chut thoi gian gop y..."). KHONG chan dung viec doc tiep (ton trong trai nghiem), nhung se hien lai o moi lan tai trang tiep theo cho toi khi thuc su gui gop y.
Giao dien quan tri: khoi "31. Nguong tu dong yeu cau gop y" trong Trung tam quan tri tong the - bat/tat, chon tieu chi (tai lieu/trang), dat nguong, nut luu.
Loi phat hien va da va ngay trong luc kiem chung: lan dau viet xong handleConfigPut xu ly cho khao sat va cac muc khac nhung QUEN them doan xu ly rieng cho nguong_gop_y - kiem chung qua may chu phat hien ngay (goi luu tra ve bat:false du da gui bat:true). Da them dung doan xu ly con thieu va kiem chung lai.
Da tu kiem chung rat ky toan bo chu trinh qua may chu that va mo phong giao dien that (khong chi goi API tho): doc 1 tai lieu 50 trang -> tich luy dung 1/50; doc lai CUNG tai lieu nhieu lan trong ngay -> KHONG tang them (dung, tranh dem trung); doc them tai lieu khac -> tang dung; dat nguong thap (2 tai lieu), doc du 2 -> can_gop_y: true; gui gop y that qua API -> tich luy RESET ve 0; mo trang chu VA trang doc tai lieu voi tai khoan da dat nguong -> CA HAI deu tu dong mo dung hop thoai gop y kem dung dong nhac; mo khoi 31 quan tri -> hien dung cau hinh da luu, sua va luu lai qua giao dien that -> xac nhan luu dung qua API doc lap.
Chay kiem-thu-giao-dien.js dat 236/236, kiem-thu-khach-vang-lai.js 36/36, kiem-thu-nhom-cong-tac.js 28/28, kiem-thu-phan-quyen.js 16/16 - tat ca dat tuyet doi, xac nhan sua ham trung tam ghiLuotDoc (dung o moi luot doc tai lieu) khong lam hong bat ky luong doc nao dang chay dung.
Theo yeu cau "tu duy sau, tao cong cu lay y kien phan hoi nguoi dung sao cho phu hop nhat". Ra soat truoc khi lam va phat hien: he thong DA CO SAN mot bo khao sat y kien ban doc rat cong phu (khao-sat.js) - thiet ke 2 tang cau hoi (8 cau loi TV01-TV08 khoa cung de so sanh qua nhieu ky + toi da 4 cau thoi diem quan tri tu dat theo dot), backend thong ke rat sau (trung binh, do lech chuan, % hai long, so sanh 2 dot lien tiep, xuat minh chung kiem dinh) - NHUNG hoan toan CHUA CO giao dien xem ket qua, hai API thong-ke va minh-chung chua tung duoc mot trang HTML nao goi toi. Thu thap xong ma khong xem duoc thi cong cu gan nhu vo dung.
Quyet dinh tu van: KHONG xay cong cu moi trung lap, chi hoan thien dung mang ghep con thieu, cong them MOT kenh thu hai doc lap, dung muc dich khac, bo sung cho khao sat:
Them khoi "29. Ket qua khao sat y kien ban doc" vao Trung tam quan tri tong the (/trung-tam-quan-tri > tab Quan ly truc quan): chon loai phieu (dinh ky/thuong xuyen) va dot cu the, xem so phieu, diem trung binh chung, bang tung cau (ma, cau hoi, so phieu, TB, do lech, % hai long), bang so sanh voi dot truoc (neu co), danh sach y kien mo, nut tai minh chung JSON cho dot dinh ky. Khong sua gi trong khao-sat.js, chi goi dung cac ham da co san (thongKe, soSanhDot, xuatMinhChung).
Vi sao can ca hai, khong thay the nhau (tu van dua tren kinh nghiem thiet ke he thong phan hoi):
| | Khao sat dinh ky/thuong xuyen (co san) | Gop y nhanh (moi) |
|---|---|---|
| Muc dich | Do muc hai long tong the, phuc vu kiem dinh | Bat loi, cai tien lien tuc |
| Cau truc | Thang do co dinh, cau hoi dinh san | Tu do, mot o van ban |
| Tan suat | Gioi han (1 phieu/thang) | Khong gioi han |
| Doi tuong | Bat buoc dang nhap | Ca khach vang lai |
Module moi gop-y.js (dung mau y het khao-sat.js: luu JSON, khong dung thu vien ngoai), luu trong thu muc rieng gop-y/. Moi muc gom: loai (Bao loi/Gop y/De xuat/Khac), noi dung tu do, duong dan trang dang xem (tu dong ghi kem, giup can bo dinh vi van de nhanh), trang thai (moi/da xu ly), ghi chu xu ly cua quan tri.
Chong spam don gian: gioi han 8 lan gui/10 phut theo dia chi IP (luu tam trong bo nho, khong ben vung qua muc vi day chi la chan spam tho, khong phai co che bao mat nghiem ngat).
API moi (/api/gop-y): POST gui (KHONG bat buoc dang nhap - neu co dang nhap thi van ghi kem email de tien lien he), GET xem danh sach (yeu cau tai khoan kiem duyet bat ky, khong rieng toan quyen - vi day la kenh van hanh hang ngay khong nhay cam), POST /cap-nhat danh dau xu ly/ghi chu, POST /xoa xoa han (CHI toan quyen, tranh mat nham phan hoi that).
Giao dien gui: nut noi "Gop y" o goc duoi ben phai trang chu, mo hop thoai nho (chon loai + o van ban), gui duoc ngay khong can dang nhap, tu dong ghi kem duong dan trang hien tai.
Giao dien quan tri: khoi "30. Gop y nhanh / Bao loi" trong Trung tam quan tri tong the - bo dem (tong/chua xu ly/da xu ly), loc theo loai va trang thai, danh sach tung muc kem nut danh dau xu ly (hoac mo lai), o ghi chu xu ly, nut xoa.
Da tu kiem chung rat ky qua may chu that va mo phong giao dien that (khong chi goi API tho): gui gop y qua dung nut bam tren trang chu khi CHUA dang nhap (thanh cong, dung theo thiet ke); noi dung qua ngan bi tu choi dung; xem danh sach khi chua dang nhap bi chan dung (401); chan spam dung (lan thu 9 trong 10 phut bi tu choi); mo Trung tam quan tri, xac nhan ca hai khoi hien dung du lieu that (1 phieu khao sat voi diem TB 4.13, 2 gop y voi dung noi dung/duong dan/nhan "khach vang lai"); bam nut "Danh dau da xu ly" that tren giao dien, xac nhan lai qua API rieng biet da luu dung.
Chay kiem-thu-giao-dien.js dat 236/236 (tang 5 duong so voi truoc do phat hien 5 route moi), kiem-thu-khach-vang-lai.js 36/36, kiem-thu-phan-quyen.js 16/16, kiem-thu-khao-sat.js 56/56, kiem-thu-khao-sat-api.js 38/38 - tat ca dat tuyet doi, xac nhan khong dung cham gi den logic khao sat cu dang chay dung.
Anh bao /quan-tri-khu-vuc.html khong co nut lien ket, phai go tay URL. Ra soat phat hien: nut mo trang nay TU sheet.html DA CO SAN (menu Cong cu > "Quan tri khu vuc va tai lieu..."), nhung BAN THAN trang do (va cac trang cong cu khac) KHONG co duong lien ket QUA LAI voi nhau - moi trang la mot dao rieng, phai quay ve sheet.html moi mo duoc trang khac.
Da them mot thanh lien ket CHUAN, GIONG HET NHAU o dau 4 trang cong cu chinh, TU DONG danh dau "dang o day" theo location.pathname, tao thanh MOT VONG DAY DU - tu bat ky trang nao trong 4 trang cung bam duoc sang bat ky trang con lai, khong can quay lai Bang du lieu:
/quan-tri-khu-vuc (da co san CSS .lk-phanhe chuan bi tu truoc nhung CHUA TUNG duoc dung trong HTML nao - phat hien them mot thiet ke dang do khac)/quan-tri-nguoi-dung (thay 2 lien ket roi rac cu bang thanh chuan, giu nguyen 2 nut dac thu khac cua trang: "Dieu hanh trung gian", "Phan quyen nguoi dung")/kiem-ten (truoc day KHONG co lien ket nao ca toi trang khac)/trung-tam-quan-tri (da co san 2 lien ket "Trang chu", "Bang du lieu" o dau trang - chi bo sung them 3 lien ket con thieu vao dung thanh do, khong tao thanh rieng trung lap)Danh sach 5 trang trong vong: Bang du lieu, Quan tri nguoi dung, Quan tri khu vuc, Trung tam quan tri tong the, Kiem tra trung ten de tai.
Loi tu gay ra va da tu phat hien, tu sua: luc dau viet nham duong dan la /quan-tri-tong-the (trung ten file) thay vi duong dan THAT /trung-tam-quan-tri - kiem chung qua may chu phat hien ngay (trang tra ve rong). Da sua dung o ca 3 file lien quan, kiem chung lai xac nhan tro dung trang that, hien dung tieu de.
Da tu kiem chung toan bo bang mo phong giao dien that: ca 4 trang deu ve dung 5 lien ket (rieng trung-tam-quan-tri co 5 lien ket duoi dang co san, khong tu lien ket chinh minh), danh dau dung "dang" o tung trang, lien ket toi trang khac deu tra ve 200 va dung noi dung. Chay kiem-thu-giao-dien.js dat 231/231.
Anh bao: an mot nhom van con o trong xau (do CSS :nth-child tinh theo VI TRI DOM, khong biet phan tu nao dang bi JS an, nen khong dan trai dung o dang hien thi that su). Va: "gom 4 cai ngoai sinh thanh 2 bieu mau thoi" - dung y khop 1:1 voi 2 nhom THAT o phia sau (ma '10', '11'), de an mot nhom la gon ca mot o, khong con phai an nua vo mot khoi gop.
Gom lai dung 2 khoi: khoi thu nhat (ma '10') gio la MOT the duy nhat "Luận văn, luận án, khóa luận (sưu tầm ngoài)" voi lien ket chinh mo bieu mau (khong dinh san loai), va ba lien ket phu rieng cho tung loai (Khoa luan, Luan van/de an thac si, Luan an tien si) - dung nhu thiet ke da co san "nhom-phu" cho cac nhom khac. Khoi thu hai (ma '11') giu nguyen "Bài viết khoa học (sưu tầm ngoài)". Tong so o tren trang chu tu 10 giam con 8 (chan).
Sua tan goc co che "tu dan trai o cuoi khi le": chuyen HOAN TOAN tu CSS tinh (:nth-child) sang JS, tinh dung theo SO O DANG THUC SU HIEN THI (loc theo style.display !== 'none') NGAY SAU KHI da chay xong buoc an theo cau hinh - luon chay buoc nay (ke ca khi khong nhom nao bi an, hoac khi goi API that bai) de dam bao dung trong moi hoan canh, khong chi khi co an.
Da tu kiem chung ky qua may chu that va mo phong giao dien that (khong chi doc code): trang thai mac dinh 8 khoi (chan) khong co khoi nao bi dan trai; tat "Hien" cho nhom ma '10' -> con dung 7 khoi dang hien (le) -> khoi CUOI CUNG DANG HIEN THI THAT SU ("Bài viết khoa học") tu dong dan trai het chieu ngang, khoi truoc do khong bi anh huong; bat lai khoi phuc dung nhu cu. Chay kiem-thu-giao-dien.js dat 231/231.
Theo yeu cau, da hop nhat ve DUNG MOT co che duy nhat, chon co che TOT HON (mo rong ca hai nhom, khong chi rieng BVKH):
cfg.loai_ngoai_sinh (object, khoa la ma nhom '10'/'11'), ham docLoaiNgoaiSinh(cfg, ma), API GET|PUT /api/ngoai-sinh/loai. Gia tri mac dinh ma '10' bo sung them "Đề án thạc sĩ" (bi thieu so voi thiet ke truoc, gay lech voi lien ket "Nộp đề án thạc sĩ" da co san o trang chu).cfg.loai_bvkh_ngoai_sinh (mang phang cu), hang so DS_LOAI_BVKH_NGOAI_SINH_MAC_DINH, ham docLoaiBvkhNgoaiSinh, doan xu ly rieng trong handleConfigGet/handleConfigPut. Xac nhan qua grep toan bo server.js: khong con sot bat ky tham chieu nao.handleNgoaiSinhThongTin (API /api/ngoai-sinh/thong-tin ma hai bieu mau dang goi) de dung DUY NHAT docLoaiNgoaiSinh cho ca hai nhom - LVLA gio CUNG co danh muc rieng dong (truoc day dung chung DS_LOAI_TAI_LIEU voi ho so noi sinh, nay tach rieng de toan quyen tu dinh hinh duoc ca hai nhom doc lap).nop-ngoai-sinh-bvkh.html: nut "+ Thêm loại mới" doi sang goi dung PUT /api/ngoai-sinh/loai (truoc day goi /api/cau-hinh voi truong da bi xoa).nop-ngoai-sinh-lvla.html gio CUNG co nut "+ Thêm loại mới" (chi tai khoan toan quyen thay), nhat quan voi bien BVKH - vi gio ca hai nhom deu co danh muc rieng dong nhu nhau.
Da tu kiem chung day du qua may chu that va mo phong giao dien that (khong chi goi API): API tra dung 4 loai cho LVLA (gom ca "Đề án thạc sĩ"), them loai moi qua ca hai bieu mau (bam nut that tren giao dien, khong phai goi API tho) deu luu dung va hien ngay trong dropdown; xac nhan /api/cau-hinh KHONG con tra ve loai_bvkh_ngoai_sinh nua, chi con dung loai_ngoai_sinh. Chay kiem-thu-giao-dien.js dat 231/231, kiem-thu-phan-quyen.js 16/16, kiem-thu-phan-cap-khu-vuc.js 26/26, kiem-thu-khach-vang-lai.js 36/36 - tat ca dat tuyet doi, khong con hai co che song song gay nham lan nua.
Anh hoi "An/hien bieu mau o dau", ra soat phat hien: o checkbox "Hien" da co san tu truoc trong /quan-tri-khu-vuc.html CHUA TUNG CO TAC DUNG THUC TE NAO - chi luu trang thai, khong noi nao doc no de an/hien gi ca (cac khoi tren trang chu la HTML tinh, viet cung). Theo xac nhan cua anh ("ap toan bo linh hoat"), da lam cho no THUC SU hoat dong cho TAT CA 10 nhom (khong rieng gi khu vuc ngoai sinh):
API cong khai moi /api/khu-vuc/an-hien-cong-khai (GET, KHONG can dang nhap - trang chu la trang cong khai): chi tra ve dung {ma, hien} cho tung nhom, khong tra them ten/mo_ta/thu_muc hay bat ky thong tin nhay cam nao khac.
Co che linh hoat theo hai cap: moi lien ket chinh (.nhom-chinh) va lien ket phu (.nhom-phu) tren trang chu duoc gan them data-ma-nhom="X" ung dung MA THAT trong cau hinh. JS o trang chu goi API tren, roi:
div.nhom), ke ca moi lien ket phu ben trong.
Nho vay, quan tri co the bat/tat rieng le TUNG nhom (ca 10 nhom, khong rieng ngoai sinh) ngay tai /quan-tri-khu-vuc.html, tat/bat xong la trang chu tu dong theo, khong can sua HTML.
Da tu kiem chung qua may chu that: tat "Hien" cho ma '10' (Luan van/luan an/khoa luan ngoai sinh) -> ca 3 khoi lien quan tren trang chu bien mat dung, khoi "Bai viet khoa hoc" (ma '11', khong bi dung) van hien binh thuong, khong bi anh huong cheo; bat lai dung khoi phuc nhu cu. Chay kiem-thu-giao-dien.js dat 231/231, kiem-thu-phan-cap-khu-vuc.js 26/26, kiem-thu-phan-quyen.js 16/16.
CANH BAO QUAN TRONG, CAN ANH XAC NHAN HUONG XU LY: trong luc lam viec nay, phat hien MOT CO CHE SONG SONG KHAC cho "danh muc Loai cua khu vuc ngoai sinh" (cfg.loai_ngoai_sinh dang object voi 2 khoa '10' va '11', qua API GET|PUT /api/ngoai-sinh/loai) da co san trong ma nguon, KHAC HAN co che ma AI da tu viet o BAN 7.2 (cfg.loai_bvkh_ngoai_sinh, mang phang chi cho ma '11', qua /api/cau-hinh). Hai co che nay dang TON TAI SONG SONG, CHUA duoc hop nhat - co che moi phat hien (loai_ngoai_sinh) THUC RA TOT HON (mo rong ca cho ma '10', dung y het nguyen tac "danh muc dung chung") nhung CHUA duoc ket noi voi giao dien (nop-ngoai-sinh-bvkh.html va ham handleNgoaiSinhThongTin van dang dung co che cu loai_bvkh_ngoai_sinh). CAN anh xac nhan huong xu ly (hop nhat ve mot co che duy nhat) truoc khi sua tiep, vi day la thay doi cau truc du lieu, ngoai pham vi yeu cau hien tai.
1. Tach khoi gop ngoai sinh thanh 4 o rieng, moi o mot bieu mau/loai: truoc day o trang chu chi co 1 khoi gop chung ca luan van/luan an/khoa luan (link chinh) va bai viet khoa hoc (link phu). Da tach thanh 4 o rieng biet trong luoi chinh, moi o la mot the (div.nhom) doc lap giong het cac nhom khac dang co (Nhom 1-6): Khoa luan, Luan van/de an thac si (kem link phu rieng cho de an), Luan an tien si, Bai viet khoa hoc. Moi link nop LVLA them tham so ?loai=<ten loai> de bieu mau tu chon san dung loai (da sua nop-ngoai-sinh-lvla.html doc location.search).
2. Luoi tu dong dan trai o cuoi khi tong so o la SO LE: them CSS .luoi > .nhom:last-child:nth-child(odd) { grid-column: 1 / -1; } (chi ap dung tren man hinh du rong, khong anh huong che do 1 cot tren dien thoai). Voi thiet ke nay, bat ky luc nao them/bot mot o .nhom bat ky trong HTML (khong rieng gi khu vuc ngoai sinh), neu tong so o thanh le thi o cuoi cung TU DONG dan trai het chieu ngang thay vi de trong mot nua hang - dung "thiet ke dong", khong can sua CSS moi lan them/bot nhom.
3. Menu (Tep va cac muc khac) tren dien thoai khong hoat dong duoc: xac nhan dung: .thanh-menu (thanh chua cac nut Tep, ...) khong co bat ky quy tac rieng nao cho man hinh hep tu truoc gio, cac nut o sau bi day ra ngoai vung nhin thay tren dien thoai, khong the cham/bam toi. Da sua bang cach cho thanh menu tu dong xuong dong (flex-wrap: wrap) tren man hinh hep, thay vi de tran mot hang dai. Luu y ky thuat quan trong: KHONG dung overflow-x: auto cho giai phap nay (da thu truoc, phat hien se VO TINH CAT MAT menu con xo xuong .trinh-don - vi dropdown dung position:absolute va CSS bat ep overflow-y thanh an/cuon theo cung luc voi overflow-x neu no khac visible), da chon flex-wrap la giai phap an toan, khong dinh gi den dropdown.
4. Khoi "Thong ke tong hop tu dong" bi tran ngang tren dien thoai: xac nhan dung: mot trong hai luoi con trong khoi nay dung grid-template-columns: 1fr 1fr 1fr CO DINH (3 cot), khong doi theo kich thuoc man hinh, gay tran/chu bi ep qua nho tren dien thoai. Da them media query doi ve 1 cot khi man hinh hep (duoi 640px), xep chong cac muc "Theo khoa", "Theo nganh", "Theo loai hinh" doc thay vi ngang.
Da tu kiem chung: trang chu render dung 10 o (chan, khong kich hoat dan trai - dung), day du 5 lien ket nop rieng biet (khoa luan, luan van/de an, de an rieng, luan an, bai viet khoa hoc); mo phong giao dien that xac nhan tham so ?loai= tu chon dung gia tri trong bieu mau. Chay kiem-thu-giao-dien.js dat 230/230.
Anh bao chua thay khu vuc ngoai sinh o trang chu. Kiem chung: hai bieu mau va toan bo logic server (BAN 7.2) da dung va hoat dong, nhung KHOI LIEN KET o trang-chu.html (/) - noi nguoi dung thuc su bam vao de mo bieu mau - da bi sot, chua co trong ban da giao truoc do. Da them dung theo dung mau cua cac khoi nhom khac dang co san, dat o CUOI CUNG danh sach cac khoi (sau "Phong tu lieu so cac khoa"):
div.nhom) duy nhat - dung y "1 nhom" - voi link chinh mo bieu mau Luan van/luan an/khoa luan, link phu mo bieu mau Bai viet khoa hoc, va link "Xem danh muc da cong bo" tro toi /danh-muc?nhom=... dung nhu moi khoi khac.
Da doi chieu bang diff voi ban da dong goi truoc do (APAG_tulieuso90.zip): xac nhan CHINH XAC chi thieu dung khoi nay, khong co gi khac la. Da kiem chung lai qua may chu that: trang chu tra ve 200 va co dung noi dung khoi moi; lien ket "Xem danh muc da cong bo" tro dung /danh-muc cung tra ve 200. Chay kiem-thu-giao-dien.js dat 230/230.
Theo yeu cau: them 2 khu vuc rieng cho tai lieu THU THAP TU BEN NGOAI (khong phai do tac gia cua don vi viet), thiet ke hoan toan dong (danh muc dung chung, tu cap nhat khi them loai moi hoac doi ca don vi/co quan chu quan), luu tru rieng biet, cap quyen dac thu, van ho tro day du tien ich doc (ghi chu, sticky).
Them vao NHOM_KHO/cfg.nhom_kho (dung HET co che "Nhom tai lieu" da co san, khong lam rieng):
Dung MA CO DINH (khong dung TEN) de xac dinh trong code day co phai nhom ngoai sinh khong, vi TEN co the doi qua giao dien /quan-tri-khu-vuc.html da co san (giong moi nhom khac) ma khong lam hong logic luu tru/kiem quyen ben duoi.
Tu dong them khi nang cap, khong can anh tu tay lam: ham nangCapNhomNgoaiSinh() chay moi lan loadConfig(), kiem tra file cau-hinh.json that cua may chu (KHONG bi ghi de khi cap nhat code) da co ma '10'/'11' chua - neu chua thi tu dong them vao va ghi lai, CHI MOT LAN, khong lam lai neu anh da lo xoa di vi khong muon dung. Da tu kiem chung: lan dau khoi dong tu them dung 2 nhom, lan sau khoi dong lai KHONG them trung.
Thu muc goc moi: ngoai-sinh/, ben trong chia:
ngoai-sinh/luan-van-luan-an-khoa-luan/ - cho nhom ma '10'ngoai-sinh/bai-viet-khoa-hoc/ - cho nhom ma '11'
Da sua AN TOAN ham ghi/doc tep (ghiTepToanVan, timTepThucTe) de ho tro them thu muc dich ngoai UPLOAD_DIR ma KHONG doi hanh vi cu: UPLOAD_DIR van la noi thu DAU TIEN va MAC DINH cho moi ho so noi sinh hien co, hai thu muc ngoai sinh la nhanh THEM MOI, chi kich hoat dung cho ho so thuoc dung 2 nhom tren (tra theo MA nhom, khong theo ten). Van dung chung co che sao luu NAS/hai noi da co san cua he thong.
Da tu kiem chung: nop ho so vao nhom ngoai sinh -> tep nam DUNG thu muc con tuong ung, KHONG lan vao tep-toan-van/ cua ho so noi sinh; doc lai qua duong dan thong thuong (/nd?ma=...) van thanh cong binh thuong.
Dung HET co che phan quyen "khu vuc duyet" (nhom_duyet) da co san cua he thong - khong xay dung co che rieng, dung theo dung y anh "gan nhu he thong hien co: tai khoan nao, nhom tai khoan nao duoc lam gi, khoang thoi gian bao lau, cung co che tao the qua quet tra phi... nhu he thong san co". Quan tri chi can vao Quan tri nguoi dung, gan nhom_duyet cua tai khoan can cap quyen thanh dung ten mot trong hai nhom ngoai sinh (hoac cap toan quyen) - moi co che khac (han hieu luc tai khoan, gioi han doc theo loai, ve doc qua quet tra phi cho ban doc...) ap dung dung y het nhu voi moi nhom tai lieu khac, khong can lam gi them.
Phat hien va va mot lo hong bao mat that su trong luc kiem chung: luc dau, API nop ho so (/api/gui) chua co kiem tra gi rieng cho hai nhom nay - GOI THANG KHONG CAN TOKEN NAO CA van nop duoc vao khu vuc ngoai sinh! Da them lop kiem tra rieng, CHAT hon dieu kien "bat_buoc_dang_nhap_nhom" da co san (dieu kien do chi doi hoi CO tai khoan bat ky): voi rieng hai nhom ngoai sinh, bat buoc phai co quyenDuyet() hop le VA (toan quyen HOAC nhom_duyet chua dung ten nhom do), neu khong tra ve 403. Da tu kiem chung du 4 tinh huong: khong token (chan), nhom noi sinh cu (khong anh huong, van nop binh thuong nhu truoc), tai khoan kiem duyet nhung SAI nhom (chan), tai khoan duoc cap DUNG nhom (cho phep) - ca 4 deu dung.
Nhom LVLA (ma '10') dung chung danh muc DS_LOAI_TAI_LIEU co san (Khoa luan, Luan van thac si, De an thac si, Luan an tien si...) - dung nguyen tac danh muc dung chung, khong tao rieng.
Nhom BVKH (ma '11') co danh muc RIENG, luu dong trong cfg.loai_bvkh_ngoai_sinh (mac dinh: Bai ky yeu, Bai tap chi, Bai bao), toan quyen tu them/sua qua /api/cau-hinh - hoac ngay tren chinh bieu mau nop (nut "+ Thêm loại mới" chi hien voi tai khoan toan quyen). Loai moi them vao se CO NGAY lap tuc cho moi nguoi dung bieu mau, khong can sua code hay khoi dong lai may chu.
Ve "doi ca don vi" anh nhac: hieu dung la nguyen tac thiet ke chung (khong phai mot truong cu the) - moi danh muc lien quan (loai tai lieu, ten nhom...) deu luu DONG trong cau hinh, khong hard-code gan cung theo mot co quan chu quan cu the (APAG). Khi he thong duoc trien khai/doi thuong hieu cho co quan chu quan khac (vi du Intracom), toan bo danh muc van giu nguyen theo cau hinh da luu, khong bi reset ve gia tri mac dinh cua code.
nop-ngoai-sinh-lvla.html (duong dan dep: /nop-ngoai-sinh-lvla) va nop-ngoai-sinh-bvkh.html (/nop-ngoai-sinh-bvkh) - ca hai deu: yeu cau dang nhap (dung API /api/ngoai-sinh/thong-tin, KHONG doi hoi toan quyen nhu /api/cau-hinh, chi can dang nhap va tu tra ve dung quyen thuc su cua nguoi goi cho tung nhom), AN HAN toan bo form neu tai khoan chua duoc cap quyen roi hien thong bao ro rang, chi hien form khi da xac nhan co quyen. Nop hong so qua API /api/gui da co san, dung chung toan bo luong xu ly voi ho so noi sinh (tu dong duyet neu duoc cau hinh, cong khai theo loai neu duoc bat...).
Tien ich doc (ghi chu, sticky) tu dong hoat dong dung ngay, KHONG can viet lai gi ca - vi ho so cua hai nhom ngoai sinh van nam CHUNG trong du-lieu.csv nhu moi ho so khac (chi khac gia tri nhom_tai_lieu), nen toan bo he thong khoa/records dang dung cho ghi chu, sticky, xem thu N trang, han muc doc dong thoi, thu phi doc... ap dung dung ngay, khong phan biet nguon goc.
Da tu kiem chung toan bo qua may chu that va mo phong giao dien that (khong chi goi API tho): tai khoan sai quyen mo form -> thay dung thong bao "khong du quyen", vung nhap lieu an; tai khoan dung quyen -> thay dung danh sach loai; dien du thong tin va gui THAT qua form (dung FormData/multipart that, khong phai gia lap) -> ho so tao thanh cong, dung nhom, dung loai, tep nam dung thu muc ngoai-sinh/luan-van-luan-an-khoa-luan/, khong lan vao tep-toan-van; doc lai va ghi chu tren ho so ngoai sinh do deu hoat dong binh thuong.
Chay kiem-thu-giao-dien.js dat 230/230 (tang 3 duong so voi truoc do phat hien them cac route/trang moi), kiem-thu-phan-quyen.js 16/16, kiem-thu-phan-cap-khu-vuc.js 26/26, kiem-thu-nhom-cong-tac.js 28/28, kiem-thu-khach-vang-lai.js 36/36 - tat ca dat tuyet doi, khong anh huong gi den cac tinh nang da co.
1. Da sua sot nhan giao dien: khoi "Cong khai co thoi han cho khach" (Bang du lieu > Cai dat quyen kiem duyet) van con SOT lai nhan va ghi chu tu thiet ke cu, ghi "theo nhom"/"moi nhom" du noi dung ben trong da doi sang "theo loai" tu BAN 6.8. Da sua dung: tieu de "...theo loai tai lieu", ghi chu "cac loai duoi day", canh bao "chua loai nao duoc mo". Day co the la ly do anh kho tim/kho hieu cong tac nay o dau.
2. Ra soat ky theo bao cao "dat 3 trang dau van doc toan bo": day la tinh nang KHAC HAN "Cong khai co thoi han cho khach" - ten la "Xem thu mot so trang dau cho khach" (Bang du lieu > Cai dat quyen kiem duyet > khoi rieng, ma X_NHOM = 4 nhom co dinh Luan an/Luan van va de an/Khoa luan/Cac loai con lai, KHONG doi theo BAN 6.8 vi day la tinh nang khac, khong nam trong pham vi yeu cau truoc do).
Da tu kiem chung bang may chu that voi PDF that 6 trang: dat "Luan an" mo xem thu 3 trang, nop va duyet mot ho so Luan an tien si, doc bang KHACH VANG LAI (khong co token nao) - noi dung tra ve NHO HON RO RET (524 byte) so voi doc bang tai khoan co quyen day du (909 byte). Xac nhan CHAC CHAN tinh nang van hoat dong dung, khong phai loi code.
Nguyen nhan that cua nhung gi anh thay: code co dieu kien if (taiKhoanYeuCau(...)) return null; - nghia la BAT KY AI DA DANG NHAP (ke ca tai khoan ban doc thuong, khong rieng can bo) deu doc toan van, khong bi cat. Day la thiet ke CO CHU DICH ("muon doc tiep thi dang nhap"), khong phai loi. Rat co the luc kiem tra, trinh duyet van con phien dang nhap san (tu buoc vao Bang du lieu dat cau hinh) nen tu dong thay toan van.
De kiem tra dung: mo trinh duyet an danh, hoac dang xuat han khoi moi tai khoan, roi moi mo tai lieu - luc do moi dung vai "khach vang lai" ma tinh nang nham toi.
Chay kiem-thu-giao-dien.js dat 227/227, kiem-thu-khach-vang-lai.js dat 36/36 sau khi sua nhan giao dien.
Anh bao: dat "tu dong duyet" cho Luan an tien si, nop thu mot ho so nhung /sheet van chua thay duyet.
Da tim dung nguyen nhan bang kiem chung that qua may chu: ham loaiDuocTuDongDuyet (viet o BAN 6.8) doi hoi CA HAI dieu kien: (1) loai do co tu_duyet: true, VA (2) cong tac tong cong_khai_khach.bat phai duoc BAT. Day la LOI THIET KE THAT SU: "Tu dong duyet" va "Cong khai cho khach vang lai" la HAI NHU CAU DOC LAP (co the muon tu dong duyet mot loai nhung KHONG muon mo cong khai cho khach doc, hoac nguoc lai), nhung bi vo tinh rang buoc chung mot cong tac. Ve mat ten goi, cong tac "Cong khai co thoi han cho khach" nghe nhu chi lien quan viec mo cho khach xem, khong lien quan gi den viec tu dong duyet - nen de bi quen bat, va khi quen thi tinh nang "tu dong duyet" AM THAM khong chay, khong canh bao gi ca. Da tu kiem chung dung kich ban nay: dat dung loai, tich dung o tu dong duyet, nhung cong tac tong dang tat -> ho so nop van KHONG duoc tu dong duyet, dung y het trieu chung anh bao.
Da sua: bo han dieu kien phu thuoc cong tac tong. Tu day, chi can loai do duoc dat tu_duyet: true la du, KHONG can bat cong tac "Cong khai co thoi han cho khach" nua. Hai tinh nang hoan toan doc lap voi nhau nhu dung ban chat cua chung.
Da sua them ghi chu ngay duoi checkbox "Tu dong duyet" tren giao dien de noi ro dieu nay, tranh nham lan lai ve sau.
Da tu kiem chung lai dung kich ban da gay loi: cong tac tong TAT, chi bat rieng tu_duyet cho "Luan an tien si", nop ho so loai nay -> tu dong duyet dung ngay. Chay kiem-thu-giao-dien.js dat 227/227, kiem-thu-khach-vang-lai.js dat 36/36 (xac nhan sua khong lam anh huong gi toi tinh nang cong khai cho khach van hoat dong dung nhu truoc).
Luu y quan trong cho anh: neu truoc day anh da dat "tu dong duyet" cho mot vai loai nhung khong thay hoat dong (dung nhu bao cao), sau khi cap nhat len ban nay se TU DONG hoat dong dung ngay, khong can dat lai gi ca - cau hinh da luu truoc do van con nguyen, chi la logic kiem tra da duoc sua dung.
Ra soat theo yeu cau va tim ra: he thong da co san 4 nguon du lieu ten de tai dung de doi chieu trung (ho so noi sinh da duyet, bai ban tin da nop, kho de tai cu nap tu Excel, kenh bac cau OAI-PMH/DSpace da dong bo), nhung CHUA TUNG CO chuc nang tai xuong danh sach nay cho nguoi dung tu xem/doi chieu thu cong.
Da them moi: nut "Tai toan bo danh sach ten de tai (Excel)" o trang Kiem tra trung ten de tai (/kiem-ten.html), chi tai khoan co quyen kiem tra trung (can bo chinh, tai khoan phu, ban doc duoc cap quyen) moi tai duoc.
Dung dung nguon that he thong dang doi chieu, khong tu bia them nguon rieng: gop CA 4 nguon noi tren thanh mot danh sach thong nhat, MOI DONG GHI RO ten de tai, tac gia, nam, va nguon (de biet lay tu dau).
Phan loai HOAN TOAN DONG theo dung yeu cau "chu y nghiem trong": tep Excel xuat ra tu dong chia moi trang tinh (sheet) THEO DUNG GIA TRI "Loai" THAT dang co trong du lieu luc tai - khong hard-code bat ky loai nao, khong gioi han so luong hay ten loai. Loai moi xuat hien o bat ky nguon nao (ho so nop moi qua bieu mau, nap them Excel de tai cu, dong bo kenh bac cau moi...) se TU DONG co trang tinh rieng ngay lan tai tiep theo, khong can sua code hay cau hinh gi them.
Da tu kiem chung ky bang may chu that: tai file that qua dung duong dan, xac nhan dung dinh dang Excel (Microsoft Excel 2007+), doc lai noi dung tung sheet doi chieu voi du lieu mau - dung 4 trang tinh theo dung 4 loai thuc te dang co (Luan van thac si, Luan an tien si, De an thac si, De tai nghien cuu khoa hoc), dung so luong va noi dung tung dong. Xac nhan tai khoan chua dang nhap bi chan dung (403). Kiem chung giao dien qua mo phong dang nhap that: lien ket tai duoc gan dung token, tai qua dung lien ket do thanh cong, dung tep Excel that.
Chay kiem-thu-giao-dien.js dat 227/227.
Ra soat theo yeu cau va tim ra: tinh nang "cong khai co thoi han cho khach vang lai" da co san tu truoc, nhung gan CUNG DINH voi 3 nhom co dinh (luan an/luan van/khoa luan), gan loai vao nhom qua so khop chuoi con hard-code trong code - vi pham nguyen tac "luon dong theo danh muc dung chung". "Tu dong duyet ngay khi gui" hoan toan chua co.
Da lam lai hoan toan theo dung 2 xac nhan cua anh:
1. Moc tinh thoi gian van la NGAY DUYET (giu nguyen nhu cu, khong doi).
2. Moi loai tai lieu cau hinh RIENG BIET DOC LAP, khong con gom theo 3 nhom co dinh nua. Cau hinh gio la mot object phang, khoa la CHINH TEN LOAI THAT trong he thong (vi du "Khoa luan", "Luan van thac si", "De cuong hoc phan"...), khong gioi han so luong hay ten goi nao - loai moi xuat hien o dau (them moi qua bieu mau, nhap Excel...) deu tu dong dung duoc ngay khi quan tri cau hinh cho no, khong can sua code.
3. Tu dong duyet rieng cho tung loai: moi loai co the bat rieng "tu_duyet" - khi nguoi hoc gui ho so dung loai do, he thong tu danh dau da duyet NGAY LAP TUC (kem nhan "(Tu dong duyet)"), khong can cho can bo duyet tay. Loai khac khong bat van theo quy trinh cu (cho duyet).
Danh sach loai de quan tri chon khi cau hinh la HOAN TOAN DONG: API gop CA danh muc chuan (DS_LOAI_TAI_LIEU) LAN moi gia tri "Loai" dang thuc su co trong du lieu that (ke ca loai tuy bien ngoai danh muc chuan), khong bo sot loai nao, khong can sua code khi co loai moi - dung dung "Chu y nghiem trong" cua anh ve co che dong thong minh.
Y nghia quan trong can biet: tinh nang nay CHI SIET RIENG cho loai da duoc quan tri chu dong cau hinh, KHONG doi chinh sach doc mac dinh chung cua he thong cho loai chua cau hinh - dung tinh than "chi siet lai, khong bao gio noi ra" von co san tu truoc. Loai nao chua duoc cau hinh gi trong "Cong khai co thoi han cho khach" thi van theo chinh sach doc mac dinh nhu khi tat hoan toan tinh nang nay, KHONG bi chan boi tinh nang nay.
Giao dien: o Bang du lieu > Cai dat quyen kiem duyet > khoi "Cong khai co thoi han cho khach", gio ve DONG theo toan bo loai tai lieu dang co, moi loai mot khoi rieng voi day du: chon che do (tat/khoang ngay/so ngay), va o "Tu dong duyet ngay khi nguoi hoc gui ho so loai nay" rieng cho tung loai.
Tuong thich nguoc, can biet: cau truc du lieu doi tu cong_khai_khach.nhom (3 nhom co dinh) sang cong_khai_khach.theo_loai (dong theo loai). Neu anh tung bat va cau hinh tinh nang nay o ban truoc, cau hinh cu se KHONG con tac dung sau khi cap nhat len ban nay - can vao lai Cai dat quyen kiem duyet va thiet lap lai cho tung loai can dung.
Da tu kiem chung rat ky bang may chu that, dung dung luong nop that qua /api/gui: bat tu dong duyet cho loai "Khoa luan" + cong khai 15 ngay ke tu ngay duyet, nop mot ho so Khoa luan that -> tu dong duyet ngay lap tuc, khach vang lai doc duoc ngay; nop ho so Luan van thac si (loai KHONG bat tu dong duyet) -> van giu nguyen chua duyet, khach bi chan dung. Da cap nhat lai toan bo bo kiem thu lien quan (kiem-thu-khach-vang-lai.js, tu cau truc "nhom" cu sang "theo_loai" moi, sua lai ca kha nang hieu sai cua chinh minh ve y nghia "chi siet rieng, khong doi chinh sach chung"), chay dat 36/36. Da kiem chung giao dien qua mo phong that: mo dung hop, ve dung 9 loai voi 9 o chon che do va 9 checkbox tu dong duyet, tim dung khoi "Khoa luan" theo data-loai. Chay kiem-thu-giao-dien.js dat 227/227.
Theo yeu cau: ban doc co the tao tep dinh kem de ghi chu vao tai lieu, tep nay nam o thu muc rieng cua nguoi dung va de dang xoa/don dep.
Noi luu: dinh-kem-ghi-chu/u-<ma bam email>/ - moi ban doc dung mot thu muc rieng (ten thu muc bam tu email, giong het cach tep ban doc ban-doc/bd-*.json da lam tu truoc, khong lo email that ra ten thu muc). Xoa het thu muc cua mot nguoi la don sach tep dinh kem cua ho, khong dam vao ai khac.
Han muc da chot cung anh: toi da 10MB moi tep, toi da 200MB tong dung luong moi nguoi dung, chi nhan anh (jpg, jpeg, png, gif, webp) va tai lieu van phong (pdf, docx, xlsx, pptx) - tuyet doi khong nhan tep thuc thi hay bat ky duoi nao khac ngoai danh sach nay.
Lien ket voi ghi chu: moi ghi chu (g) co them mang dinh_kem (ten tep that, ten hien thi goc, dung luong, thoi gian). Xoa ghi chu thi TU DONG xoa het tep dinh kem cua no (ca trong danh sach lan tep that tren dia), tranh de lai rac mo coi khi don gian chi xoa ghi chu ma quen tep.
API moi (/api/ban-doc/dinh-kem):
loai, ma, ghi_chu_id): tai len mot tep, gan voi dung mot ghi chu cu the cua chinh minh. Kiem tra day du dung luong tung tep, tong dung luong, dinh dang, va gioi han toi da 10 tep moi ghi chu./dinh-kem/<ten tep>?email=<chu so huu>: tai ve/xem. Kiem quyen: chinh chu, hoac nguoi duoc CHINH ghi chu do chia se toi (dung lai dung logic chia se da co san cua ghi chu, khong tao co che rieng)./dinh-kem/xoa: xoa mot tep dinh kem cu the khoi mot ghi chu./dinh-kem/cua-toi: liet ke TOAN BO tep dinh kem cua chinh nguoi goi, o moi tai lieu, kem ngu canh (tai lieu nao, ghi chu gi) va tong dung luong dang dung / han muc - day chinh la cho "de dang de xoa - don dep" theo dung yeu cau, khong can tim lai tung tai lieu.Giao dien:
xem.html: hop sua ghi chu (bam vao mot dau danh dau de sua) gio co them khoi "Tep dinh kem" - xem danh sach, them tep moi, xoa tung tep, ngay tai cho dang doc.ca-nhan.html: them tab moi "Tep dinh kem" canh cac tab Gia sach/Chu de/Thong bao/Duoc chia se da co - trang tong hop toan bo tep dinh kem cua chinh minh o moi tai lieu, co thanh hien thi % da dung han muc, xoa duoc ngay tu day.
Da tu kiem chung rat ky qua may chu that: tao ghi chu, dinh kem PDF, tai xuong dung noi dung goc; tep .exe bi chan dung; xoa ghi chu thi tep dinh kem TU DONG bien mat ca trong danh sach lan tren dia that (da xac nhan bang lenh tim tep truc tiep). Kiem chung giao dien qua mo phong that: mo tab "Tep dinh kem" o trang ca nhan, hien dung ten tep/dung luong/% han muc, bam Xoa tu giao dien, xac nhan lai qua API la da xoa that (khong chi bien mat khoi man hinh). Chay kiem-thu-giao-dien.js dat 227/227.
Ban doc bao: cu gach chan xong lai mat. Ra soat va tim dung nguyen nhan: phia trinh duyet co mot nguong loai bo net ve qua nho truoc khi gui len may chu (if (rr < 0.01 || dd < 0.005) return; trong public/xem.html), dung CHUNG cho ca "boi mau" (highlight, can vung to) lan "gach chan" (mot duong ke, tu nhien rat mong). Gach chan that cua ban doc (keo chuot gan nhu ngang, chieu cao gan bang 0) hau nhu luon bi nguong nay am tham chan lai TRUOC KHI kip gui len may chu, khong co canh bao gi ca - dung trieu chung "gach xong lai mat".
Da tu kiem chung bang cach goi thang API luu ghi chu (bo qua giao dien): may chu luu va doc lai HOAN TOAN DUNG voi vung rat mong (d=0.002 hoac nho hon), xac nhan chac chan loi nam o phia trinh duyet, khong phai may chu.
Da sua ba viec:
1. Gach chan gio chi kiem tra chieu RONG toi thieu (dam bao khong phai bam nham), bo han kiem tra chieu cao toi thieu - dung voi ban chat gach chan la mot duong ke mong, khong phai vung to. Van ep mot muc rat nho (0.0008) neu chieu cao bang 0 tuyet doi, de con ve lai duoc dung vi tri o moi kich thuoc man hinh.
2. Gach chan gio dung MAU va DO DAM chon duoc (da co san bo chon tren thanh cong cu, dung chung voi but viet - mauChon, doDay), thay vi mau do 2px co dinh nhu truoc. May chu von da co san cho luu ca hai truong nay (mau, do_day) tu truoc, chi la giao dien chua tung dung cho gach chan.
3. Ap dung dung mau/do dam ngay ca luc dang keo chuot ve tam (xem truoc), khong chi sau khi da luu xong.
Da tu kiem chung nghiem tuc: kiem thu don vi logic nguong o moi tinh huong bien (gach chan mong, cuc mong, bam nham chieu rong, va xac nhan highlight khong bi anh huong gi); goi API that voi du lieu mong dung nhu ban doc se ve, luu va doc lai dung mau "tim", do dam 7, khong mat. Chay kiem-thu-giao-dien.js dat 227/227.
Trong luc chay bo kiem thu khac (kiem-thu-cot-toan-van-va-sticky.js), phat hien 1 phep hong ("A2: an ca du lieu link_toan_van") hoan toan khong lien quan gach chan. Da doi chieu voi ban goc CHUA HE SUA GI: hong y het, xac nhan day la loi co san tu truoc, khong phai do sua doi lan nay gay ra.
Yeu cau: dua toan bo chuc nang thuc su thuoc ve "quan tri tai khoan nguoi dung" (dang nam rai rac o cac trang khac) vao mot giao dien duy nhat la Quan tri nguoi dung, con noi dung kiem duyet, nap chuan hoa du lieu, kho sach truyen thong, AI... giu nguyen cho cu.
1/3 - Mot thiet bi mot lan: da chuyen han tu Bang du lieu sang Quan tri nguoi dung > "Phan quyen nguoi dung..." > tab "Cai dat dang nhap". Da kiem chung ky: bat/luu o noi moi, xac nhan cau hinh dung; trang cu khong con sot gi, nut Luu chinh cua form khong lo van hoat dong binh thuong.
2/3 - Nhom tai khoan: QUYET DINH KHONG DI CHUYEN VAT LY, chon huong an toan nhat. Ra soat ky phat hien phan nay (bang "Ten nhom tai khoan / Pham vi doc / Tu kiem tra trung lap...") phu thuoc SAU vao ha tang rieng cua trang Bang du lieu (ham boSuuTapCheckbox can danhSachNhom(), DS_NHOM_CO_KHOA, DS_KHOA). Di chuyen vat ly se can sao chep dung y het rat nhieu ham phu thuoc, rui ro cao voi dung tinh nang anh huong pham vi doc cua hang tram tai khoan. Trong luc thu di chuyen that, phat hien 2 lo hong JS thuc su (goi ham render vao phan tu HTML da bi xoa), da KHOI PHUC NGUYEN VEN va kiem chung khong con loi.
Thay vao do, da them LIEN KET CHI DAN RO RANG hai chieu: o Quan tri nguoi dung, duoi o chon "Nhom tai khoan" khi sua tai khoan, co ghi chu va lien ket tro sang Bang du lieu (noi tao/sua/xoa nhom that su). O Bang du lieu, duoi tieu de "Nhom tai khoan doc truc tuyen", co ghi chu tro nguoc lai Quan tri nguoi dung cho viec phan quyen day du, sua hang loat, tao tu Excel. Ca hai deu dung chung nguon du lieu that (cfg.nhom_tai_khoan), nen thao tac o ben nao cung phan anh dung ngay o ben kia.
3/3 - Chan do mat khau: DA CHUYEN XONG HOAN TOAN, toan bo HTML va 7 ham JS (napChanDo, qlCdThemDongNhom, qlCdXoaDongNhom, qlCdLuuTheoNhom, qlCdLuuCaiDat, qlCdMo, qlCdMoTatCa) da roi khoi Trung tam quan tri tong the, chuyen han sang Quan tri nguoi dung > tab "Cai dat dang nhap", dung chung API cu (/api/chan-do/*) khong doi. Luu y ky thuat khi di chuyen: hai trang dinh nghia ham $() KHAC NHAU (Trung tam quan tri dung getElementById, khong dau #; Quan tri nguoi dung dung querySelector, CAN dau #) - da doi dung tung cho khi sao chep, tranh loi im lang. Ham goi API cung khac ten va cach tham so (goi(duong, than, cach) doi thanh api(duong, {method, body})); ham thong bao qlTB truoc day chua co o Quan tri nguoi dung, da tu viet moi.
Phat hien va sua them mot loi hieu nham khai niem tu chinh luc kiem chung lai: ham tinh thoi gian khoa rieng (xay o mot ban giao truoc) vo tinh dung dsNhomCua() - la ham doc "KHU VUC DUYET" (dung cho tai khoan kiem duyet, vi du "Nguoi hoc gui nop"), TRONG KHI YEU CAU THAT SU LA "NHOM TAI KHOAN" (nhom_tk, dung cho sinh vien/ban doc theo lop, vi du "K30") - hai khai niem hoan toan khac nhau trong he thong. Loi nay da lot qua cac lan kiem chung truoc do vi vo tinh test dung bang du lieu "khu vuc duyet" ma khong nhan ra da nham khai niem. Da sua ca hai cho lien quan (layPhutKhoaTheoNhom va danh sach goi y nhom trong handleChanDoDS) de dung dung nhom_tk/cfg.nhom_tai_khoan.
Da tu kiem chung lai toan bo, dung dung khai niem "Nhom tai khoan": tao nhom that "K30" qua Bang du lieu, dat rieng thoi gian khoa 33 phut cho nhom nay, tao tai khoan thuoc dung nhom do, sai mat khau 5 lan, xac nhan khoa dung 33 phut; tai khoan khac khong thuoc nhom nao van khoa dung 10 phut mac dinh, khong bi anh huong. Kiem chung giao dien qua mo phong that: tab hien dung ten "K30", danh sach dang khoa hien dung ca hai tai khoan kem dung so phut rieng cua tung tai khoan.
Da xoa sach hoan toan khoi cu o Trung tam quan tri tong the (HTML, 7 ham JS, va loi goi napChanDo() trong ham veQuanLy()), kiem tra khong con sot bat ky tham chieu nao (grep rong het), kiem chung qua mo phong that: mo lai ca hai tab cua trang, hoan toan khong con loi JavaScript nao.
Phat hien trong luc ra soat de gom giao dien (viec 1): hai noi khac nhau trong he thong deu doc/ghi CHUNG mot truong cfg.nhom_tai_khoan, nhung MOI NOI CHI BIET MOT PHAN cau truc du lieu cua nhom:
/api/cau-hinh) quan ly: ten, pham vi doc (doc), tu kiem tra trung lap (tu_quet), hieu luc, gioi han luot/dung luong, loai tep, xem lien ket toan van./api/bo-suu-tap) quan ly: ma, ten, danh sach thanh vien.TRUOC BAN NAY, moi lan luu O MOT BEN, ben do TAO LAI TOAN BO MANG nhom_tai_khoan tu dau, GHI DE mat sach cac truong ma no khong biet toi (vi khong co o nhap tuong ung tren giao dien do). Hau qua thuc te da kiem chung: dat pham vi doc "tat ca" va bat tu kiem tra trung lap cho mot nhom qua "Cai dat quyen kiem duyet", chi can sau do co ai do vao "Bo suu tap" sua ten hoac thanh vien cua BAT KY nhom nao roi bam Luu, la TOAN BO pham vi doc va tu kiem tra trung lap CUA NHOM DO bi xoa sach ve mac dinh rong/tat, khong co canh bao gi ca. Day la loi co san tu truoc (khong phai do lan sua nao trong phien lam viec gan day gay ra), nhung anh huong truc tiep den do tin cay cua he thong khi van hanh that.
Da va: ca hai ham server (handleBoSuuTapPut va handleConfigPut) gio MERGE voi nhom CU cung ten (chuan hoa dau, hoa/thuong) thay vi ghi de toan bo. Voi tung truong, dung hasOwnProperty de phan biet ro "client khong gui truong nay" (GIU NGUYEN gia tri cu) voi "client gui gia tri moi, ke ca rong/false" (GHI DE dung gia tri moi). Nho vay, luu tu ben nao cung chi doi dung phan minh quan ly, khong dung toi phan cua ben kia.
Gioi han con lai, can biet: ghep noi dua tren TEN nhom (khong co ma dinh danh chung on dinh giua hai he thong). Neu doi TEN mot nhom qua mot trong hai giao dien, lan luu do se duoc coi la mot nhom MOI hoan toan o phia con lai (mat lien ket voi du lieu cu cua ten cu). Vi vay, khi can doi ten nhom, nen doi o CA HAI noi cho khop, hoac tot nhat la chi doi ten qua mot noi va kiem tra lai o noi kia sau khi luu.
Da tu kiem chung rat ky bang may chu that, ca hai chieu:
Da doi chieu voi ban goc de loai tru nham lan: trong luc chay bo kiem thu tong hop (kiem-thu-tong-the.js), phat hien 1 phep hong khac ("Gui lai tep da co thi phat hien trung") khong lien quan gi den nhom tai khoan. Da dung lai, dung lai ban goc CHUA HE SUA GI (tu ban sao luu doi chieu ban dau cua toan bo phien lam viec) de chay doi chung: phep do CUNG HONG Y HET tren ban goc, xac nhan day la han che co san cua moi truong (co the do sandbox thieu cong cu ben ngoai can thiet), hoan toan khong lien quan den bat ky sua doi nao trong phien lam viec nay.
Chong thoai lui: kiem-thu-giao-dien.js 227/227, cong them 4 bo kiem thu lien quan truc tiep (han muc doc dong thoi, mot thiet bi mot lan, phan quyen, nhom cong tac) deu dat tuyet doi, tong 106/106 phep lien quan.
Sau khi ra soat ky hon, phat hien THEM mot co che thu BA hoan toan tach biet: khi KHONG bat "Moi tai khoan chi dang nhap mot noi" (mac dinh), neu co ai co dang nhap tu thiet bi khac trong luc tai khoan dang co phien noi khac, co qua 5 lan trong 1 gio thi khoa tam - truoc day la hang so cung 15 phut, khong cau hinh duoc, ap dung chung moi tai khoan, hoan toan tach roi voi cai dat "chan do mat khau" da lam o BAN 6.1.
Theo yeu cau moi hon, thiet ke lai thong nhat: CA HAI co che (sai mat khau, VA co dang nhap noi khac qua nhieu lan) gio dung CHUNG mot muc dinh 10 phut (thay vi 15), VA quan tri toi cao dat duoc thoi gian khoa KHAC NHAU theo TUNG NHOM TAI KHOAN, thay vi mot con so chung cho toan he thong nhu BAN 6.1.
Cach dung: van o Trung tam quan tri tong the > "Quan ly truc quan" > muc "6. Chan do mat khau", ngay duoi phan cai dat chung, co them khoi mau vang "Dat thoi gian khoa rieng theo tung nhom tai khoan". Bam "Them nhom", chon dung ten nhom (lay tu danh sach nhom dang co that trong he thong), go so phut muon khoa rieng cho nhom do, bam "Luu thoi gian theo nhom". Nhom nao KHONG co trong danh sach nay thi tu dong dung muc dinh chung 10 phut.
Ap dung cho CA HAI co che cung luc: tai khoan thuoc nhom da duoc dat rieng, du bi khoa vi sai mat khau hay vi co dang nhap noi khac qua nhieu lan, deu dung DUNG so phut da dat cho nhom do.
Rieng phan dem theo DIA CHI MAY (khong gan voi mot tai khoan/nhom cu the, dung de chan mot may do qua nhieu tai khoan) van dung muc chung dat o cai dat phia tren, khong bi anh huong boi thiet lap theo nhom.
Da tu kiem chung day du bang may chu that: tai khoan khong thuoc nhom nao co cau hinh rieng, sai 5 lan mat khau, khoa dung 10 phut (mac dinh moi). Dat rieng nhom "Nguoi hoc gui nop" la 20 phut, tai khoan thuoc nhom do sai 5 lan, khoa dung 20 phut (khac mac dinh, dung nhom rieng). Da kiem chung giao dien qua mo phong that: mo dung tab, thay khoi hien dung, them dong, chon dung ten nhom co san trong he thong (khong go tu do sai chinh ta), luu gui dung du lieu len may chu.
Ra soat theo yeu cau va xac nhan: ca hai viec deu da co san tu truoc, khong thieu chuc nang nao, nhung nam o HAI TRANG KHAC NHAU, khong lien ket qua lai, rat de bi bo sot khi khong biet truoc:
/sheet), bam nut "Cai dat quyen kiem duyet...", tim khoi "Nhom tai khoan nguoi dung", bam "Them nhom tai khoan", dat ten roi luu.
Hai noi nay dung CHUNG mot nguon du lieu (nhom_tai_khoan), nen nhom vua tao o Bang du lieu se TU DONG xuat hien trong o chon nhom o Quan tri nguoi dung ngay lan tai trang sau, khong can lam gi them.
Da them ghi chu va chi dan cheo o CA HAI trang, giup nguoi dung khong con phai tu mo tim: o tab "Tao moi tu Excel" co dong chi ro cach quay lai Bang du lieu de tao nhom neu chua thay nhom can dung; o khoi "Nhom tai khoan nguoi dung" cua Bang du lieu co dong chi nguoc lai sang Quan tri nguoi dung de nap hang loat.
Da tu kiem chung dung vong khep kin qua may chu that: tao mot nhom moi o Bang du lieu, xac nhan nhom do xuat hien ngay o Quan tri nguoi dung; tai mau Excel that, dien hai tai khoan, nap vao dung nhom vua tao; xac nhan ca hai tai khoan duoc tao dung, gan dung nhom va dung Khoa da dien trong tep.
Phat hien lo hong bao mat that su, do chinh viec mien yeu cau chon khu vuc cho tai khoan co Don vi phu trach (BAN 5.6) gay ra: ham cot loi quyet dinh quyen xem/sua ho so (trongNhomDuyet) coi "khong co khu vuc nao" LA "duoc xem MOI ho so o MOI khu vuc" (thiet ke rat cu, ban dau danh cho truong hop khac). Tai khoan chi de tra loi chatbot (co Don vi phu trach, khong co khu vuc nao) vo tinh roi dung vao truong hop nay, co the da dang xem/sua duoc moi ho so trong Bang du lieu, ngoai y muon.
Da va: tai khoan "chuyen trach" (co Don vi phu trach, va/hoac duoc cap "Loai tai lieu duoc duyet rieng" o duoi day) KHONG con duoc coi la "thay het" khi khong co khu vuc nao nua. Mac dinh la KHONG THAY GI CA o Bang du lieu, chi thay dung pham vi da duoc cap rieng. Tai khoan "quan tri khu vuc" kieu cu (khong co Don vi phu trach, khong duoc cap loai rieng) giu nguyen hanh vi cu, khong bi anh huong.
Tinh nang moi: khi sua mot tai khoan Quan tri (chi toi cao thay duoc, cung khoi voi Don vi phu trach), co them o "Loai tai lieu duoc duyet rieng", nhap tu do moi dong mot loai (vi du "De cuong hoc phan"). Tai khoan duoc cap se xem, sua va duyet duoc dung nhung ho so co truong Loai khop voi danh sach nay, o MOI don vi/khu vuc, khong can gan them khu vuc nao khac.
Goi y tu dong theo tung Nhom tai lieu (BAN 6.0), khong hard-code: ngay duoi o nhap, he thong tu ve mot day "chip" - CAC GIA TRI LOAI DANG THUC SU CO TRONG DU LIEU THAT, gom theo tung Nhom tai lieu (vi du "Nguoi hoc gui nop", "Sach chuyen khao", "Chuong trinh, de cuong"...). Bam vao mot chip la tu dong them dung dong do vao o nhap, khong go nham chinh ta. Day KHONG PHAI danh sach co dinh: neu ai do them mot loai hoan toan moi khi nop ho so (vi du lan dau co nguoi nop "Sach tham khao"), CHI CAN CO IT NHAT MOT HO SO DA NOP DUNG LOAI DO la lan sau mo trang nay se TU DONG thay chip moi xuat hien, khong can sua code hay cau hinh gi ca. Da tu kiem chung: them thu mot dong du lieu voi loai chua tung co truoc do, goi lai trang ngay (khong khoi dong lai may chu) la thay chip moi hien ra dung.
Van luon cho go tu do vao o nhap du khong bam chip nao (danh cho loai vua duoc them vao bieu mau nop nhung CHUA CO AI NOP LAN NAO, nen chua co trong goi y).
Vi du dung cua anh: tai khoan Ban Quan ly dao tao duoc gan Don vi phu trach (de tra loi chatbot) VA duoc cap them "De cuong hoc phan" (de duyet duoc loai ho so do), se: (1) tra loi duoc cau hoi chatbot cua don vi minh, VA (2) xem/sua/duyet duoc dung cac ho so loai "De cuong hoc phan" o Bang du lieu, khong thay cac loai khac (Luan van, Luan an...).
Da tu kiem chung bang may chu that voi du lieu mau: tao tai khoan co Don vi phu trach + loai duyet rieng "De cuong hoc phan" (du lieu mau co 12 ho so, dung 2 ho so loai nay) chi thay dung 2/12; tai khoan chi co Don vi phu trach, KHONG co loai duyet rieng, thay dung 0/12 (dung nhu thiet ke, thay vi thay het nhu truoc khi va); tai khoan kieu cu (khong Don vi phu trach, khong loai rieng, khong khu vuc) van thay du 12/12 giong het truoc day, khong bi anh huong gi.
Bai hoc thuc te: lan dau va lo hong khu vuc, chi sua kiem tra o phia may chu ma QUEN mot lop kiem tra khac o phia giao dien (canh bao ngay tren trinh duyet, chan gui len truoc khi kip cham toi may chu) - khien nguoi dung khong bao gio thay duoc cho da sua. Hai lop nay doc lap hoan toan voi nhau, sua mot cho khong tu dong sua cho kia. Da ra soat va sua ca hai, ghi chu ro lai o day de khong lap lai sai sot nay.
Khac voi cach cap quyen thong thuong (mac dinh KHONG co, phai duoc cap them tung quyen), day la co che NGUOC LAI: mot so quyen ĐẶC BIỆT nhay cam se do TOAN QUYEN mac dinh da co san (giong nhu truoc gio), nhung toi cao co the THU HOI rieng tung quyen do khoi mot tai khoan Toan quyen cu the, tai khoan van con Toan quyen o moi mat khac.
Quyen dau tien ap dung co che nay: "Bat tat, cau hinh bieu mau gui nop tren trang chu". Truoc day bat ky tai khoan Toan quyen nao (khong chi tai khoan toi cao quantri@apag.edu.vn) deu tu dong sua duoc muc nay; gio toi cao co the chan rieng tai khoan nao khong muon cho dung.
Cach dung: vao Quan tri nguoi dung, sua mot tai khoan dang la Quan tri + Toan quyen, se thay khoi mau vang "Thu hoi rieng mot so quyen (du tai khoan van la Toan quyen)" o cuoi hop thoai. Khoi nay CHI hien khi chinh tai khoan dang dang nhap la toi cao; tai khoan toan quyen khac mo sua nguoi khac se khong thay muc nay. Tich vao quyen nao thi tai khoan do mat dung quyen ay, khong anh huong gi den cac quyen Toan quyen khac.
Da tu kiem chung qua may chu that: tao tai khoan Toan quyen khac ngoai toi cao, xac nhan truoc khi thu hoi van sua duoc bieu mau (200), sau khi toi cao thu hoi thi bi chan dung (403, thong bao ro rang), toi cao luon luon khong bi anh huong gi, va tai khoan bi thu hoi van con nguyen moi quyen Toan quyen khac (thu xem danh sach nguoi dung van thanh cong).
node kiem-thu-cong-cu-ai.js (25 phep thu: hai tang quyen, cong tac tong, ca nhan hoa, cong cu yeu thich).