{"id":5898,"date":"2025-02-11T01:50:23","date_gmt":"2025-02-10T17:50:23","guid":{"rendered":"https:\/\/bookmark.tw\/?p=5898"},"modified":"2025-08-05T02:07:55","modified_gmt":"2025-08-04T18:07:55","slug":"sasrq","status":"publish","type":"post","link":"https:\/\/xinliceyan.org\/zh\/sasrq","title":{"rendered":"\u53f2\u4e39\u798f\u6025\u6027\u538b\u529b(\u5e94\u6fc0)\u53cd\u5e94\u95ee\u5377(SASRQ)\u7ebf\u4e0a\u514d\u8d39\u6d4b\u9a8c\uff0830\u9898\uff09"},"content":{"rendered":"<!-- Bootstrap CSS -->\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap\/5.3.3\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap-icons\/1.11.3\/font\/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\n<style>\n  :root {\n    --primary-color: #2563eb;\n    --secondary-color: #1e40af;\n    --accent-color: #3b82f6;\n    --text-dark: #1f2937;\n    --text-light: #6b7280;\n    --bg-light: #f8fafc;\n    --border-color: #e5e7eb;\n    --success-color: #059669;\n    --warning-color: #d97706;\n    --danger-color: #dc2626;\n  }\n\n  body {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    line-height: 1.6;\n    color: var(--text-dark);\n    background: white;\n  }\n\n  .quiz-container {\n    background: white;\n    border-radius: 20px;\n    box-shadow: 0 10px 30px rgba(0,0,0,0.08);\n    overflow: hidden;\n    margin: 2rem auto;\n    max-width: 750px;\n  }\n\n  .quiz-header {\n    background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n    color: white;\n    padding: 2rem;\n    text-align: center;\n  }\n\n  .quiz-section {\n    display: none;\n    padding: 2rem;\n    min-height: 400px;\n  }\n\n  .quiz-section.active {\n    display: block;\n    animation: fadeIn 0.5s ease-in;\n  }\n\n  @keyframes fadeIn {\n    from { opacity: 0; transform: translateY(20px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  .question-title {\n    font-size: 22px;\n    font-weight: 700;\n    color: var(--text-dark);\n    margin-bottom: 1.5rem;\n    line-height: 1.4;\n  }\n\n  .option-card {\n    background: white;\n    border: 2px solid var(--border-color);\n    border-radius: 12px;\n    padding: 1rem 1.5rem;\n    transition: all 0.3s ease;\n    cursor: pointer;\n    min-height: 70px;\n  }\n\n  .option-card:hover {\n    border-color: var(--primary-color);\n    background: rgba(37, 99, 235, 0.02);\n    transform: translateY(-2px);\n    box-shadow: 0 5px 15px rgba(37, 99, 235, 0.1);\n  }\n\n  .option-card.selected {\n    background: rgba(37, 99, 235, 0.05);\n    border-color: var(--primary-color);\n    box-shadow: 0 5px 15px rgba(37, 99, 235, 0.15);\n  }\n\n  .option-indicator {\n    width: 24px;\n    height: 24px;\n    border: 2px solid var(--border-color);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.3s ease;\n    flex-shrink: 0;\n  }\n\n  .option-card:hover .option-indicator {\n    border-color: var(--primary-color);\n  }\n\n  .option-card.selected .option-indicator {\n    background: var(--primary-color);\n    border-color: var(--primary-color);\n    color: white;\n  }\n\n  .option-text {\n    font-size: 18px;\n    font-weight: 500;\n    color: var(--text-dark);\n    flex: 1;\n  }\n\n  .score-distribution-chart {\n    height: 60px;\n    margin: 1.5rem 0;\n    position: relative;\n    border-radius: 10px;\n    overflow: hidden;\n  }\n\n  .score-bar {\n    height: 100%;\n    display: flex;\n    border-radius: 10px;\n    overflow: hidden;\n    position: relative;\n  }\n\n  .score-segment {\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: white;\n    font-weight: 600;\n    font-size: 14px;\n    position: relative;\n    transition: all 0.3s ease;\n  }\n\n  .score-segment:hover {\n    filter: brightness(1.1);\n  }\n\n  .user-score-marker {\n    position: absolute;\n    top: -15px;\n    width: 20px;\n    height: 20px;\n    background: #dc2626;\n    border: 4px solid white;\n    border-radius: 50%;\n    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.6);\n    z-index: 10;\n    animation: pulse 2s infinite;\n  }\n\n  @keyframes pulse {\n    0%, 100% { \n      transform: translateX(-50%) scale(1); \n      box-shadow: 0 4px 12px rgba(220, 38, 38, 0.6);\n    }\n    50% { \n      transform: translateX(-50%) scale(1.3); \n      box-shadow: 0 6px 20px rgba(220, 38, 38, 0.8);\n    }\n  }\n\n  .legend-color {\n    width: 20px;\n    height: 20px;\n    border-radius: 4px;\n    flex-shrink: 0;\n  }\n\n  .score-display {\n    font-size: 3rem;\n    font-weight: 800;\n    color: var(--primary-color);\n    margin: 1rem 0;\n  }\n\n  .chart-container {\n    max-width: 100%;\n    margin: 2rem auto;\n    padding: 1rem;\n    background: white;\n    border-radius: 15px;\n    box-shadow: 0 5px 15px rgba(0,0,0,0.05);\n  }\n\n  @media (max-width: 768px) {\n    .quiz-container {\n      margin: 1rem;\n      border-radius: 15px;\n    }\n\n    .quiz-header {\n      padding: 1.5rem;\n    }\n\n    .quiz-section {\n      padding: 1.5rem;\n    }\n\n    .score-display {\n      font-size: 2.5rem;\n    }\n\n    .option-card {\n      min-height: 80px;\n    }\n\n    .option-text {\n      font-size: 17px;\n    }\n  }\n<\/style>\n\n<div class=\"container-fluid p-0\">\n  <div class=\"quiz-container\">\n    \n    <!-- \u5f15\u5c0e\u9801 -->\n    <section id=\"quizintro9\" data-page=\"intro9\" class=\"quiz-section active\">\n      <div class=\"quiz-header\">\n        <h2 class=\"display-5 fw-bold mb-3\">\u53f2\u4e39\u798f\u6025\u6027\u58d3\u529b\u53cd\u61c9\u554f\u5377<\/h2>\n        <p class=\"lead mb-0\">\u5c08\u696d\u8a55\u4f30\u60a8\u7684\u6025\u6027\u58d3\u529b\u53cd\u61c9\u72c0\u6cc1<\/p>\n      <\/div>\n      \n      <div class=\"quiz-section active\">\n        <div class=\"text-center mb-4\">\n          <h3 class=\"h4 fw-bold text-primary mb-3\">\u4e86\u89e3\u60a8\u7684\u58d3\u529b\u53cd\u61c9\u72c0\u6cc1<\/h3>\n          <p class=\"fs-5 text-muted\">\u53f2\u4e39\u798f\u6025\u6027\u58d3\u529b\u53cd\u61c9\u554f\u5377\uff08SASRQ\uff09\u662f\u570b\u969b\u8a8d\u53ef\u7684\u5c08\u696d\u8a55\u4f30\u5de5\u5177\uff0c\u5e6b\u52a9\u60a8\u6df1\u5165\u4e86\u89e3\u81ea\u5df1\u5728\u9762\u5c0d\u58d3\u529b\u4e8b\u4ef6\u5f8c\u7684\u5fc3\u7406\u53cd\u61c9\u6a21\u5f0f\u3002<\/p>\n        <\/div>\n\n        <div class=\"row g-4 mb-4\">\n          <div class=\"col-md-4\">\n            <div class=\"card h-100 border-0 shadow-sm\">\n              <div class=\"card-body text-center p-4\">\n                <div class=\"bg-primary bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 60px; height: 60px;\">\n                  <i class=\"bi bi-clipboard-data fs-3 text-white\"><\/i>\n                <\/div>\n                <h4 class=\"h5 fw-bold mb-2\">\u79d1\u5b78\u5c08\u696d<\/h4>\n                <p class=\"text-muted mb-0 small\">\u57fa\u65bcDSM\u8a3a\u65b7\u6a19\u6e96\u7de8\u88fd\uff0c\u6db5\u84cb\u4e94\u5927\u75c7\u72c0\u985e\u5225\u7684\u5168\u9762\u8a55\u4f30<\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n          \n          <div class=\"col-md-4\">\n            <div class=\"card h-100 border-0 shadow-sm\">\n              <div class=\"card-body text-center p-4\">\n                <div class=\"bg-primary bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 60px; height: 60px;\">\n                  <i class=\"bi bi-graph-up fs-3 text-white\"><\/i>\n                <\/div>\n                <h4 class=\"h5 fw-bold mb-2\">\u6df1\u5ea6\u5206\u6790<\/h4>\n                <p class=\"text-muted mb-0 small\">\u63d0\u4f9b\u8a73\u7d30\u7684\u5206\u6578\u89e3\u91cb\u548c\u500b\u4eba\u5316\u5efa\u8b70\uff0c\u52a9\u60a8\u66f4\u597d\u5730\u7406\u89e3\u81ea\u5df1<\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n          \n          <div class=\"col-md-4\">\n            <div class=\"card h-100 border-0 shadow-sm\">\n              <div class=\"card-body text-center p-4\">\n                <div class=\"bg-primary bg-gradient rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 60px; height: 60px;\">\n                  <i class=\"bi bi-shield-check fs-3 text-white\"><\/i>\n                <\/div>\n                <h4 class=\"h5 fw-bold mb-2\">\u9690\u79c1\u4fdd\u62a4<\/h4>\n                <p class=\"text-muted mb-0 small\">\u6240\u6709\u6e2c\u9a57\u7d50\u679c\u50c5\u4f9b\u500b\u4eba\u53c3\u8003\uff0c\u6211\u5011\u4e0d\u6703\u5132\u5b58\u60a8\u7684\u4efb\u4f55\u8cc7\u6599<\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"alert alert-info border-0 rounded-3 mb-4\">\n          <div class=\"d-flex align-items-center\">\n            <i class=\"bi bi-info-circle fs-4 text-info me-3\"><\/i>\n            <div>\n              <h5 class=\"alert-heading mb-1\">\u6e2c\u9a57\u8aaa\u660e<\/h5>\n              <p class=\"mb-0\">\u672c\u554f\u5377\u517130\u984c\uff0c\u8acb\u6839\u64da\u60a8<strong>\u904e\u53bb\u4e00\u9031\u5167<\/strong>\u7684\u5be6\u969b\u7d93\u6b77\u4f5c\u7b54\u3002\u6bcf\u984c\u4f9d\u64da\u7d93\u9a57\u983b\u7387\u5f9e0\u81f35\u5206\u8a55\u5206\u3002<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"text-center\">\n          <button class=\"btn btn-success btn-lg px-5 py-3 rounded-pill shadow\" data-action=\"start-quiz\">\n            <i class=\"bi bi-play-circle me-2\"><\/i>\u5f00\u59cb\u6d4b\u9a8c\n          <\/button>\n          <p class=\"text-muted mt-3 small\">\u9810\u8a08\u5b8c\u6210\u6642\u9593\uff1a5-8\u5206\u9418<\/p>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u6e2c\u9a57\u9801 -->\n    <section id=\"quizmain9\" data-page=\"quiz9\" class=\"quiz-section\">\n      <div class=\"card border-0 bg-light rounded-3 p-4 mb-4\">\n        <div class=\"d-flex justify-content-between align-items-center mb-3\">\n          <span class=\"fw-bold text-primary\">\u6d4b\u9a8c\u8fdb\u5ea6<\/span>\n          <span class=\"badge bg-primary fs-6\" data-progress-text>1 \/ 30<\/span>\n        <\/div>\n        <div class=\"progress\" style=\"height: 10px;\">\n          <div class=\"progress-bar bg-gradient\" data-progress-bar style=\"width: 3.33%\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"card border-2 rounded-3 shadow-sm mb-4\">\n        <div class=\"card-body p-4\">\n          <h3 class=\"question-title\" data-question-text><\/h3>\n          \n          <div class=\"row g-3 mb-4\" data-options-container>\n            <!-- \u9078\u9805\u5c07\u7531JavaScript\u52d5\u614b\u751f\u6210 -->\n          <\/div>\n\n          <div class=\"d-flex justify-content-center\">\n            <button class=\"btn btn-outline-secondary rounded-pill px-4\" data-action=\"prev-question\" style=\"display: none;\">\n              <i class=\"bi bi-arrow-left me-2\"><\/i>\u4e0a\u4e00\u9898\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- \u7d50\u679c\u9801 -->\n    <section id=\"quizresult9\" data-page=\"result9\" class=\"quiz-section\">\n      <div class=\"quiz-header\">\n        <h2 class=\"display-6 fw-bold mb-3\">\u6d4b\u9a8c\u7ed3\u679c\u5206\u6790<\/h2>\n        <p class=\"lead mb-0\">\u60a8\u7684\u6025\u6027\u58d3\u529b\u53cd\u61c9\u8a55\u4f30\u7d50\u679c<\/p>\n      <\/div>\n\n      <div class=\"quiz-section active\">\n        <!-- \u7e3d\u9ad4\u8a55\u4f30 -->\n        <div class=\"card border-2 border-primary bg-primary bg-opacity-10 rounded-3 text-center p-4 mb-4\">\n          <h3 class=\"h4 fw-bold text-primary mb-3\">\u8a55\u4f30\u65b9\u6cd5\u4e00\uff1a\u7e3d\u9ad4\u8a55\u5206<\/h3>\n          <div class=\"score-display\" data-total-score>0<\/div>\n          <p class=\"fs-5 fw-bold\" data-score-level><\/p>\n          <p class=\"text-muted mb-0\" data-score-description><\/p>\n        <\/div>\n\n        <!-- \u5206\u6578\u5206\u4f48\u5716\u8868 -->\n        <div class=\"card border-0 shadow-sm rounded-3 p-4 mb-4\">\n          <h4 class=\"h5 fw-bold text-center mb-4\">\u60a8\u5728\u6574\u9ad4\u8a55\u5206\u5206\u4f48\u4e2d\u7684\u4f4d\u7f6e<\/h4>\n          <div class=\"score-distribution-chart\" data-score-chart><\/div>\n        <\/div>\n\n        <!-- DSM\u5206\u6790 -->\n        <div class=\"alert alert-warning border-2 border-warning rounded-3 mb-4\">\n          <div class=\"d-flex align-items-center mb-3\">\n            <i class=\"bi bi-exclamation-triangle fs-4 me-3\" style=\"color: #b45309;\"><\/i>\n            <h4 class=\"h5 fw-bold mb-0\" style=\"color: #b45309;\">\u8a55\u4f30\u65b9\u6cd5\u4e8c\uff1aDSM\u6025\u6027\u58d3\u529b\u75be\u60a3\u53c3\u8003\u6a19\u6e96<\/h4>\n          <\/div>\n          <p class=\"mb-0\" style=\"color: #92400e;\">\n            <strong>\u6ce8\u610f\uff1a<\/strong>\u9019\u662f\u53e6\u4e00\u7a2e\u5c08\u696d\u8a55\u5224\u65b9\u6cd5\uff0c\u57fa\u65bc\u300a\u7cbe\u795e\u75be\u75c5\u8a3a\u65b7\u8207\u7d71\u8a08\u624b\u518a\u300b\uff08DSM\uff09\u7684\u8a3a\u65b7\u6a19\u6e96\uff0c\u8207\u7e3d\u5206\u8a55\u4f30\u76f8\u8f14\u76f8\u6210\u3002\n          <\/p>\n        <\/div>\n\n        <div data-dsm-analysis><\/div>\n\n        <!-- \u500b\u4eba\u5316\u5206\u6790 -->\n        <div data-personal-insights><\/div>\n\n        <!-- \u5404\u985e\u5225\u5206\u6790 -->\n        <div class=\"chart-container\">\n          <canvas id=\"resultChart\" width=\"400\" height=\"300\"><\/canvas>\n        <\/div>\n\n        <div data-categories-analysis><\/div>\n\n        <div class=\"text-center mt-4\">\n          <button class=\"btn btn-primary btn-lg px-5 py-3 rounded-pill shadow\" data-action=\"restart-quiz\">\n            <i class=\"bi bi-arrow-clockwise me-2\"><\/i>\u91cd\u65b0\u6d4b\u9a8c\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/section>\n\n  <\/div>\n<\/div>\n\n<!-- Chart.js -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n\n<script>\n(function() {\n  'use strict';\n\n  \/\/ \u554f\u5377\u984c\u76ee\u548c\u5206\u985e\n  const questions = [\n    { id: 1, text: \"\u6211\u5165\u7761\u6216\u7dad\u6301\u7761\u7720\u6709\u56f0\u96e3\u3002\", category: \"anxiety\" },\n    { id: 2, text: \"\u6211\u611f\u5230\u5750\u7acb\u4e0d\u5b89\u3002\", category: \"anxiety\" },\n    { id: 3, text: \"\u6211\u6709\u6642\u9593\u611f\u55aa\u5931\u7684\u611f\u89ba\u3002\", category: \"dissociation\" },\n    { id: 4, text: \"\u6211\u7684\u53cd\u61c9\u8b8a\u5f97\u9072\u920d\u3002\", category: \"dissociation\" },\n    { id: 5, text: \"\u6211\u8a66\u5716\u907f\u514d\u8207\u58d3\u529b\u4e8b\u4ef6\u6709\u95dc\u7684\u60c5\u7dd2\u3002\", category: \"avoidance\" },\n    { id: 6, text: \"\u6211\u53cd\u8986\u5922\u898b\u8207\u58d3\u529b\u4e8b\u4ef6\u6709\u95dc\u7684\u5669\u5922\u3002\", category: \"reexperience\" },\n    { id: 7, text: \"\u7576\u9047\u5230\u8b93\u6211\u60f3\u8d77\u58d3\u529b\u4e8b\u4ef6\u7684\u60c5\u5883\u6642\uff0c\u6211\u611f\u5230\u6975\u5ea6\u56f0\u64fe\u3002\", category: \"reexperience\" },\n    { id: 8, text: \"\u6211\u5c0d\u5c0f\u4e8b\u4e5f\u5bb9\u6613\u53d7\u5230\u9a5a\u5687\u3002\", category: \"anxiety\" },\n    { id: 9, text: \"\u58d3\u529b\u4e8b\u4ef6\u8b93\u6211\u96e3\u4ee5\u5b8c\u6210\u65e5\u5e38\u5de5\u4f5c\u3002\", category: \"impairment\" },\n    { id: 10, text: \"\u6211\u5931\u53bb\u4e86\u5c0d\u81ea\u6211\u8a8d\u540c\u7684\u611f\u89ba\u3002\", category: \"dissociation\" },\n    { id: 11, text: \"\u6211\u8a66\u5716\u907f\u514d\u5f9e\u4e8b\u6703\u8b93\u6211\u60f3\u8d77\u58d3\u529b\u4e8b\u4ef6\u7684\u6d3b\u52d5\u3002\", category: \"avoidance\" },\n    { id: 12, text: \"\u6211\u611f\u89ba\u975e\u5e38\u7dca\u5f35\u6216\u8b66\u89ba\u3002\", category: \"anxiety\" },\n    { id: 13, text: \"\u6211\u89ba\u5f97\u81ea\u5df1\u50cf\u500b\u964c\u751f\u4eba\u3002\", category: \"dissociation\" },\n    { id: 14, text: \"\u6211\u907f\u514d\u8ac7\u8ad6\u58d3\u529b\u4e8b\u4ef6\u3002\", category: \"avoidance\" },\n    { id: 15, text: \"\u7576\u66b4\u9732\u65bc\u8207\u58d3\u529b\u4e8b\u4ef6\u76f8\u95dc\u7684\u7dda\u7d22\u6642\uff0c\u6211\u6703\u51fa\u73fe\u8eab\u9ad4\u53cd\u61c9\uff08\u5982\u5fc3\u60b8\u3001\u51fa\u6c57\uff09\u3002\", category: \"reexperience\" },\n    { id: 16, text: \"\u6211\u5f88\u96e3\u56de\u61b6\u8d77\u58d3\u529b\u4e8b\u4ef6\u7684\u91cd\u8981\u5167\u5bb9\u3002\", category: \"dissociation\" },\n    { id: 17, text: \"\u6211\u8a66\u5716\u6291\u5236\u8207\u58d3\u529b\u4e8b\u4ef6\u6709\u95dc\u7684\u60f3\u6cd5\u3002\", category: \"avoidance\" },\n    { id: 18, text: \"\u6211\u770b\u5230\u7684\u4e8b\u7269\u8207\u5be6\u969b\u60c5\u6cc1\u6709\u6240\u4e0d\u540c\u3002\", category: \"dissociation\" },\n    { id: 19, text: \"\u58d3\u529b\u4e8b\u4ef6\u7684\u8a18\u61b6\u4e0d\u65b7\u6e67\u73fe\uff0c\u8b93\u6211\u96e3\u4ee5\u63a7\u5236\u3002\", category: \"reexperience\" },\n    { id: 20, text: \"\u6211\u89ba\u5f97\u81ea\u5df1\u5c0d\u60c5\u7dd2\u8b8a\u5f97\u9ebb\u6728\u6216\u758f\u96e2\u3002\", category: \"dissociation\" },\n    { id: 21, text: \"\u6211\u5bb9\u6613\u7169\u8e81\u6216\u52d5\u6012\u3002\", category: \"anxiety\" },\n    { id: 22, text: \"\u6211\u907f\u514d\u8207\u8b93\u6211\u806f\u60f3\u5230\u58d3\u529b\u4e8b\u4ef6\u7684\u4eba\u63a5\u89f8\u3002\", category: \"avoidance\" },\n    { id: 23, text: \"\u6211\u7d93\u5e38\u7a81\u7136\u6709\u58d3\u529b\u4e8b\u4ef6\u518d\u6b21\u767c\u751f\u7684\u611f\u89ba\u3002\", category: \"reexperience\" },\n    { id: 24, text: \"\u6211\u7684\u5927\u8166\u4e00\u7247\u7a7a\u767d\u3002\", category: \"dissociation\" },\n    { id: 25, text: \"\u6211\u5fd8\u8a18\u4e86\u58d3\u529b\u4e8b\u4ef6\u7684\u5927\u90e8\u5206\u7d93\u904e\u3002\", category: \"dissociation\" },\n    { id: 26, text: \"\u58d3\u529b\u4e8b\u4ef6\u5f71\u97ff\u4e86\u6211\u8207\u4ed6\u4eba\u7684\u95dc\u4fc2\u3002\", category: \"impairment\" },\n    { id: 27, text: \"\u6211\u96e3\u4ee5\u96c6\u4e2d\u6ce8\u610f\u529b\u3002\", category: \"anxiety\" },\n    { id: 28, text: \"\u6211\u611f\u5230\u8207\u4ed6\u4eba\u758f\u9060\u6216\u5206\u96e2\u3002\", category: \"dissociation\" },\n    { id: 29, text: \"\u6211\u6709\u751f\u52d5\u7684\u91cd\u73fe\u58d3\u529b\u4e8b\u4ef6\u7684\u9ad4\u9a57\u3002\", category: \"reexperience\" },\n    { id: 30, text: \"\u6211\u8a66\u5716\u907f\u514d\u524d\u5f80\u8b93\u6211\u60f3\u8d77\u58d3\u529b\u4e8b\u4ef6\u7684\u5834\u6240\u3002\", category: \"avoidance\" }\n  ];\n\n  const options = [\n    { value: 0, text: \"\u6c92\u6709\u9ad4\u9a57\" },\n    { value: 1, text: \"\u6975\u5c11\u9ad4\u9a57\" },\n    { value: 2, text: \"\u5076\u723e\u9ad4\u9a57\" },\n    { value: 3, text: \"\u6709\u6642\u9ad4\u9a57\" },\n    { value: 4, text: \"\u7d93\u5e38\u9ad4\u9a57\" },\n    { value: 5, text: \"\u7e3d\u662f\u9ad4\u9a57\" }\n  ];\n\n  const categoryNames = {\n    dissociation: \"\u89e3\u96e2\u75c7\u72c0\",\n    reexperience: \"\u518d\u9ad4\u9a57\u75c7\u72c0\", \n    avoidance: \"\u8ff4\u907f\u75c7\u72c0\",\n    anxiety: \"\u7126\u616e\/\u8b66\u89ba\u6027\u5347\u9ad8\",\n    impairment: \"\u793e\u6703\u529f\u80fd\u640d\u5bb3\"\n  };\n\n  const scoreRanges = [\n    { min: 0, max: 39, label: \"\u8f15\u5ea6\u6216\u7121\u660e\u986f\", color: \"#10b981\", description: \"\u8f15\u5ea6\u6216\u7121\u660e\u986f\u6025\u6027\u58d3\u529b\u53cd\u61c9\" },\n    { min: 40, max: 56, label: \"\u4e2d\u5ea6\u58d3\u529b\u53cd\u61c9\", color: \"#f59e0b\", description: \"\u4e2d\u5ea6\u58d3\u529b\u53cd\u61c9\" },\n    { min: 57, max: 150, label: \"\u91cd\u5ea6\u58d3\u529b\u53cd\u61c9\", color: \"#ef4444\", description: \"\u91cd\u5ea6\u58d3\u529b\u53cd\u61c9\" }\n  ];\n\n  class SASTRQuiz {\n    constructor() {\n      this.currentQuestion = 0;\n      this.answers = {};\n      this.chart = null;\n      \n      this.cacheDOMElements();\n      this.bindEvents();\n    }\n\n    cacheDOMElements() {\n      this.sections = {\n        intro: document.querySelector('[data-page=\"intro9\"]'),\n        quiz: document.querySelector('[data-page=\"quiz9\"]'), \n        result: document.querySelector('[data-page=\"result9\"]')\n      };\n\n      this.elements = {\n        progressText: document.querySelector('[data-progress-text]'),\n        progressBar: document.querySelector('[data-progress-bar]'),\n        questionText: document.querySelector('[data-question-text]'),\n        optionsContainer: document.querySelector('[data-options-container]'),\n        totalScore: document.querySelector('[data-total-score]'),\n        scoreLevel: document.querySelector('[data-score-level]'),\n        scoreDescription: document.querySelector('[data-score-description]'),\n        categoriesAnalysis: document.querySelector('[data-categories-analysis]'),\n        dsmAnalysis: document.querySelector('[data-dsm-analysis]'),\n        personalInsights: document.querySelector('[data-personal-insights]'),\n        scoreChart: document.querySelector('[data-score-chart]'),\n        prevBtn: document.querySelector('[data-action=\"prev-question\"]')\n      };\n    }\n\n    bindEvents() {\n      document.addEventListener('click', (e) => {\n        const action = e.target.closest('[data-action]')?.dataset.action;\n        \n        switch(action) {\n          case 'start-quiz':\n            this.startQuiz();\n            break;\n          case 'prev-question':\n            this.previousQuestion();\n            break;\n          case 'restart-quiz':\n            this.restartQuiz();\n            break;\n        }\n\n        if (e.target.closest('[data-option]')) {\n          this.selectOption(e.target.closest('[data-option]'));\n        }\n      });\n    }\n\n    startQuiz() {\n      this.showSection('quiz');\n      this.renderQuestion();\n      this.scrollToTop();\n    }\n\n    renderQuestion() {\n      const question = questions[this.currentQuestion];\n      \n      this.elements.questionText.textContent = `${question.id}. ${question.text}`;\n      this.elements.progressText.textContent = `${this.currentQuestion + 1} \/ ${questions.length}`;\n      this.elements.progressBar.style.width = `${((this.currentQuestion + 1) \/ questions.length) * 100}%`;\n\n      \/\/ \u5275\u5efa\u5169\u884c\uff0c\u6bcf\u884c3\u500b\u9078\u9805\u7684\u5e03\u5c40\n      const firstRowOptions = options.slice(0, 3);\n      const secondRowOptions = options.slice(3, 6);\n\n      this.elements.optionsContainer.innerHTML = `\n        ${firstRowOptions.map(option => `\n          <div class=\"col-md-4\">\n            <div class=\"option-card card h-100 d-flex flex-row align-items-center\" data-option=\"${option.value}\">\n              <div class=\"option-indicator\">\n                <i class=\"bi bi-check\" style=\"display: none;\"><\/i>\n              <\/div>\n              <div class=\"option-text\">${option.text}<\/div>\n            <\/div>\n          <\/div>\n        `).join('')}\n        ${secondRowOptions.map(option => `\n          <div class=\"col-md-4\">\n            <div class=\"option-card card h-100 d-flex flex-row align-items-center\" data-option=\"${option.value}\">\n              <div class=\"option-indicator\">\n                <i class=\"bi bi-check\" style=\"display: none;\"><\/i>\n              <\/div>\n              <div class=\"option-text\">${option.text}<\/div>\n            <\/div>\n          <\/div>\n        `).join('')}\n      `;\n\n      \/\/ \u986f\u793a\u7576\u524d\u7b54\u6848\n      if (this.answers[question.id] !== undefined) {\n        const selectedCard = this.elements.optionsContainer.querySelector(`[data-option=\"${this.answers[question.id]}\"]`);\n        if (selectedCard) {\n          selectedCard.classList.add('selected');\n          selectedCard.querySelector('.bi-check').style.display = 'block';\n        }\n      }\n\n      \/\/ \u63a7\u5236\u4e0a\u4e00\u984c\u6309\u9215\u986f\u793a\n      this.elements.prevBtn.style.display = this.currentQuestion > 0 ? 'block' : 'none';\n    }\n\n    selectOption(optionElement) {\n      const value = parseInt(optionElement.dataset.option);\n      const questionId = questions[this.currentQuestion].id;\n      \n      \/\/ \u79fb\u9664\u5176\u4ed6\u9078\u4e2d\u72c0\u614b\n      this.elements.optionsContainer.querySelectorAll('.option-card').forEach(card => {\n        card.classList.remove('selected');\n        card.querySelector('.bi-check').style.display = 'none';\n      });\n      \n      \/\/ \u6dfb\u52a0\u9078\u4e2d\u72c0\u614b\n      optionElement.classList.add('selected');\n      optionElement.querySelector('.bi-check').style.display = 'block';\n      \n      \/\/ \u4fdd\u5b58\u7b54\u6848\n      this.answers[questionId] = value;\n\n      \/\/ \u5ef6\u9072\u9032\u5165\u4e0b\u4e00\u984c\n      setTimeout(() => {\n        this.nextQuestion();\n      }, 300);\n    }\n\n    nextQuestion() {\n      if (this.currentQuestion < questions.length - 1) {\n        this.currentQuestion++;\n        this.renderQuestion();\n        this.scrollToTop();\n      } else {\n        this.showResults();\n      }\n    }\n\n    previousQuestion() {\n      if (this.currentQuestion > 0) {\n        this.currentQuestion--;\n        this.renderQuestion();\n        this.scrollToTop();\n      }\n    }\n\n    showResults() {\n      const results = this.calculateResults();\n      this.renderResults(results);\n      this.showSection('result');\n      this.scrollToTop();\n    }\n\n    calculateResults() {\n      const categoryScores = {\n        dissociation: 0,\n        reexperience: 0,\n        avoidance: 0,\n        anxiety: 0,\n        impairment: 0\n      };\n\n      const categoryMaxScores = {\n        dissociation: 50, \/\/ 10 questions \u00d7 5 max score\n        reexperience: 30, \/\/ 6 questions \u00d7 5 max score\n        avoidance: 30,   \/\/ 6 questions \u00d7 5 max score\n        anxiety: 30,     \/\/ 6 questions \u00d7 5 max score\n        impairment: 10   \/\/ 2 questions \u00d7 5 max score\n      };\n\n      const categoryCounts = {\n        dissociation: 0,\n        reexperience: 0,\n        avoidance: 0,\n        anxiety: 0,\n        impairment: 0\n      };\n\n      const dsmCriteria = {\n        dissociation: 0,\n        reexperience: 0,\n        avoidance: 0,\n        anxiety: 0\n      };\n\n      questions.forEach(question => {\n        const score = this.answers[question.id] || 0;\n        categoryScores[question.category] += score;\n        categoryCounts[question.category]++;\n        \n        \/\/ DSM criteria: score > 3\n        if (score > 3 && question.category !== 'impairment') {\n          dsmCriteria[question.category]++;\n        }\n      });\n\n      const totalScore = Object.values(categoryScores).reduce((sum, score) => sum + score, 0);\n\n      \/\/ \u8a08\u7b97\u767e\u5206\u6bd4\n      const categoryPercentages = {};\n      Object.keys(categoryScores).forEach(category => {\n        categoryPercentages[category] = Math.round((categoryScores[category] \/ categoryMaxScores[category]) * 100);\n      });\n\n      return {\n        totalScore,\n        categoryScores,\n        categoryPercentages,\n        dsmCriteria,\n        categoryCounts\n      };\n    }\n\n    renderResults(results) {\n      \/\/ \u7e3d\u5206\u986f\u793a\n      this.elements.totalScore.textContent = results.totalScore;\n\n      \/\/ \u8a55\u4f30\u7b49\u7d1a\n      let level, description, color;\n      if (results.totalScore <= 39) {\n        level = \"\u8f15\u5ea6\u6216\u7121\u660e\u986f\u6025\u6027\u58d3\u529b\u53cd\u61c9\";\n        description = \"\u60a8\u76ee\u524d\u7684\u58d3\u529b\u53cd\u61c9\u75c7\u72c0\u8f03\u8f15\u5fae\uff0c\u6574\u9ad4\u5fc3\u7406\u72c0\u614b\u76f8\u5c0d\u7a69\u5b9a\u3002\u5efa\u8b70\u7e7c\u7e8c\u4fdd\u6301\u826f\u597d\u7684\u751f\u6d3b\u4f5c\u606f\u548c\u9069\u7576\u7684\u58d3\u529b\u7ba1\u7406\u3002\";\n        color = \"success\";\n      } else if (results.totalScore <= 56) {\n        level = \"\u4e2d\u5ea6\u58d3\u529b\u53cd\u61c9\";\n        description = \"\u60a8\u76ee\u524d\u5448\u73fe\u4e2d\u7b49\u7a0b\u5ea6\u7684\u58d3\u529b\u53cd\u61c9\u75c7\u72c0\uff0c\u5efa\u8b70\u95dc\u6ce8\u81ea\u5df1\u7684\u5fc3\u7406\u5065\u5eb7\u72c0\u6cc1\uff0c\u53ef\u8003\u616e\u5c0b\u6c42\u9069\u7576\u7684\u652f\u6301\u6216\u8aee\u8a62\u3002\";\n        color = \"warning\";\n      } else {\n        level = \"\u91cd\u5ea6\u58d3\u529b\u53cd\u61c9\";\n        description = \"\u60a8\u7684\u58d3\u529b\u53cd\u61c9\u75c7\u72c0\u8f03\u70ba\u56b4\u91cd\uff0c\u5f37\u70c8\u5efa\u8b70\u5c0b\u6c42\u5fc3\u7406\u6216\u7cbe\u795e\u79d1\u5c08\u696d\u5354\u52a9\uff0c\u4ee5\u7372\u5f97\u9069\u7576\u7684\u8a55\u4f30\u548c\u6cbb\u7642\u652f\u6301\u3002\";\n        color = \"danger\";\n      }\n\n      this.elements.scoreLevel.textContent = level;\n      this.elements.scoreLevel.className = `fs-5 fw-bold text-${color}`;\n      this.elements.scoreDescription.textContent = description;\n\n      \/\/ \u5206\u6578\u5206\u4f48\u5716\u8868\n      this.renderScoreDistribution(results.totalScore);\n\n      \/\/ DSM\u5206\u6790\n      this.renderDSMAnalysis(results);\n\n      \/\/ \u500b\u4eba\u5316\u5206\u6790\n      this.renderPersonalInsights(results);\n\n      \/\/ \u5404\u985e\u5225\u5206\u6790\n      this.renderCategoriesAnalysis(results);\n\n      \/\/ \u96f7\u9054\u5716\n      this.renderChart(results);\n    }\n\n    renderScoreDistribution(userScore) {\n      const totalRange = 150; \/\/ \u7e3d\u5206\u7bc4\u570d 0-150\n      let userPosition = (userScore \/ totalRange) * 100; \/\/ \u7528\u6236\u5206\u6578\u7684\u767e\u5206\u6bd4\u4f4d\u7f6e\n\n      const html = `\n        <div class=\"score-bar\">\n          ${scoreRanges.map(range => {\n            const width = ((range.max - range.min + 1) \/ (totalRange + 1)) * 100;\n            return `\n              <div class=\"score-segment\" \n                   style=\"width: ${width}%; background-color: ${range.color};\">\n                ${range.label}\n              <\/div>\n            `;\n          }).join('')}\n          <div class=\"user-score-marker\" style=\"left: ${userPosition}%\"><\/div>\n        <\/div>\n        <div class=\"row g-2 mt-3\">\n          ${scoreRanges.map(range => `\n            <div class=\"col-md-4\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <div class=\"legend-color\" style=\"background-color: ${range.color};\"><\/div>\n                <small class=\"text-muted\">${range.description} (${range.min}-${range.max}\u5206)<\/small>\n              <\/div>\n            <\/div>\n          `).join('')}\n          <div class=\"col-12 mt-2\">\n            <div class=\"text-center\">\n              <small class=\"text-primary fw-bold\">\n                <i class=\"bi bi-geo-alt-fill text-danger\"><\/i> \u60a8\u7684\u5f97\u5206\uff1a${userScore}\u5206\n              <\/small>\n            <\/div>\n          <\/div>\n        <\/div>\n      `;\n\n      this.elements.scoreChart.innerHTML = html;\n    }\n\n    renderDSMAnalysis(results) {\n      const meetsCriteria = {\n        dissociation: results.dsmCriteria.dissociation >= 3,\n        reexperience: results.dsmCriteria.reexperience >= 1,\n        avoidance: results.dsmCriteria.avoidance >= 1,\n        anxiety: results.dsmCriteria.anxiety >= 1\n      };\n\n      const totalMet = Object.values(meetsCriteria).filter(Boolean).length;\n\n      const html = `\n        <div class=\"card border-0 shadow-sm rounded-3 p-4 mb-4\">\n          <div class=\"row g-3 mb-3\">\n            ${Object.keys(meetsCriteria).map(category => `\n              <div class=\"col-md-6\">\n                <div class=\"d-flex justify-content-between align-items-center p-3 rounded ${meetsCriteria[category] ? 'bg-warning bg-opacity-10 border border-warning' : 'bg-light'}\">\n                  <span class=\"fw-medium\">${categoryNames[category]}<\/span>\n                  <span class=\"badge ${meetsCriteria[category] ? 'bg-warning' : 'bg-secondary'}\">\n                    ${meetsCriteria[category] ? '\u7b26\u5408\u6a19\u6e96' : '\u672a\u7b26\u5408\u6a19\u6e96'}\n                  <\/span>\n                <\/div>\n              <\/div>\n            `).join('')}\n          <\/div>\n          <div class=\"alert ${totalMet >= 4 ? 'alert-warning' : 'alert-info'} border-0 rounded-3\">\n            <div class=\"d-flex align-items-center\">\n              <i class=\"bi ${totalMet >= 4 ? 'bi-exclamation-triangle' : 'bi-info-circle'} fs-4 me-3\"><\/i>\n              <div>\n                <p class=\"mb-0\">\n                  ${totalMet >= 4 \n                    ? '\u6839\u64daDSM\u6a19\u6e96\uff0c\u60a8\u7684\u75c7\u72c0\u6a21\u5f0f\u63a5\u8fd1\u6025\u6027\u58d3\u529b\u75be\u60a3\u8a3a\u65b7\u6a19\u6e96\uff0c\u5f37\u70c8\u5efa\u8b70\u5c0b\u6c42\u5c08\u696d\u5fc3\u7406\u5065\u5eb7\u8a55\u4f30\u3002'\n                    : '\u6839\u64daDSM\u6a19\u6e96\uff0c\u60a8\u7684\u75c7\u72c0\u6a21\u5f0f\u672a\u5b8c\u5168\u7b26\u5408\u6025\u6027\u58d3\u529b\u75be\u60a3\u8a3a\u65b7\u6a19\u6e96\uff0c\u4f46\u4ecd\u5efa\u8b70\u95dc\u6ce8\u5fc3\u7406\u5065\u5eb7\u72c0\u6cc1\u3002'\n                  }\n                <\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      `;\n      this.elements.dsmAnalysis.innerHTML = html;\n    }\n\n    renderPersonalInsights(results) {\n      const insights = this.generatePersonalInsights(results);\n      \n      const html = `\n        <div class=\"alert alert-success border-2 border-success rounded-3 p-4 mb-4\">\n          <div class=\"d-flex align-items-center mb-3\">\n            <i class=\"bi bi-lightbulb fs-4 text-success me-3\"><\/i>\n            <h4 class=\"h5 fw-bold mb-0 text-success\">\u500b\u4eba\u5316\u5206\u6790\u8207\u5efa\u8b70<\/h4>\n          <\/div>\n          ${insights.map(insight => `\n            <div class=\"mb-3\">\n              <h5 class=\"h6 fw-bold text-success\">${insight.title}<\/h5>\n              <p class=\"mb-0 text-success\">${insight.content}<\/p>\n            <\/div>\n          `).join('')}\n        <\/div>\n      `;\n      \n      this.elements.personalInsights.innerHTML = html;\n    }\n\n    generatePersonalInsights(results) {\n      const insights = [];\n      \n      \/\/ \u6700\u9ad8\u5206\u985e\u5225\u5206\u6790\n      const maxCategory = Object.keys(results.categoryPercentages)\n        .reduce((a, b) => results.categoryPercentages[a] > results.categoryPercentages[b] ? a : b);\n      \n      const categoryInsights = {\n        dissociation: {\n          title: \"\u89e3\u96e2\u53cd\u61c9\u8f03\u70ba\u660e\u986f\",\n          content: \"\u60a8\u5728\u89e3\u96e2\u75c7\u72c0\u65b9\u9762\u5f97\u5206\u8f03\u9ad8\uff0c\u53ef\u80fd\u6703\u611f\u5230\u8207\u73fe\u5be6\u812b\u7bc0\u3001\u6642\u9593\u611f\u6df7\u4e82\u6216\u81ea\u6211\u8a8d\u540c\u6a21\u7cca\u3002\u5efa\u8b70\u900f\u904e\u6b63\u5ff5\u7df4\u7fd2\u3001\u6df1\u547c\u5438\u7b49\u6280\u5de7\u5e6b\u52a9\u81ea\u5df1\u4fdd\u6301\u8207\u7576\u4e0b\u7684\u9023\u7d50\u3002\"\n        },\n        reexperience: {\n          title: \"\u5275\u50b7\u91cd\u73fe\u9700\u8981\u95dc\u6ce8\",\n          content: \"\u60a8\u53ef\u80fd\u7d93\u5e38\u91cd\u65b0\u9ad4\u9a57\u5230\u58d3\u529b\u4e8b\u4ef6\uff0c\u5305\u62ec\u60e1\u5922\u3001\u9583\u56de\u7b49\u3002\u5efa\u8b70\u5efa\u7acb\u5b89\u5168\u611f\uff0c\u5b78\u7fd2\u60c5\u7dd2\u8abf\u7bc0\u6280\u5de7\uff0c\u4e26\u8003\u616e\u5c0b\u6c42\u5c08\u696d\u5275\u50b7\u6cbb\u7642\u652f\u6301\u3002\"\n        },\n        avoidance: {\n          title: \"\u8ff4\u907f\u884c\u70ba\u50be\u5411\u660e\u986f\",\n          content: \"\u60a8\u50be\u5411\u65bc\u907f\u514d\u8207\u58d3\u529b\u4e8b\u4ef6\u76f8\u95dc\u7684\u4eba\u4e8b\u7269\uff0c\u9019\u96d6\u7136\u66ab\u6642\u6e1b\u8f15\u75db\u82e6\uff0c\u4f46\u53ef\u80fd\u5f71\u97ff\u6b63\u5e38\u751f\u6d3b\u3002\u5efa\u8b70\u9010\u6b65\u9762\u5c0d\uff0c\u900f\u904e\u5c08\u696d\u5f15\u5c0e\u9032\u884c\u66b4\u9732\u7df4\u7fd2\u3002\"\n        },\n        anxiety: {\n          title: \"\u7126\u616e\u8b66\u89ba\u72c0\u614b\u504f\u9ad8\",\n          content: \"\u60a8\u53ef\u80fd\u8655\u65bc\u9ad8\u5ea6\u8b66\u89ba\u72c0\u614b\uff0c\u5bb9\u6613\u7dca\u5f35\u3001\u9a5a\u5687\u6216\u5931\u7720\u3002\u5efa\u8b70\u5b78\u7fd2\u653e\u9b06\u6280\u5de7\uff0c\u898f\u5f8b\u904b\u52d5\uff0c\u7dad\u6301\u826f\u597d\u7684\u7761\u7720\u885b\u751f\u7fd2\u6163\u3002\"\n        },\n        impairment: {\n          title: \"\u793e\u6703\u529f\u80fd\u53d7\u5230\u5f71\u97ff\",\n          content: \"\u58d3\u529b\u4e8b\u4ef6\u5f71\u97ff\u4e86\u60a8\u7684\u65e5\u5e38\u751f\u6d3b\u548c\u4eba\u969b\u95dc\u4fc2\u3002\u5efa\u8b70\u9010\u6b65\u6062\u5fa9\u65e5\u5e38\u6d3b\u52d5\uff0c\u5c0b\u6c42\u89aa\u53cb\u652f\u6301\uff0c\u5fc5\u8981\u6642\u8003\u616e\u5c08\u696d\u8aee\u8a62\u3002\"\n        }\n      };\n\n      if (results.categoryPercentages[maxCategory] > 50) {\n        insights.push(categoryInsights[maxCategory]);\n      }\n\n      \/\/ \u6574\u9ad4\u5efa\u8b70\n      if (results.totalScore <= 39) {\n        insights.push({\n          title: \"\u6301\u7e8c\u7dad\u8b77\u5fc3\u7406\u5065\u5eb7\",\n          content: \"\u60a8\u76ee\u524d\u7684\u9069\u61c9\u72c0\u6cc1\u826f\u597d\uff0c\u5efa\u8b70\u7e7c\u7e8c\u4fdd\u6301\u5065\u5eb7\u7684\u751f\u6d3b\u65b9\u5f0f\uff0c\u5b78\u7fd2\u58d3\u529b\u7ba1\u7406\u6280\u5de7\uff0c\u5efa\u7acb\u826f\u597d\u7684\u793e\u6703\u652f\u6301\u7db2\u7d61\u3002\"\n        });\n      } else if (results.totalScore <= 56) {\n        insights.push({\n          title: \"\u7a4d\u6975\u95dc\u6ce8\u5fc3\u7406\u72c0\u614b\",\n          content: \"\u5efa\u8b70\u60a8\u4e3b\u52d5\u5c0b\u6c42\u652f\u6301\uff0c\u53ef\u4ee5\u8003\u616e\u8207\u4fe1\u4efb\u7684\u89aa\u53cb\u8ac7\u5fc3\uff0c\u53c3\u52a0\u652f\u6301\u5c0f\u7d44\uff0c\u6216\u5c0b\u6c42\u5fc3\u7406\u8aee\u8a62\u5e2b\u7684\u5c08\u696d\u5354\u52a9\u3002\"\n        });\n      } else {\n        insights.push({\n          title: \"\u5c0b\u6c42\u5c08\u696d\u5354\u52a9\u91cd\u8981\u6027\",\n          content: \"\u60a8\u7684\u75c7\u72c0\u8f03\u70ba\u56b4\u91cd\uff0c\u5efa\u8b70\u76e1\u5feb\u5c0b\u6c42\u5fc3\u7406\u5065\u5eb7\u5c08\u696d\u4eba\u58eb\u7684\u5354\u52a9\u3002\u5c08\u696d\u6cbb\u7642\u53ef\u4ee5\u6709\u6548\u5e6b\u52a9\u60a8\u8655\u7406\u5275\u50b7\u53cd\u61c9\uff0c\u6062\u5fa9\u5fc3\u7406\u5065\u5eb7\u3002\"\n        });\n      }\n\n      \/\/ \u5177\u9ad4\u884c\u52d5\u5efa\u8b70\n      const actionAdvices = [];\n      if (results.categoryPercentages.anxiety > 60) {\n        actionAdvices.push(\"\u6bcf\u65e5\u7df4\u7fd2\u6df1\u547c\u5438\u6216\u51a5\u60f315\u5206\u9418\");\n      }\n      if (results.categoryPercentages.dissociation > 60) {\n        actionAdvices.push(\"\u4f7f\u7528\u4e94\u611f\u63a5\u5730\u6280\u5de7\u7dad\u6301\u73fe\u5be6\u611f\");\n      }\n      if (results.categoryPercentages.avoidance > 60) {\n        actionAdvices.push(\"\u5236\u5b9a\u9010\u6b65\u9762\u5c0d\u8a08\u756b\uff0c\u5f9e\u6700\u5bb9\u6613\u7684\u958b\u59cb\");\n      }\n      if (results.categoryPercentages.reexperience > 60) {\n        actionAdvices.push(\"\u5efa\u7acb\u5b89\u5168\u611f\uff0c\u5b78\u7fd2\u5275\u50b7\u77e5\u60c5\u7684\u81ea\u6211\u7167\u9867\");\n      }\n\n      if (actionAdvices.length > 0) {\n        insights.push({\n          title: \"\u5177\u9ad4\u884c\u52d5\u5efa\u8b70\",\n          content: actionAdvices.join(\"\uff1b\") + \"\u3002\u8a18\u4f4f\uff0c\u5fa9\u539f\u9700\u8981\u6642\u9593\uff0c\u8acb\u5c0d\u81ea\u5df1\u4fdd\u6301\u8010\u5fc3\u548c\u6148\u60b2\u3002\"\n        });\n      }\n\n      return insights.slice(0, 3); \/\/ \u9650\u5236\u6700\u591a3\u500b\u5efa\u8b70\u907f\u514d\u904e\u9577\n    }\n\n    renderCategoriesAnalysis(results) {\n      const html = `\n        <div class=\"card border-0 shadow-sm rounded-3 p-4 mb-4\">\n          <h4 class=\"h5 fw-bold text-primary mb-3\">\u5404\u75c7\u72c0\u985e\u5225\u8a73\u7d30\u5206\u6790<\/h4>\n          <div class=\"row g-3\">\n            ${Object.keys(results.categoryScores).map(category => `\n              <div class=\"col-md-6\">\n                <div class=\"d-flex justify-content-between align-items-center p-3 bg-light rounded\">\n                  <span class=\"fw-medium\">${categoryNames[category]}<\/span>\n                  <div class=\"text-end\">\n                    <div class=\"fw-bold text-primary\">${results.categoryScores[category]}\u5206<\/div>\n                    <small class=\"text-muted\">${results.categoryPercentages[category]}%<\/small>\n                  <\/div>\n                <\/div>\n              <\/div>\n            `).join('')}\n          <\/div>\n        <\/div>\n      `;\n      this.elements.categoriesAnalysis.innerHTML = html;\n    }\n\n    renderChart(results) {\n      \/\/ \u92b7\u6bc0\u73fe\u6709\u5716\u8868\n      if (this.chart) {\n        this.chart.destroy();\n      }\n\n      const ctx = document.getElementById('resultChart').getContext('2d');\n      \n      this.chart = new Chart(ctx, {\n        type: 'radar',\n        data: {\n          labels: Object.keys(results.categoryPercentages).map(key => categoryNames[key]),\n          datasets: [{\n            label: '\u75c7\u72c0\u56b4\u91cd\u7a0b\u5ea6 (%)',\n            data: Object.values(results.categoryPercentages),\n            backgroundColor: 'rgba(37, 99, 235, 0.2)',\n            borderColor: 'rgba(37, 99, 235, 1)',\n            borderWidth: 3,\n            pointBackgroundColor: 'rgba(37, 99, 235, 1)',\n            pointBorderColor: '#fff',\n            pointHoverBackgroundColor: '#fff',\n            pointHoverBorderColor: 'rgba(37, 99, 235, 1)',\n            pointRadius: 6,\n            pointHoverRadius: 8\n          }]\n        },\n        options: {\n          responsive: true,\n          maintainAspectRatio: false,\n          plugins: {\n            legend: {\n              position: 'bottom',\n              labels: {\n                padding: 20,\n                font: {\n                  size: 16\n                }\n              }\n            }\n          },\n          scales: {\n            r: {\n              beginAtZero: true,\n              max: 100,\n              ticks: {\n                stepSize: 20,\n                font: {\n                  size: 14\n                }\n              },\n              pointLabels: {\n                font: {\n                  size: 18\n                }\n              }\n            }\n          }\n        }\n      });\n    }\n\n    showSection(sectionName) {\n      Object.values(this.sections).forEach(section => {\n        section.classList.remove('active');\n      });\n      this.sections[sectionName].classList.add('active');\n    }\n\n    restartQuiz() {\n      this.currentQuestion = 0;\n      this.answers = {};\n      \n      if (this.chart) {\n        this.chart.destroy();\n        this.chart = null;\n      }\n      \n      this.showSection('intro');\n      this.scrollToTop();\n    }\n\n    scrollToTop() {\n      const container = this.sections.intro.closest('.quiz-container');\n      if (container) {\n        container.scrollIntoView({ \n          behavior: 'smooth', \n          block: 'start' \n        });\n      }\n    }\n  }\n\n  \/\/ \u521d\u59cb\u5316\u6e2c\u9a57\n  document.addEventListener('DOMContentLoaded', () => {\n    new SASTRQuiz();\n  });\n\n})();\n<\/script>","protected":false},"excerpt":{"rendered":"<p>\u65af\u5766\u798f\u6025\u6027\u5e94\u6fc0\u53cd\u5e94\u95ee\u5377(Stanford Acute Stress Reaction Questionnaire, SASRQ)\u662f\u56fd\u9645\u4e0a\u8bc4\u4f30ASD\u5e38\u7528\u7684\u5de5\u5177\u4e4b\u4e00\u3002<\/p>","protected":false},"author":19,"featured_media":5902,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"narrow-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[169,165,162],"tags":[183,184],"class_list":["post-5898","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-psychological-symptom-scales","category-neuropsychological","category-clinical","tag-pressure","tag-stress"],"_links":{"self":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/5898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/comments?post=5898"}],"version-history":[{"count":3,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/5898\/revisions"}],"predecessor-version":[{"id":10248,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/5898\/revisions\/10248"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media\/5902"}],"wp:attachment":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media?parent=5898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/categories?post=5898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/tags?post=5898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}