mirror of
https://github.com/hansjone/netx.git
synced 2026-10-11 01:43:21 +08:00
Add cutover migration monitor and day-based batch retention.
Protect baselines and compare/migration-referenced batches from purge or delete, and let operators mark baselines and clean high-freq data manually. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
c7539e379d
commit
8631f58113
23 changed files with 3837 additions and 91 deletions
|
|
@ -158,6 +158,7 @@ const en = {
|
|||
portTrafficWall: "Traffic wall",
|
||||
bizState: "Business state",
|
||||
bizCompare: "Business compare",
|
||||
bizMigration: "Cutover monitor",
|
||||
},
|
||||
collapseNav: "Collapse sidebar",
|
||||
expandNav: "Expand sidebar",
|
||||
|
|
@ -199,7 +200,25 @@ const en = {
|
|||
intervalUnitDays: "days",
|
||||
intervalUnitHours: "hours",
|
||||
intervalUnitSeconds: "seconds",
|
||||
retention: "Keep batches",
|
||||
retention: "Retention days",
|
||||
retentionHint: "Batches older than this are purged; baselines and compare/cutover refs are kept.",
|
||||
dailyKeepEnabled: "Daily keep policy",
|
||||
dailyKeepCount: "Keep per day",
|
||||
dailyKeepHint: "When on: keep only the newest N batches per past day; extras purge next day (off by default).",
|
||||
markBaseline: "Mark baseline",
|
||||
unmarkBaseline: "Unmark baseline",
|
||||
baseline: "Baseline",
|
||||
protected: "Protected",
|
||||
deleteBatch: "Delete",
|
||||
bulkDelete: "Bulk delete",
|
||||
confirmDeleteBatch: "Delete this batch? Protected batches cannot be deleted.",
|
||||
confirmBulkDelete: "Delete {{count}} selected batches? Protected ones are skipped.",
|
||||
batchDeleted: "Batch deleted",
|
||||
bulkDeleted: "Deleted {{deleted}}, skipped {{skipped}}",
|
||||
purgeNow: "Purge now",
|
||||
purgeOk: "Purge done: dropped {{dropped}}",
|
||||
selectAll: "Select deletable",
|
||||
colProtect: "Protect",
|
||||
saveSchedule: "Save schedule",
|
||||
scheduleSaved: "Schedule saved",
|
||||
colInterval: "Interval",
|
||||
|
|
@ -428,6 +447,89 @@ const en = {
|
|||
colKey: "Identity",
|
||||
colChange: "Changes",
|
||||
},
|
||||
bizMigration: {
|
||||
title: "Cutover monitor",
|
||||
hint: "Separate from business compare: baseline drift, expect set, dual-device verdict. Reuses collect tasks and port mappings.",
|
||||
hintPort:
|
||||
"Metric focus: port status (interface_brief / admin·phy·prot). Baseline → pick ports → evaluate board.",
|
||||
createProject: "New cutover project",
|
||||
projectName: "Project name",
|
||||
oldTask: "Old-device collect task",
|
||||
newTask: "New-device collect task",
|
||||
portMapping: "Port mapping",
|
||||
oldBaseline: "Old baseline batch",
|
||||
newBaseline: "New baseline batch (optional)",
|
||||
needProjectFields: "Enter a name and pick old/new collect tasks",
|
||||
needExpectPorts: "Select at least one expected port for this batch",
|
||||
needBaselineFirst: "Save an old baseline batch first to list ports",
|
||||
projectCreated: "Project created",
|
||||
projects: "Projects",
|
||||
emptyProjects: "No cutover projects yet",
|
||||
saveBaseline: "Save baseline / mapping",
|
||||
baselineSaved: "Baseline saved",
|
||||
pickExpectPorts: "Expected ports (from old baseline)",
|
||||
portFilterPh: "Filter interface / description",
|
||||
emptyBaselinePorts: "No interface_brief rows in baseline (enable that profile on the task)",
|
||||
batchLabel: "Batch label",
|
||||
defaultBatchLabel: "Night N",
|
||||
expectPorts: "Expected ports (old side)",
|
||||
expectPortsPh: "Comma or newline separated",
|
||||
createBatch: "New batch",
|
||||
batchCreated: "Batch created",
|
||||
batches: "Batches",
|
||||
startBatch: "Start batch",
|
||||
finishBatch: "Finish batch",
|
||||
evaluate: "Evaluate now",
|
||||
evaluated: "Evaluation done",
|
||||
statusUpdated: "Status updated",
|
||||
board: "Progress board",
|
||||
metricPort: "Port status",
|
||||
progress: "Progress",
|
||||
anomaly: "Anomaly",
|
||||
onlyExpect: "Expected ports only",
|
||||
colMetric: "Metric",
|
||||
colKey: "Object",
|
||||
colPort: "Old port",
|
||||
colMapped: "Mapped new",
|
||||
colDesc: "Description",
|
||||
colOldPort: "Old port",
|
||||
colNewPort: "New port",
|
||||
colOldStatus: "Old admin/phy/prot",
|
||||
colNewStatus: "New admin/phy/prot",
|
||||
colOld: "Old",
|
||||
colNew: "New",
|
||||
colVerdict: "Verdict",
|
||||
emptyDiffs: "No rows yet — run Evaluate",
|
||||
verdictMigrated: "Migrated",
|
||||
verdictMigrating: "Migrating",
|
||||
verdictLost: "Lost",
|
||||
verdictAnomaly: "Anomaly",
|
||||
verdictNotInvolved: "Not involved",
|
||||
verdictUnexpected: "Unexpected new",
|
||||
verdictOk: "OK",
|
||||
enableHighfreq: "Enable high-freq port collect",
|
||||
highfreqHint:
|
||||
"Creates/reuses biz-state tasks with interface_brief only on old/new NEs. Add BGP etc. later on the same tasks in Business state.",
|
||||
highfreqReady: "High-freq port collect tasks ready and bound to this project",
|
||||
collectNow: "Collect old+new now",
|
||||
collectTriggered: "Collect triggered",
|
||||
openBizState: "Open business state",
|
||||
boundTasks: "Bound collect tasks",
|
||||
acceptTitle: "Batch acceptance summary",
|
||||
acceptPassed: "Batch acceptance passed",
|
||||
acceptFailed: "Batch acceptance failed ({{n}} red tickets; you may continue)",
|
||||
acceptPassedShort: "Passed",
|
||||
acceptFailedShort: "Failed",
|
||||
acceptCarryHint: "Failure does not block the next batch; red tickets stay until resolved.",
|
||||
openRedHint: "{{n}} open red ticket(s) on this project (carry allowed)",
|
||||
redTitle: "Red tickets",
|
||||
redOpen: "open",
|
||||
resolveRed: "Resolve",
|
||||
redResolved: "Red ticket resolved",
|
||||
batchCreatedWithRed: "Batch created ({{n}} open red tickets; carry allowed)",
|
||||
colStatus: "Status",
|
||||
verdictUnfinished: "Unfinished",
|
||||
},
|
||||
portTraffic: {
|
||||
title: "Port traffic",
|
||||
create: "Monitor device",
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ const zh = {
|
|||
portTrafficWall: "流量大屏",
|
||||
bizState: "业务状态监控",
|
||||
bizCompare: "业务状态比对",
|
||||
bizMigration: "割接监控",
|
||||
},
|
||||
collapseNav: "折叠侧栏",
|
||||
expandNav: "展开侧栏",
|
||||
|
|
@ -199,7 +200,25 @@ const zh = {
|
|||
intervalUnitDays: "天",
|
||||
intervalUnitHours: "小时",
|
||||
intervalUnitSeconds: "秒",
|
||||
retention: "保留批次数",
|
||||
retention: "保留天数",
|
||||
retentionHint: "超过天数的批次会自动清理;基线与比对/割接引用的批次不会删除。",
|
||||
dailyKeepEnabled: "每日保留策略",
|
||||
dailyKeepCount: "每天保留次数",
|
||||
dailyKeepHint: "开启后:过去每一天只保留最近 N 次,多余在次日清理(默认关闭)。",
|
||||
markBaseline: "标为基线",
|
||||
unmarkBaseline: "撤销基线",
|
||||
baseline: "基线",
|
||||
protected: "已保护",
|
||||
deleteBatch: "删除",
|
||||
bulkDelete: "批量删除",
|
||||
confirmDeleteBatch: "删除该采集批次?受保护的批次无法删除。",
|
||||
confirmBulkDelete: "删除选中的 {{count}} 个批次?受保护的会自动跳过。",
|
||||
batchDeleted: "已删除批次",
|
||||
bulkDeleted: "已删除 {{deleted}} 个,跳过 {{skipped}} 个",
|
||||
purgeNow: "立即清理",
|
||||
purgeOk: "清理完成:删除 {{dropped}} 个批次",
|
||||
selectAll: "全选可删",
|
||||
colProtect: "保护",
|
||||
saveSchedule: "保存周期",
|
||||
scheduleSaved: "周期配置已保存",
|
||||
colInterval: "周期",
|
||||
|
|
@ -426,6 +445,88 @@ const zh = {
|
|||
colKey: "身份",
|
||||
colChange: "变更",
|
||||
},
|
||||
bizMigration: {
|
||||
title: "割接监控",
|
||||
hint: "与业务状态比对独立:相对基线漂移 + 本批预期 + 老/新双端判定。复用采集任务与端口映射。",
|
||||
hintPort: "当前监控项:端口状态(interface_brief / admin·phy·prot)。选基线 → 勾选本批端口 → 判定看板。",
|
||||
createProject: "新建割接项目",
|
||||
projectName: "项目名称",
|
||||
oldTask: "老设备采集任务",
|
||||
newTask: "新设备采集任务",
|
||||
portMapping: "端口映射",
|
||||
oldBaseline: "老设备基线批次",
|
||||
newBaseline: "新设备基线批次(可选)",
|
||||
needProjectFields: "请填写项目名并选择老/新采集任务",
|
||||
needExpectPorts: "请先勾选本批预期迁移的端口",
|
||||
needBaselineFirst: "请先保存老设备基线批次,才能列出端口",
|
||||
projectCreated: "项目已创建",
|
||||
projects: "项目",
|
||||
emptyProjects: "暂无割接项目",
|
||||
saveBaseline: "保存基线/映射",
|
||||
baselineSaved: "基线已保存",
|
||||
pickExpectPorts: "本批预期端口(来自老基线)",
|
||||
portFilterPh: "筛选接口名 / 描述",
|
||||
emptyBaselinePorts: "基线中无端口状态数据(确认任务已采 interface_brief)",
|
||||
batchLabel: "批次标签",
|
||||
defaultBatchLabel: "第N晚",
|
||||
expectPorts: "本批预期端口(老侧)",
|
||||
expectPortsPh: "逗号或换行分隔",
|
||||
createBatch: "新建批次",
|
||||
batchCreated: "批次已创建",
|
||||
batches: "批次",
|
||||
startBatch: "本批开始",
|
||||
finishBatch: "本批完成",
|
||||
evaluate: "立即判定",
|
||||
evaluated: "判定完成",
|
||||
statusUpdated: "状态已更新",
|
||||
board: "进度看板",
|
||||
metricPort: "端口状态",
|
||||
progress: "进度",
|
||||
anomaly: "异常",
|
||||
onlyExpect: "仅看预期端口",
|
||||
colMetric: "监控项",
|
||||
colKey: "对象",
|
||||
colPort: "老侧端口",
|
||||
colMapped: "映射新口",
|
||||
colDesc: "描述",
|
||||
colOldPort: "老端口",
|
||||
colNewPort: "新端口",
|
||||
colOldStatus: "老状态 admin/phy/prot",
|
||||
colNewStatus: "新状态 admin/phy/prot",
|
||||
colOld: "老侧",
|
||||
colNew: "新侧",
|
||||
colVerdict: "判定",
|
||||
emptyDiffs: "暂无明细,请先「立即判定」",
|
||||
verdictMigrated: "已迁移",
|
||||
verdictMigrating: "迁移中",
|
||||
verdictLost: "丢失",
|
||||
verdictAnomaly: "异常",
|
||||
verdictNotInvolved: "未涉及",
|
||||
verdictUnexpected: "意外新增",
|
||||
verdictOk: "正常",
|
||||
enableHighfreq: "开启高频端口采集",
|
||||
highfreqHint:
|
||||
"在业务监控下为老/新设备各建(或复用)仅含 interface_brief 的任务并周期采集;后续要加 BGP 等直接去业务监控勾选即可。",
|
||||
highfreqReady: "高频端口采集任务已就绪(已绑定到本项目)",
|
||||
collectNow: "立即采集老+新",
|
||||
collectTriggered: "已触发采集",
|
||||
openBizState: "打开业务监控",
|
||||
boundTasks: "当前绑定采集任务",
|
||||
acceptTitle: "本批验收小结",
|
||||
acceptPassed: "本批验收通过",
|
||||
acceptFailed: "本批验收未通过(红单 {{n}},可带红开下一批)",
|
||||
acceptPassedShort: "通过",
|
||||
acceptFailedShort: "未通过",
|
||||
acceptCarryHint: "验收不过不拦截:可新建下一批继续;红单保留留痕,可手动关闭。",
|
||||
openRedHint: "项目仍有 {{n}} 条未关闭红单(带红继续)",
|
||||
redTitle: "红单留痕",
|
||||
redOpen: "未关闭",
|
||||
resolveRed: "关闭",
|
||||
redResolved: "红单已关闭",
|
||||
batchCreatedWithRed: "批次已创建(当前有 {{n}} 条未关闭红单,允许带红继续)",
|
||||
colStatus: "状态",
|
||||
verdictUnfinished: "未完成",
|
||||
},
|
||||
portTraffic: {
|
||||
title: "端口流量监控",
|
||||
create: "添加设备监控",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue