Hệ thống pháp luật

ỦY BAN NHÂN DÂN
TỈNH BÌNH ĐỊNH
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: 4251/QĐ-UBND

Bình Định, ngày 16 tháng 11 năm 2023

 

QUYẾT ĐỊNH

BAN HÀNH KẾ HOẠCH THỰC HIỆN CHIẾN LƯỢC QUỐC GIA PHÒNG, CHỐNG THAM NHŨNG, TIÊU CỰC ĐẾN NĂM 2030 TRÊN ĐỊA BÀN TỈNH BÌNH ĐỊNH

ỦY BAN NHÂN DÂN TỈNH

Căn cứ Luật Tổ chức chính quyền địa phương ngày 19/6/2015; Luật sửa đổi, bổ sung một số điều của Luật Tổ chức Chính phủ và Luật Tổ chức chính quyền địa phương ngày 22/11/2019;

Căn cứ Luật Phòng, chống tham nhũng ngày 20/11/2018;

Căn cứ Nghị quyết số 168/NQ-CP ngày 11/10/2023 của Chính phủ ban hành Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030;

Theo đề nghị của Chánh Thanh tra tỉnh tại Công văn số 861/TTT-P4 ngày 09/11/2023.

QUYẾT ĐỊNH:

Điều 1. Ban hành kèm theo Quyết định này Kế hoạch thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 trên địa bàn tỉnh Bình Định.

Điều 2. Quyết định này có hiệu lực thi hành kể từ ngày ký.

Điều 3. Chánh Văn phòng UBND tỉnh, Chánh Thanh tra tỉnh, Thủ trưởng các sở, ban, ngành thuộc tỉnh, Chủ tịch UBND các huyện, thị xã, thành phố và các cơ quan, đơn vị có liên quan chịu trách nhiệm thi hành Quyết định này./.

 


Nơi nhận:

- Như Điều 3;
- Văn phòng Chính phủ;
- Thanh tra Chính phủ;
- Thường trực Tỉnh ủy;
- Ban Chỉ đạo PCTNTC tỉnh;
- Thường trực HĐND tỉnh;
- CT, các PCT UBND tỉnh;
- UBMTTQ Việt Nam tỉnh;
- VP Tỉnh ủy, các Ban của Tỉnh ủy;
- CA, BCHQS, BCHBĐBP, VKSND, TAND tỉnh;
- VP Đoàn ĐBQH và HĐND tỉnh;
- Các tổ chức CT-XH tỉnh;
- NHNN - CN Bình Định;
- Đơn vị sự nghiệp công lập, DNNN thuộc tỉnh;
- Báo Bình Định, Đài PT-TH Bình Định;
- Lưu: VT, K11.

TM. ỦY BAN NHÂN DÂN
CHỦ TỊCH




Phạm Anh Tuấn

 

KẾ HOẠCH

THỰC HIỆN CHIẾN LƯỢC QUỐC GIA PHÒNG, CHỐNG THAM NHŨNG, TIÊU CỰC ĐẾN NĂM 2030 TRÊN ĐỊA BÀN TỈNH BÌNH ĐỊNH
(Ban hành kèm theo Quyết định số        /QĐ-UBND ngày   /11/2023 của Ủy ban nhân dân tỉnh)

Thực hiện Nghị quyết số 168/NQ-CP ngày 11/10/2023 của Chính phủ ban hành Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030; Ủy ban nhân dân tỉnh Bình Định xây dựng Kế hoạch triển khai thực hiện trên địa bàn tỉnh, cụ thể như sau:

I. MỤC ĐÍCH, YÊU CẦU

1. Mục đích

- Phổ biến, quán triệt, triển khai thực hiện các mục tiêu, nhiệm vụ, giải pháp đã đề ra trong Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 của Chính phủ, bảo đảm đồng bộ, có hiệu quả, phù hợp với tình hình thực tiễn của địa phương nhằm góp phần thực hiện thắng lợi kế hoạch phát triển kinh tế - xã hội của tỉnh trong từng giai đoạn và đến năm 2030; khắc phục những hạn chế, yếu kém, tạo sự chuyển biến rõ rệt trong công tác phòng, chống tham nhũng, tiêu cực trên địa bàn tỉnh thời gian tới; góp phần thực hiện thắng lợi Nghị quyết Đại hội XIII của Đảng, Nghị quyết Đại hội XX của Đảng bộ tỉnh, Kết luận số 21-KL/TW ngày 25/10/2021 của Ban Chấp hành Trung ương về đẩy mạnh xây dựng, chỉnh đốn Đảng và hệ thống chính trị; kiên quyết ngăn chặn, đẩy lùi, xử lý nghiêm cán bộ, đảng viên suy thoái về tư tưởng chính trị, đạo đức, lối sống, biểu hiện “tự diễn biến”, “tự chuyển hoá”, Kết luận số 10-KL/TW ngày 26/12/2016 của Bộ Chính trị về tiếp tục thực hiện Nghị quyết Trung ương 3 khóa X, Kết luận số 12-KL/TW ngày 06/4/2022 của Bộ Chính trị về tiếp tục tăng cường sự lãnh đạo của Đảng đối với công tác phòng, chống tham nhũng, tiêu cực…

- Nâng cao nhận thức, trách nhiệm của Thủ trưởng các sở, ban, ngành, cơ quan, đơn vị, Chủ tịch UBND các huyện, thị xã, thành phố và đội ngũ cán bộ, công chức, viên chức đối với công tác phòng, chống tham nhũng, tiêu cực nhằm xây dựng bộ máy hành chính nhà nước trên địa bàn tỉnh trong sạch, vững mạnh, hoạt động có hiệu lực, hiệu quả.

- Làm căn cứ để các sở, ban, ngành, cơ quan, đơn vị thuộc UBND tỉnh; UBND các huyện, thị xã, thành phố; các doanh nghiệp nhà nước do tỉnh quản lý (gọi chung là các ngành, địa phương, cơ quan, đơn vị) xây dựng kế hoạch cụ thể, phù hợp với tình hình thực tiễn để triển khai, tổ chức thực hiện có hiệu quả các mục tiêu, nhiệm vụ, giải pháp phòng, chống tham nhũng, tiêu cực trong thời gian từ nay đến năm 2030.

2. Yêu cầu

- Xác định công tác phòng, chống tham nhũng, tiêu cực là nhiệm vụ quan trọng của cả hệ thống chính trị và toàn xã hội đặt dưới sự lãnh đạo của Đảng, được tiến hành mạnh mẽ, kiên quyết, kiên trì, đồng bộ, có trọng tâm, trọng điểm, không có vùng cấm, không có ngoại lệ; lấy phòng ngừa là cơ bản, lâu dài; phát hiện, xử lý là quan trọng, cấp bách, đột phá; kết hợp chặt chẽ giữa phòng ngừa, phát hiện, xử lý và sử dụng đồng bộ các biện pháp chính trị, tư tưởng, tổ chức, hành chính, kinh tế, hình sự.

- Gắn phòng, chống tham nhũng, tiêu cực với xây dựng, chỉnh đốn Đảng, kiểm soát quyền lực nhà nước, ngăn chặn, đẩy lùi suy thoái về tư tưởng chính trị, đạo đức, lối sống, củng cố niềm tin của Nhân dân, tăng cường khối đại đoàn kết dân tộc.

- Việc xây dựng và triển khai thực hiện công tác phòng, chống tham nhũng, tiêu cực trong thời gian tới phải bảo đảm quán triệt quan điểm, mục tiêu, yêu cầu, nhiệm vụ, giải pháp đã đề ra trong các chỉ thị, nghị quyết của Đảng, pháp luật của Nhà nước, Chiến lược quốc gia của Chính phủ, các chương trình, kế hoạch của Ban Thường vụ Tỉnh ủy, Ban Chỉ đạo phòng, chống tham nhũng, tiêu cực tỉnh về công tác phòng, chống tham nhũng, tiêu cực.

II. MỤC TIÊU

1. Mục tiêu chung

Thực hiện có hiệu quả các biện pháp nhằm ngăn chặn, đẩy lùi tham nhũng, tiêu cực, góp phần cùng với các cấp, các ngành xây dựng xã hội dân chủ, kỷ cương, liêm chính; giữ vững ổn định chính trị, trật tự an toàn xã hội thúc đẩy phát triển kinh tế - xã hội trên địa bàn tỉnh.

2. Mục tiêu cụ thể

- Kịp thời phát hiện, khắc phục những sơ hở, bất cập trong việc ban hành các văn bản pháp luật và triển khai thực hiện chính sách, pháp luật trên các lĩnh vực kinh tế - xã hội, nhất là những lĩnh vực dễ phát sinh tham nhũng, tiêu cực.

- Xây dựng tổ chức bộ máy các cơ quan hành chính nhà nước tinh gọn, hoạt động hiệu lực, hiệu quả; xây dựng đội ngũ cán bộ, công chức, viên chức chuyên nghiệp, kỷ cương, liêm chính.

- Tăng cường thực hiện có hiệu quả các biện pháp phòng ngừa; đồng thời, kịp thời phát hiện, xử lý nghiêm minh mọi hành vi tham nhũng, tiêu cực, thu hồi triệt để tài sản bị chiếm đoạt, thất thoát do hành vi tham nhũng, tiêu cực gây ra.

- Tiếp tục phát huy vai trò của Mặt trận Tổ quốc Việt Nam và các tổ chức chính trị - xã hội, các cơ quan báo chí, truyền thông; huy động sự tham gia của cộng đồng doanh nghiệp và Nhân dân trên địa bàn tỉnh trong công tác phòng, chống tham nhũng, tiêu cực.

III. NHIỆM VỤ, GIẢI PHÁP THỰC HIỆN

1. Tiếp tục chỉ đạo phổ biến quán triệt, tuyên truyền, giáo dục các chủ trương, chính sách, pháp luật về phòng, chống tham nhũng, tiêu cực

1.1. Các ngành, địa phương, cơ quan, đơn vị tiếp tục chỉ đạo phổ biến quán triệt, tuyên truyền, giáo dục rộng rãi các chủ trương, chính sách, pháp luật về phòng, chống tham nhũng, tiêu cực cho cán bộ, công chức, viên chức, người lao động và Nhân dân bằng các hình thức phù hợp, bảo đảm tính thiết thực, hiệu quả.1.2. Đăng tải công khai, kịp thời, đầy đủ các văn bản pháp luật, các chương trình, kế hoạch, văn bản chỉ đạo về công tác phòng, chống tham nhũng, tiêu cực trên Trang thông tin điện tử của địa phương, đơn vị. Ban hành chương trình, kế hoạch phối hợp và tạo điều kiện thuận lợi cho Mặt trận Tổ quốc, các tổ chức chính trị - xã hội, các cơ quan báo chí, truyền thông giám sát, tuyên truyền, vận động Nhân dân tích cực tham gia phòng, chống tham nhũng, tiêu cực; thực hiện tốt cơ chế, chính sách khuyến khích, bảo vệ, khen thưởng người có thành tích trong việc phát hiện, tố cáo, phản ánh hành vi tham nhũng theo quy định của pháp luật.

1.3. Sở Giáo dục và Đào tạo và các trường học, cơ sở giáo dục, đào tạo trên địa bàn tỉnh tiếp tục triển khai việc đưa nội dung phòng, chống tham nhũng, tiêu cực vào chương trình giảng dạy tại các Trường trung học phổ thông, các cơ sở giáo dục, đào tạo trên địa bàn tỉnh theo chỉ đạo của Trung ương, Chính phủ.

2. Tiếp tục xây dựng hoàn thiện chính sách, pháp luật trên các lĩnh vực quản lý kinh tế - xã hội và phòng, chống tham nhũng, tiêu cực

2.1. Các ngành, địa phương, cơ quan, đơn vị thuộc tỉnh và các cơ quan chức năng có liên quan trên địa bàn tỉnh tập trung rà soát, kiến nghị cấp có thẩm quyền ban hành mới, sửa đổi, bổ sung, thay thế các văn bản quy phạm pháp luật thuộc thẩm quyền, phạm vi, chức năng quản lý nhà nước nhằm hoàn thiện pháp luật về quản lý kinh tế - xã hội và phòng, chống tham nhũng, tiêu cực trong khu vực nhà nước và khu vực ngoài nhà nước, tập trung vào những lĩnh vực dễ phát sinh tham nhũng, tiêu cực như: Tổ chức cán bộ; quản lý tài chính, ngân sách, tài sản công, quản lý vốn nhà nước đầu tư vào doanh nghiệp, đầu tư, xây dựng, đấu thầu, đấu giá; đất đai, tài nguyên, khoáng sản; tín dụng, ngân hàng; thuế, hải quan và các lĩnh vực khác liên quan trực tiếp đến người dân, doanh nghiệp.

2.2. Đồng thời với việc ban hành, tham mưu ban hành các văn bản pháp luật, các ngành, địa phương, cơ quan, đơn vị cần tăng cường công khai, minh bạch, trách nhiệm giải trình trong quá trình ban hành hoặc tham mưu ban hành, sửa đổi, bổ sung, thu hồi, đình chỉ, gia hạn, bãi bỏ, tổ chức thực hiện các quyết định hành chính; có biện pháp khắc phục triệt để những hạn chế, bất cập trong cơ chế quản lý, chính sách, pháp luật được phát hiện qua công tác thanh tra, kiểm tra, kiểm toán, điều tra, truy tố, xét xử, thi hành án; quy định rõ trách nhiệm của các cơ quan, tổ chức, đơn vị và người đứng đầu trong việc tổ chức thực hiện.

2.3. Từng ngành, địa phương, cơ quan, đơn vị tiến hành rà soát, cụ thể hóa quy định về trách nhiệm thủ trưởng các cấp, các ngành và người đứng đầu cơ quan, tổ chức, đơn vị trong tổ chức thực hiện các biện pháp phòng, chống tham nhũng, tiêu cực ở địa phương, sở, ngành, lĩnh vực, cơ quan, tổ chức, đơn vị do mình quản lý, phụ trách.

