Để sử dụng toàn bộ tiện ích nâng cao của Hệ Thống Pháp Luật vui lòng lựa chọn và đăng ký gói cước.
| TỔ CÔNG TÁC TRIỂN KHAI ĐỀ ÁN PHÁT TRIỂN ỨNG DỤNG DỮ LIỆU VỀ DÂN CƯ, ĐỊNH DANH VÀ XÁC THỰC ĐIỆN TỬ | CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM |
| Số: 2669/TCTTKĐA | Hà Nội, ngày 24 tháng 4 năm 2023 |
| Kính gửi: | - Đ/c Thủ trưởng các Bộ, cơ quan ngang Bộ, cơ quan thuộc Chính phủ; |
Thực hiện Chỉ thị số 05/CT-TTg ngày 23/02/2023 về việc tiếp tục đẩy mạnh triển khai Đề án phát triển ứng dụng dữ liệu về dân cư, định danh và xác thực điện tử phục vụ chuyển đổi số quốc gia giai đoạn 2022 - 2025, tầm nhìn đến năm 2030 (Đề án 06/CP) tại các bộ, ngành, địa phương năm 2023 và những năm tiếp theo, Thư ký Tổ Công tác triển khai Đề án 06/CP xin trao đổi các Đồng chí một số nội dung, cụ thể như sau:
1. Đến nay, Cơ sở dữ liệu quốc gia về dân cư đã kết nối, chia sẻ dữ liệu với Hệ thống thông tin phục vụ giải quyết thủ tục hành chính của 63/63 UBND tỉnh, thành phố trực thuộc Trung ương (hiện còn tỉnh Quảng Ninh và Hà Tĩnh chưa đảm bảo an ninh, an toàn thông tin) và 13 Bộ, cơ quan ngang Bộ, cơ quan thuộc Chính PhủThông qua công tác kết nối, chia sẻ dữ liệu giữa Cơ sở dữ liệu quốc gia về dân cư và hệ thống thông tin giải quyết thủ tục hành chính của UBND các tỉnh, thành phố đã góp phần nâng cao hiệu quả công tác quản lý nhà nước trong việc việc chính thức bỏ sổ hộ khẩu từ ngày 01/01/2023. Hiện nay, một số địa phương đang sử dụng các giải pháp mềm như tường lửa cơ sở dữ liệu Oracle AVDF, cân bằng tải HA Proxy,...chưa bổ sung bản quyền cho một số giải pháp trong thời gian thực hiện các thủ tục đầu tư. Đây là các giải pháp tạm thời, không có tính lâu dài.
2. Để đảm bảo an ninh, an toàn thông tin và phục vụ kịp thời công tác của các đơn vị, địa phương, Thư ký Tổ Công tác triển khai Đề án đề nghị các Đồng chí một số nội dung, cụ thể như sau:
(1) Khẩn trương triển khai thực hiện đầu tư các thiết bị, giải pháp đảm bảo an ninh, an toàn thông tin.
(2) Đánh giá kết quả triển khai thực hiện kết nối, chia sẻ và khai thác dữ liệu với Cơ sở dữ liệu quốc gia về dân cư (về quy trình thực hiện đảm bảo an ninh, an toàn thông tin; về nhu cầu bổ sung và giải pháp đề xuất, nâng cao hiệu quả).
(3) Nêu các tồn tại, khó khăn, vướng mắc trong quá trình thực hiện, hướng dẫn theo Công văn số 1552/BTTTT-THH ngày 26/4/2023 của Bộ Thông tin và Truyền thông. Kiến nghị, đề xuất phương án tháo gỡ những khó khăn, vướng mắc về tiêu chuẩn thiết bị, về tích hợp với hệ thống hiện tại, về thủ tục đầu tư, mua sắm trong quá trình thực hiện kết nối, chia sẻ dữ liệu.
Kết quả triển khai, đánh giá của các đơn vị gửi về Bộ Công an (qua Cục Cảnh sát quản lý hành chính về trật tự xã hội) trước ngày 30/04/2023. Chi tiết đầu mối liên hệ xin trao đổi đồng chí Dương Văn Hùng, số điện thoại 0888.736.123.
Rất mong nhận được sự quan tâm, phối hợp của các Đồng chí./.
|
| THƯ KÝ TỔ CÔNG TÁC |
lồng nhau (bên trong) hay không
const memberID = 0;
const vbID = '2f7449fe34eb6f5a2e96ccd7476dd3f8';
// State management cho phân tích
let isAnalyzing = false; // Có đang phân tích không
let currentAnalyzingAddress = null; // Address đang được phân tích
let currentAnalyzingElement = null; // Element đang được phân tích
let currentAnalyzingBadge = null; // Badge của element đang phân tích
let isPanelOpen = false; // Panel phân tích có đang mở không
function isInViewportAndTabNoiDung(element) {
const rect = element.getBoundingClientRect();
const buffer = 1500; // Buffer to preload content below the viewport (approx. 50+ lines)
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
const isInViewport = rect.top < viewHeight + buffer && rect.bottom >= 0;
const isInTabNoiDung = $(element).closest('#tab_noi_dung_vb').length > 0;
return isInViewport && isInTabNoiDung;
}
function getAddress(element) {
const validTags = ['trichyeu', 'cancu', 'phan', 'chuong', 'muc', 'tieumuc', 'dieu', 'khoan', 'diem'];
const $parent = $(element).closest(validTags.join(','));
if (!$parent.length) {
return null;
}
let addr = $parent.attr('address');
if (!addr && $parent.prop('tagName').toLowerCase() === 'trichyeu') {
addr = 'trichyeu';
$parent.attr('address', addr);
}
return addr || null;
}
function processTnplClasses($element) {
const tnplKeysInLine = new Set(); // key = slug hoặc text (thường là slug)
$element.find('tnpl').each(function () {
const $tnpl = $(this);
const tnplSlug = ($tnpl.attr('slug') || '').trim().toLowerCase();
const tnplKey = tnplSlug || $tnpl.text().trim().toLowerCase();
// Đã xử lý trong cùng dòng => bỏ
if (tnplKeysInLine.has(tnplKey)) {
return;
}
tnplKeysInLine.add(tnplKey);
let tnplExists = false;
// Chỉ duyệt các tnpl đã được tô màu (class on)
$('tnpl.on').each(function () {
const $existingTnpl = $(this);
const existingSlug = ($existingTnpl.attr('slug') || '').trim().toLowerCase();
const existingKey = existingSlug || $existingTnpl.text().trim().toLowerCase();
if (
existingKey === tnplKey &&
isInViewportAndTabNoiDung($existingTnpl[0])
) {
tnplExists = true;
return false; // break each
}
});
if (!tnplExists) {
$tnpl.addClass('on');
}
});
}
function processQueue() {
while (pendingRequests < maxConcurrentRequests && requestQueue.length > 0) {
const task = requestQueue.shift();
pendingRequests++;
task()
.always(() => {
pendingRequests--;
processQueue();
});
}
}
function processVisibleParagraphs() {
try {
$('#tab_noi_dung_vb p:not([is-posted="1"])').each(function () {
let $element = $(this);
if (isInViewportAndTabNoiDung(this)) {
$element.attr('is-posted', '1');
$element.addClass('loading-content');
let p_innerHTML = $element.html();
let address = null;
if (cac_cau_hinh.loai_noi_dung.includes('docs')) {
address = getAddress($element);
}
const isSubP = $element.parents('p').length > 0;
if (isSubP && !allow_sub_p) {
$element.removeClass('loading-content');
return; // Không gửi nếu không cho phép
}
const postData = { p_content: p_innerHTML, cac_cau_hinh, address };
if (isSubP && allow_sub_p) {
postData.sub_p = 1;
}
requestQueue.push(() =>
$.ajax({
url: '//tnpl' + (Math.floor(Math.random() * 10) + 1) + '.hethongphapluat.com/tien-ich/tim.tien.ich.php',
type: 'POST',
data: postData,
success: function(response) {
$element.html(response);
processTnplClasses($element);
// Đợi CTTD và các tiện ích load xong rồi mới attach badge
if (memberID === 4 && typeof attachPhanTichBadge === 'function') {
setTimeout(function() {
// $element chính là thẻ p, kiểm tra và attach badge trực tiếp
const $parent = $element.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem');
if ($parent.length > 0 && $parent.find('.badge-phan-tich[data-for="' + $parent.attr('address') + '"]').length === 0) {
const address = $parent.attr('address');
$element.attr('data-address', address);
// Lấy tên loại thẻ cho tooltip
const parentType = getParentTypeName($parent.prop('tagName').toLowerCase());
// Append badge VÀO PARENT (dieu, khoan,...) thay vì vào để tránh xung đột CTTD
const $badge = $('Phân tích');
$parent.append($badge);
// Thêm class để CSS set position: relative CHỈ cho element có badge
$parent.addClass('has-phan-tich-badge');
}
// Xử lý các p con (nếu có sub-p)
attachPhanTichBadge($element);
}, 300); // Đợi 300ms để CTTD render xong
}
},
complete: function() {
$element.removeClass('loading-content');
}
})
);
processQueue();
}
});
} catch(e) {
}
}
$(window).on('scroll resize', function () {
processVisibleParagraphs();
});
processVisibleParagraphs();
// Chức năng phân tích điều luật (chỉ cho member_id = 4)
if (memberID === 4 || memberID === 3 || memberID === 2) {
// Modal cảnh báo
function showWarningModal(message) {
// Tạo modal nếu chưa có
if ($('#warningModal').length === 0) {
const modalHTML = `
' + message + '
const $badge = $('Phân tích');
$parent.append($badge);
// Thêm class để CSS set position: relative CHỈ cho element có badge
$parent.addClass('has-phan-tich-badge');
}
}
});
}
// Helper: Escape HTML entities
function escapeHtml(text) {
const map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return String(text).replace(/[&<>"']/g, function(m) { return map[m]; });
}
// Helper: Convert Markdown to HTML (đơn giản)
function markdownToHtml(markdown) {
if (!markdown) return '';
let html = markdown;
// Headers
html = html.replace(/^### (.*$)/gim, ' ' + para.replace(/\n/g, ' Đang phân tích... Đang phân tích... Đang xóa cache và phân tích lại... Đang phân tích...$1
');
html = html.replace(/^## (.*$)/gim, '$1
');
html = html.replace(/^# (.*$)/gim, '$1
');
// Bold
html = html.replace(/\*\*(.*?)\*\*/g, '$1');
// Italic
html = html.replace(/\*(.*?)\*/g, '$1');
// Blockquote
html = html.replace(/^> (.*$)/gim, '$1
');
html = html.replace(/^> (.*$)/gim, '$1
');
// Lists (unordered)
html = html.replace(/^\- (.*$)/gim, '$1
');
// Lists (ordered)
html = html.replace(/^\d+\. (.*$)/gim, '
') + '' + escapeHtml(response.ten_van_ban) + '
';
if (response.so_hieu) {
html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
}
html += 'Điều khoản: ' + escapeHtml(response.address) + '';
if (response.from_cache) {
html += ' Cache';
}
html += '
Vui lòng thử lại sau.
Chi tiết: ${escapeHtml(errorMsg)}
' + escapeHtml(response.ten_van_ban) + '
';
if (response.so_hieu) {
html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
}
html += 'Điều khoản: ' + escapeHtml(response.address) + '';
html += '
Vui lòng thử lại sau.
Chi tiết: ${escapeHtml(errorMsg)}
