Commit graph

80 commits

Author SHA1 Message Date
c06beecfe6 Unify sync status deleted into single deleted field
API GET /v1/ume/sync/status exposes deleted only (sum of inventory NE + current-alarm reconcile counts from details_json). UI one column.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 18:51:30 +08:00
ac1f573508 Remove UME equipment-holder table; inventory is NE-only
Drop ume_inventory_equipment_holder on startup; remove ORM model and sync/reconcile paths. Sync status API/UI no longer expose deleted_inventory_holders. Nested holder data remains in ne raw_json if UME returns it.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 18:48:45 +08:00
a025245c8f Show UME sync delete counts in API and UME UI
Parse UmeSyncJob.details_json in GET /v1/ume/sync/status for deleted_inventory_ne, deleted_inventory_holders, deleted_stale_current_alarms. Add table columns on UmePage and types.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 18:38:08 +08:00
340fc8ee7d Reconcile UME inventory and current alarms with full snapshot
After a complete marker pull (is_end_of_reply, no iterator/dup abort), delete local NE/holders and current alarms not present in this batch. Replace 48h-only current-alarm expiry. Flush before bulk delete to avoid ORM stale updates. Job/batch JSON records deleted counts and reconcile flags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 18:31:04 +08:00
c5f82f512d Include host_name in UME NE keyword search
Extend GET /v1/ume/inventory/ne keyword filter with host_name; update Web placeholder.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 17:27:25 +08:00
68c622979b fix(oclaw-bridge): disable system proxy for localhost health calls
Set trust_env=False on netx->oclaw analyze and health clients so localhost checks are not routed through host proxies.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 16:10:34 +08:00
ea0d324624 feat(UME): add raw query, flexible aggregate, and safe SQL endpoint
- Add /v1/ume/alarms/fields and /v1/ume/alarms/raw (select_fields + meta)
- Add /v1/ume/alarms/aggregate/raw with filter/meta echo
- Add /v1/sql/ume_query with table allowlist and optional statement_timeout
- Update README and expand UME regression tests

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 00:06:21 +08:00
84cf70cde3 feat(UME): 增加后台任务监控并启用5分钟告警自动同步
新增当前告警自动同步后台线程(默认300s一次)并提供开关配置;在 /v1/ume/sync/status 返回 runtime_tasks,前端“当前任务”面板展示保活与自动同步运行状态;同时隐藏历史告警UI但保留后端能力。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 22:40:02 +08:00
d0994f6e53 feat(UME): 完善网元字段注释并补齐IPv6地址字段
为 ume_inventory_ne 的关键字段补充建表注释并在启动时执行 COMMENT ON 同步历史库结构,同时新增 ipv6_address 字段并完成入库映射、接口返回与前端类型定义对齐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 22:19:06 +08:00
037873423d feat(UME): 网元与告警统一marker分页能力
将 marker 分页逻辑抽象为通用流程并同时应用于网元和告警同步,默认按 limit+marker 拉取全量数据,统一处理 is-end-of-reply、缺失marker和重复页保护。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 21:44:21 +08:00
00afaaae3d fix(UME): 兼容首批无marker场景并补充回归测试
告警分页在响应头缺失 marker 时直接结束迭代,避免首批已全量却重复翻页;同时补充对应单测并保持 HTTPTransport 传输方式与现网一致。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 20:13:10 +08:00
2c0b52d972 fix(UME): 改用HTTPTransport并增强token失败提示
UME 客户端改为显式 HTTPTransport 以匹配现网可用链路,前端在手动登录/续期或断开 token 失败时优先展示后端返回的错误信息,便于快速定位问题。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 19:15:10 +08:00
267eddb273 feat(UME): 切换marker分页并简化告警表字段
告警同步改为按响应头 marker 连续迭代,支持 iterator is null 的500尾页兜底,同时移除告警表中的 ne_name/user_label 冗余字段,统一在查询层与网元表 join 补齐展示信息。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 18:58:24 +08:00
3ea4f08bea feat(UME): 完善网元元数据入库并增强告警/前端展示
补齐 ume_inventory_ne 的关键元数据字段并在同步时结构化落库,支持从 alarmkey 推导 ne_id、告警查询连表补齐 user_label/ne_name,同时优化 UME 页面分页显示与网元展开详情,提升运维排障可读性。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 17:02:57 +08:00
3396111f2d fix(UME): 按现场实测调整请求头并强制HTTP/1.1
- 请求头仅保留 content-type 与 accessToken,不再发送 accept/application