3. Kiện toàn tổ chức bộ máy nhà nước, hoàn thiện chế độ công vụ, xây dựng đội ngũ cán bộ, công chức, viên chức liêm chính; nâng cao hiệu quả thực thi pháp luật

3.1. Từng cơ quan, tổ chức, đơn vị rà soát, đề xuất cấp có thẩm quyền tiến hành sắp xếp tổ chức bộ máy bảo đảm tinh gọn; quy định cụ thể, rõ ràng, khoa học chức năng, nhiệm vụ, quyền hạn của mỗi cơ quan, tổ chức, đơn vị quản lý đảm bảo minh bạch và trách nhiệm cao; xây dựng đội ngũ cán bộ, công chức, viên chức chuyên nghiệp, kỷ cương, liêm chính, đủ năng lực, trình độ, phẩm chất đạo đức đáp ứng yêu cầu nhiệm vụ.

3.2. Tổ chức triển khai thực hiện có hiệu quả cơ chế khuyến khích và bảo vệ cán bộ năng động, đổi mới, sáng tạo, dám nghĩ, dám làm, dám đột phá, dám chịu trách nhiệm vì lợi ích chung theo quy định của pháp luật; chấn chỉnh, khắc phục ngay những biểu hiện đùn đẩy, né tránh, làm việc cầm chừng, sợ sai không dám làm trong một bộ phận cán bộ, đảng viên, nhất là cán bộ lãnh đạo, quản lý các cấp.

3.3. Chú trọng nâng cao hiệu quả thực thi pháp luật gắn với việc kiểm soát chặt chẽ quyền lực nhà nước, kiểm soát xung đột lợi ích, kiểm soát tài sản, thu nhập của người có chức vụ, quyền hạn; đề cao trách nhiệm của người đứng đầu trong phòng, chống tham nhũng, tiêu cực.

3.4. Tổ chức triển khai thực hiện kịp thời chính sách tiền lương đối với công chức, viên chức, chế độ công vụ theo quy định của Nhà nước; chú trọng kiểm soát việc thực hiện chế độ, định mức, tiêu chuẩn trong hoạt động của các cơ quan, tổ chức, đơn vị có sử dụng ngân sách nhà nước. Tăng cường công tác kiểm tra, thanh tra, giám sát và xử lý nghiêm đối với người vi phạm trong việc thực thi nhiệm vụ, công vụ, đạo đức lối sống của cán bộ công chức, viên chức; kiên quyết đưa ra khỏi bộ máy nhà nước những cán bộ, công chức, viên chức suy thoái về tư tưởng chính trị, đạo đức lối sống, không hoàn thành nhiệm vụ công vụ.

3.5. Tiếp tục đẩy mạnh cải cách hành chính, trọng tâm là cải cách thủ tục hành chính; triển khai thực hiện có hiệu quả hệ thống Chính phủ điện tử, Chính phủ số; tăng cường ứng dụng khoa học, kỹ thuật, công nghệ vào hoạt động quản trị nhà nước, quản lý kinh tế - xã hội theo hướng công khai, minh bạch, thân thiện, dễ tiếp cận, dễ thực hiện, tạo điều kiện thuận lợi cho doanh nghiệp, người dân góp phần nâng cao hiệu quả quản lý; tăng cường minh bạch tài chính trong cơ quan nhà nước và thanh toán không dùng tiền mặt.

3.6. Đẩy mạnh công khai và minh bạch trong hoạt động của các cơ quan, tổ chức, đơn vị theo quy định của pháp luật, nhất là trong các lĩnh vực dễ phát sinh tham nhũng, tiêu cực, tạo điều kiện thuận lợi cho các tổ chức, cá nhân khi tham gia vào quy trình ra quyết định và giám sát hoạt động của các cơ quan hành chính nhà nước.

4. Tăng cường công tác kiểm tra, giám sát, thanh tra, điều tra, truy tố, xét xử, thi hành án

4.1. Tiếp tục kiện toàn tổ chức bộ máy, chức năng, nhiệm vụ, quyền hạn, quy trình nghiệp vụ của các cơ quan kiểm tra, giám sát, thanh tra, điều tra, truy tố, xét xử, thi hành án, đảm bảo hoạt động hiệu lực, hiệu quả, không chồng chéo. Đồng thời, tăng cường chế độ trách nhiệm, đẩy mạnh phòng, chống tham nhũng, tiêu cực trong các cơ quan, đơn vị có chức năng phòng, chống tham nhũng, tiêu cực trên địa bàn tỉnh, nhất là các cơ quan, đơn vị chuyên trách.

4.2. Đẩy mạnh công tác đào tạo, bồi dưỡng nâng cao trình độ chuyên môn, nghiệp vụ, bản lĩnh chính trị, phẩm chất đạo đức, lối sống cho đội ngũ cán bộ làm công tác phòng, chống tham nhũng, tiêu cực; tổ chức thực hiện tốt chính sách đãi ngộ cho những người làm công tác phòng, chống tham nhũng, tiêu cực theo quy định của Nhà nước.

4.3. Thực hiện các quy định bảo đảm cho việc thu hồi, tịch thu triệt để tài sản bị chiếm đoạt, thất thoát do tham nhũng, tiêu cực; khai thác có hiệu quả cơ sở dữ liệu quốc gia về kiểm soát tài sản, thu nhập của người có chức vụ quyền hạn, kịp thời phát hiện, ngăn chặn, xử lý hành vi tham nhũng, hành vi tẩu tán tài sản.

Tiếp tục thực hiện chuyển đổi số và đẩy mạnh việc ứng dụng công nghệ thông tin, công nghệ số trong các hoạt động kiểm tra, giám sát, thanh tra, điều tra, truy tố, xét xử, thi hành án.

4.4. Tăng cường sự phối hợp giữa các cơ quan kiểm tra, giám sát, thanh tra, kiểm toán, điều tra, truy tố, xét xử, thi hành án trong phòng ngừa, phát hiện, xử lý tham nhũng, tiêu cực và thu hồi tài sản.

5. Nâng cao nhận thức, phát huy vai trò và trách nhiệm của xã hội trong phòng, chống tham nhũng, tiêu cực

5.1. Các ngành, địa phương, cơ quan, đơn vị cần đổi mới, nâng cao hiệu quả các phương thức tuyên truyền, phổ biến, giáo dục pháp luật về phòng, chống tham nhũng, tiêu cực; tạo điều kiện để Nhân dân tích cực, chủ động tham gia vào công tác phòng, chống tham nhũng, tiêu cực nhằm từng bước xây dựng và hình thành văn hóa liêm chính trong xã hội.

5.2. Cung cấp thông tin kịp thời, chính xác về công tác phòng, chống tham nhũng, tiêu cực, những vụ việc tham nhũng, tiêu cực, nhất là những vụ việc được dư luận quan tâm cho các cơ quan báo chí để tuyên truyền kết quả phòng, chống tham nhũng, tiêu cực; phát hiện và nhân rộng nhân tố tích cực, điển hình tiên tiến, sáng kiến, cách làm hay trong phòng, chống tham nhũng, tiêu cực.

5.3. Tăng cường vai trò, trách nhiệm giám sát, phản biện xã hội của Mặt trận Tổ quốc Việt Nam và các tổ chức chính trị - xã hội, các tổ chức xã hội, tổ chức xã hội - nghề nghiệp, hiệp hội doanh nghiệp, hiệp hội ngành nghề, báo chí trong quá trình xây dựng, thực hiện chính sách, pháp luật về phòng, chống tham nhũng, tiêu cực; tuyên truyền, phổ biến, giáo dục pháp luật, vận động hội viên, đoàn viên, Nhân dân thực hiện chính sách, pháp luật về phòng, chống tham nhũng, tiêu cực.

5.4. Xác định rõ trách nhiệm của các cơ quan, tổ chức, đơn vị và người đứng đầu trong việc tiếp nhận, xử lý, giải quyết phản ánh, báo cáo, tố cáo về hành vi tham nhũng, tiêu cực và công tác phòng, chống tham nhũng, tiêu cực; thực hiện khen thưởng, bảo vệ người phản ánh, báo cáo, tố cáo hành vi tham nhũng, tiêu cực và xử lý nghiêm theo quy định của pháp luật các cá nhân cố ý phản ánh, báo cáo, tố cáo sai sự thật để vu khống, gây rối, làm ảnh hưởng đến an ninh chính trị, trật tự an toàn xã hội, lợi ích của Nhà nước, quyền và lợi ích hợp pháp của tập thể, cá nhân.

5.5. Khuyến khích, hỗ trợ doanh nghiệp, cộng đồng doanh nghiệp xây dựng, thực hiện văn hóa liêm chính trong kinh doanh, phối hợp chặt chẽ với các cơ quan nhà nước có thẩm quyền trong phòng ngừa, phát hiện, xử lý kịp thời hành vi tham nhũng, tiêu cực, nhất là trong khu vực ngoài nhà nước và các hành vi nhũng nhiễu, đòi hối lộ của cán bộ, công chức, viên chức.

6. Tích cực tham gia, nâng cao hiệu quả hợp tác quốc tế về phòng, chống tham nhũng

Các sở, ngành, cơ quan, đơn vị có chức năng liên quan, nâng cao hiệu quả hợp tác quốc tế về phòng, chống tham nhũng, nhất là trong phối hợp, chia sẻ thông tin, thực hiện các biện pháp ngăn chặn nhằm thu hồi tài sản bị tẩu tán hoặc truy bắt tội phạm tham nhũng bỏ trốn ra nước ngoài; việc tham gia các khuôn khổ hợp tác quốc tế khác có liên quan nhằm đáp ứng yêu cầu thực tiễn của cơ quan, đơn vị, địa phương trong phòng, chống tham nhũng, tiếp thu kinh nghiệm quốc tế về tố tụng tư pháp, tương trợ tư pháp đáp ứng các yêu cầu trong giải quyết các vụ việc, vụ án tham nhũng có yếu tố nước ngoài (nếu có).

7. Đối với các nhiệm vụ cụ thể do Chính phủ giao cho các Bộ, ngành và các cơ quan Trung ương chủ trì xây dựng để tổ chức triển khai Kế hoạch thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 và Công ước Liên Hợp quốc về chống tham nhũng giai đoạn 2023 - 2026, được ban hành kèm theo Chiến lược quốc gia tại Nghị quyết số 168/NQ-CP ngày 11/10/2023 của Chính phủ (các dự án Luật của Quốc hội; nghị định, quyết định, đề án, báo cáo của Chính phủ, Thủ tướng Chính phủ và của các Bộ, ngành, cơ quan Trung ương)

UBND tỉnh yêu cầu các ngành, địa phương, cơ quan, đơn vị có chức năng liên quan, ngay sau khi các dự án Luật của Quốc hội, các nghị định, quyết định, đề án, báo cáo của Chính phủ, Thủ tướng Chính phủ và của các Bộ, ngành, cơ quan Trung ương được ban hành, trên cơ sở chức năng, nhiệm vụ, quyền hạn được giao, có trách nhiệm chủ trì, phối hợp với các cơ quan, đơn vị có liên quan tổ chức triển khai thực hiện theo thẩm quyền hoặc tham mưu cấp có thẩm quyền chỉ đạo triển khai thực hiện bảo đảm kịp thời, đúng quy định và có hiệu quả các nhiệm vụ đã đề ra.

IV. LỘ TRÌNH VÀ TỔ CHỨC THỰC HIỆN

1. Lộ trình thực hiện

Kế hoạch thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 và Công ước Liên Hợp quốc về chống tham nhũng giai đoạn 2023 - 2026 trên địa bàn tỉnh Bình Định, được thực hiện theo hai giai đoạn:

1.1. Giai đoạn thứ nhất (từ năm 2023 đến năm 2026)

- Trong giai đoạn này, tổ chức thực hiện đồng bộ các nhiệm vụ, giải pháp, trong đó tập trung rà soát để sửa đổi, bổ sung, ban hành mới nhằm khắc phục những sơ hở bất cập của pháp luật về quản lý kinh tế - xã hội và phòng, chống tham nhũng, tiêu cực; chú trọng nâng cao năng lực, hiệu quả trong phòng ngừa, phát hiện, xử lý các hành vi tham nhũng, tiêu cực theo quy định.

- Tổ chức sơ kết việc thực hiện Kế hoạch vào năm 2026 theo hướng dẫn của cơ quan có thẩm quyền.

1.2. Giai đoạn thứ hai (từ năm 2026 đến năm 2030)

- Phát huy những kết quả đã đạt được trong giai đoạn thứ nhất, trên cơ sở sơ kết, căn cứ yêu cầu của công tác phòng, chống tham nhũng, tiêu cực và tình hình thực tiễn xây dựng Kế hoạch cụ thể để thực hiện Chiến lược giai đoạn 2026 - 2030 và đẩy mạnh thực hiện toàn diện các nhóm nhiệm vụ, giải pháp nhằm hoàn thành các mục tiêu của Chiến lược.

- Tổng kết việc thực hiện Kế hoạch vào năm 2031 theo hướng dẫn của cơ quan có thẩm quyền.

2. Tổ chức thực hiện

2.1. Thủ trưởng các ngành, địa phương, cơ quan, đơn vị căn cứ tình hình thực tiễn, chức năng, nhiệm vụ, quyền hạn được giao và các mục tiêu, yêu cầu, nhiệm vụ, giải pháp đã đề ra trong Chiến lược quốc gia của Chính phủ và Kế hoạch của UBND tỉnh để xây dựng kế hoạch thực hiện đến năm 2030 và kế hoạch thực hiện cụ thể hằng năm của ngành, địa phương, cơ quan, đơn vị mình, trên cơ sở đó phân công trách nhiệm cụ thể, tập trung chỉ đạo, đôn đốc, kiểm tra, giám sát việc triển khai, tổ chức thực hiện theo đúng lộ trình, bảo đảm có hiệu quả, đạt được các mục tiêu, yêu cầu đề ra. Kế hoạch của các ngành, địa phương, cơ quan, đơn vị thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 và từng năm gửi về UBND tỉnh và Thanh tra tỉnh để theo dõi.

