mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 02:00:46 +08:00
Multi-metric compare templates with presence mode and batch workbook results.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
14f5870e19
commit
ea6e0041c1
11 changed files with 1060 additions and 453 deletions
|
|
@ -131,8 +131,8 @@ src/
|
|||
- API:`/v1/biz-state/profiles`、`/discover`、`/tasks*`、`/batches*`、`/batches/{id}/export`、`/compare/*`
|
||||
- **ParseProfile**:命令模板 + TextFSM + 回调 + schema;LLDP 与拓扑 **共享解析**(`lldp_shared`),业务流程写批次表,拓扑写 Fabric
|
||||
- Phase1:LLDP 邻居快照;建任务默认启用对应厂商 LLDP profile;支持自定义只采不解析行
|
||||
- Phase2:比对模板(可选 metric / key / 接口 / 比对字段)、端口映射、CompareJob 列表与详情、`pre/post` 结果表(高亮 + 筛选)、`/network/tasks/biz-compare`
|
||||
- API 补充:`GET /v1/biz-state/compare/metrics`(模板字段目录)
|
||||
- Phase2:比对模板(多监控表 / Key·接口·比对字段;空比对=仅条目)、端口映射、CompareJob 列表与详情、先选批次再按 Excel sheet 看 pre/post、`/network/tasks/biz-compare`
|
||||
- API 补充:`GET /v1/biz-state/compare/metrics`;模板 `metrics[]` 多表结构
|
||||
- Phase3:VRF 发现→人选关联→带参采集(`*.route_vrf_summary`);`PUT …/items/{id}/bindings`
|
||||
- 调度:`NETX_BIZ_STATE_SCHEDULER_ENABLED`(默认开),tick `NETX_BIZ_STATE_SCHEDULER_TICK_SEC`
|
||||
- 前端:`/network/tasks/biz-state`(勾选监控项 / 发现 VRF / 批次 / 导出 zip)
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ const en = {
|
|||
confirmDeleteTemplate: "Delete this compare template?",
|
||||
emptyTemplates: "No templates yet. Create one or use built-ins.",
|
||||
templateHint:
|
||||
"Field roles: Key aligns rows; interface fields use port mapping; compare fields show pre/post; ignore skips diff.",
|
||||
"A template holds multiple metric sheets. Key: row identity (no separate compare). Interface: port mapping. Compare: value checks after key match. Leave compare empty for presence-only (entry set match).",
|
||||
keyFields: "Key",
|
||||
ifaceFields: "Interface",
|
||||
compareFields: "Compare",
|
||||
|
|
@ -246,9 +246,20 @@ const en = {
|
|||
field: "Field",
|
||||
note: "Note",
|
||||
keyRequired: "Select at least one key field",
|
||||
keyIsIdentity: "Key aligns rows; not used as a value-compare field",
|
||||
metricsRequired: "Add at least one metric sheet",
|
||||
noMetricFields: "No fields for this metric",
|
||||
templateFilterPh: "Filter template / metric",
|
||||
jobFilterPh: "Filter job / template / status",
|
||||
addMetric: "Add metric",
|
||||
pickMetric: "Pick metric…",
|
||||
addSheet: "Add to template",
|
||||
removeSheet: "Remove sheet",
|
||||
colSheets: "Sheets",
|
||||
sheetsUnit: "sheets",
|
||||
presenceShort: "presence",
|
||||
modeFields: "Mode: compare selected field values",
|
||||
modePresence: "Mode: presence-only (entry set match)",
|
||||
mapping: "Port mapping",
|
||||
newMapping: "New mapping…",
|
||||
mapName: "Mapping name",
|
||||
|
|
@ -284,7 +295,8 @@ const en = {
|
|||
runs: "Run history",
|
||||
noRuns: "No runs yet — run a compare first",
|
||||
result: "Result",
|
||||
pickRun: "Pick a run below or click Run now",
|
||||
pickBatchRun: "Select compare batch",
|
||||
pickRun: "Select batch…",
|
||||
resultEmpty: "No matching diff rows",
|
||||
resultFilterPh: "Filter key / values…",
|
||||
kindAll: "All kinds",
|
||||
|
|
|
|||
|
|
@ -237,7 +237,8 @@ const zh = {
|
|||
templateDeleted: "模板已删除",
|
||||
confirmDeleteTemplate: "删除该比对模板?",
|
||||
emptyTemplates: "暂无模板。可新建或使用系统默认。",
|
||||
templateHint: "勾选字段角色:Key 用于对齐行;接口字段参与端口映射;比对字段左右对照;忽略字段不参与 diff。",
|
||||
templateHint:
|
||||
"一个模板可包含多张监控表。Key:对齐前后条目(选中后即为行身份,无需再勾比对);接口:参与端口映射;比对:勾选具体参数做值检查。若不勾任何比对字段,则只校验条目是否一致(存在性)。",
|
||||
keyFields: "Key",
|
||||
ifaceFields: "接口",
|
||||
compareFields: "比对",
|
||||
|
|
@ -245,9 +246,20 @@ const zh = {
|
|||
field: "字段",
|
||||
note: "备注",
|
||||
keyRequired: "至少选择一个 Key 字段",
|
||||
keyIsIdentity: "Key 用于对齐行,不作为值比对字段",
|
||||
metricsRequired: "请至少添加一张监控表",
|
||||
noMetricFields: "该 metric 无字段定义",
|
||||
templateFilterPh: "筛选模板名 / metric",
|
||||
jobFilterPh: "筛选任务名 / 模板 / 状态",
|
||||
addMetric: "添加监控项",
|
||||
pickMetric: "选择监控项…",
|
||||
addSheet: "加入模板",
|
||||
removeSheet: "移出本表",
|
||||
colSheets: "监控表",
|
||||
sheetsUnit: "张表",
|
||||
presenceShort: "仅条目",
|
||||
modeFields: "模式:按比对字段检查值",
|
||||
modePresence: "模式:仅校验前后条目一致(不比具体值)",
|
||||
mapping: "端口映射",
|
||||
newMapping: "新建映射…",
|
||||
mapName: "映射名称",
|
||||
|
|
@ -283,7 +295,8 @@ const zh = {
|
|||
runs: "历史 Run",
|
||||
noRuns: "尚无比对记录,请先执行比对",
|
||||
result: "比对结果",
|
||||
pickRun: "选择底部 Run 或点「立即比对」",
|
||||
pickBatchRun: "选择比对批次",
|
||||
pickRun: "选择批次…",
|
||||
resultEmpty: "无匹配差异行",
|
||||
resultFilterPh: "筛选 key / 字段值…",
|
||||
kindAll: "全部类型",
|
||||
|
|
|
|||
|
|
@ -9917,6 +9917,28 @@ html.login-page--paused .login-page__flare {
|
|||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.nm-page-panel .nm-config-modal__tabs button.is-active,
|
||||
.bs-cmp-job-body .nm-config-modal__tabs button.is-active {
|
||||
outline: 2px solid rgba(37, 99, 235, 0.55);
|
||||
outline-offset: 1px;
|
||||
box-shadow: 0 0 0 1px rgba(37, 99, 235, 0.25);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.bs-cmp-metric-chips {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.bs-cmp-metric-chip {
|
||||
display: inline-block;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
background: rgba(148, 163, 184, 0.14);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* biz_state batch workbook (Excel-like sheets) */
|
||||
.bs-workbook-modal .bs-workbook-body {
|
||||
min-height: min(62vh, 640px);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue