状态:已确认,可作为实施基线。
缩短用户从导入 nginx -T 到理解请求路径、定位配置问题的时间。
首要场景:线上排障。用户输入 host、path、协议和端口,系统给出可解释的候选路由,并把结果连接到拓扑、问题列表和配置源码。
-
有效配置加载后,默认进入请求排障模式。
-
从配置提取可尝试的
server_name、listen和location;不再使用固定示例请求作为真实默认值。 -
路由追踪是主结果,拓扑画布是空间上下文:
请求 → server → location → rewrite/try_files → upstream → backend -
每一步显示匹配理由、置信度、来源文件和行号;画布同步高亮节点与边。
-
结果采用“候选路径 + 解释”,不伪装成完整 Nginx 运行时模拟。
-
无法命中或无法确定时,说明失败阶段、候选项、排除理由或静态分析限制。
- 首阶段支持常见开源 Nginx 路由语义:
server、listen、server_name、location匹配与优先级、rewrite、return、try_files、常见*_pass、upstream。 - 精确匹配、明确静态目标等结果可标为高置信度。
- 变量、Lua、njs、第三方模块和复杂运行时行为标为未知或低置信度,不给出虚假确定结论。
- 多候选路径必须保留分支和各自理由。
- 默认展示当前请求路径相关问题,并可切换全部配置问题。
- 排序固定为
error > warning > info,必要时再按路径关联度和源码位置排序。 error:解析失败或路由结论可能不可信。warning:配置可运行,但当前请求可能走错、漏匹配或存在高风险。info:不阻断请求的维护性建议。- 每条问题包含影响、证据、建议和源码位置。
- 首阶段不直接自动修改配置;提供修复建议、片段、可复制示例,后续再评估 diff 应用和撤销。
- 点击问题:编辑器跳到源码位置,画布聚焦相关节点或边。
- 点击节点/边:问题列表过滤关联问题,编辑器定位对应指令。
- 点击追踪步骤:展示匹配理由、不确定性和来源位置。
- 解析错误时保留可用拓扑,明确显示“结果不完整”;不可推断时不得显示为正常命中。
- 识别
nginx -T的# configuration file ...:分段。 - 节点、边、问题和追踪步骤记录
filename + line。 - 没有文件分段时退化为输入文本行号。
- 路由输入实时更新,防抖约
150–200ms;Enter可作为显式提交兜底。 - 首次访问可加载内置示例,但必须明确标注示例配置;导入真实配置后不得自动覆盖。
- 默认不写入
localStorage,配置只保存在当前会话。 - 支持复制纯文本路由追踪、导出 JSON、导出 PNG;默认不导出原始配置,包含配置时必须显式确认。
- 配置、解析结果和诊断数据不上传服务器。
- 保留 React + TypeScript + Vite + React Flow;不做框架迁移。
- 将 tokenizer、parser、graph、analyzer、routing 维持为纯领域逻辑,UI 只负责适配和呈现。
- 按领域拆分页面状态:配置/解析、请求模拟、拓扑视图、问题联动、用户偏好。
- 不引入全局状态库;优先使用
useReducer、领域 hooks 和明确事件流。 - 拆分
App.tsx,避免让解析、路由、状态和视图继续耦合。 - 解析和计算先以纯函数和基准测试为基础;只有主线程超过性能预算时才迁移 Web Worker。
- 建立语义化设计 token,组件消费 token;样式按功能组件拆分,不引入大型 UI 框架。
- 中文/英文使用类型安全 locale;禁止组件内散落双语字符串。
- 目标规模:约
10,000行nginx -T、约1,000个拓扑节点。 - 常规编辑后约
200ms内反馈;超出预算时降低实时更新频率并提示用户。 - 桌面优先,最低目标宽度
1280px。 900–1279px保留核心排障能力并折叠详情面板;移动端只保证查看和问题定位。- 首次访问主题/语言跟随系统;用户选择持久化。
- 键盘快捷键只覆盖搜索、请求输入、适配画布、清除选择、切换问题和帮助。
- 遵守 WCAG 2.1 AA、键盘可操作、非颜色状态表达和
prefers-reduced-motion。
路由结果模型、候选路径与置信度、请求输入、路由追踪、来源定位、问题关联、解析容错、性能基准和核心测试。
信息架构和视觉 token、三向联动细节、编辑器定位、主题/语言治理、快捷键、导出、响应式和无障碍完善。
更多 Nginx 语义、复杂运行时提示、可选 diff 应用/撤销,以及基于反馈的诊断增强。
必须通过:
- TypeScript strict 检查和生产构建。
- ESLint、Prettier,以及 locale key 完整性检查。
- parser、路由匹配、候选解释、置信度、问题关联和来源位置单元测试。
- fixture/golden tests,覆盖多 server、默认 server、通配符/正则 server_name、各种 location 优先级、rewrite、try_files、proxy URI、upstream、变量和解析错误。
- Playwright 核心流程:导入配置 → 输入请求 → 高亮路径 → 点击问题 → 跳回源码。
- 关键键盘、深浅主题、中英文和 reduced-motion 场景验证。
- 不实现完整 Nginx 运行时模拟器。
- 不首期支持 Lua/njs/第三方模块的精确执行。
- 不首期自动改写配置或引入在线协作/云端服务。
- 不做移动端完整编辑和复杂命令面板。
- 不为视觉现代化引入营销页式装饰、玻璃拟态、无语义渐变或大型 UI 依赖。
JSON 导出保留现有字段并新增 schemaVersion;新增字段可选,破坏性变化必须提供迁移或明确错误信息。