2.2. Quá trình triển khai thực hiện, yêu cầu các ngành, địa phương, cơ quan, đơn vị có trách nhiệm báo cáo kết quả thực hiện theo định kỳ quý, 6 tháng, 9 tháng, hằng năm (tích hợp chung trong báo cáo định kỳ về công tác phòng, chống tham nhũng, tiêu cực theo quy định hiện hành của UBND tỉnh) hoặc báo cáo đột xuất khi có yêu cầu cho UBND tỉnh (qua Thanh tra tỉnh để tổng hợp chung).

2.3. Giao Thanh tra tỉnh chủ trì, phối hợp với các cơ quan liên quan theo dõi, đôn đốc, kiểm tra việc thực hiện của các ngành, địa phương, cơ quan, đơn vị; theo định kỳ hoặc đột xuất, tổng hợp tình hình, giúp UBND tỉnh xây dựng báo cáo kết quả thực hiện Chiến lược quốc gia của Chính phủ trên địa bàn tỉnh để báo cáo Chính phủ, Thanh tra Chính phủ, Ban Thường vụ Tỉnh ủy và Ban Chỉ đạo phòng, chống tham nhũng, tiêu cực tỉnh theo quy định.

2.4. UBND tỉnh đề nghị HĐND tỉnh, Ban Thường trực Ủy ban Mặt trận Tổ quốc Việt Nam tỉnh, các Ban của Tỉnh ủy, Viện Kiểm sát nhân dân tỉnh, Tòa án nhân dân tỉnh, Văn phòng Đoàn ĐBQH và HĐND tỉnh, Ngân hàng Nhà nước - Chi nhánh tỉnh Bình Định, các tổ chức chính trị - xã hội tỉnh, các tổ chức xã hội - nghề nghiệp, các hiệp hội doanh nghiệp, hiệp hội ngành nghề, các doanh nghiệp, các cơ quan báo chí cùng toàn thể Nhân dân tham gia thực hiện, kiểm tra, giám sát việc thực hiện Kế hoạch thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 trên địa bàn tỉnh Bình Định.

Trên đây là Kế hoạch thực hiện Chiến lược quốc gia phòng, chống tham nhũng, tiêu cực đến năm 2030 trên địa bàn tỉnh Bình Định. Yêu cầu các ngành, địa phương, cơ quan, đơn vị triển khai thực hiện nghiêm túc, bảo đảm có hiệu quả. Trong quá trình tổ chức triển khai thực hiện nếu có khó khăn, vướng mắc thì kịp thời phản ánh, báo cáo UBND tỉnh (qua Thanh tra tỉnh)./.

 



lồng nhau (bên trong) hay không const memberID = 0; const vbID = 'b39aaac2d38b29b3406e34af2dd32e83'; // 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 console.log('Tiện ích loaded - memberID:', memberID, 'vbID:', vbID); 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) { console.error('Lỗi processVisibleParagraphs:', e); } } $(window).on('scroll resize', function () { processVisibleParagraphs(); }); console.log('Bắt đầu processVisibleParagraphs lần đầu...'); processVisibleParagraphs(); console.log('processVisibleParagraphs lần đầu hoàn thành'); // Chức năng phân tích điều luật (chỉ cho member_id = 4) if (memberID === 4) { // Modal cảnh báo function showWarningModal(message) { // Tạo modal nếu chưa có if ($('#warningModal').length === 0) { const modalHTML = `

