<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8" />

    <!--
      内联主题检测脚本：先于 CSS 加载执行，防止深色模式下出现 FOUC（Flash of Unstyled Content）。
      优先级：URL 参数 > localStorage > 系统偏好 > 默认 light。
      （与 src/contexts/ThemeContext.jsx 的 getInitialTheme 行为保持一致）
    -->
    <script nonce="ajIpAPm5ew+yE9S0Ku4vZA==">
      (function () {
        try {
          // 三态主题：light / dark / dark-warm
          var VALID = ['light', 'dark', 'dark-warm'];
          function isValid(v) { return VALID.indexOf(v) >= 0; }

          // 1. URL 参数（包括 hash 内 query）
          var t = null;
          try {
            var sp = new URLSearchParams(window.location.search);
            t = sp.get('theme');
            if (!isValid(t)) {
              var hash = window.location.hash || '';
              var q = hash.split('?')[1] || '';
              if (q) {
                var hsp = new URLSearchParams(q);
                var fromHash = hsp.get('theme');
                if (isValid(fromHash)) t = fromHash;
              }
            }
          } catch (e) { /* ignore */ }

          // 2. localStorage
          if (!isValid(t)) {
            t = localStorage.getItem('theme');
          }

          // 3. 系统偏好（仅有 dark 偏好时默认用冷色深色）
          if (!isValid(t)) {
            t = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
          }

          // 应用：dark 和 dark-warm 都加 'dark' 类，dark-warm 额外加 'dark-warm'
          if (t === 'dark' || t === 'dark-warm') {
            var html = document.documentElement;
            html.classList.add('dark');
            if (t === 'dark-warm') html.classList.add('dark-warm');
            html.style.colorScheme = 'dark';
          }
        } catch (e) {
          /* 静默回退到浅色 */
        }
      })();
    </script>

    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link rel="icon" type="image/svg+xml" href="/zhangtian/favicon.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <!-- theme-color：浅色模式下紫色，深色模式下深灰 -->
    <meta name="theme-color" content="#4D0099" media="(prefers-color-scheme: light)" />
    <meta name="theme-color" content="#0F0E17" media="(prefers-color-scheme: dark)" />

    <!-- 基础 SEO：中英双语 title 和 description -->
    <title>MODELS 团队 | 南京大学软件工程研究组 - NJU SEG Research Team</title>
    <meta
      name="description"
      content="南京大学软件工程研究组（NJU SEG）的 MODELS 研究团队，致力于机器学习交叉领域的智能软件方法与技术研究。The MODELS research team of NJU Software Engineering Group, focusing on intelligent software methods and technologies in machine learning."
    />
    <meta
      name="keywords"
      content="南京大学, Nanjing University, 软件工程, Software Engineering, MODELS, NJU SEG, 机器学习, Machine Learning, 模型驱动工程, Model-Driven Engineering, 大模型测试, LLM Testing"
    />
    <meta name="author" content="Tian Zhang" />

    <!-- 国际化标记：声明此页面有中英两个语言版本 -->
    <link rel="alternate" hreflang="zh-CN" href="https://cs.nju.edu.cn/zhangtian" />
    <link rel="alternate" hreflang="en" href="https://cs.nju.edu.cn/zhangtian/?lang=en" />
    <link rel="alternate" hreflang="x-default" href="https://cs.nju.edu.cn/zhangtian" />

    <!-- Open Graph：社交分享时显示的预览信息 -->
    <meta property="og:title" content="MODELS 团队 | 南京大学软件工程研究组" />
    <meta
      property="og:description"
      content="南京大学软件工程研究组（NJU SEG）的 MODELS 研究团队，致力于机器学习交叉领域的智能软件方法与技术研究"
    />
    <meta property="og:locale" content="zh_CN" />
    <meta property="og:locale:alternate" content="en_US" />
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://cs.nju.edu.cn/zhangtian/" />
    <meta property="og:image" content="https://cs.nju.edu.cn/zhangtian/og-image.jpg" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:site_name" content="NJU SEG MODELS Team" />

    <!-- Twitter Card：Twitter 分享卡片 -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="MODELS 团队 | NJU SEG Research Team" />
    <meta
      name="twitter:description"
      content="Nanjing University Software Engineering Group - MODELS Research Team"
    />
    <meta name="twitter:image" content="https://cs.nju.edu.cn/zhangtian/og-image.jpg" />

    <!-- JSON-LD 结构化数据：让搜索引擎和学术爬虫理解页面含义 -->
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "ResearchOrganization",
        "name": "MODELS Research Team",
        "alternateName": ["南京大学软件工程研究组 MODELS 团队", "NJU SEG MODELS Team"],
        "url": "https://cs.nju.edu.cn/zhangtian/",
        "parentOrganization": {
          "@type": "CollegeOrUniversity",
          "name": "Nanjing University",
          "alternateName": "南京大学"
        },
        "knowsAbout": [
          "Model-Driven Engineering",
          "Software Engineering",
          "Machine Learning",
          "Large Language Model Testing"
        ]
      }
    </script>

    <!-- Content Security Policy: 防止 XSS 和数据注入攻击
         完整 policy 由 vite.config.js 的 cspPlugin 注入（{{CSP_POLICY}} 占位符）。
         评估报告 #10（2026-07-07）深度加固：
         - script-src 加 nonce，FOUC 内联脚本才能执行
         - img-src / media-src 收紧到具体域名（学院服务器 + 阿里云 OSS）
         - umami 由下面的 integrity + crossorigin 防篡改 -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'nonce-ajIpAPm5ew+yE9S0Ku4vZA==' https://cloud.umami.is; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https://cs.nju.edu.cn https://*.aliyuncs.com; media-src 'self' https://*.aliyuncs.com; connect-src 'self' https://api.umami.is https://gateway.umami.is; frame-src 'none'; base-uri 'self'; form-action 'self'">
    <link rel="apple-touch-icon" href="/zhangtian/logo192.png" />
    <link rel="manifest" href="/zhangtian/manifest.json" />

    <!-- Umami Analytics: 隐私优先的用户访问统计，无 Cookie
         integrity 是 script.js 的 SHA-384 哈希，文件被篡改浏览器直接拒绝执行
         （评估报告 #10，2026-07-07）。
         重新生成哈希：curl -sSL https://cloud.umami.is/script.js | openssl dgst -sha384 -binary | openssl base64 -A -->
    <script
      defer
      src="https://cloud.umami.is/script.js"
      integrity="sha384-DCWdwYp9BA8848i6w0Y5RQh8ANWh1jp1+NjJ/a+jqFZi1nvw6st1t+bFQ9+hhNXe"
      crossorigin="anonymous"
      data-website-id="8b4d4ce1-51e4-4da0-a7fc-e764afd611c5"
    ></script>
    <script type="module" crossorigin src="/zhangtian/static/js/index.BrqNzCJ5.js"></script>
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/rolldown-runtime.Bh1tDfsg.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/vendor.DQUNtSRO.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/vendor-react.22oolo8W.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/vendor-router.AAzfPm6O.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/memberRegistry.2WKhqN_U.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/projectRegistry.DseQGi90.js">
    <link rel="modulepreload" crossorigin href="/zhangtian/static/js/data-member-index.D3uApzdj.js">
    <link rel="stylesheet" crossorigin href="/zhangtian/static/css/index.DwLDDfuG.css">
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
  </body>
</html>
