{"id":4634,"date":"2025-07-16T10:31:41","date_gmt":"2025-07-16T03:31:41","guid":{"rendered":"https:\/\/labantrithuc.com\/?p=4634"},"modified":"2025-07-16T11:20:37","modified_gmt":"2025-07-16T04:20:37","slug":"phan-tich-pho-diem-thi-thpt-2025","status":"publish","type":"post","link":"https:\/\/labantrithuc.com\/?p=4634","title":{"rendered":"Ph\u00e2n t\u00edch ph\u1ed5 \u0111i\u1ec3m thi THPT 2025"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"vi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Dashboard Ph\u00e2n T\u00edch \u0110i\u1ec3m Thi THPT 2025<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n    <!-- Chosen Palette: Calm Neutrals (Slate, Indigo, White) -->\n    <!-- Application Structure Plan: A tab-based SPA dashboard with three main views: Overview\/Subject Deep-Dive, Combination Analysis, and Strategy. This structure allows users to progressively discover information, from high-level summaries to detailed, interactive comparisons, enhancing usability over a static report. The core interaction revolves around selecting a subject or combination to dynamically update charts, stats, and analysis text. -->\n    <!-- Visualization & Content Choices: Report info is mapped to interactive elements. Key stats -> Styled cards (Inform). Percentile table -> Interactive bar chart (Explore\/Compare, Chart.js). Combination scores -> Dynamic table (Explore). Analysis text -> Dynamic text blocks (Inform). User advice -> Static formatted text (Advise). This mix of static and dynamic elements, powered by JS, creates an engaging experience to explore the data from multiple angles. -->\n    <!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. -->\n    <style>\n        body { font-family: 'Be Vietnam Pro', sans-serif; background-color: #f8fafc; }\n        .chart-container { position: relative; width: 100%; max-width: 800px; margin: auto; height: 400px; }\n        @media (max-width: 768px) { .chart-container { height: 350px; } }\n        .tab-button { transition: all 0.3s ease; }\n        .tab-button.active { border-color: #4f46e5; color: #4f46e5; background-color: #eef2ff; }\n        .view { display: none; }\n        .view.active { display: block; }\n        .export-btn {\n            background-color: #16a34a; color: white;\n            padding: 0.75rem 1.5rem; border-radius: 0.5rem;\n            font-weight: 600; display: inline-flex; align-items: center; gap: 0.5rem;\n            transition: background-color 0.3s;\n        }\n        .export-btn:hover { background-color: #15803d; }\n    <\/style>\n<\/head>\n<body class=\"text-slate-800\">\n\n    <div class=\"container mx-auto p-4 md:p-8\">\n\n        <header class=\"text-center mb-8\">\n            <h1 class=\"text-3xl md:text-4xl font-extrabold text-indigo-700\">Dashboard Ph\u00e2n T\u00edch Ph\u1ed5 \u0110i\u1ec3m Thi THPT 2025<\/h1>\n            <p class=\"mt-2 text-lg text-slate-600\">Kh\u00e1m ph\u00e1 d\u1eef li\u1ec7u \u0111i\u1ec3m thi m\u1ed9t c\u00e1ch tr\u1ef1c quan v\u00e0 t\u01b0\u01a1ng t\u00e1c<\/p>\n        <\/header>\n\n        <nav class=\"flex justify-center flex-wrap border-b border-slate-200 mb-8\">\n            <button data-view=\"view-main\" class=\"tab-button active font-semibold py-3 px-4 md:px-6 border-b-2 border-transparent\">\ud83d\udd0d Ph\u00e2n T\u00edch M\u00f4n<\/button>\n            <button data-view=\"view-combinations\" class=\"tab-button font-semibold py-3 px-4 md:px-6 border-b-2 border-transparent\">\ud83d\udcca Ph\u00e2n T\u00edch T\u1ed5 H\u1ee3p<\/button>\n            <button data-view=\"view-advice\" class=\"tab-button font-semibold py-3 px-4 md:px-6 border-b-2 border-transparent\">\ud83d\udca1 L\u1eddi Khuy\u00ean<\/button>\n        <\/nav>\n\n        <main>\n            <div id=\"view-main\" class=\"view active\">\n                <section class=\"bg-white p-6 rounded-2xl shadow-sm mb-8\">\n                     <div class=\"intro-text mb-6\">\n                        <p class=\"text-slate-700 leading-relaxed\">\n                            T\u1ea1i \u0111\u00e2y, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ecdn m\u1ed9t m\u00f4n h\u1ecdc \u0111\u1ec3 xem c\u00e1c th\u00f4ng tin chi ti\u1ebft v\u1ec1 ph\u1ed5 \u0111i\u1ec3m c\u1ee7a n\u0103m 2025. D\u1eef li\u1ec7u bao g\u1ed3m c\u00e1c ch\u1ec9 s\u1ed1 th\u1ed1ng k\u00ea quan tr\u1ecdng, bi\u1ec3u \u0111\u1ed3 c\u00e1c ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb v\u00e0 nh\u1eadn \u0111\u1ecbnh chuy\u00ean s\u00e2u v\u1ec1 \u0111\u1ed9 kh\u00f3 c\u0169ng nh\u01b0 t\u00ednh ph\u00e2n h\u00f3a c\u1ee7a \u0111\u1ec1 thi.\n                        <\/p>\n                    <\/div>\n                    <div class=\"flex flex-col md:flex-row md:items-end md:gap-4\">\n                        <div class=\"flex-grow mb-4 md:mb-0\">\n                            <label for=\"subject-select\" class=\"block mb-2 font-semibold text-slate-700\">Ch\u1ecdn m\u00f4n h\u1ecdc \u0111\u1ec3 ph\u00e2n t\u00edch:<\/label>\n                            <select id=\"subject-select\" class=\"w-full p-3 border border-slate-300 rounded-lg shadow-sm focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500\"><\/select>\n                        <\/div>\n                        <button id=\"export-subject-btn\" class=\"export-btn\">\n                            <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM6.293 6.707a1 1 0 010-1.414l3-3a1 1 0 011.414 0l3 3a1 1 0 01-1.414 1.414L11 5.414V13a1 1 0 11-2 0V5.414L7.707 6.707a1 1 0 01-1.414 0z\" clip-rule=\"evenodd\" \/><\/svg>\n                            Xu\u1ea5t Excel\n                        <\/button>\n                    <\/div>\n                <\/section>\n\n                <section id=\"stats-cards\" class=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4 mb-8\">\n                <\/section>\n\n                <section class=\"grid grid-cols-1 lg:grid-cols-5 gap-8\">\n                    <div class=\"lg:col-span-3 bg-white p-6 rounded-2xl shadow-sm\">\n                        <h3 class=\"text-xl font-bold mb-4\">Bi\u1ec3u \u0110\u1ed3 B\u00e1ch Ph\u00e2n V\u1ecb \u0110i\u1ec3m<\/h3>\n                        <p class=\"text-sm text-slate-500 mb-4\">Bi\u1ec3u \u0111\u1ed3 th\u1ec3 hi\u1ec7n m\u1ee9c \u0111i\u1ec3m t\u1ed1i thi\u1ec3u c\u1ea7n \u0111\u1ea1t \u0111\u1ec3 l\u1ecdt v\u00e0o c\u00e1c nh\u00f3m th\u00ed sinh cao \u0111i\u1ec3m nh\u1ea5t.<\/p>\n                        <div class=\"chart-container\">\n                            <canvas id=\"percentileChart\"><\/canvas>\n                        <\/div>\n                    <\/div>\n                    <div id=\"analysis-container\" class=\"lg:col-span-2 bg-white p-6 rounded-2xl shadow-sm\">\n                        <h3 class=\"text-xl font-bold mb-4\">Nh\u1eadn \u0110\u1ecbnh Chuy\u00ean S\u00e2u<\/h3>\n                        <div id=\"analysis-text\" class=\"prose prose-sm text-slate-600 leading-relaxed\"><\/div>\n                    <\/div>\n                <\/section>\n            <\/div>\n\n            <div id=\"view-combinations\" class=\"view\">\n                <section class=\"bg-white p-6 rounded-2xl shadow-sm\">\n                    <div class=\"intro-text mb-6\">\n                        <h2 class=\"text-2xl font-bold text-indigo-700 mb-4\">\u01af\u1edbc T\u00ednh \u0110i\u1ec3m B\u00e1ch Ph\u00e2n V\u1ecb Theo T\u1ed5 H\u1ee3p<\/h2>\n                        <p class=\"text-slate-700 leading-relaxed\">\n                            Ch\u1ecdn m\u1ed9t t\u1ed5 h\u1ee3p x\u00e9t tuy\u1ec3n \u0111\u1ec3 xem b\u1ea3ng \u0111i\u1ec3m b\u00e1ch ph\u00e2n v\u1ecb **\u01b0\u1edbc t\u00ednh**. \u0110i\u1ec3m s\u1ed1 n\u00e0y \u0111\u01b0\u1ee3c t\u00ednh b\u1eb1ng c\u00e1ch c\u1ed9ng \u0111i\u1ec3m c\u1ee7a c\u00e1c m\u00f4n th\u00e0nh ph\u1ea7n \u1edf c\u00f9ng m\u1ed9t ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb.\n                        <\/p>\n                         <div class=\"mt-4 p-4 bg-amber-50 border-l-4 border-amber-400 text-amber-800 rounded-r-lg\">\n                            <p><span class=\"font-bold\">L\u01b0u \u00fd quan tr\u1ecdng:<\/span> \u0110\u00e2y l\u00e0 ph\u01b0\u01a1ng ph\u00e1p \u01b0\u1edbc t\u00ednh \u0111\u1ec3 tham kh\u1ea3o, kh\u00f4ng ph\u1ea3i l\u00e0 \u0111i\u1ec3m b\u00e1ch ph\u00e2n v\u1ecb ch\u00ednh th\u1ee9c. K\u1ebft qu\u1ea3 th\u1ef1c t\u1ebf c\u00f3 th\u1ec3 kh\u00e1c bi\u1ec7t do s\u1ef1 t\u01b0\u01a1ng quan \u0111i\u1ec3m s\u1ed1 gi\u1eefa c\u00e1c m\u00f4n.<\/p>\n                        <\/div>\n                    <\/div>\n                    <div class=\"flex flex-col md:flex-row md:items-end md:gap-4 mb-6\">\n                        <div class=\"flex-grow mb-4 md:mb-0\">\n                           <label for=\"combo-select\" class=\"block mb-2 font-semibold text-slate-700\">Ch\u1ecdn t\u1ed5 h\u1ee3p:<\/label>\n                            <select id=\"combo-select\" class=\"w-full p-3 border border-slate-300 rounded-lg shadow-sm focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500\">\n                            <\/select> \n                        <\/div>\n                        <button id=\"export-combo-btn\" class=\"export-btn\">\n                             <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 17a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM6.293 6.707a1 1 0 010-1.414l3-3a1 1 0 011.414 0l3 3a1 1 0 01-1.414 1.414L11 5.414V13a1 1 0 11-2 0V5.414L7.707 6.707a1 1 0 01-1.414 0z\" clip-rule=\"evenodd\" \/><\/svg>\n                            Xu\u1ea5t Excel\n                        <\/button>\n                    <\/div>\n                    <div id=\"combo-subjects\" class=\"bg-indigo-50 p-4 rounded-lg flex items-center flex-wrap gap-2\">\n                    <\/div>\n                    \n                    <div id=\"combo-results-container\" class=\"mt-8\">\n                    <\/div>\n                <\/section>\n            <\/div>\n\n            <div id=\"view-advice\" class=\"view\">\n                <section class=\"bg-white p-6 md:p-8 rounded-2xl shadow-sm\">\n                     <div class=\"intro-text mb-6\">\n                        <h2 class=\"text-2xl font-bold text-indigo-700 mb-4\">Di\u1ec5n Gi\u1ea3i v\u00e0 T\u01b0 V\u1ea5n Chi\u1ebfn L\u01b0\u1ee3c<\/h2>\n                        <p class=\"text-slate-700 leading-relaxed\">\n                           D\u1ef1a tr\u00ean ph\u00e2n t\u00edch d\u1eef li\u1ec7u, ph\u1ea7n n\u00e0y cung c\u1ea5p nh\u1eefng di\u1ec5n gi\u1ea3i s\u00e2u h\u01a1n v\u1ec1 \u00fd ngh\u0129a c\u1ee7a c\u00e1c con s\u1ed1 v\u00e0 \u0111\u01b0a ra l\u1eddi khuy\u00ean chi\u1ebfn l\u01b0\u1ee3c h\u1eefu \u00edch cho c\u00e1c th\u00ed sinh kh\u00f3a sau trong vi\u1ec7c \u00f4n t\u1eadp v\u00e0 \u0111\u1eb7t m\u1ee5c ti\u00eau.\n                        <\/p>\n                    <\/div>\n                    <div class=\"space-y-6 prose max-w-none text-slate-700\">\n                        <div>\n                            <h4 class=\"font-bold\">M\u1ee9c \u0111\u1ed9 c\u1ea1nh tranh cao \u1edf top \u0111\u1ea7u<\/h4>\n                            <p>\u0110\u1ec3 l\u1ecdt v\u00e0o top 1% &#8211; 5% th\u00ed sinh \u0111i\u1ec3m cao nh\u1ea5t, b\u1ea1n c\u1ea7n \u0111\u1ea1t m\u1ee9c \u0111i\u1ec3m g\u1ea7n nh\u01b0 tuy\u1ec7t \u0111\u1ed1i \u1edf c\u00e1c m\u00f4n nh\u01b0 V\u1eadt L\u00fd, KTPL, CN-N\u00f4ng nghi\u1ec7p (t\u1eeb 9.5 &#8211; 10.0 \u0111i\u1ec3m). \u0110i\u1ec1u n\u00e0y cho th\u1ea5y s\u1ef1 c\u1ea1nh tranh kh\u1ed1c li\u1ec7t \u0111\u1ec3 v\u00e0o c\u00e1c ng\u00e0nh\/tr\u01b0\u1eddng top \u0111\u1ea7u.<\/p>\n                        <\/div>\n                        <div>\n                            <h4 class=\"font-bold\">S\u1ef1 ph\u00e2n h\u00f3a c\u1ee7a c\u00e1c m\u00f4n KHTN v\u00e0 m\u00f4n To\u00e1n<\/h4>\n                            <p>M\u00f4n Sinh h\u1ecdc v\u00e0 \u0111\u1eb7c bi\u1ec7t l\u00e0 m\u00f4n To\u00e1n c\u00f3 y\u00eau c\u1ea7u \u0111i\u1ec3m th\u1ea5p h\u01a1n \u0111\u00e1ng k\u1ec3 so v\u1edbi L\u00fd, H\u00f3a \u0111\u1ec3 v\u00e0o c\u00f9ng m\u1ed9t nh\u00f3m b\u00e1ch ph\u00e2n v\u1ecb. V\u00ed d\u1ee5, \u0111\u1ec3 v\u00e0o top 20%, b\u1ea1n c\u1ea7n 8.5 \u0111i\u1ec3m L\u00fd nh\u01b0ng ch\u1ec9 c\u1ea7n 7.25 \u0111i\u1ec3m Sinh ho\u1eb7c 6.8 \u0111i\u1ec3m To\u00e1n. \u0110i\u1ec1u n\u00e0y kh\u1eb3ng \u0111\u1ecbnh \u0111\u1ed9 kh\u00f3 v\u00e0 t\u00ednh ph\u00e2n lo\u1ea1i c\u1ef1c k\u1ef3 cao c\u1ee7a \u0111\u1ec1 thi c\u00e1c m\u00f4n n\u00e0y.<\/p>\n                        <\/div>\n                        <div>\n                            <h4 class=\"font-bold\">C\u01a1 h\u1ed9i t\u1eeb c\u00e1c m\u00f4n KHXH v\u00e0 Ng\u1eef V\u0103n<\/h4>\n                            <p>C\u00e1c m\u00f4n x\u00e3 h\u1ed9i v\u00e0 Ng\u1eef v\u0103n c\u00f3 m\u1ee9c \u0111i\u1ec3m t\u01b0\u01a1ng \u0111\u1ed1i cao v\u00e0 \u1ed5n \u0111\u1ecbnh. Tuy nhi\u00ean, \u0111\u1ec3 th\u1ef1c s\u1ef1 b\u1ee9t ph\u00e1 (v\u00e0o top 5% &#8211; 10%), th\u00ed sinh c\u0169ng c\u1ea7n \u0111\u1ea1t m\u1ee9c \u0111i\u1ec3m r\u1ea5t cao (t\u1eeb 8.5 &#8211; 9.0 tr\u1edf l\u00ean).<\/p>\n                        <\/div>\n                         <div>\n                            <h4 class=\"font-bold\">T\u1ea7m quan tr\u1ecdng c\u1ee7a Ti\u1ebfng Anh<\/h4>\n                            <p>M\u1eb7c d\u00f9 \u0111i\u1ec3m trung b\u00ecnh th\u1ea5p, nh\u01b0ng \u0111\u1ec3 v\u00e0o top 10% m\u00f4n Ti\u1ebfng Anh, th\u00ed sinh c\u1ea7n \u0111\u1ea1t t\u1edbi 8.0 \u0111i\u1ec3m. \u0110i\u1ec1u n\u00e0y cho th\u1ea5y n\u1ebfu c\u00f3 n\u0103ng l\u1ef1c ngo\u1ea1i ng\u1eef t\u1ed1t, th\u00ed sinh s\u1ebd c\u00f3 l\u1ee3i th\u1ebf c\u1ea1nh tranh r\u1ea5t l\u1edbn so v\u1edbi m\u1eb7t b\u1eb1ng chung.<\/p>\n                        <\/div>\n                        <div class=\"p-4 bg-indigo-50 border-l-4 border-indigo-500 rounded-r-lg\">\n                            <h4 class=\"font-bold\">L\u1eddi khuy\u00ean cho th\u00ed sinh 2k8 tr\u1edf \u0111i<\/h4>\n                            <p>H\u00e3y xem b\u1ea3ng b\u00e1ch ph\u00e2n v\u1ecb n\u00e0y nh\u01b0 m\u1ed9t m\u1ee5c ti\u00eau tham kh\u1ea3o. \u0110\u1ec3 c\u00f3 l\u1ee3i th\u1ebf trong x\u00e9t tuy\u1ec3n, vi\u1ec7c \u0111\u1ea1t \u0111\u01b0\u1ee3c m\u1ee9c \u0111i\u1ec3m n\u1eb1m trong top 20% &#8211; 25% c\u1ee7a m\u00f4n h\u1ecdc th\u1ebf m\u1ea1nh l\u00e0 m\u1ed9t m\u1ee5c ti\u00eau kh\u1ea3 thi v\u00e0 c\u1ea7n thi\u1ebft. C\u1ea7n c\u00f3 s\u1ef1 \u0111\u1ea7u t\u01b0 \u0111\u1ed3ng \u0111\u1ec1u, tr\u00e1nh \u0111\u1ec3 b\u1ecb &#8220;\u0111i\u1ec3m li\u1ec7t&#8221; \u1edf b\u1ea5t k\u1ef3 m\u00f4n n\u00e0o, \u0111\u1eb7c bi\u1ec7t l\u00e0 To\u00e1n v\u00e0 Ti\u1ebfng Anh. \u0110\u1ed3ng th\u1eddi, c\u1ea7n x\u00e1c \u0111\u1ecbnh c\u00e1c m\u00f4n th\u1ebf m\u1ea1nh \u0111\u1ec3 t\u1eadp trung &#8220;c\u00e0y&#8221; \u0111i\u1ec3m, nh\u1eafm \u0111\u1ebfn c\u00e1c ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb cao.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/section>\n            <\/div>\n        <\/main>\n    <\/div>\n\n    <script>\n        const reportData = {\n            'To\u00e1n': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 1126172, '\u0110i\u1ec3m TB': 4.78, 'Trung v\u1ecb': 4.6, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.68, 'S\u1ed1 \u0111i\u1ec3m 10': 513, 'S\u1ed1 \u0111i\u1ec3m 0': 6 },\n                percentiles: { 'Top 1%': 9.4, 'Top 5%': 8.4, 'Top 10%': 7.8, 'Top 15%': 7.2, 'Top 20%': 6.8, 'Top 25%': 6.4, 'Top 30%': 6.0, 'Top 40%': 5.4, 'Top 50%': 4.6 },\n                analysis: \"Ph\u1ed5 \u0111i\u1ec3m m\u00f4n To\u00e1n l\u1ec7ch h\u1eb3n v\u1ec1 b\u00ean tr\u00e1i, \u0111\u1ec9nh \u1edf kho\u1ea3ng 4-5 \u0111i\u1ec3m. \u0110i\u1ec3m trung b\u00ecnh r\u1ea5t th\u1ea5p cho th\u1ea5y \u0111\u1ec1 thi c\u00f3 \u0111\u1ed9 kh\u00f3 v\u00e0 t\u00ednh ph\u00e2n lo\u1ea1i c\u1ef1c k\u1ef3 cao, l\u00e0 th\u1eed th\u00e1ch l\u1edbn nh\u1ea5t \u0111\u1ed1i v\u1edbi th\u00ed sinh c\u1ea3 n\u01b0\u1edbc.\"\n            },\n            'Ng\u1eef v\u0103n': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 1126726, '\u0110i\u1ec3m TB': 7.0, 'Trung v\u1ecb': 7.25, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.28, 'S\u1ed1 \u0111i\u1ec3m 10': 0, 'S\u1ed1 \u0111i\u1ec3m 0': 7 },\n                percentiles: { 'Top 1%': 9.25, 'Top 5%': 8.75, 'Top 10%': 8.5, 'Top 15%': 8.25, 'Top 20%': 8.0, 'Top 25%': 7.75, 'Top 30%': 7.5, 'Top 40%': 7.25, 'Top 50%': 7.25 },\n                analysis: \"Ph\u1ed5 \u0111i\u1ec3m m\u00f4n Ng\u1eef V\u0103n l\u1ec7ch tr\u00e1i, \u0111\u1ec9nh \u1edf kho\u1ea3ng 7.0-7.5 \u0111i\u1ec3m. \u0110i\u1ec3m trung b\u00ecnh kh\u00e1 cao v\u00e0 \u1ed5n \u0111\u1ecbnh. Vi\u1ec7c kh\u00f4ng c\u00f3 \u0111i\u1ec3m 10 cho th\u1ea5y t\u00ednh ch\u1eb7t ch\u1ebd trong barem \u0111i\u1ec3m c\u1ee7a m\u00f4n t\u1ef1 lu\u1eadn, kh\u00f3 \u0111\u1ec3 \u0111\u1ea1t \u0111i\u1ec3m tuy\u1ec7t \u0111\u1ed1i.\"\n            },\n            'Ti\u1ebfng Anh': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 351848, '\u0110i\u1ec3m TB': 5.38, 'Trung v\u1ecb': 5.25, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.45, 'S\u1ed1 \u0111i\u1ec3m 10': 141, 'S\u1ed1 \u0111i\u1ec3m 0': 2 },\n                percentiles: { 'Top 1%': 9.6, 'Top 5%': 8.6, 'Top 10%': 8.0, 'Top 15%': 7.4, 'Top 20%': 7.0, 'Top 25%': 6.6, 'Top 30%': 6.2, 'Top 40%': 5.6, 'Top 50%': 5.25 },\n                analysis: \"Ph\u1ed5 \u0111i\u1ec3m m\u00f4n Ti\u1ebfng Anh r\u1ea5t \u0111\u1eb7c tr\u01b0ng, c\u00f3 d\u1ea1ng 'hai \u0111\u1ec9nh' (bimodal). \u0110i\u1ec3m trung b\u00ecnh v\u00e0 trung v\u1ecb th\u1ea5p, cho th\u1ea5y s\u1ef1 ch\u00eanh l\u1ec7ch l\u1edbn v\u1ec1 n\u0103ng l\u1ef1c ngo\u1ea1i ng\u1eef gi\u1eefa c\u00e1c nh\u00f3m th\u00ed sinh. \u0110\u00e2y v\u1eabn l\u00e0 'v\u00f9ng tr\u0169ng' v\u1ec1 \u0111i\u1ec3m s\u1ed1 trong nhi\u1ec1u n\u0103m.\"\n            },\n            'V\u1eadt l\u00ed': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 347599, '\u0110i\u1ec3m TB': 6.99, 'Trung v\u1ecb': 7.0, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.52, 'S\u1ed1 \u0111i\u1ec3m 10': 3929, 'S\u1ed1 \u0111i\u1ec3m 0': 1 },\n                percentiles: { 'Top 1%': 10.0, 'Top 5%': 9.25, 'Top 10%': 9.0, 'Top 15%': 8.75, 'Top 20%': 8.5, 'Top 25%': 8.25, 'Top 30%': 8.0, 'Top 40%': 7.5, 'Top 50%': 7.0 },\n                analysis: \"Ph\u1ed5 \u0111i\u1ec3m m\u00f4n V\u1eadt L\u00fd c\u00f3 d\u1ea1ng ti\u1ec7m c\u1eadn ph\u00e2n ph\u1ed1i chu\u1ea9n, \u0111\u1ec9nh ph\u1ed5 l\u1ec7ch v\u1ec1 ph\u00eda \u0111i\u1ec3m kh\u00e1 (7.0 - 8.0 \u0111i\u1ec3m). \u0110i\u1ec1u n\u00e0y cho th\u1ea5y \u0111\u1ec1 thi c\u00f3 \u0111\u1ed9 ph\u00e2n h\u00f3a t\u1ed1t, ph\u00f9 h\u1ee3p v\u1edbi m\u1ee5c ti\u00eau x\u00e9t tuy\u1ec3n \u0111\u1ea1i h\u1ecdc. \u0110\u1eb7c bi\u1ec7t, m\u00f4n V\u1eadt L\u00fd c\u00f3 s\u1ed1 \u0111i\u1ec3m 10 r\u1ea5t cao, cho th\u1ea5y c\u00f3 nhi\u1ec1u th\u00ed sinh xu\u1ea5t s\u1eafc.\"\n            },\n            'H\u00f3a h\u1ecdc': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 240135, '\u0110i\u1ec3m TB': 6.06, 'Trung v\u1ecb': 6.0, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.81, 'S\u1ed1 \u0111i\u1ec3m 10': 625, 'S\u1ed1 \u0111i\u1ec3m 0': 0 },\n                percentiles: { 'Top 1%': 9.75, 'Top 5%': 9.25, 'Top 10%': 8.75, 'Top 15%': 8.5, 'Top 20%': 8.25, 'Top 25%': 8.0, 'Top 30%': 7.75, 'Top 40%': 7.25, 'Top 50%': 6.0 },\n                analysis: \"Gi\u1ed1ng V\u1eadt L\u00fd, ph\u1ed5 \u0111i\u1ec3m H\u00f3a H\u1ecdc c\u0169ng c\u00f3 d\u1ea1ng ti\u1ec7m c\u1eadn ph\u00e2n ph\u1ed1i chu\u1ea9n, \u0111\u1ec9nh ph\u1ed5 l\u1ec7ch v\u1ec1 ph\u00eda \u0111i\u1ec3m kh\u00e1. \u0110\u1ec1 thi c\u00f3 \u0111\u1ed9 ph\u00e2n h\u00f3a t\u1ed1t, ph\u00f9 h\u1ee3p v\u1edbi m\u1ee5c ti\u00eau x\u00e9t tuy\u1ec3n \u0111\u1ea1i h\u1ecdc.\"\n            },\n            'Sinh h\u1ecdc': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 69895, '\u0110i\u1ec3m TB': 5.78, 'Trung v\u1ecb': 5.75, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.58, 'S\u1ed1 \u0111i\u1ec3m 10': 82, 'S\u1ed1 \u0111i\u1ec3m 0': 0 },\n                percentiles: { 'Top 1%': 9.5, 'Top 5%': 8.5, 'Top 10%': 8.0, 'Top 15%': 7.5, 'Top 20%': 7.25, 'Top 25%': 7.0, 'Top 30%': 6.75, 'Top 40%': 6.25, 'Top 50%': 5.75 },\n                analysis: \"Ph\u1ed5 \u0111i\u1ec3m c\u00f3 \u0111\u1ec9nh r\u1ea5t r\u00f5 t\u1ea1i kho\u1ea3ng 5.0 - 5.75 \u0111i\u1ec3m, \u0111i\u1ec3m trung b\u00ecnh v\u00e0 trung v\u1ecb kh\u00e1 th\u1ea5p so v\u1edbi c\u00e1c m\u00f4n kh\u00e1c. \u0110i\u1ec1u n\u00e0y cho th\u1ea5y \u0111\u1ec1 Sinh c\u00f3 \u0111\u1ed9 kh\u00f3 cao, mang t\u00ednh th\u1eed th\u00e1ch l\u1edbn v\u1edbi ph\u1ea7n l\u1edbn th\u00ed sinh, c\u00f3 t\u00ednh ph\u00e2n lo\u1ea1i cao nh\u1ea5t trong nh\u00f3m KHTN.\"\n            },\n            'L\u1ecbch s\u1eed': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 481293, '\u0110i\u1ec3m TB': 6.52, 'Trung v\u1ecb': 6.6, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.63, 'S\u1ed1 \u0111i\u1ec3m 10': 1518, 'S\u1ed1 \u0111i\u1ec3m 0': 2 },\n                percentiles: { 'Top 1%': 9.75, 'Top 5%': 9.0, 'Top 10%': 8.5, 'Top 15%': 8.25, 'Top 20%': 7.75, 'Top 25%': 7.5, 'Top 30%': 7.25, 'Top 40%': 6.75, 'Top 50%': 6.5 },\n                analysis: \"L\u00e0 m\u00f4n c\u00f3 s\u1ed1 l\u01b0\u1ee3ng th\u00ed sinh d\u1ef1 thi \u0111\u00f4ng. Ph\u1ed5 \u0111i\u1ec3m l\u1ec7ch tr\u00e1i r\u00f5 r\u1ec7t, \u0111\u1ec9nh ph\u1ed5 r\u01a1i v\u00e0o kho\u1ea3ng \u0111i\u1ec3m kh\u00e1 - gi\u1ecfi. \u0110i\u1ec1u n\u00e0y cho th\u1ea5y ph\u1ea7n l\u1edbn h\u1ecdc sinh n\u1eafm ch\u1eafc ki\u1ebfn th\u1ee9c c\u01a1 b\u1ea3n v\u00e0 \u0111\u1ea1t \u0111\u01b0\u1ee3c m\u1ee9c \u0111i\u1ec3m trung b\u00ecnh - kh\u00e1.\"\n            },\n            '\u0110\u1ecba l\u00ed': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 476472, '\u0110i\u1ec3m TB': 6.63, 'Trung v\u1ecb': 6.75, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.75, 'S\u1ed1 \u0111i\u1ec3m 10': 6907, 'S\u1ed1 \u0111i\u1ec3m 0': 3 },\n                percentiles: { 'Top 1%': 9.5, 'Top 5%': 8.75, 'Top 10%': 8.25, 'Top 15%': 8.0, 'Top 20%': 7.75, 'Top 25%': 7.5, 'Top 30%': 7.25, 'Top 40%': 6.75, 'Top 50%': 6.75 },\n                analysis: \"T\u01b0\u01a1ng t\u1ef1 L\u1ecbch s\u1eed, ph\u1ed5 \u0111i\u1ec3m l\u1ec7ch tr\u00e1i, \u0111\u1ec9nh ph\u1ed5 \u1edf m\u1ee9c \u0111i\u1ec3m kh\u00e1-gi\u1ecfi. S\u1ed1 l\u01b0\u1ee3ng \u0111i\u1ec3m 10 r\u1ea5t \u1ea5n t\u01b0\u1ee3ng, cho th\u1ea5y nhi\u1ec1u th\u00ed sinh t\u1eadn d\u1ee5ng t\u1ed1t Atlat v\u00e0 ki\u1ebfn th\u1ee9c \u0111\u1ec3 \u0111\u1ea1t \u0111i\u1ec3m t\u1ed1i \u0111a.\"\n            },\n            'KTPL': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 246401, '\u0110i\u1ec3m TB': 7.69, 'Trung v\u1ecb': 7.75, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.18, 'S\u1ed1 \u0111i\u1ec3m 10': 1451, 'S\u1ed1 \u0111i\u1ec3m 0': 0 },\n                percentiles: { 'Top 1%': 10.0, 'Top 5%': 9.5, 'Top 10%': 9.25, 'Top 15%': 9.0, 'Top 20%': 8.75, 'Top 25%': 8.5, 'Top 30%': 8.25, 'Top 40%': 8.0, 'Top 50%': 7.75 },\n                analysis: \"\u0110\u00e2y l\u00e0 m\u00f4n thi c\u00f3 \u0111i\u1ec3m trung b\u00ecnh cao nh\u1ea5t trong c\u00e1c m\u00f4n \u0111\u01b0\u1ee3c ph\u00e2n t\u00edch. Ph\u1ed5 \u0111i\u1ec3m l\u1ec7ch tr\u00e1i m\u1ea1nh cho th\u1ea5y \u0111\u1ec1 thi t\u01b0\u01a1ng \u0111\u1ed1i 'd\u1ec5 th\u1edf' ho\u1eb7c h\u1ecdc sinh c\u00f3 n\u1ec1n t\u1ea3ng ki\u1ebfn th\u1ee9c t\u1ed1t \u1edf m\u00f4n n\u00e0y. M\u1ee9c \u0111\u1ed9 c\u1ea1nh tranh \u1edf top \u0111\u1ea7u r\u1ea5t cao.\"\n            },\n            'CN - N\u00f4ng nghi\u1ec7p': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 22048, '\u0110i\u1ec3m TB': 7.72, 'Trung v\u1ecb': 7.75, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.17, 'S\u1ed1 \u0111i\u1ec3m 10': 101, 'S\u1ed1 \u0111i\u1ec3m 0': 0 },\n                percentiles: { 'Top 1%': 10.0, 'Top 5%': 9.5, 'Top 10%': 9.25, 'Top 15%': 9.0, 'Top 20%': 8.75, 'Top 25%': 8.5, 'Top 30%': 8.5, 'Top 40%': 8.0, 'Top 50%': 7.75 },\n                analysis: \"\u0110\u00e2y l\u00e0 m\u00f4n c\u00f3 s\u1ed1 l\u01b0\u1ee3ng th\u00ed sinh \u00edt nh\u01b0ng \u0111i\u1ec3m trung b\u00ecnh r\u1ea5t cao. Ph\u1ed5 \u0111i\u1ec3m c\u00f3 d\u1ea1ng ph\u00e2n ph\u1ed1i chu\u1ea9n, l\u1ec7ch tr\u00e1i, cho th\u1ea5y \u0111\u1ec1 thi \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng h\u1ee3p l\u00fd v\u00e0 h\u1ecdc sinh theo kh\u1ed1i n\u00e0y h\u1ecdc t\u1ed1t.\"\n            },\n            'CN - C\u00f4ng nghi\u1ec7p': {\n                stats: { 'S\u1ed1 th\u00ed sinh': 2290, '\u0110i\u1ec3m TB': 5.79, 'Trung v\u1ecb': 5.6, '\u0110\u1ed9 l\u1ec7ch chu\u1ea9n': 1.54, 'S\u1ed1 \u0111i\u1ec3m 10': 4, 'S\u1ed1 \u0111i\u1ec3m 0': 0 },\n                percentiles: { 'Top 1%': 9.5, 'Top 5%': 8.75, 'Top 10%': 8.25, 'Top 15%': 7.75, 'Top 20%': 7.5, 'Top 25%': 7.25, 'Top 30%': 7.0, 'Top 40%': 6.5, 'Top 50%': 5.5 },\n                analysis: \"L\u00e0 m\u00f4n c\u00f3 s\u1ed1 th\u00ed sinh \u00edt nh\u1ea5t. Ph\u1ed5 \u0111i\u1ec3m c\u0169ng c\u00f3 d\u1ea1ng ph\u00e2n ph\u1ed1i chu\u1ea9n nh\u01b0ng \u0111i\u1ec3m trung b\u00ecnh kh\u00f4ng cao b\u1eb1ng kh\u1ed1i N\u00f4ng nghi\u1ec7p. \u0110\u1ec1 thi c\u00f3 t\u00ednh ph\u00e2n lo\u1ea1i t\u1ed1t.\"\n            }\n        };\n\n        const combinationMapping = {\n            'A00': ['To\u00e1n', 'V\u1eadt l\u00ed', 'H\u00f3a h\u1ecdc'], 'A01': ['To\u00e1n', 'V\u1eadt l\u00ed', 'Ti\u1ebfng Anh'], 'A02': ['To\u00e1n', 'V\u1eadt l\u00ed', 'Sinh h\u1ecdc'], 'A04': ['To\u00e1n', 'V\u1eadt l\u00ed', '\u0110\u1ecba l\u00ed'], 'A05': ['To\u00e1n', 'H\u00f3a h\u1ecdc', 'L\u1ecbch s\u1eed'], 'A06': ['To\u00e1n', 'H\u00f3a h\u1ecdc', '\u0110\u1ecba l\u00ed'],\n            'B00': ['To\u00e1n', 'H\u00f3a h\u1ecdc', 'Sinh h\u1ecdc'], 'B01': ['To\u00e1n', 'Sinh h\u1ecdc', 'L\u1ecbch s\u1eed'], 'B02': ['To\u00e1n', 'Sinh h\u1ecdc', '\u0110\u1ecba l\u00ed'], 'B03': ['To\u00e1n', 'Ng\u1eef v\u0103n', 'Sinh h\u1ecdc'], 'B08': ['To\u00e1n', 'Sinh h\u1ecdc', 'Ti\u1ebfng Anh'],\n            'C00': ['Ng\u1eef v\u0103n', 'L\u1ecbch s\u1eed', '\u0110\u1ecba l\u00ed'], 'C01': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'V\u1eadt l\u00ed'], 'C02': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'H\u00f3a h\u1ecdc'], 'C03': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'L\u1ecbch s\u1eed'], 'C04': ['Ng\u1eef v\u0103n', 'To\u00e1n', '\u0110\u1ecba l\u00ed'], 'C05': ['Ng\u1eef v\u0103n', 'V\u1eadt l\u00ed', 'H\u00f3a h\u1ecdc'], 'C08': ['Ng\u1eef v\u0103n', 'H\u00f3a h\u1ecdc', 'Sinh h\u1ecdc'], 'C13': ['Ng\u1eef v\u0103n', 'Sinh h\u1ecdc', '\u0110\u1ecba l\u00ed'],\n            'D01': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'Ti\u1ebfng Anh'], 'D04': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'H\u00f3a h\u1ecdc'], 'D07': ['To\u00e1n', 'H\u00f3a h\u1ecdc', 'Ti\u1ebfng Anh'], 'D09': ['To\u00e1n', 'L\u1ecbch s\u1eed', 'Ti\u1ebfng Anh'], 'D10': ['To\u00e1n', '\u0110\u1ecba l\u00ed', 'Ti\u1ebfng Anh'], 'D12': ['Ng\u1eef v\u0103n', 'H\u00f3a h\u1ecdc', 'Ti\u1ebfng Anh'], 'D14': ['Ng\u1eef v\u0103n', 'L\u1ecbch s\u1eed', 'Ti\u1ebfng Anh'], 'D15': ['Ng\u1eef v\u0103n', '\u0110\u1ecba l\u00ed', 'Ti\u1ebfng Anh'], 'D63': ['Ng\u1eef v\u0103n', 'L\u1ecbch s\u1eed', 'Ti\u1ebfng Anh'], 'D65': ['Ng\u1eef v\u0103n', '\u0110\u1ecba l\u00ed', 'Ti\u1ebfng Anh'],\n            'M00': ['Ng\u1eef v\u0103n', 'To\u00e1n', 'N\u0103ng khi\u1ebfu'],\n            'T00': ['To\u00e1n', 'Sinh h\u1ecdc', 'N\u0103ng khi\u1ebfu'], 'T01': ['Ng\u1eef v\u0103n', 'Sinh h\u1ecdc', 'N\u0103ng khi\u1ebfu'], 'T02': ['Ng\u1eef v\u0103n', '\u0110\u1ecba l\u00ed', 'N\u0103ng khi\u1ebfu'], 'T04': ['To\u00e1n', '\u0110\u1ecba l\u00ed', 'N\u0103ng khi\u1ebfu'], 'T06': ['To\u00e1n', 'H\u00f3a h\u1ecdc', 'N\u0103ng khi\u1ebfu'],\n            'X01': ['To\u00e1n', 'Ng\u1eef v\u0103n', 'KTPL'], 'X02': ['To\u00e1n', 'Ng\u1eef v\u0103n', 'Tin h\u1ecdc'], 'X05': ['To\u00e1n', 'V\u1eadt l\u00ed', 'KTPL'], 'X06': ['To\u00e1n', 'V\u1eadt l\u00ed', 'Tin h\u1ecdc'], 'X09': ['To\u00e1n', 'H\u00f3a h\u1ecdc', 'KTPL'], 'X13': ['To\u00e1n', 'Sinh h\u1ecdc', 'KTPL'], 'X17': ['To\u00e1n', 'L\u1ecbch s\u1eed', 'KTPL'], 'X21': ['To\u00e1n', '\u0110\u1ecba l\u00ed', 'KTPL'], 'X25': ['To\u00e1n', 'KTPL', 'Ti\u1ebfng Anh'], 'X26': ['To\u00e1n', 'Tin h\u1ecdc', 'Ti\u1ebfng Anh'], 'X70': ['Ng\u1eef v\u0103n', 'L\u1ecbch s\u1eed', 'KTPL'], 'X74': ['Ng\u1eef v\u0103n', '\u0110\u1ecba l\u00ed', 'KTPL'], 'X78': ['Ng\u1eef v\u0103n', 'KTPL', 'Ti\u1ebfng Anh'], 'X90': ['Ng\u1eef v\u0103n', 'KTPL', 'Ti\u1ebfng Trung']\n        };\n\n        const subjectSelect = document.getElementById('subject-select');\n        const statsCardsContainer = document.getElementById('stats-cards');\n        const analysisTextContainer = document.getElementById('analysis-text');\n        const percentileChartCanvas = document.getElementById('percentileChart').getContext('2d');\n        let percentileChart;\n\n        const comboSelect = document.getElementById('combo-select');\n        const comboSubjectsContainer = document.getElementById('combo-subjects');\n        const comboResultsContainer = document.getElementById('combo-results-container');\n\n        function downloadCSV(csvContent, fileName) {\n            const bom = \"\\uFEFF\";\n            const blob = new Blob([bom + csvContent], { type: 'text\/csv;charset=utf-8;' });\n            const link = document.createElement(\"a\");\n            if (link.download !== undefined) {\n                const url = URL.createObjectURL(blob);\n                link.setAttribute(\"href\", url);\n                link.setAttribute(\"download\", fileName);\n                link.style.visibility = 'hidden';\n                document.body.appendChild(link);\n                link.click();\n                document.body.removeChild(link);\n            }\n        }\n\n        function exportSubjectData() {\n            const subject = subjectSelect.value;\n            const data = reportData[subject];\n            let csvContent = `Th\u1ed1ng k\u00ea m\u00f4n ${subject}\\n\\n`;\n            \n            csvContent += \"H\u1ea1ng m\u1ee5c,Gi\u00e1 tr\u1ecb\\n\";\n            for (const [key, value] of Object.entries(data.stats)) {\n                csvContent += `\"${key}\",${value}\\n`;\n            }\n\n            csvContent += \"\\nB\u00e1ch ph\u00e2n v\u1ecb\\n\";\n            csvContent += \"Ng\u01b0\u1ee1ng,\u0110i\u1ec3m\\n\";\n            for (const [key, value] of Object.entries(data.percentiles)) {\n                csvContent += `\"${key}\",${value}\\n`;\n            }\n\n            downloadCSV(csvContent, `bach-phan-vi-mon-${subject.toLowerCase().replace(\/[^a-z0-9]\/g, '-')}.csv`);\n        }\n\n        function exportCombinationData() {\n            const comboCode = comboSelect.value;\n            const subjects = combinationMapping[comboCode];\n            \n            let canCalculate = true;\n            subjects.forEach(subject => {\n                const subjectKey = subject.replace('Gi\u00e1o d\u1ee5c Kinh t\u1ebf v\u00e0 ph\u00e1p lu\u1eadt', 'KTPL');\n                if (!reportData[subjectKey]) {\n                    canCalculate = false;\n                }\n            });\n\n            if (!canCalculate) {\n                return;\n            }\n\n            const percentiles = Object.keys(reportData['To\u00e1n'].percentiles);\n            let csvContent = `B\u00e1ch ph\u00e2n v\u1ecb t\u1ed5 h\u1ee3p ${comboCode}\\n`;\n            csvContent += `C\u00e1c m\u00f4n: ${subjects.join(', ')}\\n\\n`;\n            csvContent += \"Ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb,T\u1ed5ng \u0111i\u1ec3m \u01b0\u1edbc t\u00ednh\\n\";\n\n            percentiles.forEach(p => {\n                let totalScore = 0;\n                subjects.forEach(s => {\n                    const subjectKey = s.replace('Gi\u00e1o d\u1ee5c Kinh t\u1ebf v\u00e0 ph\u00e1p lu\u1eadt', 'KTPL');\n                    totalScore += reportData[subjectKey].percentiles[p];\n                });\n                csvContent += `\"${p}\",${totalScore.toFixed(2)}\\n`;\n            });\n            \n            downloadCSV(csvContent, `bach-phan-vi-to-hop-${comboCode}.csv`);\n        }\n\n        function populateSelect() {\n            Object.keys(reportData).forEach(subject => {\n                const option = document.createElement('option');\n                option.value = subject;\n                option.textContent = subject;\n                subjectSelect.appendChild(option);\n            });\n        }\n        \n        function populateComboSelect() {\n            comboSelect.innerHTML = '';\n            Object.keys(combinationMapping).sort().forEach(combo => {\n                const option = document.createElement('option');\n                option.value = combo;\n                option.textContent = combo;\n                comboSelect.appendChild(option);\n            });\n        }\n\n        function updateStatsCards(subject) {\n            const stats = reportData[subject].stats;\n            statsCardsContainer.innerHTML = '';\n            for (const [key, value] of Object.entries(stats)) {\n                const card = `\n                    <div class=\"bg-indigo-50 p-4 rounded-lg text-center shadow-sm\">\n                        <div class=\"text-sm text-indigo-800 font-medium\">${key}<\/div>\n                        <div class=\"text-2xl font-bold text-indigo-700 mt-1\">${value.toLocaleString('vi-VN')}<\/div>\n                    <\/div>\n                `;\n                statsCardsContainer.innerHTML += card;\n            }\n        }\n        \n        function updateAnalysisText(subject) {\n            analysisTextContainer.innerHTML = `<p>${reportData[subject].analysis}<\/p>`;\n        }\n\n        function updatePercentileChart(subject) {\n            const data = reportData[subject].percentiles;\n            const labels = Object.keys(data);\n            const values = Object.values(data);\n\n            if (percentileChart) {\n                percentileChart.destroy();\n            }\n\n            percentileChart = new Chart(percentileChartCanvas, {\n                type: 'bar',\n                data: {\n                    labels: labels,\n                    datasets: [{\n                        label: `\u0110i\u1ec3m ${subject}`,\n                        data: values,\n                        backgroundColor: 'rgba(79, 70, 229, 0.7)',\n                        borderColor: 'rgba(79, 70, 229, 1)',\n                        borderWidth: 1,\n                        borderRadius: 5\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: false,\n                    scales: { y: { beginAtZero: true, max: 10, title: { display: true, text: '\u0110i\u1ec3m s\u1ed1' } }, x: { title: { display: true, text: 'Ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb' } } },\n                    plugins: { legend: { display: false }, tooltip: { callbacks: { label: (context) => `\u0110i\u1ec3m: ${context.parsed.y}` } } }\n                }\n            });\n        }\n\n        function updateView(subject) {\n            updateStatsCards(subject);\n            updateAnalysisText(subject);\n            updatePercentileChart(subject);\n        }\n\n        function calculateAndDisplayComboResults(comboCode) {\n            const subjects = combinationMapping[comboCode];\n            let subjectHtml = `<span class=\"font-semibold mr-2\">C\u00e1c m\u00f4n trong t\u1ed5 h\u1ee3p:<\/span>`;\n            let canCalculate = true;\n            \n            subjects.forEach(subject => {\n                const subjectKey = subject.replace('Gi\u00e1o d\u1ee5c Kinh t\u1ebf v\u00e0 ph\u00e1p lu\u1eadt', 'KTPL');\n                if (!reportData[subjectKey]) {\n                    canCalculate = false;\n                }\n                subjectHtml += `<span class=\"bg-white text-indigo-700 font-medium py-1 px-3 rounded-full shadow-sm\">${subject}<\/span>`;\n            });\n            comboSubjectsContainer.innerHTML = subjectHtml;\n\n            if (!canCalculate) {\n                comboResultsContainer.innerHTML = `<div class=\"p-4 bg-red-50 border-l-4 border-red-400 text-red-800 rounded-r-lg\"><p><span class=\"font-bold\">Kh\u00f4ng th\u1ec3 t\u00ednh to\u00e1n:<\/span> T\u1ed5 h\u1ee3p n\u00e0y ch\u1ee9a m\u00f4n (v\u00ed d\u1ee5: Tin h\u1ecdc, Ti\u1ebfng Trung, N\u0103ng khi\u1ebfu...) kh\u00f4ng c\u00f3 trong d\u1eef li\u1ec7u ph\u00e2n t\u00edch chi ti\u1ebft.<\/p><\/div>`;\n                return;\n            }\n\n            const percentiles = Object.keys(reportData['To\u00e1n'].percentiles);\n            let tableHtml = `\n                <div class=\"overflow-x-auto\">\n                    <table class=\"min-w-full bg-white rounded-lg shadow-sm\">\n                        <thead class=\"bg-indigo-600 text-white\">\n                            <tr>\n                                <th class=\"text-left py-3 px-4 uppercase font-semibold text-sm\">Ng\u01b0\u1ee1ng b\u00e1ch ph\u00e2n v\u1ecb<\/th>\n                                <th class=\"text-right py-3 px-4 uppercase font-semibold text-sm\">T\u1ed5ng \u0111i\u1ec3m \u01b0\u1edbc t\u00ednh<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody class=\"text-gray-700\">`;\n\n            percentiles.forEach(p => {\n                let totalScore = 0;\n                subjects.forEach(s => {\n                    const subjectKey = s.replace('Gi\u00e1o d\u1ee5c Kinh t\u1ebf v\u00e0 ph\u00e1p lu\u1eadt', 'KTPL');\n                    totalScore += reportData[subjectKey].percentiles[p];\n                });\n                tableHtml += `\n                    <tr>\n                        <td class=\"text-left py-3 px-4 font-semibold\">${p}<\/td>\n                        <td class=\"text-right py-3 px-4 font-bold text-indigo-700 text-lg\">${totalScore.toFixed(2)}<\/td>\n                    <\/tr>`;\n            });\n\n            tableHtml += `<\/tbody><\/table><\/div>`;\n            comboResultsContainer.innerHTML = tableHtml;\n        }\n        \n        function switchView(viewId) {\n            document.querySelectorAll('.view').forEach(view => view.classList.remove('active'));\n            document.getElementById(viewId).classList.add('active');\n\n            document.querySelectorAll('.tab-button').forEach(button => {\n                button.classList.remove('active');\n                if (button.dataset.view === viewId) {\n                    button.classList.add('active');\n                }\n            });\n        }\n\n        document.querySelectorAll('.tab-button').forEach(button => {\n            button.addEventListener('click', (e) => {\n                switchView(e.currentTarget.dataset.view);\n            });\n        });\n\n        subjectSelect.addEventListener('change', (e) => updateView(e.target.value));\n        comboSelect.addEventListener('change', (e) => calculateAndDisplayComboResults(e.target.value));\n        document.getElementById('export-subject-btn').addEventListener('click', exportSubjectData);\n        document.getElementById('export-combo-btn').addEventListener('click', exportCombinationData);\n\n        \/\/ Initial load\n        populateSelect();\n        populateComboSelect();\n        updateView(Object.keys(reportData)[0]);\n        calculateAndDisplayComboResults(Object.keys(combinationMapping).sort()[0]);\n        switchView('view-main');\n\n    <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Dashboard Ph\u00e2n T\u00edch \u0110i\u1ec3m Thi THPT 2025 Dashboard Ph\u00e2n T\u00edch Ph\u1ed5 \u0110i\u1ec3m Thi THPT 2025 Kh\u00e1m ph\u00e1 d\u1eef li\u1ec7u \u0111i\u1ec3m thi m\u1ed9t c\u00e1ch tr\u1ef1c quan v\u00e0 t\u01b0\u01a1ng t\u00e1c \ud83d\udd0d Ph\u00e2n T\u00edch M\u00f4n \ud83d\udcca Ph\u00e2n T\u00edch T\u1ed5 H\u1ee3p \ud83d\udca1 L\u1eddi Khuy\u00ean T\u1ea1i \u0111\u00e2y, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ecdn m\u1ed9t m\u00f4n h\u1ecdc \u0111\u1ec3 xem c\u00e1c th\u00f4ng tin chi&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-4634","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4634"}],"version-history":[{"count":4,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4634\/revisions"}],"predecessor-version":[{"id":4638,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4634\/revisions\/4638"}],"wp:attachment":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}