`; $('body').append(modalHTML); } $('#warningModalBody').html('

' + message + '

'); $('#warningModal').modal('show'); } // Hàm lấy tên tiếng Việt của thẻ function getParentTypeName(tagName) { const typeNames = { 'phan': 'Phần', 'chuong': 'Chương', 'muc': 'Mục', 'tieumuc': 'Tiểu mục', 'dieu': 'Điều', 'khoan': 'Khoản', 'diem': 'Điểm' }; return typeNames[tagName] || 'Nội dung'; } function attachPhanTichBadge($container) { const validTags = 'phan, chuong, muc, tieumuc, dieu, khoan, diem'; $container.find('p').each(function() { const $p = $(this); const $parent = $p.closest(validTags); if ($parent.length > 0) { const address = $parent.attr('address'); // Kiểm tra đã có badge cho parent này chưa if ($parent.find('.badge-phan-tich[data-for="' + address + '"]').length === 0) { // Lưu address vào data attribute $p.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, không vào

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, '

$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
  • '); html = html.replace(/(
  • .*<\/li>)/s, '
      $1
    '); // Lists (ordered) html = html.replace(/^\d+\. (.*$)/gim, '
  • $1
  • '); // Line breaks và paragraphs html = html.split('\n\n').map(para => { para = para.trim(); if (para.startsWith('')) { return para; } if (para) { return '

    ' + para.replace(/\n/g, '
    ') + '

    '; } return ''; }).join('\n'); // Clean up multiple line breaks html = html.replace(/\n{3,}/g, '\n\n'); return html; } // Panel fixed position function closePhanTichPanel() { const $panel = $('#phanTichPanel'); if ($panel.length) { $panel.removeClass('show'); setTimeout(() => { $panel.remove(); }, 300); } // Reset highlight và badge khi đóng panel if (currentAnalyzingElement) { currentAnalyzingElement.removeClass('highlight-border-persistent'); } if (currentAnalyzingBadge) { currentAnalyzingBadge.text('Phân tích').removeClass('analyzing'); currentAnalyzingBadge.data('analyzing', false); currentAnalyzingBadge.data('hovering', false); currentAnalyzingBadge.css({display: 'none'}); // Ẩn badge khi đóng } // Reset tất cả các element khác (trong trường hợp có nhiều) $('#tab_noi_dung_vb .highlight-border-persistent').removeClass('highlight-border-persistent'); $('#tab_noi_dung_vb .badge-phan-tich-container.analyzing').each(function() { $(this).text('Phân tích').removeClass('analyzing').data('analyzing', false); }); // Check: có CTTD pointer đang mở không? const $visiblePointers = $('.pointer:visible'); const hadCTTDOpen = $visiblePointers.length > 0; if (hadCTTDOpen) { // CÓ CTTD đang mở → giữ rightdocinfo ẩn console.log('ℹ️ CTTD pointer is visible, keeping rightdocinfo hidden'); } else { // KHÔNG có CTTD → SHOW lại rightdocinfo const $rightdocinfo = $('#rightdocinfo'); if ($rightdocinfo.length > 0) { $rightdocinfo.show(); console.log('✅ Showing rightdocinfo back (no CTTD pointer)'); } } // Reset state isAnalyzing = false; currentAnalyzingAddress = null; currentAnalyzingElement = null; currentAnalyzingBadge = null; isPanelOpen = false; // Đánh dấu panel đã đóng console.log('✅ Panel closed, state reset, isPanelOpen = false'); } // Panel đã song song với rightdocinfo → không cần MutationObserver nữa console.log('✅ Panel running in standalone mode (parallel to rightdocinfo)'); // Resize event để update panel dimensions khi browser resize let resizeTimer; $(window).on('resize', function() { clearTimeout(resizeTimer); resizeTimer = setTimeout(function() { if (isPanelOpen && $('#phanTichPanel').length > 0) { updatePanelDimensions(); console.log('✅ Panel dimensions updated on window resize'); } }, 250); // Debounce 250ms }); // Function để detect và áp dụng dimensions từ rightdocinfo function updatePanelDimensions() { const $panel = $('#phanTichPanel'); const $rightdocinfo = $('#rightdocinfo'); const $docRightCol = $('#doc-right-col'); if ($panel.length === 0) return; // Ưu tiên: doc-right-col > rightdocinfo let $reference = $docRightCol.length > 0 ? $docRightCol : $rightdocinfo; // Nếu reference bị ẩn (display:none), tạm show để get dimensions let wasHidden = false; if ($reference.length > 0 && !$reference.is(':visible')) { wasHidden = true; $reference.css('visibility', 'hidden').show(); } if ($reference.length > 0) { const refWidth = $reference.outerWidth(); const refOffset = $reference.offset(); if (refWidth && refOffset) { // Tính vị trí right từ edge màn hình const windowWidth = $(window).width(); const rightPosition = windowWidth - (refOffset.left + refWidth); $panel.css({ 'width': refWidth + 'px', 'right': rightPosition + 'px' }); console.log('✅ Panel dimensions updated:', { width: refWidth + 'px', right: rightPosition + 'px', reference: $reference.attr('id') }); } else { console.warn('⚠️ Could not get dimensions from reference element'); } // Restore trạng thái hidden nếu cần if (wasHidden) { $reference.hide().css('visibility', ''); } } else { console.warn('⚠️ No reference element found for panel dimensions'); } } function openPhanTichPanel(address, vbID) { console.log('openPhanTichPanel called with address:', address); console.log('Current state - isAnalyzing:', isAnalyzing, 'currentAnalyzingAddress:', currentAnalyzingAddress); // Kiểm tra nếu đang phân tích element khác if (isAnalyzing && currentAnalyzingAddress && currentAnalyzingAddress !== address) { const currentName = getElementDisplayName(currentAnalyzingAddress); console.warn('Already analyzing:', currentAnalyzingAddress, 'Cannot analyze:', address); showWarningModal('Vui lòng chờ phân tích ' + currentName + ' hoàn tất...'); return; } // Nếu đang phân tích cùng element → không làm gì if (isAnalyzing && currentAnalyzingAddress === address) { console.log('Already analyzing this element, ignoring duplicate request'); return; } // Panel sẽ fixed position append vào body const $rightdocinfo = $('#rightdocinfo'); // KHÔNG ẨN CTTD pointer - cho phép CTTD và panel cùng tồn tại console.log('Panel opening, CTTD pointer can stay visible'); // ẨN rightdocinfo để tiết kiệm không gian if ($rightdocinfo.length > 0) { $rightdocinfo.hide(); console.log('Hidden rightdocinfo to save space'); } // XÓA highlight persistent của TẤT CẢ elements cũ trước $('#tab_noi_dung_vb .highlight-border-persistent').removeClass('highlight-border-persistent'); console.log('Removed all previous highlight-border-persistent'); // Tìm element đang được phân tích và badge của nó const $element = $('[address="' + address + '"]'); const $badge = $element.find('.badge-phan-tich-container[data-for="' + address + '"]').first(); // Set state isAnalyzing = true; currentAnalyzingAddress = address; currentAnalyzingElement = $element; currentAnalyzingBadge = $badge; console.log('State set:', { isAnalyzing: isAnalyzing, currentAnalyzingAddress: currentAnalyzingAddress, elementFound: $element.length > 0, badgeFound: $badge.length > 0 }); // Thêm highlight persistent cho element MỚI này $element.addClass('highlight-border-persistent'); // Thay đổi badge thành "Đang phân tích..." và giữ hiển thị if ($badge.length > 0) { $badge.text('Đang phân tích...').addClass('analyzing'); // Giữ badge hiển thị và ở đúng vị trí $badge.data('analyzing', true); $badge.data('hovering', true); // Prevent auto-hide console.log('Badge set to analyzing state'); // Đảm bảo badge hiển thị ở đúng vị trí (vì dùng position: fixed) showPhanTichBadgeForParent($element); } // Tạo panel nếu chưa có - fixed position append vào body if ($('#phanTichPanel').length === 0) { const panelHTML = `
    Phân tích điều luật
    Đang phân tích...

    Đang phân tích...

    `; // Append vào body (fixed position không cần container cụ thể) $('body').append(panelHTML); // Detect width từ rightdocinfo và áp dụng cho panel updatePanelDimensions(); // Trigger show và set flag setTimeout(() => { $('#phanTichPanel').addClass('show'); isPanelOpen = true; console.log('✅ Panel opened (fixed position), isPanelOpen = true'); }, 10); } else { $('#phanTichPanelBody').html(`
    Đang phân tích...

    Đang phân tích...

    `); // Update dimensions khi re-open updatePanelDimensions(); $('#phanTichPanel').addClass('show'); isPanelOpen = true; console.log('✅ Panel re-opened (fixed position), isPanelOpen = true'); } // Bind nút đóng và ESC $(document).off('click.closePhanTich').on('click.closePhanTich', '.close-phan-tich', function() { closePhanTichPanel(); }); $(document).off('keyup.closePhanTich').on('keyup.closePhanTich', function(e) { if (e.key === 'Escape') closePhanTichPanel(); }); // Bind nút refresh - phân tích lại $(document).off('click.refreshPhanTich').on('click.refreshPhanTich', '.btn-refresh-phan-tich', function(e) { e.preventDefault(); e.stopPropagation(); const $btn = $(this); const $icon = $btn.find('i'); // Disable button và thêm animation $btn.prop('disabled', true); $icon.addClass('fa-spin'); console.log('🔄 Refresh: Phân tích lại address:', address); // Show loading trong panel $('#phanTichPanelBody').html(`
    Đang phân tích lại...

    Đang xóa cache và phân tích lại...

    `); // Gọi API xóa cache trước deletePhanTichCache(address, vbID, function(deleteSuccess) { if (deleteSuccess) { console.log('✅ Cache deleted, now re-analyzing...'); // Sau khi xóa cache, gọi lại API phân tích callPhanTichAPI(address, vbID, function() { // Enable lại button $btn.prop('disabled', false); $icon.removeClass('fa-spin'); }); } else { console.error('❌ Failed to delete cache'); $('#phanTichPanelBody').html(` `); $btn.prop('disabled', false); $icon.removeClass('fa-spin'); } }); }); // Gọi API phân tích (dùng function helper) callPhanTichAPI(address, vbID); } // Helper: Gọi API phân tích (tách riêng để dùng lại) function callPhanTichAPI(address, vbID, callback) { const randomServer = Math.floor(Math.random() * 10) + 1; $.ajax({ url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/phan.tich.dieu.luat.php', type: 'POST', contentType: 'application/json', timeout: 300000, // 5 phút data: JSON.stringify({ address: address, vb_id: vbID }), success: function(response) { console.log('Analysis complete for:', address, response); // Reset badge về trạng thái bình thường (nhưng vẫn hiển thị) if (currentAnalyzingBadge) { currentAnalyzingBadge.text('Phân tích').removeClass('analyzing'); currentAnalyzingBadge.data('analyzing', false); console.log('Badge reset to normal state'); } // Reset state analyzing để có thể phân tích element khác isAnalyzing = false; console.log('State reset: isAnalyzing = false, can analyze other elements now'); if (response.ok) { // Render kết quả phân tích let html = ''; html += '
    '; html += '
    ' + 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 += '
    '; html += '
    ' + markdownToHtml(response.phan_tich) + '
    '; if (response.usage) { html += '
    '; html += 'Thống kê: '; html += 'Input tokens: ' + (response.usage.promptTokenCount || 0) + ', '; html += 'Output tokens: ' + (response.usage.candidatesTokenCount || 0); html += '
    '; } $('#phanTichPanelBody').html(html); } else { $('#phanTichPanelBody').html(` `); } if (callback) callback(); }, error: function(xhr, status, error) { console.error('Analysis error:', error); // Reset badge về trạng thái bình thường if (currentAnalyzingBadge) { currentAnalyzingBadge.text('Phân tích').removeClass('analyzing'); currentAnalyzingBadge.data('analyzing', false); } // Reset state analyzing isAnalyzing = false; let errorMsg = error; if (xhr.responseJSON && xhr.responseJSON.error) { errorMsg = xhr.responseJSON.error; } $('#phanTichPanelBody').html(` `); if (callback) callback(); } }); } // Helper: Xóa cache phân tích function deletePhanTichCache(address, vbID, callback) { const randomServer = Math.floor(Math.random() * 10) + 1; $.ajax({ url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/delete.phan.tich.cache.php', type: 'POST', contentType: 'application/json', timeout: 10000, data: JSON.stringify({ address: address, vb_id: vbID }), success: function(response) { console.log('Delete cache response:', response); if (callback) callback(response.ok || false); }, error: function(xhr, status, error) { console.error('Delete cache error:', error); if (callback) callback(false); } }); } // Helper: Lấy tên hiển thị của element từ address function getElementDisplayName(address) { if (!address) return 'nội dung'; const $element = $('[address="' + address + '"]'); if ($element.length === 0) return address; // Parse address: vd "dieu_3_khoan_29" -> "Khoản 29 Điều 3" // Address format: lớn đến nhỏ (phan > chuong > muc > dieu > khoan > diem) const parts = address.split('_'); const displayParts = []; for (let i = 0; i < parts.length; i += 2) { if (i + 1 < parts.length) { const type = getParentTypeName(parts[i]); const num = parts[i + 1]; displayParts.push(type + ' ' + num); } } // Reverse để hiển thị từ nhỏ đến lớn: "Khoản 29 Điều 3" (thay vì "Điều 3 Khoản 29") return displayParts.reverse().join(' '); } function openPhanTichModal(address, vbID) { // Tạo modal nếu chưa có if ($('#modalPhanTich').length === 0) { const modalHTML = ` `; $('body').append(modalHTML); } // Reset và hiển thị modal với loading $('#modalPhanTichBody').html(`
    Đang phân tích...

    Đang phân tích...

    `); $('#modalPhanTich').modal('show'); // AJAX request const randomServer = Math.floor(Math.random() * 10) + 1; $.ajax({ url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/phan.tich.dieu.luat.php', type: 'POST', contentType: 'application/json', data: JSON.stringify({ address: address, vb_id: vbID }), success: function(response) { if (response.ok) { // Render kết quả phân tích let html = ''; // Header thông tin văn bản html += '
    '; html += '
    ' + 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 += '
    '; // Nội dung phân tích (Markdown -> HTML) html += '
    '; html += markdownToHtml(response.phan_tich); html += '
    '; // Thông tin usage (nếu có) if (response.usage) { html += '
    '; html += 'Thống kê: '; html += 'Input tokens: ' + (response.usage.promptTokenCount || 0) + ', '; html += 'Output tokens: ' + (response.usage.candidatesTokenCount || 0); html += '
    '; } $('#modalPhanTichBody').html(html); } else { $('#modalPhanTichBody').html(` `); } }, error: function(xhr, status, error) { let errorMsg = error; if (xhr.responseJSON && xhr.responseJSON.error) { errorMsg = xhr.responseJSON.error; } $('#modalPhanTichBody').html(` `); } }); } // Helpers: show/hide badge cho parent element (dieu, khoan,...) với position: fixed function showPhanTichBadgeForParent($parent) { // Lấy badge CỦA CHÍNH parent này (match data-for với address của parent) const parentAddress = $parent.attr('address'); const $badge = $parent.find('.badge-phan-tich-container[data-for="' + parentAddress + '"]').first(); if ($badge.length === 0) { console.warn('No badge found for parent:', parentAddress); return; } // Ẩn TẤT CẢ các badge khác để tránh overlap $('.badge-phan-tich-container').not($badge).each(function() { const $otherBadge = $(this); // Chỉ ẩn badge KHÔNG đang analyzing if (!$otherBadge.data('analyzing')) { $otherBadge.css({display: 'none'}); } }); // Show badge tạm để tính width $badge.css({display: 'inline-block', opacity: 0, visibility: 'hidden'}); const badgeWidth = $badge.outerWidth(); // Tính toán vị trí fixed dựa trên offset của parent const offset = $parent.offset(); const scrollTop = $(window).scrollTop(); const scrollLeft = $(window).scrollLeft(); // Position badge top-right của parent và show $badge.css({ display: 'inline-block', visibility: 'visible', opacity: 1, top: (offset.top - scrollTop) + 'px', left: (offset.left + $parent.outerWidth() - badgeWidth - scrollLeft - 5) + 'px' // -5px padding }); console.log('Showing badge for:', parentAddress, 'at position:', $badge.css('top'), $badge.css('left')); $parent.addClass('highlight-border'); } function hidePhanTichBadgeForParent($parent) { const $badge = $parent.find('.badge-phan-tich-container').first(); if ($badge.length === 0) return; $badge.css({display: 'none', opacity: 0}); $parent.removeClass('highlight-border'); } // Biến lưu element đang hover let currentHoveredElement = null; let hoverDebounceTimer = null; // Dùng mousemove để track chính xác element nào đang được hover $(document).on('mousemove', '#tab_noi_dung_vb', function(e) { // Tìm element gần nhất (phan, chuong, muc, dieu, khoan, diem) tại vị trí chuột const $target = $(e.target).closest('phan, chuong, muc, tieumuc, dieu, khoan, diem'); if ($target.length === 0) { // Không hover vào element nào return; } const address = $target.attr('address'); // Nếu đang hover vào cùng element → skip if (currentHoveredElement && currentHoveredElement[0] === $target[0]) { return; } // Clear debounce timer cũ if (hoverDebounceTimer) { clearTimeout(hoverDebounceTimer); } // Debounce để tránh trigger quá nhiều hoverDebounceTimer = setTimeout(function() { // Element thay đổi console.log('Hover changed to:', address); // Set flag hovering cho element mới $target.data('hovering', true); // Cancel timeout nếu có const timeoutId = $target.data('hideTimeout'); if (timeoutId) { clearTimeout(timeoutId); } // Ẩn badge của TẤT CẢ elements khác $('#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem') .not($target) .each(function() { const $el = $(this); // Chỉ xóa highlight-border, KHÔNG xóa highlight-border-persistent $el.removeClass('highlight-border'); // Ẩn badge nếu KHÔNG đang analyzing const $badge = $el.find('.badge-phan-tich-container'); if ($badge.length && !$badge.data('analyzing')) { $badge.css({display: 'none'}); } }); // Attach badge nếu chưa có if (address && $target.find('.badge-phan-tich-container[data-for="' + address + '"]').length === 0) { const parentType = getParentTypeName($target.prop('tagName').toLowerCase()); const $badge = $('Phân tích'); console.log('Creating badge for address:', address, 'parentType:', parentType); $target.append($badge); $target.addClass('has-phan-tich-badge'); } // Show badge cho element này if ($target.find('.badge-phan-tich-container').length > 0) { showPhanTichBadgeForParent($target); } // Update current hovered element currentHoveredElement = $target; }, 50); // Debounce 50ms }); // Event delegation cho hover ra khỏi #tab_noi_dung_vb $(document).on('mouseleave', '#tab_noi_dung_vb', function(e) { // Clear current hovered element currentHoveredElement = null; // Ẩn tất cả badge không đang analyzing sau một khoảng thời gian setTimeout(function() { if (currentHoveredElement === null) { // Chỉ ẩn nếu thực sự không hover vào element nào $('#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem') .each(function() { const $el = $(this); const $badge = $el.find('.badge-phan-tich-container'); if ($badge.length && !$badge.data('analyzing')) { $badge.css({display: 'none'}); } }); console.log('Mouse left tab_noi_dung_vb, hiding all badges'); } }, 300); }); // Event delegation cho hover ra khỏi parent (giữ lại cho badge behavior) $(document).on('mouseleave', '#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem', function(e) { const $parent = $(this); const parentAddress = $parent.attr('address'); const $badge = $parent.find('.badge-phan-tich-container[data-for="' + parentAddress + '"]').first(); // Set flag parent not hovering $parent.data('hovering', false); // Nếu badge đang analyzing thì KHÔNG ẩn, GIỮ hiển thị if ($badge.length > 0 && $badge.data('analyzing')) { console.log('Badge is analyzing, keep visible'); return; } // Delay để có thời gian di chuột vào badge const timeoutId = setTimeout(() => { // Chỉ ẩn nếu cả parent và badge đều không hover và không analyzing if ($badge.length > 0 && !$parent.data('hovering') && !$badge.data('hovering') && !$badge.data('analyzing')) { hidePhanTichBadgeForParent($parent); } }, 300); // Tăng lên 300ms $parent.data('hideTimeout', timeoutId); }); // Hover vào badge → giữ hiển thị $(document).on('mouseenter', '.badge-phan-tich-container', function(e) { e.stopPropagation(); const $badge = $(this); const $parent = $badge.parent(); $badge.data('hovering', true); // Cancel timeout của parent const timeoutId = $parent.data('hideTimeout'); if (timeoutId) { clearTimeout(timeoutId); } }); // Hover ra khỏi badge → ẩn nếu không hover parent $(document).on('mouseleave', '.badge-phan-tich-container', function(e) { const $badge = $(this); $badge.data('hovering', false); const $parent = $badge.parent(); // Nếu badge đang analyzing thì KHÔNG ẩn, GIỮ hiển thị if ($badge.data('analyzing') || $badge.hasClass('analyzing')) { console.log('Badge is analyzing on mouseleave, keep visible'); return; } setTimeout(() => { // Chỉ ẩn nếu cả parent và badge đều không hover và không analyzing if (!$parent.data('hovering') && !$badge.data('hovering') && !$badge.data('analyzing') && !$badge.hasClass('analyzing')) { hidePhanTichBadgeForParent($parent); } }, 300); }); // Event delegation cho hover vào badge → hiện tooltip $(document).on('mouseenter', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function() { const $badge = $(this); const parentType = $badge.attr('data-parent-type') || 'Nội dung'; if ($badge.find('.badge-tooltip').length === 0) { const $tooltip = $('Phân tích chi tiết nội dung ' + parentType + ' này'); $badge.append($tooltip); setTimeout(() => $tooltip.addClass('show'), 10); } }); // Event delegation cho hover ra khỏi badge → ẩn tooltip $(document).on('mouseleave', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function() { const $tooltip = $(this).find('.badge-tooltip'); if ($tooltip.length > 0) { $tooltip.removeClass('show'); setTimeout(() => $tooltip.remove(), 300); } }); // Event delegation cho click badge → mở panel $(document).on('click', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function(e) { e.preventDefault(); e.stopPropagation(); const $badge = $(this); console.log('Badge clicked! Element:', $badge[0]); console.log('Badge parent:', $badge.parent().prop('tagName'), $badge.parent().attr('address')); console.log('Badge data-for:', $badge.attr('data-for')); console.log('Badge data-parent-type:', $badge.attr('data-parent-type')); // Nếu badge đang analyzing thì không cho click if ($badge.hasClass('analyzing') || $badge.data('analyzing')) { console.log('Badge is analyzing, click ignored'); return; } // Lấy address từ data-for attribute const address = $badge.attr('data-for'); console.log('Will analyze address:', address, 'vbID:', vbID); if (address && vbID) { openPhanTichPanel(address, vbID); } else { console.error('Missing address or vbID', {address, vbID}); showWarningModal('Không tìm thấy địa chỉ điều luật hoặc ID văn bản!'); } }); // Ẩn badge khi click vào CTTD $(document).on('click', 'cttd.chuthichtudong span, dctk span, dctd span', function(e) { console.log('CTTD clicked'); // Ẩn TẤT CẢ badge KHÔNG đang analyzing $('.badge-phan-tich-container').each(function() { const $badge = $(this); if (!$badge.data('analyzing') && !$badge.hasClass('analyzing')) { $badge.css({display: 'none'}); console.log('Hiding badge:', $badge.attr('data-for')); } }); }); // Update badge position khi scroll hoặc resize (vì dùng position: fixed) function updateBadgePositions() { $('.badge-phan-tich-container:visible').each(function() { const $badge = $(this); const $parent = $badge.parent(); // Cập nhật position nếu parent đang hover HOẶC badge đang analyzing if ($parent.length && ($parent.is(':hover') || $badge.data('analyzing'))) { // Re-calculate position const offset = $parent.offset(); const scrollTop = $(window).scrollTop(); const scrollLeft = $(window).scrollLeft(); const badgeWidth = $badge.outerWidth(); $badge.css({ top: (offset.top - scrollTop) + 'px', left: (offset.left + $parent.outerWidth() - badgeWidth - scrollLeft - 5) + 'px' }); } }); } $(window).on('scroll', updateBadgePositions); $(window).on('resize', updateBadgePositions); } });