Commit Graph
100 Commits
Author SHA1 Message Date
jiang cddfc8647d docs: update server operations guide
Generic Container CI/CD / test-build-publish (push) Successful in 5m20s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 5m20s
2026-10-23 14:29:44 +08:00
jiang 1d061f6099 feat: add project-scoped operations
Generic Container CI/CD / test-build-publish (push) Failing after 6s
Server CI/CD v2 / build-test-publish-and-deploy (push) Failing after 6s
2026-10-22 18:40:20 +08:00
jiang d320972d57 fix(docker): pin GeoServer platform manifest 2026-10-22 13:03:26 +08:00
jiang b4f3204489 chore(docker): advance PostGIS 14 patch line 2026-10-22 12:30:30 +08:00
jiang 1e71f8953b test(server): align service access delegation expectation 2026-10-22 12:18:12 +08:00
jiang f3818b3fed fix(docker): include runtime samples in image 2026-10-22 12:14:40 +08:00
jiang 024abf07a8 chore(docker): pin secure runtime and resolve MCP dependencies 2026-10-22 12:08:36 +08:00
jiang be6317eb48 feat(server): integrate MCP queries and investigation messaging
Add project-bound OAuth MCP queries and controlled analysis with scoped evidence,
limits, timeouts and a nearby-model spatial query using EPSG:4326 inputs.
Default nearby searches to 200 meters and five results.

Integrate investigation messaging/presentation, health/readiness and typed history;
remove duplicate web search and fix online simulation and compressed baseline writes.
Include project migrations 023-025; keep local credentials and demo seeding excluded.

Validation: 319 focused pytest checks; real PostGIS temporary-table regression;
read-only Jinqian bridge radius comparison; cross-language MCP discovery/calls.
2026-10-19 18:46:58 +08:00
jiang 2b6fc5aa52 feat(tasks): define investigation report contract and history 2026-10-10 16:02:46 +08:00
jiang 4a63fcd7ff fix(workbench): serialize events and target work order sync 2026-10-08 15:41:49 +08:00
jiang b70283c2ff feat(work-orders): synchronize peripheral changes through events 2026-10-08 11:50:15 +08:00
jiang afcbd52a5a refactor(tasks): centralize access request lookup 2026-09-24 17:11:21 +08:00
jiang 540d73add8 docs(workbench): clarify active notification counting 2026-09-24 17:00:41 +08:00
jiang ad813a7c16 feat(workbench): add dynamic task approval lifecycle 2026-09-24 16:36:12 +08:00
jiang db092b0f5e feat(workbench): keep only actionable notifications 2026-09-24 15:18:18 +08:00
jiang e374b5b3cb fix(workbench): remove synthetic check projections 2026-09-24 12:01:01 +08:00
jiang 1a6ff64bbe feat(db): add workbench schema comments 2026-09-24 10:33:12 +08:00
jiang 91afe76c6d docs(workbench): gate database rollout by project 2026-09-24 10:13:52 +08:00
jiang ed06bc2bfc fix(workbench): configure psycopg snapshot transaction
Open the psycopg transaction without unsupported SQLAlchemy-style options, then set the PostgreSQL isolation and read-only characteristics before the first query. Cover the exact snapshot endpoint path with a regression test.
2026-09-24 09:49:01 +08:00
jiang 9335bdc1ea feat(workbench): persist operational workflows and events 2026-09-24 04:19:02 +08:00
jiang baff7dfe9e chore(api): refresh workbench contracts 2026-09-22 10:44:43 +08:00
jiang 7ab9b36a5e feat(workbench): add runtime GIS and sample integrations 2026-09-22 10:44:31 +08:00
jiang a3b4e75317 fix(api): return real total for user pagination 2026-09-15 10:55:29 +08:00
jiang 682c26fddd feat(timeseries): unify element history queries 2026-09-14 12:30:41 +08:00
jiang 0685f6dd17 fix(sensor): use published coordinates for custom SRIDs
Result validation bypassed the project-specific GIS transform and called ST_Transform on custom engineering SRIDs. Read project and map coordinates from gis.junctions so every project uses its configured publication transform.
2026-09-11 11:29:51 +08:00
jiang 90b02057bc feat(projects): automate project infrastructure provisioning 2026-09-11 10:57:51 +08:00
jiang 10a7a66a41 fix(metadata): hide inactive projects from user list
Project selection previously relied only on membership, so inactive projects remained visible. Filter at the repository boundary and add regression coverage.
2026-09-10 14:49:53 +08:00
jiang bd857ea5e1 fix(ci): test backend in container environment 2026-09-08 18:26:20 +08:00
jiang 8942541759 feat(scada): serve project devices through pooled API 2026-09-08 18:18:30 +08:00
jiang 5966d039de refactor(backend)!: separate algorithm and data layers
Reorganize algorithm packages by business responsibility, move orchestration into services, and keep database access behind pooled repositories.