- 统一通过 httpx.Client(http2=False) 调用,避免 UME 在 HTTP/2 下超时

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 11:36:06 +08:00
7f2e4ec393 feat(UME): 增加RESTCONF对接与可视化运维页
- 支持 token 获取/续约/断开、DB共享缓存与跨进程单飞锁、keepalive 保活

- 新增 inventory/current/history 告警同步入库与查询接口,前端增加 UME 对接页面与分页

- 修复 stop_netx.ps1 在部分 PowerShell 版本下 Stop-Job -Force 报错

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 01:36:53 +08:00
ab1b76dd47 feat(start): auto-install web dependencies when WithWeb is enabled
Install frontend npm dependencies automatically in start_netx so fresh machines can bring up the 5173 Vite UI without separate manual npm install.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 17:38:14 +08:00
d529ff70ff fix(start): launch Vite in foreground API mode when WithWeb is set
Start the web dev server for -WithWeb even without -Background so 5173 is available in the common foreground run path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 17:26:26 +08:00
dbe3062d1b fix(setup): avoid DO $$ in init_pg role bootstrap
Replace the DO-block role upsert with explicit role existence check plus CREATE/ALTER statements, preventing PowerShell/psql quoting issues on some Windows setups.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 17:17:30 +08:00
a0264e5e94 fix(setup): escape DO $$ in PowerShell heredoc
Use escaped $$ delimiters inside the SQL block so PowerShell does not treat them as interpolation and break init_pg on first-run setup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 17:13:31 +08:00
46745b372f fix(setup): escape PowerShell vars in printed DATABASE URL
Use ${...} interpolation in init_pg output to avoid InvalidVariableReferenceWithDrive when rendering user:password@host:port.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 17:00:04 +08:00
32bfa78383 feat(setup): add idempotent PostgreSQL bootstrap script for first install
Provide a Windows init script to create/repair the netx role and database with a connection check, and document the step in README so new machines avoid initial auth failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 16:47:12 +08:00
d48cd000d3 fix(scripts): harden stop_netx and tweak start_netx
- Add timeout around Get-NetTCPConnection to avoid hangs; filter invalid PIDs; exit 0 on completion.
- Minor start_netx adjustments.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-06 11:06:18 +08:00
27c1826fc5 docs: add MIT license, security policy, and README updates
Generic sample import instructions; expand CONTRIBUTING with upstream remote.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-04 12:53:56 +08:00
45463027df fix: declare httpx dependency for netx API
ap_client uses httpx; missing from requirements caused ModuleNotFoundError when using -SkipInstall.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-04 12:28:26 +08:00
0e0d6141e0 docs: add CONTRIBUTING and GitHub issue templates
Document fork/PR workflow; add bug and feature issue templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-04 12:17:04 +08:00
b997c3ee49 docs: update sample alarm file path after rename
Keep README key sample path aligned with the renamed CHEN alarm folder and file names.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-04 00:45:07 +08:00
f718807fa4 docs: document full environment setup and enforce venv startup
Add a from-scratch setup section covering Python, Node/npm, PostgreSQL, and startup commands, and update the startup script to always create/use .venv instead of falling back to system Python.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-03 23:53:24 +08:00
e50c0b1f0b chore: ignore runtime process artifacts
Exclude scripts/.run runtime logs and pid files from version control and remove previously tracked artifacts from the repository index.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-03 23:44:44 +08:00
f49c0b5bad feat: initialize netx ops tool repository
Set up netx as a standalone git-managed project with isolated Python dependencies, alarm ingestion/query APIs, oclaw bridge integration, and ops-focused UI enhancements including history and raw field access.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-03 23:43:21 +08:00