feat: implement QuestionBank CRUD with pagination and template query

- Add pagination support to findAll (page, limit query params)
- Add findByTemplateId method to service
- Add GET /by-template/:templateId endpoint to controller
- Service already includes CRUD for QuestionBank and QuestionBankItem
This commit is contained in:
Developer
2026-04-23 17:19:11 +08:00
commit 0a9588abb7
492 changed files with 112453 additions and 0 deletions
+831
View File
@@ -0,0 +1,831 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>军事仿真 AI 原生解决方案</title>
<style>
:root {
--bg: #0f1117;
--surface: #1a1d27;
--surface2: #232736;
--border: #2e3348;
--text: #e2e4ed;
--text-dim: #8b8fa3;
--accent: #6c8cff;
--accent2: #a78bfa;
--green: #34d399;
--orange: #fb923c;
--red: #f87171;
--cyan: #22d3ee;
--yellow: #fbbf24;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
background: var(--bg);
color: var(--text);
line-height: 1.7;
padding: 0;
}
/* Header */
.hero {
background: linear-gradient(135deg, #1e1b4b 0%, #0f172a 50%, #0c1220 100%);
border-bottom: 1px solid var(--border);
padding: 80px 40px 60px;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle at 30% 50%, rgba(108,140,255,0.08) 0%, transparent 50%),
radial-gradient(circle at 70% 50%, rgba(167,139,250,0.06) 0%, transparent 50%);
}
.hero h1 {
font-size: 2.6em;
font-weight: 700;
background: linear-gradient(135deg, var(--accent), var(--accent2));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
position: relative;
margin-bottom: 12px;
}
.hero .subtitle {
color: var(--text-dim);
font-size: 1.15em;
position: relative;
}
/* Layout */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 32px;
}
/* Pipeline overview */
.pipeline {
display: flex;
align-items: center;
justify-content: center;
gap: 0;
padding: 48px 0 24px;
flex-wrap: wrap;
}
.pipeline-node {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
padding: 18px 28px;
text-align: center;
min-width: 140px;
transition: border-color 0.2s;
}
.pipeline-node:hover { border-color: var(--accent); }
.pipeline-node .step-num {
display: inline-block;
width: 28px; height: 28px;
border-radius: 50%;
background: var(--accent);
color: #fff;
font-size: 0.8em;
font-weight: 700;
line-height: 28px;
margin-bottom: 6px;
}
.pipeline-node .label { font-weight: 600; font-size: 1em; }
.pipeline-node .sub { color: var(--text-dim); font-size: 0.82em; }
.pipeline-arrow {
color: var(--text-dim);
font-size: 1.4em;
padding: 0 8px;
user-select: none;
}
/* Sections */
section {
margin: 48px 0;
}
.section-header {
display: flex;
align-items: center;
gap: 14px;
margin-bottom: 24px;
padding-bottom: 12px;
border-bottom: 1px solid var(--border);
}
.section-header .icon {
width: 42px; height: 42px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.3em;
flex-shrink: 0;
}
.section-header h2 {
font-size: 1.55em;
font-weight: 700;
}
.section-header .tag {
font-size: 0.78em;
padding: 3px 10px;
border-radius: 20px;
font-weight: 600;
}
/* Cards grid */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 16px;
}
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
padding: 22px;
transition: border-color 0.2s, transform 0.15s;
}
.card:hover {
border-color: var(--accent);
transform: translateY(-2px);
}
.card h4 {
font-size: 0.95em;
margin-bottom: 6px;
display: flex;
align-items: center;
gap: 8px;
}
.card p {
color: var(--text-dim);
font-size: 0.88em;
line-height: 1.6;
}
/* Diagram box */
.diagram-box {
background: var(--surface2);
border: 1px solid var(--border);
border-radius: 12px;
padding: 32px;
margin-top: 20px;
overflow-x: auto;
}
.diagram-box pre {
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
font-size: 0.82em;
line-height: 1.65;
color: var(--cyan);
white-space: pre;
margin: 0;
}
/* Table */
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 16px;
}
.data-table th {
text-align: left;
padding: 12px 16px;
background: var(--surface2);
border-bottom: 1px solid var(--border);
font-size: 0.85em;
color: var(--text-dim);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.data-table td {
padding: 12px 16px;
border-bottom: 1px solid var(--border);
font-size: 0.9em;
}
.data-table tr:hover td { background: rgba(108,140,255,0.04); }
/* Tags */
.tag-blue { background: rgba(108,140,255,0.15); color: var(--accent); }
.tag-purple { background: rgba(167,139,250,0.15); color: var(--accent2); }
.tag-green { background: rgba(52,211,153,0.15); color: var(--green); }
.tag-orange { background: rgba(251,146,60,0.15); color: var(--orange); }
.tag-cyan { background: rgba(34,211,238,0.15); color: var(--cyan); }
.tag-yellow { background: rgba(251,191,36,0.15); color: var(--yellow); }
.icon-blue { background: rgba(108,140,255,0.12); }
.icon-purple { background: rgba(167,139,250,0.12); }
.icon-green { background: rgba(52,211,153,0.12); }
.icon-orange { background: rgba(251,146,60,0.12); }
.icon-cyan { background: rgba(34,211,238,0.12); }
.icon-yellow { background: rgba(251,191,36,0.12); }
.icon-red { background: rgba(248,113,113,0.12); }
/* Code block */
code {
font-family: "JetBrains Mono", "Fira Code", monospace;
background: var(--surface2);
padding: 2px 7px;
border-radius: 4px;
font-size: 0.88em;
color: var(--cyan);
}
/* Callout */
.callout {
background: rgba(108,140,255,0.06);
border-left: 3px solid var(--accent);
border-radius: 0 10px 10px 0;
padding: 20px 24px;
margin-top: 20px;
}
.callout strong { color: var(--accent); }
.callout p { color: var(--text-dim); font-size: 0.92em; margin-top: 6px; }
/* Roadmap */
.roadmap {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
margin-top: 16px;
}
.roadmap-item {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
padding: 24px;
position: relative;
overflow: hidden;
}
.roadmap-item::before {
content: attr(data-phase);
position: absolute;
top: 0; left: 0; right: 0;
height: 3px;
}
.roadmap-item h4 {
font-size: 1.05em;
margin-bottom: 8px;
}
.roadmap-item ul {
list-style: none;
padding: 0;
}
.roadmap-item li {
color: var(--text-dim);
font-size: 0.88em;
padding: 3px 0;
padding-left: 16px;
position: relative;
}
.roadmap-item li::before {
content: '';
position: absolute;
left: 0;
color: var(--accent);
font-weight: 700;
}
/* Flow diagram with SVG-like CSS */
.flow-section {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
padding: 28px;
margin-top: 16px;
}
.flow-row {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
flex-wrap: wrap;
}
.flow-box {
border-radius: 10px;
padding: 14px 22px;
text-align: center;
font-size: 0.88em;
font-weight: 600;
min-width: 120px;
border: 1px solid var(--border);
}
.flow-arrow {
color: var(--text-dim);
font-size: 1.2em;
}
/* Footer */
.footer {
text-align: center;
padding: 40px;
color: var(--text-dim);
font-size: 0.82em;
border-top: 1px solid var(--border);
margin-top: 60px;
}
/* Responsive */
@media (max-width: 768px) {
.hero { padding: 48px 20px 36px; }
.hero h1 { font-size: 1.8em; }
.container { padding: 0 16px; }
.pipeline { gap: 4px; }
.pipeline-node { min-width: 100px; padding: 12px 14px; }
.pipeline-arrow { font-size: 1em; padding: 0 4px; }
.roadmap { grid-template-columns: 1fr; }
.diagram-box pre { font-size: 0.72em; }
}
</style>
</head>
<body>
<!-- Hero -->
<div class="hero">
<h1>军事仿真 AI 原生解决方案</h1>
<div class="subtitle">场景 → 想定 → 方案 → 推演 → 评估 · 端到端闭环智能体系</div>
</div>
<div class="container">
<!-- Pipeline Overview -->
<div class="pipeline">
<div class="pipeline-node">
<div class="step-num">1</div>
<div class="label">场景构建</div>
<div class="sub">Scene Construction</div>
</div>
<span class="pipeline-arrow"></span>
<div class="pipeline-node">
<div class="step-num">2</div>
<div class="label">想定生成</div>
<div class="sub">Wargaming Scenario</div>
</div>
<span class="pipeline-arrow"></span>
<div class="pipeline-node">
<div class="step-num">3</div>
<div class="label">方案生成</div>
<div class="sub">Plan Generation</div>
</div>
<span class="pipeline-arrow"></span>
<div class="pipeline-node">
<div class="step-num">4</div>
<div class="label">仿真推演</div>
<div class="sub">Simulation Run</div>
</div>
<span class="pipeline-arrow"></span>
<div class="pipeline-node">
<div class="step-num">5</div>
<div class="label">仿真评估</div>
<div class="sub">Assessment</div>
</div>
</div>
<!-- ========== 1. 场景构建 ========== -->
<section>
<div class="section-header">
<div class="icon icon-blue"> </div>
<h2>一、场景构建</h2>
<span class="tag tag-blue">Scene Construction</span>
</div>
<p style="color:var(--text-dim);margin-bottom:16px;">构建战场环境,涵盖地理、气象、电磁、基础设施等多维态势。核心目标:<strong>用自然语言快速生成结构化战场场景</strong></p>
<div class="cards">
<div class="card">
<h4><span class="tag tag-blue">NLP</span> 自然语言 → 场景</h4>
<p>LLM 将 "红蓝双方在东海某海域对峙,气象条件 XX" 解析为结构化场景参数 (JSON / DSL)</p>
</div>
<div class="card">
<h4><span class="tag tag-purple">Vision</span> 地理环境生成</h4>
<p>多模态模型从卫星图 / 地图自动提取地形特征、道路网络、关键地标</p>
</div>
<div class="card">
<h4><span class="tag tag-green">RAG</span> 场景模板推荐</h4>
<p>基于历史场景库做 RAG 检索,推荐相似场景作为起点,降低构建成本</p>
</div>
<div class="card">
<h4><span class="tag tag-orange">Validate</span> 一致性校验</h4>
<p>LLM + 规则引擎联合检查参数矛盾,如海拔与水深冲突、时间线逻辑错误</p>
</div>
</div>
<div class="diagram-box">
<pre>
[自然语言输入]
[场景 DSL 生成器 (LLM)]
[场景参数 JSON Schema] ──→ [场景渲染引擎 (3D / GIS)]
[一致性校验 (规则 + LLM)]
[结构化场景定义]
</pre>
</div>
</section>
<!-- ========== 2. 想定生成 ========== -->
<section>
<div class="section-header">
<div class="icon icon-purple">⚔️</div>
<h2>二、想定生成</h2>
<span class="tag tag-purple">Wargaming Scenario</span>
</div>
<p style="color:var(--text-dim);margin-bottom:16px;">在场景基础上定义双方作战目标、兵力编成、交战规则 (ROE)、时间线。核心创新:<strong>红蓝对抗博弈 Agent 自动迭代生成想定</strong></p>
<div class="cards">
<div class="card">
<h4><span class="tag tag-blue">Generate</span> 想定自动生成</h4>
<p>LLM 基于场景 + 作战意图,生成结构化想定:兵力部署、阶段划分、ROE 规则</p>
</div>
<div class="card">
<h4><span class="tag tag-red">Game</span> 对抗性博弈</h4>
<p>红蓝两个 Agent 各自独立生成意图,通过多轮对抗迭代完善想定</p>
</div>
<div class="card">
<h4><span class="tag tag-green">Review</span> 合理性评估</h4>
<p>战术知识库 RAG + LLM 审查,标注兵力不足、后勤断链等风险点</p>
</div>
<div class="card">
<h4><span class="tag tag-cyan">Version</span> 版本管理</h4>
<p>每次修改生成 diff,支持分支 / 合并,类 Git 的想定版本管理</p>
</div>
</div>
<div class="diagram-box">
<pre>
场景描述 + 红方目标
┌─────────────────────────┐
│ Red Agent (LLM) │ ← 战术知识库 (RAG)
│ 生成红方兵力部署方案 │
└───────────┬─────────────┘
┌─────────────────────────┐
│ Blue Agent (LLM) │ ← 战术知识库 (RAG)
│ 针对红方部署制定对策 │
└───────────┬─────────────┘
┌─────────────────────────┐
│ Referee Agent │
│ 平衡性审查 + 冲突标注 │
└───────────┬─────────────┘
最终想定文档
</pre>
</div>
</section>
<!-- ========== 3. 方案生成 ========== -->
<section>
<div class="section-header">
<div class="icon icon-green"> </div>
<h2>三、方案生成</h2>
<span class="tag tag-green">Plan Generation</span>
</div>
<p style="color:var(--text-dim);margin-bottom:16px;">基于想定为各作战单元生成具体行动计划。核心价值:<strong>多方案并行生成 + 量化比较,突破人工只能覆盖少数方案的局限</strong></p>
<div class="cards">
<div class="card">
<h4><span class="tag tag-blue">Ensemble</span> 多方案并行</h4>
<p>LLM + 规划算法 (HTN / MCTS) 并行输出 3-5 个差异化方案,覆盖不同战术风格</p>
</div>
<div class="card">
<h4><span class="tag tag-yellow">Score</span> 多维评价打分</h4>
<p>风险、时效、资源消耗、达成概率等维度自动评分,附 LLM 解释</p>
</div>
<div class="card">
<h4><span class="tag tag-purple">Merge</span> 方案对比与融合</h4>
<p>LLM 对多方案做优劣势分析,可融合不同方案的优点生成复合方案</p>
</div>
<div class="card">
<h4><span class="tag tag-cyan">HITL</span> 人在回路修正</h4>
<p>指挥员用自然语言修改方案,LLM 实时调整并反馈级联影响</p>
</div>
</div>
<div class="diagram-box">
<pre>
想定 + 约束条件
┌────────────────────────────────────────┐
│ Plan Generator Ensemble │
│ ┌──────────┐ ┌──────────┐ ┌─────────┐│
│ │ 方案 A │ │ 方案 B │ │ 方案 C ││
│ │(激进突防) │ │(稳健推进) │ │(迂回包围)││
│ └─────┬────┘ └─────┬────┘ └────┬────┘│
│ └────────────┼───────────┘ │
│ ▼ │
│ Plan Evaluator │
│ (多维度打分 + LLM 解释) │
└─────────────────────┬──────────────────┘
排序推荐 + 可视化对比
</pre>
</div>
<div class="callout">
<strong>方案 DSL 示例</strong>
<p>每个方案以结构化 YAML 描述,包含阶段、兵力、行动指令,便于 LLM 生成、校验和推演引擎执行。</p>
</div>
<div class="diagram-box" style="margin-top:12px;">
<pre>
plan_id: PLAN-2026-0320-A
name: "东海封锁作战方案 A — 激进突防"
phases:
- phase: 1
name: "电子压制"
start_time: T+0
units: [EW-01, EW-02]
actions:
- type: jamming
target: enemy_radar_net
power: high
- phase: 2
name: "第一波突击"
start_time: T+00:30
units: [AIR-01, AIR-02, NAV-01]
actions:
- type: strike
target: port_facility_A
weapon: cruise_missile
quantity: 12
</pre>
</div>
</section>
<!-- ========== 4. 仿真推演 ========== -->
<section>
<div class="section-header">
<div class="icon icon-orange"> </div>
<h2>四、仿真推演</h2>
<span class="tag tag-orange">Simulation Execution</span>
</div>
<p style="color:var(--text-dim);margin-bottom:16px;">按方案驱动各作战单元在仿真环境中执行,产生时序态势数据。核心创新:<strong>每个作战单元挂载 LLM Agent,自主感知-决策-行动</strong></p>
<div class="cards">
<div class="card">
<h4><span class="tag tag-blue">Agent</span> 智能体行为决策</h4>
<p>每个作战单元挂载 LLM Agent,根据实时态势自主决策,非脚本化行为树</p>
</div>
<div class="card">
<h4><span class="tag tag-green">Adaptive</span> 自适应仿真步长</h4>
<p>战斗激烈区域用小步长,平静区域用大步长,AI 动态调度提升仿真效率</p>
</div>
<div class="card">
<h4><span class="tag tag-yellow">Inject</span> 意外事件注入</h4>
<p>LLM 作为 "战局导演",在关键节点注入意外事件,考验方案鲁棒性</p>
</div>
<div class="card">
<h4><span class="tag tag-cyan">Monitor</span> 实时态势理解</h4>
<p>推演过程中 LLM 持续解读态势,自动生成态势报告与异常告警</p>
</div>
</div>
<div class="diagram-box">
<pre>
┌──────────────────────────────────────────────────┐
│ Simulation Engine │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Unit Agent │ │ Unit Agent │ │ Unit Agent ││
│ │ (驱逐舰) │ │ (战斗机) │ │ (雷达站) ││
│ │ │ │ │ │ │ │
│ │ 观测→推理 │ │ 观测→推理 │ │ 观测→推理 │ │
│ │ →决策→行动 │ │ →决策→行动 │ │ →决策→行动 │ │
│ └──────┬─────┘ └──────┬─────┘ └──────┬─────┘ │
│ └───────────────┼───────────────┘ │
│ ▼ │
│ 态势融合与冲突仲裁 │
│ ▼ │
│ 仿真时间推进 │
└──────────────────────────┬─────────────────────────┘
时序态势数据流 (SSE)
</pre>
</div>
<div class="callout">
<strong>Unit Agent 决策循环</strong>
<p>每个 Agent 遵循 <code>观测 (Observe) → 推理 (Reason) → 决策 (Decide) → 行动 (Act)</code> 循环,输出可审计的决策链,支持事后复盘分析。</p>
</div>
<div class="diagram-box" style="margin-top:12px;">
<pre>
UNIT_AGENT_SYSTEM_PROMPT = """
你是 {unit_type} {unit_id} 的指挥 AI。
当前态势:{current_situation}
你的任务:{mission_objective}
ROE 规则:{rules_of_engagement}
可用武器/资源:{available_resources}
输出格式:
1. 态势判断 — 你观察到了什么
2. 决策依据 — 为什么这么做
3. 行动指令 — 具体做什么
4. 预期结果 — 预计产生什么效果
"""
</pre>
</div>
</section>
<!-- ========== 5. 仿真评估 ========== -->
<section>
<div class="section-header">
<div class="icon icon-yellow"> </div>
<h2>五、仿真评估</h2>
<span class="tag tag-yellow">Assessment</span>
</div>
<p style="color:var(--text-dim);margin-bottom:16px;">对推演结果进行多维度评估,输出报告,支持方案迭代优化。核心价值:<strong>LLM 自动将海量推演数据转化为可读评估报告 + 可执行的改进建议</strong></p>
<div class="cards">
<div class="card">
<h4><span class="tag tag-blue">Metrics</span> 多维自动评估</h4>
<p>从推演数据自动计算战损比、时间达成率、资源效率、态势控制面积等指标</p>
</div>
<div class="card">
<h4><span class="tag tag-green">Report</span> 自然语言报告</h4>
<p>LLM 将指标数据转化为结构化评估报告,含关键节点叙事与图表引用</p>
</div>
<div class="card">
<h4><span class="tag tag-purple">Root Cause</span> 根因分析</h4>
<p>LLM 分析关键转折点,构建因果链,追溯胜负根本原因</p>
</div>
<div class="card">
<h4><span class="tag tag-orange">Loop</span> 方案迭代闭环</h4>
<p>基于评估结果自动提出改进建议,闭环反馈至方案生成阶段</p>
</div>
</div>
<div class="diagram-box">
<pre>
推演时序数据
┌─────────────────────────┐
│ 评估指标计算引擎 │
│ (战损 / 时间 / 资源 态势)│
└───────────┬─────────────┘
┌─────────────────────────┐
│ LLM 评估报告生成器 │
│ 指标 → 叙事 → 图表 → 建议│
└───────────┬─────────────┘
┌─────────────────────────┐
│ 根因分析 Agent │
│ 关键节点回溯 + 因果链 │
└───────────┬─────────────┘
┌─────────────────────────┐
│ 方案优化建议 │
│ → 反馈至方案生成阶段 │
└─────────────────────────┘
</pre>
</div>
</section>
<!-- ========== 端到端架构 ========== -->
<section>
<div class="section-header">
<div class="icon icon-cyan"> </div>
<h2>六、端到端闭环架构</h2>
<span class="tag tag-cyan">Full Loop</span>
</div>
<div class="flow-section">
<div class="flow-row" style="margin-bottom:20px;">
<div class="flow-box" style="border-color:var(--accent);background:rgba(108,140,255,0.08);">场景构建<br><small style="color:var(--text-dim)">LLM 解析 + RAG 模板</small></div>
<span class="flow-arrow"></span>
<div class="flow-box" style="border-color:var(--accent2);background:rgba(167,139,250,0.08);">想定生成<br><small style="color:var(--text-dim)">对抗博弈 Agent</small></div>
<span class="flow-arrow"></span>
<div class="flow-box" style="border-color:var(--green);background:rgba(52,211,153,0.08);">方案生成<br><small style="color:var(--text-dim)">多方案并行生成</small></div>
<span class="flow-arrow"></span>
<div class="flow-box" style="border-color:var(--orange);background:rgba(251,146,60,0.08);">仿真推演<br><small style="color:var(--text-dim)">Agent 化推演引擎</small></div>
<span class="flow-arrow"></span>
<div class="flow-box" style="border-color:var(--yellow);background:rgba(251,191,36,0.08);">仿真评估<br><small style="color:var(--text-dim)">LLM 报告 + 根因分析</small></div>
</div>
<div style="text-align:center;color:var(--text-dim);font-size:0.88em;">
<span style="border:1px dashed var(--border);padding:6px 16px;border-radius:20px;"> 闭环迭代:评估结果 → 优化建议 → 回到方案生成</span>
</div>
</div>
<div class="callout" style="margin-top:24px;">
<strong>核心设计哲学</strong>
<p>让 LLM 承担 <strong>"认知"</strong> 工作(理解、推理、生成、评估),传统算法承担 <strong>"计算"</strong> 工作(物理仿真、路径规划、优化求解),两者通过结构化 DSL 桥接。这一分层保证了 AI 的创造性与仿真的精确性互不干扰。</p>
</div>
</section>
<!-- ========== 技术选型 ========== -->
<section>
<div class="section-header">
<div class="icon icon-green"> </div>
<h2>七、关键技术选型</h2>
<span class="tag tag-green">Tech Stack</span>
</div>
<table class="data-table">
<thead>
<tr>
<th>层级</th>
<th>技术</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="tag tag-blue">LLM 编排</span></td>
<td>LangGraph / 自研 Agent 框架</td>
<td>管理多 Agent 协作、状态流转、对话历史</td>
</tr>
<tr>
<td><span class="tag tag-purple">知识库</span></td>
<td>Elasticsearch + 向量检索</td>
<td>作战条令、战术案例、历史战例的 RAG 索引</td>
</tr>
<tr>
<td><span class="tag tag-orange">仿真引擎</span></td>
<td>离散事件仿真 (DES) + Agent 调度</td>
<td>战场事件驱动,Agent 自主决策,支持多时间尺度</td>
</tr>
<tr>
<td><span class="tag tag-green">态势存储</span></td>
<td>时序 DB (InfluxDB / TDengine)</td>
<td>高频态势数据写入与时间范围查询</td>
</tr>
<tr>
<td><span class="tag tag-cyan">可视化</span></td>
<td>Cesium (3D GIS) + WebSocket</td>
<td>实时态势可视化,支持 2D/3D 切换</td>
</tr>
<tr>
<td><span class="tag tag-yellow">方案 DSL</span></td>
<td>YAML / JSON Schema</td>
<td>结构化方案描述,便于 LLM 生成、校验和引擎执行</td>
</tr>
</tbody>
</table>
</section>
<!-- ========== 落地路径 ========== -->
<section>
<div class="section-header">
<div class="icon icon-red"> </div>
<h2>八、落地路径</h2>
<span class="tag tag-orange">Roadmap</span>
</div>
<div class="roadmap">
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--green);">
<h4 style="color:var(--green);">Phase 1 · MVP</h4>
<ul>
<li>跑通场景→想定→单方案→简单推演→评估的最小闭环</li>
<li>LLM 做自然语言到 DSL 的转换</li>
<li>基础知识库 RAG 索引(作战条令)</li>
<li>脚本化仿真引擎 + 基础指标评估</li>
</ul>
</div>
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--accent);">
<h4 style="color:var(--accent);">Phase 2 · 增强</h4>
<ul>
<li>引入红蓝对抗博弈 Agent</li>
<li>多方案并行生成 + 量化对比</li>
<li>Agent 化推演引擎(自主决策)</li>
<li>实时态势可视化 + SSE 推送</li>
</ul>
</div>
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--accent2);">
<h4 style="color:var(--accent2);">Phase 3 · 成熟</h4>
<ul>
<li>自适应仿真步长 + 异常检测</li>
<li>方案自动迭代优化(评估→改进闭环)</li>
<li>跨域多兵种联合作战仿真</li>
<li>历史战例深度挖掘与战术知识图谱</li>
</ul>
</div>
</div>
</section>
</div>
<div class="footer">
军事仿真 AI 原生解决方案 · 2026-03-20
</div>
</body>
</html>