{"id":3124,"date":"2026-06-13T01:11:12","date_gmt":"2026-06-12T17:11:12","guid":{"rendered":"https:\/\/longmai-nt.com\/?page_id=3124"},"modified":"2026-06-13T01:11:13","modified_gmt":"2026-06-12T17:11:13","slug":"%e9%be%99%e8%84%89%e6%9a%96%e9%80%9a%e9%a1%b9%e7%9b%ae%e5%85%a8%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%ae%a1%e7%90%86","status":"publish","type":"page","link":"https:\/\/longmai-nt.com\/?page_id=3124","title":{"rendered":"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406"},"content":{"rendered":"\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406<\/title>\n<style>\n  :root {\n    --bg: #f8f9fa;\n    --card-bg: #ffffff;\n    --text: #1a1a2e;\n    --text-secondary: #6c757d;\n    --text-muted: #adb5bd;\n    --border: #e9ecef;\n    --border-light: #f1f3f5;\n    --accent: #4a6cf7;\n    --accent-light: #eef1ff;\n    --success: #10b981;\n    --success-bg: #ecfdf5;\n    --warning: #f59e0b;\n    --warning-bg: #fffbeb;\n    --danger: #ef4444;\n    --danger-bg: #fef2f2;\n    --info: #6366f1;\n    --info-bg: #eef2ff;\n    --phase-init: #8b5cf6;\n    --phase-init-bg: #f5f3ff;\n    --phase-plan: #3b82f6;\n    --phase-plan-bg: #eff6ff;\n    --phase-exec: #06b6d4;\n    --phase-exec-bg: #ecfeff;\n    --phase-monitor: #f59e0b;\n    --phase-monitor-bg: #fffbeb;\n    --phase-close: #10b981;\n    --phase-close-bg: #ecfdf5;\n    --radius: 12px;\n    --radius-sm: 8px;\n    --shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);\n    --shadow-md: 0 4px 12px rgba(0,0,0,0.06), 0 1px 4px rgba(0,0,0,0.04);\n  }\n\n  * { margin: 0; padding: 0; box-sizing: border-box; }\n\n  body {\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n    background: var(--bg);\n    color: var(--text);\n    line-height: 1.6;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  .container {\n    max-width: 1400px;\n    margin: 0 auto;\n    padding: 32px 24px 48px;\n  }\n\n  \/* Header *\/\n  .header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 32px;\n  }\n  .header-left h1 {\n    font-size: 24px;\n    font-weight: 700;\n    letter-spacing: -0.5px;\n    color: var(--text);\n    margin-bottom: 4px;\n  }\n  .header-left .subtitle {\n    font-size: 13px;\n    color: var(--text-secondary);\n  }\n  .header-right {\n    display: flex;\n    gap: 10px;\n  }\n\n  \/* Buttons *\/\n  .btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 10px 18px;\n    border-radius: var(--radius-sm);\n    font-size: 13px;\n    font-weight: 500;\n    cursor: pointer;\n    border: none;\n    transition: all 0.15s ease;\n    font-family: inherit;\n  }\n  .btn-primary {\n    background: var(--accent);\n    color: #fff;\n  }\n  .btn-primary:hover { background: #3b5de7; }\n  .btn-secondary {\n    background: #fff;\n    color: var(--text);\n    border: 1px solid var(--border);\n  }\n  .btn-secondary:hover { background: var(--bg); }\n\n  \/* Stats Cards *\/\n  .stats-grid {\n    display: grid;\n    grid-template-columns: repeat(5, 1fr);\n    gap: 16px;\n    margin-bottom: 28px;\n  }\n  .stat-card {\n    background: var(--card-bg);\n    border-radius: var(--radius);\n    padding: 20px 24px;\n    box-shadow: var(--shadow);\n    border: 1px solid var(--border-light);\n    transition: box-shadow 0.15s ease;\n  }\n  .stat-card:hover { box-shadow: var(--shadow-md); }\n  .stat-card .stat-label {\n    font-size: 12px;\n    font-weight: 500;\n    color: var(--text-secondary);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin-bottom: 8px;\n  }\n  .stat-card .stat-value {\n    font-size: 28px;\n    font-weight: 700;\n    letter-spacing: -1px;\n  }\n  .stat-card .stat-sub {\n    font-size: 11px;\n    color: var(--text-muted);\n    margin-top: 4px;\n  }\n  .stat-card.init .stat-value { color: var(--phase-init); }\n  .stat-card.plan .stat-value { color: var(--phase-plan); }\n  .stat-card.exec .stat-value { color: var(--phase-exec); }\n  .stat-card.monitor .stat-value { color: var(--phase-monitor); }\n  .stat-card.close .stat-value { color: var(--phase-close); }\n\n  \/* Toolbar *\/\n  .toolbar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 16px;\n    gap: 12px;\n    flex-wrap: wrap;\n  }\n  .toolbar-left {\n    display: flex;\n    gap: 8px;\n    flex-wrap: wrap;\n  }\n  .filter-chip {\n    padding: 6px 14px;\n    border-radius: 20px;\n    font-size: 12px;\n    font-weight: 500;\n    cursor: pointer;\n    border: 1px solid var(--border);\n    background: #fff;\n    color: var(--text-secondary);\n    transition: all 0.15s ease;\n    white-space: nowrap;\n  }\n  .filter-chip:hover { border-color: var(--accent); color: var(--accent); }\n  .filter-chip.active { background: var(--accent); color: #fff; border-color: var(--accent); }\n  .search-box {\n    position: relative;\n  }\n  .search-box input {\n    padding: 8px 12px 8px 34px;\n    border: 1px solid var(--border);\n    border-radius: var(--radius-sm);\n    font-size: 13px;\n    font-family: inherit;\n    width: 240px;\n    outline: none;\n    transition: border-color 0.15s;\n  }\n  .search-box input:focus { border-color: var(--accent); }\n  .search-box .search-icon {\n    position: absolute;\n    left: 10px;\n    top: 50%;\n    transform: translateY(-50%);\n    color: var(--text-muted);\n    font-size: 14px;\n    pointer-events: none;\n  }\n\n  \/* Table *\/\n  .table-wrapper {\n    background: var(--card-bg);\n    border-radius: var(--radius);\n    box-shadow: var(--shadow);\n    border: 1px solid var(--border-light);\n    overflow: hidden;\n  }\n  table {\n    width: 100%;\n    border-collapse: collapse;\n  }\n  thead th {\n    background: #fafbfc;\n    padding: 14px 18px;\n    text-align: left;\n    font-size: 11px;\n    font-weight: 600;\n    color: var(--text-secondary);\n    text-transform: uppercase;\n    letter-spacing: 0.6px;\n    border-bottom: 2px solid var(--border);\n    white-space: nowrap;\n  }\n  tbody td {\n    padding: 14px 18px;\n    font-size: 13px;\n    border-bottom: 1px solid var(--border-light);\n    vertical-align: middle;\n  }\n  tbody tr {\n    transition: background 0.1s ease;\n  }\n  tbody tr:hover { background: #fafbfc; }\n  tbody tr:last-child td { border-bottom: none; }\n\n  \/* Task ID *\/\n  .task-id {\n    font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n    font-size: 12px;\n    color: var(--text-muted);\n    font-weight: 500;\n  }\n\n  \/* Task Name *\/\n  .task-name {\n    font-weight: 500;\n    color: var(--text);\n    max-width: 280px;\n  }\n\n  \/* Phase Badge *\/\n  .phase-badge {\n    display: inline-flex;\n    align-items: center;\n    padding: 4px 10px;\n    border-radius: 6px;\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.3px;\n    white-space: nowrap;\n  }\n  .phase-init { background: var(--phase-init-bg); color: var(--phase-init); }\n  .phase-plan { background: var(--phase-plan-bg); color: var(--phase-plan); }\n  .phase-exec { background: var(--phase-exec-bg); color: var(--phase-exec); }\n  .phase-monitor { background: var(--phase-monitor-bg); color: var(--phase-monitor); }\n  .phase-close { background: var(--phase-close-bg); color: var(--phase-close); }\n\n  \/* Status Badge *\/\n  .status-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    padding: 4px 10px;\n    border-radius: 6px;\n    font-size: 11px;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n  .status-badge::before {\n    content: '';\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n  }\n  .status-pending { background: #f8f9fa; color: #6c757d; }\n  .status-pending::before { background: #adb5bd; }\n  .status-progress { background: #eff6ff; color: #3b82f6; }\n  .status-progress::before { background: #3b82f6; }\n  .status-review { background: #fffbeb; color: #f59e0b; }\n  .status-review::before { background: #f59e0b; }\n  .status-done { background: #ecfdf5; color: #10b981; }\n  .status-done::before { background: #10b981; }\n  .status-blocked { background: #fef2f2; color: #ef4444; }\n  .status-blocked::before { background: #ef4444; }\n\n  \/* Priority *\/\n  .priority-dot {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 12px;\n    font-weight: 500;\n  }\n  .priority-dot::before {\n    content: '';\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n  }\n  .priority-high { color: #ef4444; }\n  .priority-high::before { background: #ef4444; }\n  .priority-medium { color: #f59e0b; }\n  .priority-medium::before { background: #f59e0b; }\n  .priority-low { color: #10b981; }\n  .priority-low::before { background: #10b981; }\n\n  \/* Assignee *\/\n  .assignee {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  .assignee-avatar {\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 11px;\n    font-weight: 600;\n    color: #fff;\n    flex-shrink: 0;\n  }\n  .av-1 { background: #8b5cf6; }\n  .av-2 { background: #3b82f6; }\n  .av-3 { background: #06b6d4; }\n  .av-4 { background: #f59e0b; }\n  .av-5 { background: #ef4444; }\n  .av-6 { background: #10b981; }\n\n  \/* Progress Bar *\/\n  .progress-bar {\n    width: 80px;\n    height: 6px;\n    background: #f1f3f5;\n    border-radius: 3px;\n    overflow: hidden;\n  }\n  .progress-fill {\n    height: 100%;\n    border-radius: 3px;\n    transition: width 0.3s ease;\n  }\n  .progress-fill.low { background: #94a3b8; }\n  .progress-fill.mid { background: #6366f1; }\n  .progress-fill.high { background: #10b981; }\n\n  \/* Deadline *\/\n  .deadline {\n    font-size: 12px;\n    font-weight: 500;\n  }\n  .deadline.overdue { color: #ef4444; }\n  .deadline.soon { color: #f59e0b; }\n  .deadline.normal { color: var(--text-secondary); }\n\n  \/* Actions *\/\n  .actions {\n    display: flex;\n    gap: 6px;\n  }\n  .action-btn {\n    width: 28px;\n    height: 28px;\n    border-radius: 6px;\n    border: none;\n    background: transparent;\n    color: var(--text-muted);\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 14px;\n    transition: all 0.15s;\n  }\n  .action-btn:hover {\n    background: #f1f3f5;\n    color: var(--text);\n  }\n\n  \/* Empty state *\/\n  .empty-state {\n    text-align: center;\n    padding: 48px 24px;\n    color: var(--text-muted);\n  }\n  .empty-state .empty-icon { font-size: 40px; margin-bottom: 12px; opacity: 0.5; }\n\n  \/* Pagination *\/\n  .pagination {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 14px 20px;\n    border-top: 1px solid var(--border-light);\n    font-size: 12px;\n    color: var(--text-secondary);\n  }\n  .page-info { color: var(--text-muted); }\n  .page-btns { display: flex; gap: 6px; }\n  .page-btn {\n    padding: 5px 12px;\n    border: 1px solid var(--border);\n    border-radius: 6px;\n    background: #fff;\n    font-size: 12px;\n    cursor: pointer;\n    color: var(--text);\n    transition: all 0.15s;\n  }\n  .page-btn:hover { border-color: var(--accent); color: var(--accent); }\n  .page-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }\n\n  \/* Add Task Modal *\/\n  .modal-overlay {\n    position: fixed;\n    inset: 0;\n    background: rgba(0,0,0,0.3);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 100;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.2s;\n  }\n  .modal-overlay.show {\n    opacity: 1;\n    pointer-events: all;\n  }\n  .modal {\n    background: #fff;\n    border-radius: var(--radius);\n    padding: 28px;\n    width: 480px;\n    max-width: 90vw;\n    box-shadow: 0 20px 60px rgba(0,0,0,0.15);\n  }\n  .modal h2 {\n    font-size: 18px;\n    font-weight: 600;\n    margin-bottom: 20px;\n  }\n  .form-group {\n    margin-bottom: 16px;\n  }\n  .form-group label {\n    display: block;\n    font-size: 12px;\n    font-weight: 500;\n    color: var(--text-secondary);\n    margin-bottom: 6px;\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n  }\n  .form-group input,\n  .form-group select {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid var(--border);\n    border-radius: var(--radius-sm);\n    font-size: 13px;\n    font-family: inherit;\n    outline: none;\n    transition: border-color 0.15s;\n  }\n  .form-group input:focus,\n  .form-group select:focus { border-color: var(--accent); }\n  .form-actions {\n    display: flex;\n    gap: 10px;\n    justify-content: flex-end;\n    margin-top: 24px;\n  }\n\n  \/* Responsive *\/\n  @media (max-width: 1200px) {\n    .stats-grid { grid-template-columns: repeat(3, 1fr); }\n  }\n  @media (max-width: 768px) {\n    .container { padding: 16px; }\n    .header { flex-direction: column; align-items: flex-start; gap: 16px; }\n    .stats-grid { grid-template-columns: repeat(2, 1fr); }\n    .toolbar { flex-direction: column; align-items: stretch; }\n    .search-box input { width: 100%; }\n    .table-wrapper { overflow-x: auto; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"container\">\n\n  <!-- Header -->\n  <div class=\"header\">\n    <div class=\"header-left\">\n      <h1>\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406<\/h1>\n      <p class=\"subtitle\">\u6570\u636e\u5206\u6790 \u00b7 \u8ddf\u8e2a\u9879\u76ee\u4ece\u542f\u52a8\u5230\u6536\u5c3e\u7684\u5b8c\u6574\u6d41\u7a0b<\/p>\n    <\/div>\n    <div class=\"header-right\">\n      <button class=\"btn btn-secondary\" onclick=\"exportTable()\">\u5bfc\u51fa CSV<\/button>\n      <button class=\"btn btn-primary\" onclick=\"openModal()\">+ \u65b0\u5efa\u4efb\u52a1<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Stats -->\n  <div class=\"stats-grid\">\n    <div class=\"stat-card init\">\n      <div class=\"stat-label\">\u542f\u52a8\u9636\u6bb5<\/div>\n      <div class=\"stat-value\" id=\"stat-init\">0<\/div>\n      <div class=\"stat-sub\">\u9700\u6c42\u5206\u6790 &amp; \u7acb\u9879<\/div>\n    <\/div>\n    <div class=\"stat-card plan\">\n      <div class=\"stat-label\">\u89c4\u5212\u9636\u6bb5<\/div>\n      <div class=\"stat-value\" id=\"stat-plan\">0<\/div>\n      <div class=\"stat-sub\">\u65b9\u6848\u8bbe\u8ba1 &amp; \u6392\u671f<\/div>\n    <\/div>\n    <div class=\"stat-card exec\">\n      <div class=\"stat-label\">\u6267\u884c\u9636\u6bb5<\/div>\n      <div class=\"stat-value\" id=\"stat-exec\">0<\/div>\n      <div class=\"stat-sub\">\u5f00\u53d1 &amp; \u5b9e\u65bd<\/div>\n    <\/div>\n    <div class=\"stat-card monitor\">\n      <div class=\"stat-label\">\u76d1\u63a7\u9636\u6bb5<\/div>\n      <div class=\"stat-value\" id=\"stat-monitor\">0<\/div>\n      <div class=\"stat-sub\">\u6d4b\u8bd5 &amp; \u8ddf\u8e2a<\/div>\n    <\/div>\n    <div class=\"stat-card close\">\n      <div class=\"stat-label\">\u6536\u5c3e\u9636\u6bb5<\/div>\n      <div class=\"stat-value\" id=\"stat-close\">0<\/div>\n      <div class=\"stat-sub\">\u9a8c\u6536 &amp; \u5f52\u6863<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Toolbar -->\n  <div class=\"toolbar\">\n    <div class=\"toolbar-left\">\n      <span class=\"filter-chip active\" data-phase=\"all\" onclick=\"filterPhase('all', this)\">\u5168\u90e8<\/span>\n      <span class=\"filter-chip\" data-phase=\"\u542f\u52a8\" onclick=\"filterPhase('\u542f\u52a8', this)\">\u542f\u52a8<\/span>\n      <span class=\"filter-chip\" data-phase=\"\u89c4\u5212\" onclick=\"filterPhase('\u89c4\u5212', this)\">\u89c4\u5212<\/span>\n      <span class=\"filter-chip\" data-phase=\"\u6267\u884c\" onclick=\"filterPhase('\u6267\u884c', this)\">\u6267\u884c<\/span>\n      <span class=\"filter-chip\" data-phase=\"\u76d1\u63a7\" onclick=\"filterPhase('\u76d1\u63a7', this)\">\u76d1\u63a7<\/span>\n      <span class=\"filter-chip\" data-phase=\"\u6536\u5c3e\" onclick=\"filterPhase('\u6536\u5c3e', this)\">\u6536\u5c3e<\/span>\n    <\/div>\n    <div class=\"search-box\">\n      <span class=\"search-icon\">\ud83d\udd0d<\/span>\n      <input type=\"text\" placeholder=\"\u641c\u7d22\u4efb\u52a1\u540d\u79f0\u6216\u8d1f\u8d23\u4eba...\" oninput=\"searchTasks(this.value)\">\n    <\/div>\n  <\/div>\n\n  <!-- Table -->\n  <div class=\"table-wrapper\">\n    <table>\n      <thead>\n        <tr>\n          <th>\u7f16\u53f7<\/th>\n          <th>\u4efb\u52a1\u540d\u79f0<\/th>\n          <th>\u9636\u6bb5<\/th>\n          <th>\u72b6\u6001<\/th>\n          <th>\u4f18\u5148\u7ea7<\/th>\n          <th>\u8d1f\u8d23\u4eba<\/th>\n          <th>\u8fdb\u5ea6<\/th>\n          <th>\u622a\u6b62\u65e5\u671f<\/th>\n          <th>\u64cd\u4f5c<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody id=\"table-body\">\n      <\/tbody>\n    <\/table>\n    <div class=\"empty-state\" id=\"empty-state\" style=\"display:none\">\n      <div class=\"empty-icon\">\ud83d\udccb<\/div>\n      <p>\u6682\u65e0\u5339\u914d\u7684\u4efb\u52a1<\/p>\n    <\/div>\n    <div class=\"pagination\">\n      <span class=\"page-info\" id=\"page-info\">\u5171 0 \u6761\u4efb\u52a1<\/span>\n      <div class=\"page-btns\" id=\"page-btns\"><\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<!-- Add Task Modal -->\n<div class=\"modal-overlay\" id=\"modal-overlay\">\n  <div class=\"modal\">\n    <h2>\u65b0\u5efa\u4efb\u52a1<\/h2>\n    <div class=\"form-group\">\n      <label>\u4efb\u52a1\u540d\u79f0<\/label>\n      <input type=\"text\" id=\"form-name\" placeholder=\"\u8bf7\u8f93\u5165\u4efb\u52a1\u540d\u79f0\">\n    <\/div>\n    <div class=\"form-group\">\n      <label>\u6240\u5c5e\u9636\u6bb5<\/label>\n      <select id=\"form-phase\">\n        <option value=\"\u542f\u52a8\">\u542f\u52a8<\/option>\n        <option value=\"\u89c4\u5212\">\u89c4\u5212<\/option>\n        <option value=\"\u6267\u884c\">\u6267\u884c<\/option>\n        <option value=\"\u76d1\u63a7\">\u76d1\u63a7<\/option>\n        <option value=\"\u6536\u5c3e\">\u6536\u5c3e<\/option>\n      <\/select>\n    <\/div>\n    <div class=\"form-group\">\n      <label>\u4f18\u5148\u7ea7<\/label>\n      <select id=\"form-priority\">\n        <option value=\"\u9ad8\">\u9ad8<\/option>\n        <option value=\"\u4e2d\" selected>\u4e2d<\/option>\n        <option value=\"\u4f4e\">\u4f4e<\/option>\n      <\/select>\n    <\/div>\n    <div class=\"form-group\">\n      <label>\u8d1f\u8d23\u4eba<\/label>\n      <input type=\"text\" id=\"form-assignee\" placeholder=\"\u8bf7\u8f93\u5165\u8d1f\u8d23\u4eba\u59d3\u540d\">\n    <\/div>\n    <div class=\"form-group\">\n      <label>\u622a\u6b62\u65e5\u671f<\/label>\n      <input type=\"date\" id=\"form-deadline\">\n    <\/div>\n    <div class=\"form-actions\">\n      <button class=\"btn btn-secondary\" onclick=\"closeModal()\">\u53d6\u6d88<\/button>\n      <button class=\"btn btn-primary\" onclick=\"addTask()\">\u786e\u8ba4\u6dfb\u52a0<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/\/ Sample data\nlet tasks = [\n  { id: 'T-001', name: '\u4e1a\u52a1\u9700\u6c42\u8c03\u7814\u4e0e\u5206\u6790\u62a5\u544a', phase: '\u542f\u52a8', status: 'done', priority: '\u9ad8', assignee: '\u7f2a\u8001\u5e08', progress: 100, deadline: '2026-06-10' },\n  { id: 'T-002', name: '\u9879\u76ee\u7acb\u9879\u7533\u8bf7\u4e66\u64b0\u5199', phase: '\u542f\u52a8', status: 'done', priority: '\u9ad8', assignee: '\u5f20\u6893\u742a', progress: 100, deadline: '2026-06-12' },\n  { id: 'T-003', name: 'GEO\u6570\u5b57\u5316\u4f53\u7cfb\u5efa\u8bbe\u65b9\u6848\u8bbe\u8ba1', phase: '\u89c4\u5212', status: 'progress', priority: '\u9ad8', assignee: '\u7f2a\u8001\u5e08', progress: 65, deadline: '2026-06-20' },\n  { id: 'T-004', name: '\u7b80\u9053\u4e91\u552e\u540e\u5e94\u7528\u642d\u5efa', phase: '\u89c4\u5212', status: 'progress', priority: '\u9ad8', assignee: '\u80e1\u660c\u4f1f', progress: 40, deadline: '2026-06-25' },\n  { id: 'T-005', name: '\u5730\u6696\u89e3\u51b3\u65b9\u6848\u9875Next.js\u8fc1\u79fb', phase: '\u6267\u884c', status: 'progress', priority: '\u4e2d', assignee: '\u7f2a\u8001\u5e08', progress: 70, deadline: '2026-06-18' },\n  { id: 'T-006', name: '\u6696\u6c14\u7247\u805a\u5408\u9875\u672f\u8bed\u89c4\u8303\u5316', phase: '\u6267\u884c', status: 'done', priority: '\u4e2d', assignee: '\u4f59\u6d01', progress: 100, deadline: '2026-06-08' },\n  { id: 'T-007', name: '\u5ba2\u6237\u9f99\u8001\u5e08\u65b9\u6848\u8bbe\u5907\u9009\u578b', phase: '\u6267\u884c', status: 'review', priority: '\u9ad8', assignee: '\u4f59\u6653\u73b2', progress: 85, deadline: '2026-06-15' },\n  { id: 'T-008', name: 'VAM\u5c0a\u777f\u4ea7\u54c1\u8be6\u60c5\u9875\u8bbe\u8ba1', phase: '\u6267\u884c', status: 'progress', priority: '\u4e2d', assignee: '\u6768\u8212\u6587', progress: 30, deadline: '2026-06-30' },\n  { id: 'T-009', name: '\u62a5\u4fee\u5de5\u5355\u5168\u94fe\u8def\u6570\u636e\u6d4b\u8bd5', phase: '\u76d1\u63a7', status: 'progress', priority: '\u9ad8', assignee: '\u738b\u521a', progress: 50, deadline: '2026-06-22' },\n  { id: 'T-010', name: '\u65b0\u5a92\u4f53\u8fd0\u8425\u6fc0\u52b1\u653f\u7b56\u6548\u679c\u8bc4\u4f30', phase: '\u76d1\u63a7', status: 'pending', priority: '\u4f4e', assignee: '\u4f59\u6d01', progress: 0, deadline: '2026-07-05' },\n  { id: 'T-011', name: 'GEO\u5baa\u6cd5V6.0\u4fee\u8ba2\u53d1\u5e03', phase: '\u76d1\u63a7', status: 'review', priority: '\u9ad8', assignee: '\u7f2a\u8001\u5e08', progress: 90, deadline: '2026-06-14' },\n  { id: 'T-012', name: '\u4eba\u673a\u534f\u4f5c\u8ba1\u52126\u6708\u590d\u76d8', phase: '\u6536\u5c3e', status: 'pending', priority: '\u4e2d', assignee: '\u7f2a\u8001\u5e08', progress: 0, deadline: '2026-06-30' },\n  { id: 'T-013', name: 'Q2\u9879\u76ee\u552e\u540e\u6570\u636e\u6c47\u603b\u5f52\u6863', phase: '\u6536\u5c3e', status: 'pending', priority: '\u4e2d', assignee: '\u80e1\u660c\u4f1f', progress: 0, deadline: '2026-07-10' },\n  { id: 'T-014', name: '\u8bbe\u5907\u9009\u578b\u62a5\u4ef7\u89c4\u5219\u6587\u6863\u5316', phase: '\u6536\u5c3e', status: 'pending', priority: '\u4f4e', assignee: '\u5f20\u6893\u742a', progress: 0, deadline: '2026-07-15' },\n  { id: 'T-015', name: 'EXPRO II\u4ea7\u54c1\u6280\u672f\u624b\u518c\u66f4\u65b0', phase: '\u6267\u884c', status: 'blocked', priority: '\u4e2d', assignee: '\u738b\u521a', progress: 20, deadline: '2026-06-28' },\n];\n\nlet currentFilter = 'all';\nlet searchQuery = '';\nlet taskIdCounter = 16;\n\nconst phaseMap = {\n  '\u542f\u52a8': { cls: 'phase-init', bg: 'phase-init-bg' },\n  '\u89c4\u5212': { cls: 'phase-plan', bg: 'phase-plan-bg' },\n  '\u6267\u884c': { cls: 'phase-exec', bg: 'phase-exec-bg' },\n  '\u76d1\u63a7': { cls: 'phase-monitor', bg: 'phase-monitor-bg' },\n  '\u6536\u5c3e': { cls: 'phase-close', bg: 'phase-close-bg' },\n};\n\nconst statusMap = {\n  'pending':  { label: '\u5f85\u5f00\u59cb', cls: 'status-pending' },\n  'progress': { label: '\u8fdb\u884c\u4e2d', cls: 'status-progress' },\n  'review':   { label: '\u5ba1\u6838\u4e2d', cls: 'status-review' },\n  'done':     { label: '\u5df2\u5b8c\u6210', cls: 'status-done' },\n  'blocked':  { label: '\u5df2\u963b\u585e', cls: 'status-blocked' },\n};\n\nconst assigneeColors = ['av-1','av-2','av-3','av-4','av-5','av-6'];\nlet assigneeMap = {};\n\nfunction getAssigneeClass(name) {\n  if (!assigneeMap[name]) {\n    assigneeMap[name] = assigneeColors[Object.keys(assigneeMap).length % assigneeColors.length];\n  }\n  return assigneeMap[name];\n}\n\nfunction getInitials(name) {\n  return name.slice(0, 2);\n}\n\nfunction formatDeadline(dateStr) {\n  const d = new Date(dateStr);\n  const now = new Date();\n  now.setHours(0,0,0,0);\n  d.setHours(0,0,0,0);\n  const diff = (d - now) \/ (1000 * 60 * 60 * 24);\n  if (diff < 0) return { text: dateStr, cls: 'overdue' };\n  if (diff <= 3) return { text: dateStr, cls: 'soon' };\n  return { text: dateStr, cls: 'normal' };\n}\n\nfunction getProgressClass(pct) {\n  if (pct >= 80) return 'high';\n  if (pct >= 30) return 'mid';\n  return 'low';\n}\n\nfunction renderTable(filteredTasks) {\n  const tbody = document.getElementById('table-body');\n  const empty = document.getElementById('empty-state');\n  const pageInfo = document.getElementById('page-info');\n\n  if (filteredTasks.length === 0) {\n    tbody.innerHTML = '';\n    empty.style.display = 'block';\n    pageInfo.textContent = '\u5171 0 \u6761\u4efb\u52a1';\n    return;\n  }\n\n  empty.style.display = 'none';\n  pageInfo.textContent = `\u5171 ${filteredTasks.length} \u6761\u4efb\u52a1`;\n\n  tbody.innerHTML = filteredTasks.map(t => {\n    const phase = phaseMap[t.phase];\n    const status = statusMap[t.status];\n    const deadline = formatDeadline(t.deadline);\n    const progressCls = getProgressClass(t.progress);\n    const avCls = getAssigneeClass(t.assignee);\n\n    return `\n      <tr data-phase=\"${t.phase}\">\n        <td><span class=\"task-id\">${t.id}<\/span><\/td>\n        <td><span class=\"task-name\">${t.name}<\/span><\/td>\n        <td><span class=\"phase-badge phase-${phase.cls.split('-')[1]}\">${t.phase}<\/span><\/td>\n        <td><span class=\"status-badge ${status.cls}\">${status.label}<\/span><\/td>\n        <td><span class=\"priority-dot priority-${t.priority === '\u9ad8' ? 'high' : t.priority === '\u4e2d' ? 'medium' : 'low'}\">${t.priority}<\/span><\/td>\n        <td>\n          <div class=\"assignee\">\n            <span class=\"assignee-avatar ${avCls}\">${getInitials(t.assignee)}<\/span>\n            ${t.assignee}\n          <\/div>\n        <\/td>\n        <td>\n          <div style=\"display:flex;align-items:center;gap:8px;\">\n            <div class=\"progress-bar\"><div class=\"progress-fill ${progressCls}\" style=\"width:${t.progress}%\"><\/div><\/div>\n            <span style=\"font-size:11px;color:var(--text-muted);\">${t.progress}%<\/span>\n          <\/div>\n        <\/td>\n        <td><span class=\"deadline ${deadline.cls}\">${deadline.text}<\/span><\/td>\n        <td>\n          <div class=\"actions\">\n            <button class=\"action-btn\" title=\"\u7f16\u8f91\" onclick=\"editTask('${t.id}')\">\u270e<\/button>\n            <button class=\"action-btn\" title=\"\u5220\u9664\" onclick=\"deleteTask('${t.id}')\">\u2715<\/button>\n          <\/div>\n        <\/td>\n      <\/tr>\n    `;\n  }).join('');\n}\n\nfunction updateStats() {\n  const all = currentFilter === 'all' ? tasks : tasks;\n  const counts = {};\n  all.forEach(t => { counts[t.phase] = (counts[t.phase] || 0) + 1; });\n  ['\u542f\u52a8','\u89c4\u5212','\u6267\u884c','\u76d1\u63a7','\u6536\u5c3e'].forEach(phase => {\n    const el = document.getElementById('stat-' + (phase === '\u542f\u52a8' ? 'init' : phase === '\u89c4\u5212' ? 'plan' : phase === '\u6267\u884c' ? 'exec' : phase === '\u76d1\u63a7' ? 'monitor' : 'close'));\n    if (el) el.textContent = counts[phase] || 0;\n  });\n}\n\nfunction getFiltered() {\n  let result = tasks;\n  if (currentFilter !== 'all') {\n    result = result.filter(t => t.phase === currentFilter);\n  }\n  if (searchQuery) {\n    const q = searchQuery.toLowerCase();\n    result = result.filter(t => t.name.toLowerCase().includes(q) || t.assignee.toLowerCase().includes(q));\n  }\n  return result;\n}\n\nfunction filterPhase(phase, el) {\n  currentFilter = phase;\n  document.querySelectorAll('.filter-chip').forEach(c => c.classList.remove('active'));\n  el.classList.add('active');\n  renderTable(getFiltered());\n  if (phase === 'all') updateStats();\n}\n\nfunction searchTasks(query) {\n  searchQuery = query;\n  renderTable(getFiltered());\n}\n\nfunction openModal() {\n  document.getElementById('modal-overlay').classList.add('show');\n  document.getElementById('form-name').focus();\n}\n\nfunction closeModal() {\n  document.getElementById('modal-overlay').classList.remove('show');\n  document.getElementById('form-name').value = '';\n  document.getElementById('form-assignee').value = '';\n  document.getElementById('form-deadline').value = '';\n}\n\nfunction addTask() {\n  const name = document.getElementById('form-name').value.trim();\n  const phase = document.getElementById('form-phase').value;\n  const priority = document.getElementById('form-priority').value;\n  const assignee = document.getElementById('form-assignee').value.trim();\n  const deadline = document.getElementById('form-deadline').value;\n\n  if (!name) { alert('\u8bf7\u8f93\u5165\u4efb\u52a1\u540d\u79f0'); return; }\n  if (!assignee) { alert('\u8bf7\u8f93\u5165\u8d1f\u8d23\u4eba'); return; }\n  if (!deadline) { alert('\u8bf7\u9009\u62e9\u622a\u6b62\u65e5\u671f'); return; }\n\n  tasks.push({\n    id: 'T-' + String(taskIdCounter++).padStart(3, '0'),\n    name, phase, status: 'pending', priority, assignee, progress: 0, deadline\n  });\n\n  closeModal();\n  renderTable(getFiltered());\n  updateStats();\n}\n\nfunction deleteTask(id) {\n  if (!confirm('\u786e\u5b9a\u5220\u9664\u4efb\u52a1 ' + id + ' \u5417\uff1f')) return;\n  tasks = tasks.filter(t => t.id !== id);\n  renderTable(getFiltered());\n  updateStats();\n}\n\nfunction editTask(id) {\n  const task = tasks.find(t => t.id === id);\n  if (!task) return;\n  const newName = prompt('\u7f16\u8f91\u4efb\u52a1\u540d\u79f0\uff1a', task.name);\n  if (newName !== null && newName.trim()) {\n    task.name = newName.trim();\n    renderTable(getFiltered());\n  }\n}\n\nfunction exportTable() {\n  const filtered = getFiltered();\n  let csv = '\u7f16\u53f7,\u4efb\u52a1\u540d\u79f0,\u9636\u6bb5,\u72b6\u6001,\u4f18\u5148\u7ea7,\u8d1f\u8d23\u4eba,\u8fdb\u5ea6,\u622a\u6b62\u65e5\u671f\\n';\n  filtered.forEach(t => {\n    csv += `${t.id},\"${t.name}\",${t.phase},${statusMap[t.status].label},${t.priority},${t.assignee},${t.progress}%,${t.deadline}\\n`;\n  });\n  const blob = new Blob(['\\uFEFF' + csv], { type: 'text\/csv;charset=utf-8;' });\n  const url = URL.createObjectURL(blob);\n  const a = document.createElement('a');\n  a.href = url;\n  a.download = '\u9879\u76ee\u4efb\u52a1\u7ba1\u7406_' + new Date().toISOString().slice(0,10) + '.csv';\n  a.click();\n  URL.revokeObjectURL(url);\n}\n\n\/\/ Init\nrenderTable(tasks);\nupdateStats();\n\n\/\/ Close modal on overlay click\ndocument.getElementById('modal-overlay').addEventListener('click', function(e) {\n  if (e.target === this) closeModal();\n});\n\n\/\/ Keyboard shortcut\ndocument.addEventListener('keydown', function(e) {\n  if (e.key === 'Escape') closeModal();\n});\n<\/script>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 \u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","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":"","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-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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"class_list":["post-3124","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/longmai-nt.com\/?page_id=3124\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a\" \/>\n<meta property=\"og:description\" content=\"\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 \u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/longmai-nt.com\/?page_id=3124\" \/>\n<meta property=\"og:site_name\" content=\"\u9f99\u8109\u6696\u901a\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-12T17:11:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/?page_id=3124\",\"url\":\"https:\\\/\\\/longmai-nt.com\\\/?page_id=3124\",\"name\":\"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#website\"},\"datePublished\":\"2026-06-12T17:11:12+00:00\",\"dateModified\":\"2026-06-12T17:11:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/?page_id=3124#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/longmai-nt.com\\\/?page_id=3124\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/?page_id=3124#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/longmai-nt.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#website\",\"url\":\"https:\\\/\\\/longmai-nt.com\\\/\",\"name\":\"\u9f99\u8109\u6696\u901a\",\"description\":\"\u4e13\u6ce8\u8212\u9002\u8282\u80fd\u8bbe\u8ba1\",\"publisher\":{\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/longmai-nt.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#organization\",\"name\":\"\u6210\u90fd\u5e02\u9f99\u8109\u6696\u901a\u8bbe\u5907\u6709\u9650\u516c\u53f8\",\"alternateName\":\"\u9f99\u8109\u6696\u901a\",\"url\":\"https:\\\/\\\/longmai-nt.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/longmai-nt.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo.png\",\"contentUrl\":\"http:\\\/\\\/longmai-nt.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo.png\",\"width\":516,\"height\":478,\"caption\":\"\u6210\u90fd\u5e02\u9f99\u8109\u6696\u901a\u8bbe\u5907\u6709\u9650\u516c\u53f8\"},\"image\":{\"@id\":\"https:\\\/\\\/longmai-nt.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.xiaohongshu.com\\\/user\\\/profile\\\/5fe8a4e800000000010058d2\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/longmai-nt.com\/?page_id=3124","og_locale":"zh_CN","og_type":"article","og_title":"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a","og_description":"\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 \u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 [&hellip;]","og_url":"https:\/\/longmai-nt.com\/?page_id=3124","og_site_name":"\u9f99\u8109\u6696\u901a","article_modified_time":"2026-06-12T17:11:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/longmai-nt.com\/?page_id=3124","url":"https:\/\/longmai-nt.com\/?page_id=3124","name":"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406 - \u9f99\u8109\u6696\u901a","isPartOf":{"@id":"https:\/\/longmai-nt.com\/#website"},"datePublished":"2026-06-12T17:11:12+00:00","dateModified":"2026-06-12T17:11:13+00:00","breadcrumb":{"@id":"https:\/\/longmai-nt.com\/?page_id=3124#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/longmai-nt.com\/?page_id=3124"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/longmai-nt.com\/?page_id=3124#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/longmai-nt.com\/"},{"@type":"ListItem","position":2,"name":"\u9f99\u8109\u6696\u901a\u9879\u76ee\u5168\u751f\u547d\u5468\u671f\u7ba1\u7406"}]},{"@type":"WebSite","@id":"https:\/\/longmai-nt.com\/#website","url":"https:\/\/longmai-nt.com\/","name":"\u9f99\u8109\u6696\u901a","description":"\u4e13\u6ce8\u8212\u9002\u8282\u80fd\u8bbe\u8ba1","publisher":{"@id":"https:\/\/longmai-nt.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/longmai-nt.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/longmai-nt.com\/#organization","name":"\u6210\u90fd\u5e02\u9f99\u8109\u6696\u901a\u8bbe\u5907\u6709\u9650\u516c\u53f8","alternateName":"\u9f99\u8109\u6696\u901a","url":"https:\/\/longmai-nt.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/longmai-nt.com\/#\/schema\/logo\/image\/","url":"http:\/\/longmai-nt.com\/wp-content\/uploads\/2026\/04\/logo.png","contentUrl":"http:\/\/longmai-nt.com\/wp-content\/uploads\/2026\/04\/logo.png","width":516,"height":478,"caption":"\u6210\u90fd\u5e02\u9f99\u8109\u6696\u901a\u8bbe\u5907\u6709\u9650\u516c\u53f8"},"image":{"@id":"https:\/\/longmai-nt.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.xiaohongshu.com\/user\/profile\/5fe8a4e800000000010058d2"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/pages\/3124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/longmai-nt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3124"}],"version-history":[{"count":1,"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/pages\/3124\/revisions"}],"predecessor-version":[{"id":3125,"href":"https:\/\/longmai-nt.com\/index.php?rest_route=\/wp\/v2\/pages\/3124\/revisions\/3125"}],"wp:attachment":[{"href":"https:\/\/longmai-nt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}