Harden analysis API validation, remove unsafe legacy simulation endpoints, and add regression and architecture boundary coverage.

BREAKING CHANGE: legacy algorithm module paths and obsolete simulation endpoints are removed.
2026-09-04 17:30:55 +08:00
jiang 9b095c7439 refactor(db)!: clean up business SQL access
- make realtime replacement and analysis result writes transactional\n- consolidate SCADA repositories and remove process-global project state\n- validate SCADA batches and use indexed GIS-backed business queries\n\nBREAKING CHANGE: remove the public analysis result writer and the pipeline-health network_name query parameter.
2026-08-28 11:37:36 +08:00
jiang b74799a39d refactor(db)!: finalize pooled WNDB v2 migration 2026-08-27 17:26:22 +08:00
jiang fa188af0b1 refactor(db)!: adopt project-routed pooled databases
Reorganize WNDB by responsibility and remove legacy scheme endpoints.\n\nRoute analysis and time-series access through project pools, preserve transactional realtime replacement, and refresh GIS materialized views after writes.\n\nAdd database architecture documentation, live pooling coverage, API contract updates, and executable container verification.\n\nBREAKING CHANGE: legacy scheme APIs and flat app.native.wndb module imports are removed.
2026-08-25 18:35:05 +08:00
jiang fdbcc5c033 docs: clarify production configuration handling 2026-08-20 16:19:44 +08:00
jiang d63d7ef1b6 merge: route project DSNs and remove legacy storage backends
Merge PR #2 after isolated OpenAPI, test, container build, and runtime smoke verification.
2026-08-18 18:34:47 +08:00
jiang 6b09662de6 refactor(storage): route project DSNs and remove legacy backends 2026-08-18 18:29:09 +08:00
jiang b21eaffe40 merge: integrate agent-mvp into master
Merge PR #1 after backend security and contract gates passed.
2026-08-18 17:56:43 +08:00
jiang 8853877fcd fix(security): close backend merge blockers 2026-08-18 17:51:29 +08:00
jiang 2581631b51 feat(simulation): 支持冲洗阀门状态与设置值 2026-08-17 18:28:57 +08:00
jiang c250e97b87 ci(backend): block releases missing frontend API contract 2026-08-11 11:11:39 +08:00
jiang 69a7d53aff ci: replace webhook deployment with v2 workflow 2026-08-11 10:17:01 +08:00
jiang e4975b7be3 fix(container): exclude runtime configuration from image 2026-08-11 10:10:21 +08:00
jiang a7e1ce6ef4 fix(db): enforce metadata membership foreign keys 2026-08-06 20:32:57 +08:00
jiang 4350612807 refactor(cli): remove deprecated Python implementation 2026-08-06 15:58:47 +08:00
jiang b0a23a8012 fix(cli): map timeseries element types for backend 2026-08-05 18:39:00 +08:00
jiang 70c5b0e445 fix(keycloak): design logout completion page 2026-08-05 17:57:49 +08:00
jiang 29f691731c fix(auth): enforce Keycloak access token age 2026-08-05 17:10:59 +08:00
jiang 1432934f12 feat(sensor): 返回候选节点最大管径 2026-08-03 19:00:00 +08:00
jiang b0e9d480ef refactor(sensor): 优化灵敏度监测点布置算法 2026-08-03 18:34:13 +08:00
jiang 87d922ea61 refactor(db): retain scheme start time as text 2026-08-03 11:18:38 +08:00
jiang c126e99b60 docs(api): align project lock contract 2026-08-03 11:12:31 +08:00
jiang b6a6527bab refactor(auth): remove project-local user API 2026-08-03 10:39:41 +08:00
jiang f010f071eb refactor(db): align project template schema 2026-08-03 10:39:31 +08:00
jiang 0be31869b5 fix(api): encode untyped datetime responses 2026-07-31 18:39:36 +08:00
jiang eac6b78598 fix(ci): align backend image with deployment 2026-07-31 00:01:21 +08:00
jiang 1d88f8efbe fix(api): wrap pre-paginated list responses 2026-07-30 21:50:21 +08:00
jiang ba947b616b feat(api): standardize REST contracts and auth 2026-07-30 20:38:51 +08:00
jiang ae1a657554 feat(server): add project RBAC and guarded workflows 2026-07-30 16:45:09 +08:00
jiang 3fbb17bb30 fix(sensor-placement): enforce project write boundaries
Bind every scheme request to ProjectContext, keep viewer access read-only, reject concurrent optimization jobs without blocking worker threads, and cap export/update payload sizes. Run optimization and workbook work off the event loop.
2026-07-30 16:21:38 +08:00
jiang ddbb50173c feat(sensor-placement): add editable scheme APIs 2026-07-30 16:16:51 +08:00
jiang 437eb5a19a fix(auth): require preferred username claim 2026-07-30 14:21:21 +08:00
jiang 31e2728db1 refactor(api): unify scheme query endpoints 2026-07-30 11:01:45 +08:00
jiang 03bb2d75c2 docs: 编写中文 README 2026-07-22 11:26:06 +08:00
jiang b977bf6725 fix(db): validate cached project connections 2026-07-21 11:26:21 +08:00
jiang 045d6c5b49 fix(simulation): use current user for stored schemes 2026-07-17 16:49:20 +08:00
jiang db6032bd84 feat(burst-detection): update scada analysis flow 2026-07-17 16:31:46 +08:00
jiang b4ecfbb87a fix(scada): use project-scoped metadata 2026-07-17 16:28:40 +08:00
jiang a204980944 fix(leakage): accept display flow units 2026-07-17 11:45:58 +08:00
jiang 2b5f9b8514 fix(simulation): use report step for schemes 2026-07-16 15:47:26 +08:00
jiang ca1579dcc2 fix(api): include simulation burst ids 2026-07-16 14:50:22 +08:00
jiang 775ecb8a58 fix(simulation): use hydraulic timestep 2026-07-16 14:16:06 +08:00
jiang f72b56845f fix(wndb): refresh closed project connections 2026-07-16 12:07:44 +08:00
jiang baeaa8a2e1 fix(burst-location): correct normal data window 2026-07-09 11:51:40 +08:00
jiang ca97de2e51 fix(burst-location): tolerate partial SCADA gaps 2026-07-09 10:49:53 +08:00
jiang 71fa2ae18c ci: unzip health model in image build 2026-07-08 19:02:54 +08:00
jiang 76cf6c32bc fix(agent): expose network context 2026-07-08 18:41:56 +08:00
jiang 5a91da0904 fix(burst-location): use correct data sources
Simulation mode reads scheme data for both burst and normal observations. Monitoring mode reuses the burst window when no normal window is provided.
2026-07-08 17:51:08 +08:00
jiang d62bcae85e fix(burst-location): normalize simulation ids 2026-07-08 17:17:41 +08:00
jiang 4c0a4b29e9 refactor(metadata): drop geoserver config refs 2026-06-13 14:57:33 +08:00
jiang 80ca985c28 fix(cli): use renamed backend APIs 2026-06-13 13:56:44 +08:00
jiang 5a55d65002 refactor(api): add kebab-case legacy aliases 2026-06-13 13:07:16 +08:00
jiang d99f4cec6a refactor(admin): remove geoserver config 2026-06-12 15:28:14 +08:00
jiang a6e7a2e75c feat(admin): add project metadata config 2026-06-12 15:08:37 +08:00
jiang 23c008f602 feat(auth): migrate to Keycloak metadata auth 2026-06-12 10:18:41 +08:00
jiang 2a762e63a7 添加 Gitea 服务器 URL 和用户解析功能 2026-06-10 16:27:42 +08:00
jiang f6939f5516 移除 db_inp 目录的复制,添加临时文件夹创建 2026-06-10 16:22:38 +08:00
jiang bbf6a0f7ba 更新代码检出步骤和工作区验证提示信息 2026-06-10 16:16:26 +08:00
jiang 5fd82b8e7c 添加代码检出步骤以确保工作区有效 2026-06-10 15:44:41 +08:00
jiang 2a823b2616 移除代码检出步骤,添加工作区验证 2026-06-10 15:41:59 +08:00
jiang 2af89eea1c 优化环境变量检查逻辑,移除不必要的密钥 2026-06-10 15:18:10 +08:00
jiang 26643d68c7 feat(ci): 添加 Gitea 仓库密钥 TJWATER_SERVER_ENV 检查 2026-06-10 15:08:47 +08:00
jiang f35287d3cf 更新 dockerfile 2026-06-10 11:45:22 +08:00
jiang 4fa8e55748 删除 copilot 自述文件 2026-06-09 18:24:14 +08:00
jiang 7a9fcaae81 ci: add deployment trigger script 2026-06-09 18:22:16 +08:00
jiang a1e9673d9a ci: add Gitea package workflow 2026-06-09 18:18:22 +08:00
jiang e588d1cf33 feat(api): add Tianditu geocoding 2026-06-09 17:09:42 +08:00
jiang 1712ecd4c7 feat(api): add web search endpoint 2026-06-09 16:13:24 +08:00
jiang 441979f581 修改默认超时时间 2026-06-05 19:11:53 +08:00
jiang e336ffcd46 移除存在无效数据的 cli 命令 2026-06-05 16:42:03 +08:00
jiang 52b8f07abd 更新 cli 命令,新增 network 其他元素的属性查询 2026-06-05 15:48:53 +08:00