From c56f2fd1db6a15f51c8ae86eabdd484a7790ac1e Mon Sep 17 00:00:00 2001 From: Jiang Date: Wed, 21 Jan 2026 16:50:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=8E=B0=E4=BB=A3=E5=8C=96?= =?UTF-8?q?=20FastAPI=20=E5=90=8E=E7=AB=AF=E9=A1=B9=E7=9B=AE=E6=A1=86?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/__init__.py | 0 app/algorithms/__init__.py | 0 .../algorithms/api_ex}/Fdataclean.py | 0 .../algorithms/api_ex}/Pdataclean.py | 0 {api_ex => app/algorithms/api_ex}/__init__.py | 0 .../algorithms/api_ex}/kmeans_sensor.py | 0 .../model/my_survival_forest_model_quxi.zip | Bin .../api_ex}/pipeline_health_analyzer.py | 0 .../algorithms/online_Analysis.py | 14 +++---- .../algorithms/sensitivity.py | 0 .../algorithms/sensor_placement.py | 0 app/api/__init__.py | 0 app/api/v1/__init__.py | 0 app/api/v1/endpoints/__init__.py | 0 app/api/v1/endpoints/auth.py | 0 app/api/v1/endpoints/extension.py | 0 app/api/v1/endpoints/network_elements.py | 0 app/api/v1/endpoints/project.py | 0 app/api/v1/endpoints/scada.py | 0 app/api/v1/endpoints/simulation.py | 0 app/api/v1/endpoints/snapshots.py | 0 app/api/v1/router.py | 20 ++++++++++ app/audit/__init__.py | 0 app/auth/__init__.py | 0 app/auth/dependencies.py | 21 ++++++++++ app/core/__init__.py | 0 app/core/audit.py | 3 ++ app/core/config.py | 30 +++++++++++++++ app/core/encryption.py | 9 +++++ app/core/security.py | 23 +++++++++++ app/crypto/__init__.py | 0 app/domain/__init__.py | 0 app/domain/models/__init__.py | 0 app/domain/schemas/__init__.py | 0 app/infra/__init__.py | 0 app/infra/audit/__init__.py | 0 app/infra/cache/__init__.py | 0 app/infra/db/__init__.py | 0 app/infra/db/influxdb/__init__.py | 0 .../infra/db/influxdb/api.py | 12 +++--- .../infra/db/influxdb/info.py | 0 .../infra/db/influxdb/query.py | 0 .../infra/db/postgresql}/__init__.py | 0 .../infra/db/postgresql}/database.py | 2 +- .../infra/db/postgresql}/internal_queries.py | 0 .../infra/db/postgresql}/router.py | 0 .../infra/db/postgresql}/scada_info.py | 0 .../infra/db/postgresql}/scheme.py | 0 .../infra/db/timescaledb}/__init__.py | 0 .../db/timescaledb}/composite_queries.py | 0 .../infra/db/timescaledb}/database.py | 2 +- .../infra/db/timescaledb}/internal_queries.py | 0 .../infra/db/timescaledb}/router.py | 0 .../infra/db/timescaledb}/schemas/realtime.py | 0 .../infra/db/timescaledb}/schemas/scada.py | 0 .../infra/db/timescaledb}/schemas/scheme.py | 0 .../infra/db/timescaledb}/timescaledb_info.py | 0 app/infra/repositories/__init__.py | 0 main.py => app/main.py | 22 +++++------ app/native/__init__.py | 0 .../native/api}/__init__.cp312-win_amd64.pyd | Bin .../__init__.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/batch_api.cp312-win_amd64.pyd | Bin .../batch_api.cpython-312-x86_64-linux-gnu.so | Bin .../api}/batch_api_cs.cp312-win_amd64.pyd | Bin ...tch_api_cs.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/batch_exe.cp312-win_amd64.pyd | Bin .../batch_exe.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/clean_api.cp312-win_amd64.pyd | Bin .../clean_api.cpython-312-x86_64-linux-gnu.so | Bin .../api}/connection.cp312-win_amd64.pyd | Bin ...connection.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/database.cp312-win_amd64.pyd | Bin .../database.cpython-312-x86_64-linux-gnu.so | Bin .../api}/extension_data.cp312-win_amd64.pyd | Bin ...nsion_data.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/inp_in.cp312-win_amd64.pyd | Bin .../inp_in.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/inp_out.cp312-win_amd64.pyd | Bin .../inp_out.cpython-312-x86_64-linux-gnu.so | Bin .../api}/postgresql_info.cp312-win_amd64.pyd | Bin ...resql_info.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/project.cp312-win_amd64.pyd | Bin .../project.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s0_base.cp312-win_amd64.pyd | Bin .../s0_base.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s10_status.cp312-win_amd64.pyd | Bin ...s10_status.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s11_patterns.cp312-win_amd64.pyd | Bin ...1_patterns.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s12_curves.cp312-win_amd64.pyd | Bin ...s12_curves.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s13_controls.cp312-win_amd64.pyd | Bin ...3_controls.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s14_rules.cp312-win_amd64.pyd | Bin .../s14_rules.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s15_energy.cp312-win_amd64.pyd | Bin ...s15_energy.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s16_emitters.cp312-win_amd64.pyd | Bin ...6_emitters.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s17_quality.cp312-win_amd64.pyd | Bin ...17_quality.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s18_sources.cp312-win_amd64.pyd | Bin ...18_sources.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s19_reactions.cp312-win_amd64.pyd | Bin ..._reactions.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s1_title.cp312-win_amd64.pyd | Bin .../s1_title.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s20_mixing.cp312-win_amd64.pyd | Bin ...s20_mixing.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s21_times.cp312-win_amd64.pyd | Bin .../s21_times.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s22_report.cp312-win_amd64.pyd | Bin ...s22_report.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s23_options.cp312-win_amd64.pyd | Bin ...23_options.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s23_options_util.cp312-win_amd64.pyd | Bin ...tions_util.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s23_options_v3.cp312-win_amd64.pyd | Bin ...options_v3.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s24_coordinates.cp312-win_amd64.pyd | Bin ...oordinates.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s25_vertices.cp312-win_amd64.pyd | Bin ...5_vertices.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s26_labels.cp312-win_amd64.pyd | Bin ...s26_labels.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s27_backdrop.cp312-win_amd64.pyd | Bin ...7_backdrop.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s28_end.cp312-win_amd64.pyd | Bin .../s28_end.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s29_scada_device.cp312-win_amd64.pyd | Bin ...ada_device.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s2_junctions.cp312-win_amd64.pyd | Bin ..._junctions.cpython-312-x86_64-linux-gnu.so | Bin .../s30_scada_device_data.cp312-win_amd64.pyd | Bin ...evice_data.cpython-312-x86_64-linux-gnu.so | Bin .../s31_scada_element.cp312-win_amd64.pyd | Bin ...da_element.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s32_region.cp312-win_amd64.pyd | Bin ...s32_region.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s32_region_util.cp312-win_amd64.pyd | Bin ...egion_util.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s33_dma.cp312-win_amd64.pyd | Bin .../s33_dma.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s33_dma_cal.cp312-win_amd64.pyd | Bin ...33_dma_cal.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s33_dma_gen.cp312-win_amd64.pyd | Bin ...33_dma_gen.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s34_sa.cp312-win_amd64.pyd | Bin .../s34_sa.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s34_sa_cal.cp312-win_amd64.pyd | Bin ...s34_sa_cal.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s34_sa_gen.cp312-win_amd64.pyd | Bin ...s34_sa_gen.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s35_vd.cp312-win_amd64.pyd | Bin .../s35_vd.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s35_vd_cal.cp312-win_amd64.pyd | Bin ...s35_vd_cal.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s35_vd_gen.cp312-win_amd64.pyd | Bin ...s35_vd_gen.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s36_wda.cp312-win_amd64.pyd | Bin .../s36_wda.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s36_wda_cal.cp312-win_amd64.pyd | Bin ...36_wda_cal.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s38_scada_info.cp312-win_amd64.pyd | Bin ...scada_info.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s39_user.cp312-win_amd64.pyd | Bin .../s39_user.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s3_reservoirs.cp312-win_amd64.pyd | Bin ...reservoirs.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s40_schema.cp312-win_amd64.pyd | Bin ...s40_schema.cpython-312-x86_64-linux-gnu.so | Bin ..._pipe_risk_probability.cp312-win_amd64.pyd | Bin ...robability.cpython-312-x86_64-linux-gnu.so | Bin .../s42_sensor_placement.cp312-win_amd64.pyd | Bin ..._placement.cpython-312-x86_64-linux-gnu.so | Bin ...43_burst_locate_result.cp312-win_amd64.pyd | Bin ...ate_result.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s4_tanks.cp312-win_amd64.pyd | Bin .../s4_tanks.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s5_pipes.cp312-win_amd64.pyd | Bin .../s5_pipes.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s6_pumps.cp312-win_amd64.pyd | Bin .../s6_pumps.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s7_valves.cp312-win_amd64.pyd | Bin .../s7_valves.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/s8_tags.cp312-win_amd64.pyd | Bin .../s8_tags.cpython-312-x86_64-linux-gnu.so | Bin .../api}/s9_demands.cp312-win_amd64.pyd | Bin ...s9_demands.cpython-312-x86_64-linux-gnu.so | Bin .../native/api}/sections.cp312-win_amd64.pyd | Bin .../sections.cpython-312-x86_64-linux-gnu.so | Bin app/services/__init__.py | 0 {epanet => app/services/epanet}/__init__.py | 0 .../services/epanet}/epanet-output.dll | Bin {epanet => app/services/epanet}/epanet.py | 0 {epanet => app/services/epanet}/epanet2.dll | Bin .../epanet}/linux/libepanet-output.so | Bin .../services/epanet}/linux/libepanet2.so | Bin .../services/epanet}/linux/runepanet | Bin {epanet => app/services/epanet}/runepanet.exe | Bin globals.py => app/services/globals.py | 0 {mcp => app/services/mcp}/router.py | 0 .../services/project_info.py | 0 simulation.py => app/services/simulation.py | 10 ++--- time_api.py => app/services/time_api.py | 0 tjnetwork.py => app/services/tjnetwork.py | 4 +- app/tasks/__init__.py | 0 app/utils/__init__.py | 0 infra/docker/Dockerfile | 13 +++++++ infra/docker/docker-compose.yml | 23 +++++++++++ postgresql_info.py | 36 ------------------ requirements.txt | Bin 4572 -> 4554 bytes .../20250309beibei_v2.inp | 0 .../fx0217-mass injection.inp | 0 .../history_pattern_flow.csv | 0 .../model22_1223.inp | 0 .../requirements2.txt | 0 scada_info.csv => resources/scada_info.csv | 0 {script => resources}/sql/create/0.base.sql | 0 {script => resources}/sql/create/1.title.sql | 0 .../sql/create/10.status.sql | 0 .../sql/create/11.patterns.sql | 0 .../sql/create/12.curves.sql | 0 .../sql/create/13.controls.sql | 0 {script => resources}/sql/create/14.rules.sql | 0 .../sql/create/15.energy.sql | 0 .../sql/create/16.emitters.sql | 0 .../sql/create/17.quality.sql | 0 .../sql/create/18.sources.sql | 0 .../sql/create/19.reactions.sql | 0 .../sql/create/2.junctions.sql | 0 .../sql/create/20.mixing.sql | 0 {script => resources}/sql/create/21.times.sql | 0 .../sql/create/22.report.sql | 0 .../sql/create/23.options.sql | 0 .../sql/create/24.coordinates.sql | 0 .../sql/create/25.vertices.sql | 0 .../sql/create/26.labels.sql | 0 .../sql/create/27.backdrop.sql | 0 {script => resources}/sql/create/28.end.sql | 0 .../sql/create/29.scada_device.sql | 0 .../sql/create/3.reservoirs.sql | 0 .../sql/create/30.scada_device_data.sql | 0 .../sql/create/31.scada_element.sql | 0 .../sql/create/32.region.sql | 0 {script => resources}/sql/create/33.dma.sql | 0 {script => resources}/sql/create/34.sa.sql | 0 {script => resources}/sql/create/35.vd.sql | 0 {script => resources}/sql/create/36.wda.sql | 0 .../sql/create/37.history_patterns_flows.sql | 0 .../sql/create/38.scada_info.sql | 0 {script => resources}/sql/create/39.users.sql | 0 {script => resources}/sql/create/4.tanks.sql | 0 .../sql/create/40.scheme_list.sql | 0 .../sql/create/41.pipe_risk_probability.sql | 0 .../sql/create/42.sensor_placement.sql | 0 .../sql/create/43.burst_locate_result.sql | 0 {script => resources}/sql/create/5.pipes.sql | 0 {script => resources}/sql/create/6.pumps.sql | 0 {script => resources}/sql/create/7.valves.sql | 0 {script => resources}/sql/create/8.tags.sql | 0 .../sql/create/9.demands.sql | 0 .../sql/create/extension_data.sql | 0 .../sql/create/operation.sql | 0 {script => resources}/sql/drop/0.base.sql | 0 {script => resources}/sql/drop/1.title.sql | 0 {script => resources}/sql/drop/10.status.sql | 0 .../sql/drop/11.patterns.sql | 0 {script => resources}/sql/drop/12.curves.sql | 0 .../sql/drop/13.controls.sql | 0 {script => resources}/sql/drop/14.rules.sql | 0 {script => resources}/sql/drop/15.energy.sql | 0 .../sql/drop/16.emitters.sql | 0 {script => resources}/sql/drop/17.quality.sql | 0 {script => resources}/sql/drop/18.sources.sql | 0 .../sql/drop/19.reactions.sql | 0 .../sql/drop/2.junctions.sql | 0 {script => resources}/sql/drop/20.mixing.sql | 0 {script => resources}/sql/drop/21.times.sql | 0 {script => resources}/sql/drop/22.report.sql | 0 {script => resources}/sql/drop/23.options.sql | 0 .../sql/drop/24.coordinates.sql | 0 .../sql/drop/25.vertices.sql | 0 {script => resources}/sql/drop/26.labels.sql | 0 .../sql/drop/27.backdrop.sql | 0 {script => resources}/sql/drop/28.end.sql | 0 .../sql/drop/29.scada_device.sql | 0 .../sql/drop/3.reservoirs.sql | 0 .../sql/drop/30.scada_device_data.sql | 0 .../sql/drop/31.scada_element.sql | 0 {script => resources}/sql/drop/32.region.sql | 0 {script => resources}/sql/drop/33.dma.sql | 0 {script => resources}/sql/drop/34.sa.sql | 0 {script => resources}/sql/drop/35.vd.sql | 0 {script => resources}/sql/drop/36.wda.sql | 0 .../sql/drop/37.history_patterns_flows.sql | 0 .../sql/drop/38.scada_info.sql | 0 {script => resources}/sql/drop/39.users.sql | 0 {script => resources}/sql/drop/4.tanks.sql | 0 .../sql/drop/40.scheme_list.sql | 0 .../sql/drop/41.pipe_risk_probability.sql | 0 .../sql/drop/42.sensor_placement.sql | 0 .../sql/drop/43.burst_locate_result.sql | 0 {script => resources}/sql/drop/5.pipes.sql | 0 {script => resources}/sql/drop/6.pumps.sql | 0 {script => resources}/sql/drop/7.valves.sql | 0 {script => resources}/sql/drop/8.tags.sql | 0 {script => resources}/sql/drop/9.demands.sql | 0 .../sql/drop/extension_data.sql | 0 {script => resources}/sql/drop/operation.sql | 0 temp.rpt => resources/temp.rpt | 0 .../北碚市政管线风险评价结果.xlsx | Bin 市政管线.dbf => resources/市政管线.dbf | Bin 市政管线.prj => resources/市政管线.prj | 0 市政管线.shp => resources/市政管线.shp | Bin 市政管线.shx => resources/市政管线.shx | Bin .../标准cleaned_demand_data.csv | 0 .../AutoPullGitChanges.bat | 0 all_auto_task.py => scripts/all_auto_task.py | 0 auto_cache.py => scripts/auto_cache.py | 0 auto_realtime.py => scripts/auto_realtime.py | 0 .../auto_store_non_realtime_SCADA_data.py | 0 build_pyd.cmd => scripts/build_pyd.cmd | 0 build_pyd.py => scripts/build_pyd.py | 0 .../clean_projects.py | 0 copy_project.py => scripts/copy_project.py | 0 .../create_project.py | 0 .../create_project_v3.py | 0 .../create_template.py | 0 .../delete_project.py | 0 demo.py => scripts/demo.py | 0 dev.py => scripts/dev.py | 0 drawpipe.py => scripts/drawpipe.py | 0 dump_inp.py => scripts/dump_inp.py | 0 .../get_current_status.py | 0 .../get_current_total_Q.py | 0 get_data.py => scripts/get_data.py | 0 get_hist_data.py => scripts/get_hist_data.py | 0 get_realValue.py => scripts/get_realValue.py | 0 install.py => scripts/install.py | 0 open_szh.py => scripts/open_szh.py | 0 .../redis_clear_all_keys.py | 0 restartpg.bat => scripts/restartpg.bat | 0 .../restore_project.py | 0 .../restore_projects.py | 0 run_server.py => scripts/run_server.py | 2 +- run_simlation.py => scripts/run_simlation.py | 0 .../run_simulation.py | 0 .../startfastapiserver.bat | 0 startpg.bat => scripts/startpg.bat | 0 .../test_tjnetwork.py | 0 352 files changed, 176 insertions(+), 70 deletions(-) create mode 100644 app/__init__.py create mode 100644 app/algorithms/__init__.py rename {api_ex => app/algorithms/api_ex}/Fdataclean.py (100%) rename {api_ex => app/algorithms/api_ex}/Pdataclean.py (100%) rename {api_ex => app/algorithms/api_ex}/__init__.py (100%) rename {api_ex => app/algorithms/api_ex}/kmeans_sensor.py (100%) rename {api_ex => app/algorithms/api_ex}/model/my_survival_forest_model_quxi.zip (100%) rename {api_ex => app/algorithms/api_ex}/pipeline_health_analyzer.py (100%) rename online_Analysis.py => app/algorithms/online_Analysis.py (99%) rename sensitivity.py => app/algorithms/sensitivity.py (100%) rename sensor_placement.py => app/algorithms/sensor_placement.py (100%) create mode 100644 app/api/__init__.py create mode 100644 app/api/v1/__init__.py create mode 100644 app/api/v1/endpoints/__init__.py create mode 100644 app/api/v1/endpoints/auth.py create mode 100644 app/api/v1/endpoints/extension.py create mode 100644 app/api/v1/endpoints/network_elements.py create mode 100644 app/api/v1/endpoints/project.py create mode 100644 app/api/v1/endpoints/scada.py create mode 100644 app/api/v1/endpoints/simulation.py create mode 100644 app/api/v1/endpoints/snapshots.py create mode 100644 app/api/v1/router.py create mode 100644 app/audit/__init__.py create mode 100644 app/auth/__init__.py create mode 100644 app/auth/dependencies.py create mode 100644 app/core/__init__.py create mode 100644 app/core/audit.py create mode 100644 app/core/config.py create mode 100644 app/core/encryption.py create mode 100644 app/core/security.py create mode 100644 app/crypto/__init__.py create mode 100644 app/domain/__init__.py create mode 100644 app/domain/models/__init__.py create mode 100644 app/domain/schemas/__init__.py create mode 100644 app/infra/__init__.py create mode 100644 app/infra/audit/__init__.py create mode 100644 app/infra/cache/__init__.py create mode 100644 app/infra/db/__init__.py create mode 100644 app/infra/db/influxdb/__init__.py rename influxdb_api.py => app/infra/db/influxdb/api.py (99%) rename influxdb_info.py => app/infra/db/influxdb/info.py (100%) rename influxdb_query_SCADA_data.py => app/infra/db/influxdb/query.py (100%) rename {postgresql => app/infra/db/postgresql}/__init__.py (100%) rename {postgresql => app/infra/db/postgresql}/database.py (98%) rename {postgresql => app/infra/db/postgresql}/internal_queries.py (100%) rename {postgresql => app/infra/db/postgresql}/router.py (100%) rename {postgresql => app/infra/db/postgresql}/scada_info.py (100%) rename {postgresql => app/infra/db/postgresql}/scheme.py (100%) rename {timescaledb => app/infra/db/timescaledb}/__init__.py (100%) rename {timescaledb => app/infra/db/timescaledb}/composite_queries.py (100%) rename {timescaledb => app/infra/db/timescaledb}/database.py (98%) rename {timescaledb => app/infra/db/timescaledb}/internal_queries.py (100%) rename {timescaledb => app/infra/db/timescaledb}/router.py (100%) rename {timescaledb => app/infra/db/timescaledb}/schemas/realtime.py (100%) rename {timescaledb => app/infra/db/timescaledb}/schemas/scada.py (100%) rename {timescaledb => app/infra/db/timescaledb}/schemas/scheme.py (100%) rename {timescaledb => app/infra/db/timescaledb}/timescaledb_info.py (100%) create mode 100644 app/infra/repositories/__init__.py rename main.py => app/main.py (99%) create mode 100644 app/native/__init__.py rename {api => app/native/api}/__init__.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/__init__.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/batch_api.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/batch_api.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/batch_api_cs.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/batch_api_cs.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/batch_exe.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/batch_exe.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/clean_api.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/clean_api.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/connection.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/connection.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/database.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/database.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/extension_data.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/extension_data.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/inp_in.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/inp_in.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/inp_out.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/inp_out.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/postgresql_info.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/postgresql_info.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/project.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/project.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s0_base.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s0_base.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s10_status.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s10_status.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s11_patterns.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s11_patterns.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s12_curves.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s12_curves.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s13_controls.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s13_controls.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s14_rules.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s14_rules.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s15_energy.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s15_energy.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s16_emitters.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s16_emitters.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s17_quality.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s17_quality.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s18_sources.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s18_sources.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s19_reactions.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s19_reactions.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s1_title.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s1_title.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s20_mixing.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s20_mixing.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s21_times.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s21_times.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s22_report.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s22_report.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s23_options.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s23_options.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s23_options_util.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s23_options_util.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s23_options_v3.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s23_options_v3.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s24_coordinates.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s24_coordinates.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s25_vertices.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s25_vertices.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s26_labels.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s26_labels.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s27_backdrop.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s27_backdrop.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s28_end.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s28_end.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s29_scada_device.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s29_scada_device.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s2_junctions.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s2_junctions.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s30_scada_device_data.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s30_scada_device_data.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s31_scada_element.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s31_scada_element.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s32_region.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s32_region.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s32_region_util.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s32_region_util.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s33_dma.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s33_dma.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s33_dma_cal.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s33_dma_cal.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s33_dma_gen.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s33_dma_gen.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s34_sa.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s34_sa.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s34_sa_cal.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s34_sa_cal.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s34_sa_gen.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s34_sa_gen.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s35_vd.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s35_vd.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s35_vd_cal.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s35_vd_cal.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s35_vd_gen.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s35_vd_gen.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s36_wda.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s36_wda.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s36_wda_cal.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s36_wda_cal.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s38_scada_info.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s38_scada_info.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s39_user.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s39_user.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s3_reservoirs.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s3_reservoirs.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s40_schema.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s40_schema.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s41_pipe_risk_probability.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s41_pipe_risk_probability.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s42_sensor_placement.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s42_sensor_placement.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s43_burst_locate_result.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s43_burst_locate_result.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s4_tanks.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s4_tanks.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s5_pipes.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s5_pipes.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s6_pumps.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s6_pumps.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s7_valves.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s7_valves.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s8_tags.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s8_tags.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/s9_demands.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/s9_demands.cpython-312-x86_64-linux-gnu.so (100%) rename {api => app/native/api}/sections.cp312-win_amd64.pyd (100%) rename {api => app/native/api}/sections.cpython-312-x86_64-linux-gnu.so (100%) create mode 100644 app/services/__init__.py rename {epanet => app/services/epanet}/__init__.py (100%) rename {epanet => app/services/epanet}/epanet-output.dll (100%) rename {epanet => app/services/epanet}/epanet.py (100%) rename {epanet => app/services/epanet}/epanet2.dll (100%) rename {epanet => app/services/epanet}/linux/libepanet-output.so (100%) rename {epanet => app/services/epanet}/linux/libepanet2.so (100%) rename {epanet => app/services/epanet}/linux/runepanet (100%) rename {epanet => app/services/epanet}/runepanet.exe (100%) rename globals.py => app/services/globals.py (100%) rename {mcp => app/services/mcp}/router.py (100%) rename project_info.py => app/services/project_info.py (100%) rename simulation.py => app/services/simulation.py (99%) rename time_api.py => app/services/time_api.py (100%) rename tjnetwork.py => app/services/tjnetwork.py (99%) create mode 100644 app/tasks/__init__.py create mode 100644 app/utils/__init__.py create mode 100644 infra/docker/Dockerfile create mode 100644 infra/docker/docker-compose.yml delete mode 100644 postgresql_info.py rename 20250309beibei_v2.inp => resources/20250309beibei_v2.inp (100%) rename fx0217-mass injection.inp => resources/fx0217-mass injection.inp (100%) rename history_pattern_flow.csv => resources/history_pattern_flow.csv (100%) rename model22_1223.inp => resources/model22_1223.inp (100%) rename requirements2.txt => resources/requirements2.txt (100%) rename scada_info.csv => resources/scada_info.csv (100%) rename {script => resources}/sql/create/0.base.sql (100%) rename {script => resources}/sql/create/1.title.sql (100%) rename {script => resources}/sql/create/10.status.sql (100%) rename {script => resources}/sql/create/11.patterns.sql (100%) rename {script => resources}/sql/create/12.curves.sql (100%) rename {script => resources}/sql/create/13.controls.sql (100%) rename {script => resources}/sql/create/14.rules.sql (100%) rename {script => resources}/sql/create/15.energy.sql (100%) rename {script => resources}/sql/create/16.emitters.sql (100%) rename {script => resources}/sql/create/17.quality.sql (100%) rename {script => resources}/sql/create/18.sources.sql (100%) rename {script => resources}/sql/create/19.reactions.sql (100%) rename {script => resources}/sql/create/2.junctions.sql (100%) rename {script => resources}/sql/create/20.mixing.sql (100%) rename {script => resources}/sql/create/21.times.sql (100%) rename {script => resources}/sql/create/22.report.sql (100%) rename {script => resources}/sql/create/23.options.sql (100%) rename {script => resources}/sql/create/24.coordinates.sql (100%) rename {script => resources}/sql/create/25.vertices.sql (100%) rename {script => resources}/sql/create/26.labels.sql (100%) rename {script => resources}/sql/create/27.backdrop.sql (100%) rename {script => resources}/sql/create/28.end.sql (100%) rename {script => resources}/sql/create/29.scada_device.sql (100%) rename {script => resources}/sql/create/3.reservoirs.sql (100%) rename {script => resources}/sql/create/30.scada_device_data.sql (100%) rename {script => resources}/sql/create/31.scada_element.sql (100%) rename {script => resources}/sql/create/32.region.sql (100%) rename {script => resources}/sql/create/33.dma.sql (100%) rename {script => resources}/sql/create/34.sa.sql (100%) rename {script => resources}/sql/create/35.vd.sql (100%) rename {script => resources}/sql/create/36.wda.sql (100%) rename {script => resources}/sql/create/37.history_patterns_flows.sql (100%) rename {script => resources}/sql/create/38.scada_info.sql (100%) rename {script => resources}/sql/create/39.users.sql (100%) rename {script => resources}/sql/create/4.tanks.sql (100%) rename {script => resources}/sql/create/40.scheme_list.sql (100%) rename {script => resources}/sql/create/41.pipe_risk_probability.sql (100%) rename {script => resources}/sql/create/42.sensor_placement.sql (100%) rename {script => resources}/sql/create/43.burst_locate_result.sql (100%) rename {script => resources}/sql/create/5.pipes.sql (100%) rename {script => resources}/sql/create/6.pumps.sql (100%) rename {script => resources}/sql/create/7.valves.sql (100%) rename {script => resources}/sql/create/8.tags.sql (100%) rename {script => resources}/sql/create/9.demands.sql (100%) rename {script => resources}/sql/create/extension_data.sql (100%) rename {script => resources}/sql/create/operation.sql (100%) rename {script => resources}/sql/drop/0.base.sql (100%) rename {script => resources}/sql/drop/1.title.sql (100%) rename {script => resources}/sql/drop/10.status.sql (100%) rename {script => resources}/sql/drop/11.patterns.sql (100%) rename {script => resources}/sql/drop/12.curves.sql (100%) rename {script => resources}/sql/drop/13.controls.sql (100%) rename {script => resources}/sql/drop/14.rules.sql (100%) rename {script => resources}/sql/drop/15.energy.sql (100%) rename {script => resources}/sql/drop/16.emitters.sql (100%) rename {script => resources}/sql/drop/17.quality.sql (100%) rename {script => resources}/sql/drop/18.sources.sql (100%) rename {script => resources}/sql/drop/19.reactions.sql (100%) rename {script => resources}/sql/drop/2.junctions.sql (100%) rename {script => resources}/sql/drop/20.mixing.sql (100%) rename {script => resources}/sql/drop/21.times.sql (100%) rename {script => resources}/sql/drop/22.report.sql (100%) rename {script => resources}/sql/drop/23.options.sql (100%) rename {script => resources}/sql/drop/24.coordinates.sql (100%) rename {script => resources}/sql/drop/25.vertices.sql (100%) rename {script => resources}/sql/drop/26.labels.sql (100%) rename {script => resources}/sql/drop/27.backdrop.sql (100%) rename {script => resources}/sql/drop/28.end.sql (100%) rename {script => resources}/sql/drop/29.scada_device.sql (100%) rename {script => resources}/sql/drop/3.reservoirs.sql (100%) rename {script => resources}/sql/drop/30.scada_device_data.sql (100%) rename {script => resources}/sql/drop/31.scada_element.sql (100%) rename {script => resources}/sql/drop/32.region.sql (100%) rename {script => resources}/sql/drop/33.dma.sql (100%) rename {script => resources}/sql/drop/34.sa.sql (100%) rename {script => resources}/sql/drop/35.vd.sql (100%) rename {script => resources}/sql/drop/36.wda.sql (100%) rename {script => resources}/sql/drop/37.history_patterns_flows.sql (100%) rename {script => resources}/sql/drop/38.scada_info.sql (100%) rename {script => resources}/sql/drop/39.users.sql (100%) rename {script => resources}/sql/drop/4.tanks.sql (100%) rename {script => resources}/sql/drop/40.scheme_list.sql (100%) rename {script => resources}/sql/drop/41.pipe_risk_probability.sql (100%) rename {script => resources}/sql/drop/42.sensor_placement.sql (100%) rename {script => resources}/sql/drop/43.burst_locate_result.sql (100%) rename {script => resources}/sql/drop/5.pipes.sql (100%) rename {script => resources}/sql/drop/6.pumps.sql (100%) rename {script => resources}/sql/drop/7.valves.sql (100%) rename {script => resources}/sql/drop/8.tags.sql (100%) rename {script => resources}/sql/drop/9.demands.sql (100%) rename {script => resources}/sql/drop/extension_data.sql (100%) rename {script => resources}/sql/drop/operation.sql (100%) rename temp.rpt => resources/temp.rpt (100%) rename 北碚市政管线风险评价结果.xlsx => resources/北碚市政管线风险评价结果.xlsx (100%) rename 市政管线.dbf => resources/市政管线.dbf (100%) rename 市政管线.prj => resources/市政管线.prj (100%) rename 市政管线.shp => resources/市政管线.shp (100%) rename 市政管线.shx => resources/市政管线.shx (100%) rename 标准cleaned_demand_data.csv => resources/标准cleaned_demand_data.csv (100%) rename AutoPullGitChanges.bat => scripts/AutoPullGitChanges.bat (100%) rename all_auto_task.py => scripts/all_auto_task.py (100%) rename auto_cache.py => scripts/auto_cache.py (100%) rename auto_realtime.py => scripts/auto_realtime.py (100%) rename auto_store_non_realtime_SCADA_data.py => scripts/auto_store_non_realtime_SCADA_data.py (100%) rename build_pyd.cmd => scripts/build_pyd.cmd (100%) rename build_pyd.py => scripts/build_pyd.py (100%) rename clean_projects.py => scripts/clean_projects.py (100%) rename copy_project.py => scripts/copy_project.py (100%) rename create_project.py => scripts/create_project.py (100%) rename create_project_v3.py => scripts/create_project_v3.py (100%) rename create_template.py => scripts/create_template.py (100%) rename delete_project.py => scripts/delete_project.py (100%) rename demo.py => scripts/demo.py (100%) rename dev.py => scripts/dev.py (100%) rename drawpipe.py => scripts/drawpipe.py (100%) rename dump_inp.py => scripts/dump_inp.py (100%) rename get_current_status.py => scripts/get_current_status.py (100%) rename get_current_total_Q.py => scripts/get_current_total_Q.py (100%) rename get_data.py => scripts/get_data.py (100%) rename get_hist_data.py => scripts/get_hist_data.py (100%) rename get_realValue.py => scripts/get_realValue.py (100%) rename install.py => scripts/install.py (100%) rename open_szh.py => scripts/open_szh.py (100%) rename redis_clear_all_keys.py => scripts/redis_clear_all_keys.py (100%) rename restartpg.bat => scripts/restartpg.bat (100%) rename restore_project.py => scripts/restore_project.py (100%) rename restore_projects.py => scripts/restore_projects.py (100%) rename run_server.py => scripts/run_server.py (94%) rename run_simlation.py => scripts/run_simlation.py (100%) rename run_simulation.py => scripts/run_simulation.py (100%) rename startfastapiserver.bat => scripts/startfastapiserver.bat (100%) rename startpg.bat => scripts/startpg.bat (100%) rename test_tjnetwork.py => scripts/test_tjnetwork.py (100%) diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/algorithms/__init__.py b/app/algorithms/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_ex/Fdataclean.py b/app/algorithms/api_ex/Fdataclean.py similarity index 100% rename from api_ex/Fdataclean.py rename to app/algorithms/api_ex/Fdataclean.py diff --git a/api_ex/Pdataclean.py b/app/algorithms/api_ex/Pdataclean.py similarity index 100% rename from api_ex/Pdataclean.py rename to app/algorithms/api_ex/Pdataclean.py diff --git a/api_ex/__init__.py b/app/algorithms/api_ex/__init__.py similarity index 100% rename from api_ex/__init__.py rename to app/algorithms/api_ex/__init__.py diff --git a/api_ex/kmeans_sensor.py b/app/algorithms/api_ex/kmeans_sensor.py similarity index 100% rename from api_ex/kmeans_sensor.py rename to app/algorithms/api_ex/kmeans_sensor.py diff --git a/api_ex/model/my_survival_forest_model_quxi.zip b/app/algorithms/api_ex/model/my_survival_forest_model_quxi.zip similarity index 100% rename from api_ex/model/my_survival_forest_model_quxi.zip rename to app/algorithms/api_ex/model/my_survival_forest_model_quxi.zip diff --git a/api_ex/pipeline_health_analyzer.py b/app/algorithms/api_ex/pipeline_health_analyzer.py similarity index 100% rename from api_ex/pipeline_health_analyzer.py rename to app/algorithms/api_ex/pipeline_health_analyzer.py diff --git a/online_Analysis.py b/app/algorithms/online_Analysis.py similarity index 99% rename from online_Analysis.py rename to app/algorithms/online_Analysis.py index c08b1c9..c9fc28d 100644 --- a/online_Analysis.py +++ b/app/algorithms/online_Analysis.py @@ -1,6 +1,6 @@ import os from tjnetwork import * -from api.project import copy_project +from app.native.api.project import copy_project from run_simulation import run_simulation_ex, from_clock_to_seconds_2 from math import sqrt, pi from epanet.epanet import Output @@ -13,16 +13,16 @@ from psycopg import sql import pandas as pd import csv import chardet -import simulation +import app.services.simulation as simulation import geopandas as gpd from sqlalchemy import create_engine import ast import sensitivity -import project_info -import api_ex.kmeans_sensor -import api_ex.Fdataclean -import api_ex.Pdataclean -from api.postgresql_info import get_pgconn_string +import app.services.project_info as project_info +import app.algorithms.api_ex.kmeans_sensor +import app.algorithms.api_ex.Fdataclean +import app.algorithms.api_ex.Pdataclean +from app.native.api.postgresql_info import get_pgconn_string ############################################################ diff --git a/sensitivity.py b/app/algorithms/sensitivity.py similarity index 100% rename from sensitivity.py rename to app/algorithms/sensitivity.py diff --git a/sensor_placement.py b/app/algorithms/sensor_placement.py similarity index 100% rename from sensor_placement.py rename to app/algorithms/sensor_placement.py diff --git a/app/api/__init__.py b/app/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/__init__.py b/app/api/v1/endpoints/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/auth.py b/app/api/v1/endpoints/auth.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/extension.py b/app/api/v1/endpoints/extension.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/network_elements.py b/app/api/v1/endpoints/network_elements.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/project.py b/app/api/v1/endpoints/project.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/scada.py b/app/api/v1/endpoints/scada.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/simulation.py b/app/api/v1/endpoints/simulation.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/endpoints/snapshots.py b/app/api/v1/endpoints/snapshots.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/v1/router.py b/app/api/v1/router.py new file mode 100644 index 0000000..724d907 --- /dev/null +++ b/app/api/v1/router.py @@ -0,0 +1,20 @@ +from fastapi import APIRouter +from app.api.v1.endpoints import ( + auth, + project, + network_elements, + simulation, + scada, + extension, + snapshots +) + +api_router = APIRouter() + +api_router.include_router(auth.router, prefix="/auth", tags=["auth"]) +api_router.include_router(project.router, prefix="/projects", tags=["projects"]) +api_router.include_router(network_elements.router, prefix="/elements", tags=["network-elements"]) +api_router.include_router(simulation.router, prefix="/simulation", tags=["simulation"]) +api_router.include_router(scada.router, prefix="/scada", tags=["scada"]) +api_router.include_router(extension.router, prefix="/extension", tags=["extension"]) +api_router.include_router(snapshots.router, prefix="/snapshots", tags=["snapshots"]) diff --git a/app/audit/__init__.py b/app/audit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/auth/__init__.py b/app/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/auth/dependencies.py b/app/auth/dependencies.py new file mode 100644 index 0000000..65299db --- /dev/null +++ b/app/auth/dependencies.py @@ -0,0 +1,21 @@ +from fastapi import Depends, HTTPException, status +from fastapi.security import OAuth2PasswordBearer +from app.core.config import settings +from jose import jwt, JWTError + +oauth2_scheme = OAuth2PasswordBearer(tokenUrl=f"{settings.API_V1_STR}/login/access-token") + +async def get_current_user(token: str = Depends(oauth2_scheme)): + credentials_exception = HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Could not validate credentials", + headers={"WWW-Authenticate": "Bearer"}, + ) + try: + payload = jwt.decode(token, settings.SECRET_KEY, algorithms=[settings.ALGORITHM]) + username: str = payload.get("sub") + if username is None: + raise credentials_exception + except JWTError: + raise credentials_exception + return username diff --git a/app/core/__init__.py b/app/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/audit.py b/app/core/audit.py new file mode 100644 index 0000000..d015e1c --- /dev/null +++ b/app/core/audit.py @@ -0,0 +1,3 @@ +# Placeholder for audit logic +async def log_audit_event(event_type: str, user_id: str, details: dict): + pass diff --git a/app/core/config.py b/app/core/config.py new file mode 100644 index 0000000..26e9a28 --- /dev/null +++ b/app/core/config.py @@ -0,0 +1,30 @@ +from pydantic_settings import BaseSettings + +class Settings(BaseSettings): + PROJECT_NAME: str = "TJWater Server" + API_V1_STR: str = "/api/v1" + SECRET_KEY: str = "your-secret-key-here" # Change in production + ALGORITHM: str = "HS256" + ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 + + # Database Config (PostgreSQL) + DB_NAME: str = "tjwater" + DB_HOST: str = "localhost" + DB_PORT: str = "5432" + DB_USER: str = "postgres" + DB_PASSWORD: str = "password" + + # InfluxDB + INFLUXDB_URL: str = "http://localhost:8086" + INFLUXDB_TOKEN: str = "token" + INFLUXDB_ORG: str = "org" + INFLUXDB_BUCKET: str = "bucket" + + @property + def SQLALCHEMY_DATABASE_URI(self) -> str: + return f"postgresql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" + + class Config: + env_file = ".env" + +settings = Settings() diff --git a/app/core/encryption.py b/app/core/encryption.py new file mode 100644 index 0000000..dd0dcb8 --- /dev/null +++ b/app/core/encryption.py @@ -0,0 +1,9 @@ +# Placeholder for encryption logic +class Encryptor: + def encrypt(self, data: str) -> str: + return data # Implement actual encryption + + def decrypt(self, data: str) -> str: + return data # Implement actual decryption + +encryptor = Encryptor() diff --git a/app/core/security.py b/app/core/security.py new file mode 100644 index 0000000..c2f71d6 --- /dev/null +++ b/app/core/security.py @@ -0,0 +1,23 @@ +from datetime import datetime, timedelta +from typing import Optional, Union, Any +from jose import jwt +from passlib.context import CryptContext +from app.core.config import settings + +pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") + +def create_access_token(subject: Union[str, Any], expires_delta: Optional[timedelta] = None) -> str: + if expires_delta: + expire = datetime.utcnow() + expires_delta + else: + expire = datetime.utcnow() + timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES) + + to_encode = {"exp": expire, "sub": str(subject)} + encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM) + return encoded_jwt + +def verify_password(plain_password: str, hashed_password: str) -> bool: + return pwd_context.verify(plain_password, hashed_password) + +def get_password_hash(password: str) -> str: + return pwd_context.hash(password) diff --git a/app/crypto/__init__.py b/app/crypto/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/domain/__init__.py b/app/domain/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/domain/models/__init__.py b/app/domain/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/domain/schemas/__init__.py b/app/domain/schemas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/infra/__init__.py b/app/infra/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/infra/audit/__init__.py b/app/infra/audit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/infra/cache/__init__.py b/app/infra/cache/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/infra/db/__init__.py b/app/infra/db/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/infra/db/influxdb/__init__.py b/app/infra/db/influxdb/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/influxdb_api.py b/app/infra/db/influxdb/api.py similarity index 99% rename from influxdb_api.py rename to app/infra/db/influxdb/api.py index b9afd39..71c7325 100644 --- a/influxdb_api.py +++ b/app/infra/db/influxdb/api.py @@ -17,19 +17,19 @@ import get_realValue import get_data import psycopg import time -import simulation +import app.services.simulation as simulation from tjnetwork import * import schedule import threading -import globals +import app.services.globals as globals import csv import pandas as pd import openpyxl import pytz -import influxdb_info -import project_info -import time_api -from api.postgresql_info import get_pgconn_string +import app.infra.db.influxdb.info as influxdb_info +import app.services.project_info as project_info +import app.services.time_api as time_api +from app.native.api.postgresql_info import get_pgconn_string # influxdb数据库连接信息 url = influxdb_info.url diff --git a/influxdb_info.py b/app/infra/db/influxdb/info.py similarity index 100% rename from influxdb_info.py rename to app/infra/db/influxdb/info.py diff --git a/influxdb_query_SCADA_data.py b/app/infra/db/influxdb/query.py similarity index 100% rename from influxdb_query_SCADA_data.py rename to app/infra/db/influxdb/query.py diff --git a/postgresql/__init__.py b/app/infra/db/postgresql/__init__.py similarity index 100% rename from postgresql/__init__.py rename to app/infra/db/postgresql/__init__.py diff --git a/postgresql/database.py b/app/infra/db/postgresql/database.py similarity index 98% rename from postgresql/database.py rename to app/infra/db/postgresql/database.py index bf64648..c9b9fb2 100644 --- a/postgresql/database.py +++ b/app/infra/db/postgresql/database.py @@ -3,7 +3,7 @@ from contextlib import asynccontextmanager from typing import AsyncGenerator, Dict, Optional import psycopg_pool from psycopg.rows import dict_row -import api.postgresql_info as postgresql_info +import app.native.api.postgresql_info as postgresql_info # Configure logging logger = logging.getLogger(__name__) diff --git a/postgresql/internal_queries.py b/app/infra/db/postgresql/internal_queries.py similarity index 100% rename from postgresql/internal_queries.py rename to app/infra/db/postgresql/internal_queries.py diff --git a/postgresql/router.py b/app/infra/db/postgresql/router.py similarity index 100% rename from postgresql/router.py rename to app/infra/db/postgresql/router.py diff --git a/postgresql/scada_info.py b/app/infra/db/postgresql/scada_info.py similarity index 100% rename from postgresql/scada_info.py rename to app/infra/db/postgresql/scada_info.py diff --git a/postgresql/scheme.py b/app/infra/db/postgresql/scheme.py similarity index 100% rename from postgresql/scheme.py rename to app/infra/db/postgresql/scheme.py diff --git a/timescaledb/__init__.py b/app/infra/db/timescaledb/__init__.py similarity index 100% rename from timescaledb/__init__.py rename to app/infra/db/timescaledb/__init__.py diff --git a/timescaledb/composite_queries.py b/app/infra/db/timescaledb/composite_queries.py similarity index 100% rename from timescaledb/composite_queries.py rename to app/infra/db/timescaledb/composite_queries.py diff --git a/timescaledb/database.py b/app/infra/db/timescaledb/database.py similarity index 98% rename from timescaledb/database.py rename to app/infra/db/timescaledb/database.py index 448b6bf..e3726fc 100644 --- a/timescaledb/database.py +++ b/app/infra/db/timescaledb/database.py @@ -3,7 +3,7 @@ from contextlib import asynccontextmanager from typing import AsyncGenerator, Dict, Optional import psycopg_pool from psycopg.rows import dict_row -import timescaledb.timescaledb_info as timescaledb_info +import app.infra.db.timescaledb.timescaledb_info as timescaledb_info # Configure logging logger = logging.getLogger(__name__) diff --git a/timescaledb/internal_queries.py b/app/infra/db/timescaledb/internal_queries.py similarity index 100% rename from timescaledb/internal_queries.py rename to app/infra/db/timescaledb/internal_queries.py diff --git a/timescaledb/router.py b/app/infra/db/timescaledb/router.py similarity index 100% rename from timescaledb/router.py rename to app/infra/db/timescaledb/router.py diff --git a/timescaledb/schemas/realtime.py b/app/infra/db/timescaledb/schemas/realtime.py similarity index 100% rename from timescaledb/schemas/realtime.py rename to app/infra/db/timescaledb/schemas/realtime.py diff --git a/timescaledb/schemas/scada.py b/app/infra/db/timescaledb/schemas/scada.py similarity index 100% rename from timescaledb/schemas/scada.py rename to app/infra/db/timescaledb/schemas/scada.py diff --git a/timescaledb/schemas/scheme.py b/app/infra/db/timescaledb/schemas/scheme.py similarity index 100% rename from timescaledb/schemas/scheme.py rename to app/infra/db/timescaledb/schemas/scheme.py diff --git a/timescaledb/timescaledb_info.py b/app/infra/db/timescaledb/timescaledb_info.py similarity index 100% rename from timescaledb/timescaledb_info.py rename to app/infra/db/timescaledb/timescaledb_info.py diff --git a/app/infra/repositories/__init__.py b/app/infra/repositories/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/main.py b/app/main.py similarity index 99% rename from main.py rename to app/main.py index db0300e..5be0bbd 100644 --- a/main.py +++ b/app/main.py @@ -40,18 +40,18 @@ import msgpack from datetime import datetime, timedelta, timezone # 第三方/自定义模块 -import influxdb_api -import timescaledb -import postgresql +import app.infra.db.influxdb.api as influxdb_api +import app.infra.db.timescaledb as timescaledb +import app.infra.db.postgresql as postgresql import py_linq -import time_api -import simulation -import globals -import project_info -from timescaledb.database import db as tsdb -from postgresql.database import db as pgdb -from online_Analysis import * -from tjnetwork import * +import app.services.time_api as time_api +import app.services.simulation as simulation +import app.services.globals as globals +import app.services.project_info as project_info +from app.infra.db.timescaledb.database import db as tsdb +from app.infra.db.postgresql.database import db as pgdb +from app.algorithms.online_Analysis import * +from app.services.tjnetwork import * JUNCTION = 0 diff --git a/app/native/__init__.py b/app/native/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/__init__.cp312-win_amd64.pyd b/app/native/api/__init__.cp312-win_amd64.pyd similarity index 100% rename from api/__init__.cp312-win_amd64.pyd rename to app/native/api/__init__.cp312-win_amd64.pyd diff --git a/api/__init__.cpython-312-x86_64-linux-gnu.so b/app/native/api/__init__.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/__init__.cpython-312-x86_64-linux-gnu.so rename to app/native/api/__init__.cpython-312-x86_64-linux-gnu.so diff --git a/api/batch_api.cp312-win_amd64.pyd b/app/native/api/batch_api.cp312-win_amd64.pyd similarity index 100% rename from api/batch_api.cp312-win_amd64.pyd rename to app/native/api/batch_api.cp312-win_amd64.pyd diff --git a/api/batch_api.cpython-312-x86_64-linux-gnu.so b/app/native/api/batch_api.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/batch_api.cpython-312-x86_64-linux-gnu.so rename to app/native/api/batch_api.cpython-312-x86_64-linux-gnu.so diff --git a/api/batch_api_cs.cp312-win_amd64.pyd b/app/native/api/batch_api_cs.cp312-win_amd64.pyd similarity index 100% rename from api/batch_api_cs.cp312-win_amd64.pyd rename to app/native/api/batch_api_cs.cp312-win_amd64.pyd diff --git a/api/batch_api_cs.cpython-312-x86_64-linux-gnu.so b/app/native/api/batch_api_cs.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/batch_api_cs.cpython-312-x86_64-linux-gnu.so rename to app/native/api/batch_api_cs.cpython-312-x86_64-linux-gnu.so diff --git a/api/batch_exe.cp312-win_amd64.pyd b/app/native/api/batch_exe.cp312-win_amd64.pyd similarity index 100% rename from api/batch_exe.cp312-win_amd64.pyd rename to app/native/api/batch_exe.cp312-win_amd64.pyd diff --git a/api/batch_exe.cpython-312-x86_64-linux-gnu.so b/app/native/api/batch_exe.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/batch_exe.cpython-312-x86_64-linux-gnu.so rename to app/native/api/batch_exe.cpython-312-x86_64-linux-gnu.so diff --git a/api/clean_api.cp312-win_amd64.pyd b/app/native/api/clean_api.cp312-win_amd64.pyd similarity index 100% rename from api/clean_api.cp312-win_amd64.pyd rename to app/native/api/clean_api.cp312-win_amd64.pyd diff --git a/api/clean_api.cpython-312-x86_64-linux-gnu.so b/app/native/api/clean_api.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/clean_api.cpython-312-x86_64-linux-gnu.so rename to app/native/api/clean_api.cpython-312-x86_64-linux-gnu.so diff --git a/api/connection.cp312-win_amd64.pyd b/app/native/api/connection.cp312-win_amd64.pyd similarity index 100% rename from api/connection.cp312-win_amd64.pyd rename to app/native/api/connection.cp312-win_amd64.pyd diff --git a/api/connection.cpython-312-x86_64-linux-gnu.so b/app/native/api/connection.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/connection.cpython-312-x86_64-linux-gnu.so rename to app/native/api/connection.cpython-312-x86_64-linux-gnu.so diff --git a/api/database.cp312-win_amd64.pyd b/app/native/api/database.cp312-win_amd64.pyd similarity index 100% rename from api/database.cp312-win_amd64.pyd rename to app/native/api/database.cp312-win_amd64.pyd diff --git a/api/database.cpython-312-x86_64-linux-gnu.so b/app/native/api/database.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/database.cpython-312-x86_64-linux-gnu.so rename to app/native/api/database.cpython-312-x86_64-linux-gnu.so diff --git a/api/extension_data.cp312-win_amd64.pyd b/app/native/api/extension_data.cp312-win_amd64.pyd similarity index 100% rename from api/extension_data.cp312-win_amd64.pyd rename to app/native/api/extension_data.cp312-win_amd64.pyd diff --git a/api/extension_data.cpython-312-x86_64-linux-gnu.so b/app/native/api/extension_data.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/extension_data.cpython-312-x86_64-linux-gnu.so rename to app/native/api/extension_data.cpython-312-x86_64-linux-gnu.so diff --git a/api/inp_in.cp312-win_amd64.pyd b/app/native/api/inp_in.cp312-win_amd64.pyd similarity index 100% rename from api/inp_in.cp312-win_amd64.pyd rename to app/native/api/inp_in.cp312-win_amd64.pyd diff --git a/api/inp_in.cpython-312-x86_64-linux-gnu.so b/app/native/api/inp_in.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/inp_in.cpython-312-x86_64-linux-gnu.so rename to app/native/api/inp_in.cpython-312-x86_64-linux-gnu.so diff --git a/api/inp_out.cp312-win_amd64.pyd b/app/native/api/inp_out.cp312-win_amd64.pyd similarity index 100% rename from api/inp_out.cp312-win_amd64.pyd rename to app/native/api/inp_out.cp312-win_amd64.pyd diff --git a/api/inp_out.cpython-312-x86_64-linux-gnu.so b/app/native/api/inp_out.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/inp_out.cpython-312-x86_64-linux-gnu.so rename to app/native/api/inp_out.cpython-312-x86_64-linux-gnu.so diff --git a/api/postgresql_info.cp312-win_amd64.pyd b/app/native/api/postgresql_info.cp312-win_amd64.pyd similarity index 100% rename from api/postgresql_info.cp312-win_amd64.pyd rename to app/native/api/postgresql_info.cp312-win_amd64.pyd diff --git a/api/postgresql_info.cpython-312-x86_64-linux-gnu.so b/app/native/api/postgresql_info.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/postgresql_info.cpython-312-x86_64-linux-gnu.so rename to app/native/api/postgresql_info.cpython-312-x86_64-linux-gnu.so diff --git a/api/project.cp312-win_amd64.pyd b/app/native/api/project.cp312-win_amd64.pyd similarity index 100% rename from api/project.cp312-win_amd64.pyd rename to app/native/api/project.cp312-win_amd64.pyd diff --git a/api/project.cpython-312-x86_64-linux-gnu.so b/app/native/api/project.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/project.cpython-312-x86_64-linux-gnu.so rename to app/native/api/project.cpython-312-x86_64-linux-gnu.so diff --git a/api/s0_base.cp312-win_amd64.pyd b/app/native/api/s0_base.cp312-win_amd64.pyd similarity index 100% rename from api/s0_base.cp312-win_amd64.pyd rename to app/native/api/s0_base.cp312-win_amd64.pyd diff --git a/api/s0_base.cpython-312-x86_64-linux-gnu.so b/app/native/api/s0_base.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s0_base.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s0_base.cpython-312-x86_64-linux-gnu.so diff --git a/api/s10_status.cp312-win_amd64.pyd b/app/native/api/s10_status.cp312-win_amd64.pyd similarity index 100% rename from api/s10_status.cp312-win_amd64.pyd rename to app/native/api/s10_status.cp312-win_amd64.pyd diff --git a/api/s10_status.cpython-312-x86_64-linux-gnu.so b/app/native/api/s10_status.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s10_status.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s10_status.cpython-312-x86_64-linux-gnu.so diff --git a/api/s11_patterns.cp312-win_amd64.pyd b/app/native/api/s11_patterns.cp312-win_amd64.pyd similarity index 100% rename from api/s11_patterns.cp312-win_amd64.pyd rename to app/native/api/s11_patterns.cp312-win_amd64.pyd diff --git a/api/s11_patterns.cpython-312-x86_64-linux-gnu.so b/app/native/api/s11_patterns.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s11_patterns.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s11_patterns.cpython-312-x86_64-linux-gnu.so diff --git a/api/s12_curves.cp312-win_amd64.pyd b/app/native/api/s12_curves.cp312-win_amd64.pyd similarity index 100% rename from api/s12_curves.cp312-win_amd64.pyd rename to app/native/api/s12_curves.cp312-win_amd64.pyd diff --git a/api/s12_curves.cpython-312-x86_64-linux-gnu.so b/app/native/api/s12_curves.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s12_curves.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s12_curves.cpython-312-x86_64-linux-gnu.so diff --git a/api/s13_controls.cp312-win_amd64.pyd b/app/native/api/s13_controls.cp312-win_amd64.pyd similarity index 100% rename from api/s13_controls.cp312-win_amd64.pyd rename to app/native/api/s13_controls.cp312-win_amd64.pyd diff --git a/api/s13_controls.cpython-312-x86_64-linux-gnu.so b/app/native/api/s13_controls.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s13_controls.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s13_controls.cpython-312-x86_64-linux-gnu.so diff --git a/api/s14_rules.cp312-win_amd64.pyd b/app/native/api/s14_rules.cp312-win_amd64.pyd similarity index 100% rename from api/s14_rules.cp312-win_amd64.pyd rename to app/native/api/s14_rules.cp312-win_amd64.pyd diff --git a/api/s14_rules.cpython-312-x86_64-linux-gnu.so b/app/native/api/s14_rules.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s14_rules.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s14_rules.cpython-312-x86_64-linux-gnu.so diff --git a/api/s15_energy.cp312-win_amd64.pyd b/app/native/api/s15_energy.cp312-win_amd64.pyd similarity index 100% rename from api/s15_energy.cp312-win_amd64.pyd rename to app/native/api/s15_energy.cp312-win_amd64.pyd diff --git a/api/s15_energy.cpython-312-x86_64-linux-gnu.so b/app/native/api/s15_energy.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s15_energy.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s15_energy.cpython-312-x86_64-linux-gnu.so diff --git a/api/s16_emitters.cp312-win_amd64.pyd b/app/native/api/s16_emitters.cp312-win_amd64.pyd similarity index 100% rename from api/s16_emitters.cp312-win_amd64.pyd rename to app/native/api/s16_emitters.cp312-win_amd64.pyd diff --git a/api/s16_emitters.cpython-312-x86_64-linux-gnu.so b/app/native/api/s16_emitters.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s16_emitters.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s16_emitters.cpython-312-x86_64-linux-gnu.so diff --git a/api/s17_quality.cp312-win_amd64.pyd b/app/native/api/s17_quality.cp312-win_amd64.pyd similarity index 100% rename from api/s17_quality.cp312-win_amd64.pyd rename to app/native/api/s17_quality.cp312-win_amd64.pyd diff --git a/api/s17_quality.cpython-312-x86_64-linux-gnu.so b/app/native/api/s17_quality.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s17_quality.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s17_quality.cpython-312-x86_64-linux-gnu.so diff --git a/api/s18_sources.cp312-win_amd64.pyd b/app/native/api/s18_sources.cp312-win_amd64.pyd similarity index 100% rename from api/s18_sources.cp312-win_amd64.pyd rename to app/native/api/s18_sources.cp312-win_amd64.pyd diff --git a/api/s18_sources.cpython-312-x86_64-linux-gnu.so b/app/native/api/s18_sources.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s18_sources.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s18_sources.cpython-312-x86_64-linux-gnu.so diff --git a/api/s19_reactions.cp312-win_amd64.pyd b/app/native/api/s19_reactions.cp312-win_amd64.pyd similarity index 100% rename from api/s19_reactions.cp312-win_amd64.pyd rename to app/native/api/s19_reactions.cp312-win_amd64.pyd diff --git a/api/s19_reactions.cpython-312-x86_64-linux-gnu.so b/app/native/api/s19_reactions.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s19_reactions.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s19_reactions.cpython-312-x86_64-linux-gnu.so diff --git a/api/s1_title.cp312-win_amd64.pyd b/app/native/api/s1_title.cp312-win_amd64.pyd similarity index 100% rename from api/s1_title.cp312-win_amd64.pyd rename to app/native/api/s1_title.cp312-win_amd64.pyd diff --git a/api/s1_title.cpython-312-x86_64-linux-gnu.so b/app/native/api/s1_title.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s1_title.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s1_title.cpython-312-x86_64-linux-gnu.so diff --git a/api/s20_mixing.cp312-win_amd64.pyd b/app/native/api/s20_mixing.cp312-win_amd64.pyd similarity index 100% rename from api/s20_mixing.cp312-win_amd64.pyd rename to app/native/api/s20_mixing.cp312-win_amd64.pyd diff --git a/api/s20_mixing.cpython-312-x86_64-linux-gnu.so b/app/native/api/s20_mixing.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s20_mixing.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s20_mixing.cpython-312-x86_64-linux-gnu.so diff --git a/api/s21_times.cp312-win_amd64.pyd b/app/native/api/s21_times.cp312-win_amd64.pyd similarity index 100% rename from api/s21_times.cp312-win_amd64.pyd rename to app/native/api/s21_times.cp312-win_amd64.pyd diff --git a/api/s21_times.cpython-312-x86_64-linux-gnu.so b/app/native/api/s21_times.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s21_times.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s21_times.cpython-312-x86_64-linux-gnu.so diff --git a/api/s22_report.cp312-win_amd64.pyd b/app/native/api/s22_report.cp312-win_amd64.pyd similarity index 100% rename from api/s22_report.cp312-win_amd64.pyd rename to app/native/api/s22_report.cp312-win_amd64.pyd diff --git a/api/s22_report.cpython-312-x86_64-linux-gnu.so b/app/native/api/s22_report.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s22_report.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s22_report.cpython-312-x86_64-linux-gnu.so diff --git a/api/s23_options.cp312-win_amd64.pyd b/app/native/api/s23_options.cp312-win_amd64.pyd similarity index 100% rename from api/s23_options.cp312-win_amd64.pyd rename to app/native/api/s23_options.cp312-win_amd64.pyd diff --git a/api/s23_options.cpython-312-x86_64-linux-gnu.so b/app/native/api/s23_options.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s23_options.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s23_options.cpython-312-x86_64-linux-gnu.so diff --git a/api/s23_options_util.cp312-win_amd64.pyd b/app/native/api/s23_options_util.cp312-win_amd64.pyd similarity index 100% rename from api/s23_options_util.cp312-win_amd64.pyd rename to app/native/api/s23_options_util.cp312-win_amd64.pyd diff --git a/api/s23_options_util.cpython-312-x86_64-linux-gnu.so b/app/native/api/s23_options_util.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s23_options_util.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s23_options_util.cpython-312-x86_64-linux-gnu.so diff --git a/api/s23_options_v3.cp312-win_amd64.pyd b/app/native/api/s23_options_v3.cp312-win_amd64.pyd similarity index 100% rename from api/s23_options_v3.cp312-win_amd64.pyd rename to app/native/api/s23_options_v3.cp312-win_amd64.pyd diff --git a/api/s23_options_v3.cpython-312-x86_64-linux-gnu.so b/app/native/api/s23_options_v3.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s23_options_v3.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s23_options_v3.cpython-312-x86_64-linux-gnu.so diff --git a/api/s24_coordinates.cp312-win_amd64.pyd b/app/native/api/s24_coordinates.cp312-win_amd64.pyd similarity index 100% rename from api/s24_coordinates.cp312-win_amd64.pyd rename to app/native/api/s24_coordinates.cp312-win_amd64.pyd diff --git a/api/s24_coordinates.cpython-312-x86_64-linux-gnu.so b/app/native/api/s24_coordinates.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s24_coordinates.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s24_coordinates.cpython-312-x86_64-linux-gnu.so diff --git a/api/s25_vertices.cp312-win_amd64.pyd b/app/native/api/s25_vertices.cp312-win_amd64.pyd similarity index 100% rename from api/s25_vertices.cp312-win_amd64.pyd rename to app/native/api/s25_vertices.cp312-win_amd64.pyd diff --git a/api/s25_vertices.cpython-312-x86_64-linux-gnu.so b/app/native/api/s25_vertices.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s25_vertices.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s25_vertices.cpython-312-x86_64-linux-gnu.so diff --git a/api/s26_labels.cp312-win_amd64.pyd b/app/native/api/s26_labels.cp312-win_amd64.pyd similarity index 100% rename from api/s26_labels.cp312-win_amd64.pyd rename to app/native/api/s26_labels.cp312-win_amd64.pyd diff --git a/api/s26_labels.cpython-312-x86_64-linux-gnu.so b/app/native/api/s26_labels.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s26_labels.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s26_labels.cpython-312-x86_64-linux-gnu.so diff --git a/api/s27_backdrop.cp312-win_amd64.pyd b/app/native/api/s27_backdrop.cp312-win_amd64.pyd similarity index 100% rename from api/s27_backdrop.cp312-win_amd64.pyd rename to app/native/api/s27_backdrop.cp312-win_amd64.pyd diff --git a/api/s27_backdrop.cpython-312-x86_64-linux-gnu.so b/app/native/api/s27_backdrop.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s27_backdrop.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s27_backdrop.cpython-312-x86_64-linux-gnu.so diff --git a/api/s28_end.cp312-win_amd64.pyd b/app/native/api/s28_end.cp312-win_amd64.pyd similarity index 100% rename from api/s28_end.cp312-win_amd64.pyd rename to app/native/api/s28_end.cp312-win_amd64.pyd diff --git a/api/s28_end.cpython-312-x86_64-linux-gnu.so b/app/native/api/s28_end.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s28_end.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s28_end.cpython-312-x86_64-linux-gnu.so diff --git a/api/s29_scada_device.cp312-win_amd64.pyd b/app/native/api/s29_scada_device.cp312-win_amd64.pyd similarity index 100% rename from api/s29_scada_device.cp312-win_amd64.pyd rename to app/native/api/s29_scada_device.cp312-win_amd64.pyd diff --git a/api/s29_scada_device.cpython-312-x86_64-linux-gnu.so b/app/native/api/s29_scada_device.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s29_scada_device.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s29_scada_device.cpython-312-x86_64-linux-gnu.so diff --git a/api/s2_junctions.cp312-win_amd64.pyd b/app/native/api/s2_junctions.cp312-win_amd64.pyd similarity index 100% rename from api/s2_junctions.cp312-win_amd64.pyd rename to app/native/api/s2_junctions.cp312-win_amd64.pyd diff --git a/api/s2_junctions.cpython-312-x86_64-linux-gnu.so b/app/native/api/s2_junctions.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s2_junctions.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s2_junctions.cpython-312-x86_64-linux-gnu.so diff --git a/api/s30_scada_device_data.cp312-win_amd64.pyd b/app/native/api/s30_scada_device_data.cp312-win_amd64.pyd similarity index 100% rename from api/s30_scada_device_data.cp312-win_amd64.pyd rename to app/native/api/s30_scada_device_data.cp312-win_amd64.pyd diff --git a/api/s30_scada_device_data.cpython-312-x86_64-linux-gnu.so b/app/native/api/s30_scada_device_data.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s30_scada_device_data.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s30_scada_device_data.cpython-312-x86_64-linux-gnu.so diff --git a/api/s31_scada_element.cp312-win_amd64.pyd b/app/native/api/s31_scada_element.cp312-win_amd64.pyd similarity index 100% rename from api/s31_scada_element.cp312-win_amd64.pyd rename to app/native/api/s31_scada_element.cp312-win_amd64.pyd diff --git a/api/s31_scada_element.cpython-312-x86_64-linux-gnu.so b/app/native/api/s31_scada_element.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s31_scada_element.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s31_scada_element.cpython-312-x86_64-linux-gnu.so diff --git a/api/s32_region.cp312-win_amd64.pyd b/app/native/api/s32_region.cp312-win_amd64.pyd similarity index 100% rename from api/s32_region.cp312-win_amd64.pyd rename to app/native/api/s32_region.cp312-win_amd64.pyd diff --git a/api/s32_region.cpython-312-x86_64-linux-gnu.so b/app/native/api/s32_region.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s32_region.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s32_region.cpython-312-x86_64-linux-gnu.so diff --git a/api/s32_region_util.cp312-win_amd64.pyd b/app/native/api/s32_region_util.cp312-win_amd64.pyd similarity index 100% rename from api/s32_region_util.cp312-win_amd64.pyd rename to app/native/api/s32_region_util.cp312-win_amd64.pyd diff --git a/api/s32_region_util.cpython-312-x86_64-linux-gnu.so b/app/native/api/s32_region_util.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s32_region_util.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s32_region_util.cpython-312-x86_64-linux-gnu.so diff --git a/api/s33_dma.cp312-win_amd64.pyd b/app/native/api/s33_dma.cp312-win_amd64.pyd similarity index 100% rename from api/s33_dma.cp312-win_amd64.pyd rename to app/native/api/s33_dma.cp312-win_amd64.pyd diff --git a/api/s33_dma.cpython-312-x86_64-linux-gnu.so b/app/native/api/s33_dma.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s33_dma.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s33_dma.cpython-312-x86_64-linux-gnu.so diff --git a/api/s33_dma_cal.cp312-win_amd64.pyd b/app/native/api/s33_dma_cal.cp312-win_amd64.pyd similarity index 100% rename from api/s33_dma_cal.cp312-win_amd64.pyd rename to app/native/api/s33_dma_cal.cp312-win_amd64.pyd diff --git a/api/s33_dma_cal.cpython-312-x86_64-linux-gnu.so b/app/native/api/s33_dma_cal.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s33_dma_cal.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s33_dma_cal.cpython-312-x86_64-linux-gnu.so diff --git a/api/s33_dma_gen.cp312-win_amd64.pyd b/app/native/api/s33_dma_gen.cp312-win_amd64.pyd similarity index 100% rename from api/s33_dma_gen.cp312-win_amd64.pyd rename to app/native/api/s33_dma_gen.cp312-win_amd64.pyd diff --git a/api/s33_dma_gen.cpython-312-x86_64-linux-gnu.so b/app/native/api/s33_dma_gen.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s33_dma_gen.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s33_dma_gen.cpython-312-x86_64-linux-gnu.so diff --git a/api/s34_sa.cp312-win_amd64.pyd b/app/native/api/s34_sa.cp312-win_amd64.pyd similarity index 100% rename from api/s34_sa.cp312-win_amd64.pyd rename to app/native/api/s34_sa.cp312-win_amd64.pyd diff --git a/api/s34_sa.cpython-312-x86_64-linux-gnu.so b/app/native/api/s34_sa.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s34_sa.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s34_sa.cpython-312-x86_64-linux-gnu.so diff --git a/api/s34_sa_cal.cp312-win_amd64.pyd b/app/native/api/s34_sa_cal.cp312-win_amd64.pyd similarity index 100% rename from api/s34_sa_cal.cp312-win_amd64.pyd rename to app/native/api/s34_sa_cal.cp312-win_amd64.pyd diff --git a/api/s34_sa_cal.cpython-312-x86_64-linux-gnu.so b/app/native/api/s34_sa_cal.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s34_sa_cal.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s34_sa_cal.cpython-312-x86_64-linux-gnu.so diff --git a/api/s34_sa_gen.cp312-win_amd64.pyd b/app/native/api/s34_sa_gen.cp312-win_amd64.pyd similarity index 100% rename from api/s34_sa_gen.cp312-win_amd64.pyd rename to app/native/api/s34_sa_gen.cp312-win_amd64.pyd diff --git a/api/s34_sa_gen.cpython-312-x86_64-linux-gnu.so b/app/native/api/s34_sa_gen.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s34_sa_gen.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s34_sa_gen.cpython-312-x86_64-linux-gnu.so diff --git a/api/s35_vd.cp312-win_amd64.pyd b/app/native/api/s35_vd.cp312-win_amd64.pyd similarity index 100% rename from api/s35_vd.cp312-win_amd64.pyd rename to app/native/api/s35_vd.cp312-win_amd64.pyd diff --git a/api/s35_vd.cpython-312-x86_64-linux-gnu.so b/app/native/api/s35_vd.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s35_vd.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s35_vd.cpython-312-x86_64-linux-gnu.so diff --git a/api/s35_vd_cal.cp312-win_amd64.pyd b/app/native/api/s35_vd_cal.cp312-win_amd64.pyd similarity index 100% rename from api/s35_vd_cal.cp312-win_amd64.pyd rename to app/native/api/s35_vd_cal.cp312-win_amd64.pyd diff --git a/api/s35_vd_cal.cpython-312-x86_64-linux-gnu.so b/app/native/api/s35_vd_cal.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s35_vd_cal.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s35_vd_cal.cpython-312-x86_64-linux-gnu.so diff --git a/api/s35_vd_gen.cp312-win_amd64.pyd b/app/native/api/s35_vd_gen.cp312-win_amd64.pyd similarity index 100% rename from api/s35_vd_gen.cp312-win_amd64.pyd rename to app/native/api/s35_vd_gen.cp312-win_amd64.pyd diff --git a/api/s35_vd_gen.cpython-312-x86_64-linux-gnu.so b/app/native/api/s35_vd_gen.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s35_vd_gen.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s35_vd_gen.cpython-312-x86_64-linux-gnu.so diff --git a/api/s36_wda.cp312-win_amd64.pyd b/app/native/api/s36_wda.cp312-win_amd64.pyd similarity index 100% rename from api/s36_wda.cp312-win_amd64.pyd rename to app/native/api/s36_wda.cp312-win_amd64.pyd diff --git a/api/s36_wda.cpython-312-x86_64-linux-gnu.so b/app/native/api/s36_wda.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s36_wda.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s36_wda.cpython-312-x86_64-linux-gnu.so diff --git a/api/s36_wda_cal.cp312-win_amd64.pyd b/app/native/api/s36_wda_cal.cp312-win_amd64.pyd similarity index 100% rename from api/s36_wda_cal.cp312-win_amd64.pyd rename to app/native/api/s36_wda_cal.cp312-win_amd64.pyd diff --git a/api/s36_wda_cal.cpython-312-x86_64-linux-gnu.so b/app/native/api/s36_wda_cal.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s36_wda_cal.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s36_wda_cal.cpython-312-x86_64-linux-gnu.so diff --git a/api/s38_scada_info.cp312-win_amd64.pyd b/app/native/api/s38_scada_info.cp312-win_amd64.pyd similarity index 100% rename from api/s38_scada_info.cp312-win_amd64.pyd rename to app/native/api/s38_scada_info.cp312-win_amd64.pyd diff --git a/api/s38_scada_info.cpython-312-x86_64-linux-gnu.so b/app/native/api/s38_scada_info.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s38_scada_info.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s38_scada_info.cpython-312-x86_64-linux-gnu.so diff --git a/api/s39_user.cp312-win_amd64.pyd b/app/native/api/s39_user.cp312-win_amd64.pyd similarity index 100% rename from api/s39_user.cp312-win_amd64.pyd rename to app/native/api/s39_user.cp312-win_amd64.pyd diff --git a/api/s39_user.cpython-312-x86_64-linux-gnu.so b/app/native/api/s39_user.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s39_user.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s39_user.cpython-312-x86_64-linux-gnu.so diff --git a/api/s3_reservoirs.cp312-win_amd64.pyd b/app/native/api/s3_reservoirs.cp312-win_amd64.pyd similarity index 100% rename from api/s3_reservoirs.cp312-win_amd64.pyd rename to app/native/api/s3_reservoirs.cp312-win_amd64.pyd diff --git a/api/s3_reservoirs.cpython-312-x86_64-linux-gnu.so b/app/native/api/s3_reservoirs.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s3_reservoirs.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s3_reservoirs.cpython-312-x86_64-linux-gnu.so diff --git a/api/s40_schema.cp312-win_amd64.pyd b/app/native/api/s40_schema.cp312-win_amd64.pyd similarity index 100% rename from api/s40_schema.cp312-win_amd64.pyd rename to app/native/api/s40_schema.cp312-win_amd64.pyd diff --git a/api/s40_schema.cpython-312-x86_64-linux-gnu.so b/app/native/api/s40_schema.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s40_schema.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s40_schema.cpython-312-x86_64-linux-gnu.so diff --git a/api/s41_pipe_risk_probability.cp312-win_amd64.pyd b/app/native/api/s41_pipe_risk_probability.cp312-win_amd64.pyd similarity index 100% rename from api/s41_pipe_risk_probability.cp312-win_amd64.pyd rename to app/native/api/s41_pipe_risk_probability.cp312-win_amd64.pyd diff --git a/api/s41_pipe_risk_probability.cpython-312-x86_64-linux-gnu.so b/app/native/api/s41_pipe_risk_probability.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s41_pipe_risk_probability.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s41_pipe_risk_probability.cpython-312-x86_64-linux-gnu.so diff --git a/api/s42_sensor_placement.cp312-win_amd64.pyd b/app/native/api/s42_sensor_placement.cp312-win_amd64.pyd similarity index 100% rename from api/s42_sensor_placement.cp312-win_amd64.pyd rename to app/native/api/s42_sensor_placement.cp312-win_amd64.pyd diff --git a/api/s42_sensor_placement.cpython-312-x86_64-linux-gnu.so b/app/native/api/s42_sensor_placement.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s42_sensor_placement.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s42_sensor_placement.cpython-312-x86_64-linux-gnu.so diff --git a/api/s43_burst_locate_result.cp312-win_amd64.pyd b/app/native/api/s43_burst_locate_result.cp312-win_amd64.pyd similarity index 100% rename from api/s43_burst_locate_result.cp312-win_amd64.pyd rename to app/native/api/s43_burst_locate_result.cp312-win_amd64.pyd diff --git a/api/s43_burst_locate_result.cpython-312-x86_64-linux-gnu.so b/app/native/api/s43_burst_locate_result.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s43_burst_locate_result.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s43_burst_locate_result.cpython-312-x86_64-linux-gnu.so diff --git a/api/s4_tanks.cp312-win_amd64.pyd b/app/native/api/s4_tanks.cp312-win_amd64.pyd similarity index 100% rename from api/s4_tanks.cp312-win_amd64.pyd rename to app/native/api/s4_tanks.cp312-win_amd64.pyd diff --git a/api/s4_tanks.cpython-312-x86_64-linux-gnu.so b/app/native/api/s4_tanks.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s4_tanks.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s4_tanks.cpython-312-x86_64-linux-gnu.so diff --git a/api/s5_pipes.cp312-win_amd64.pyd b/app/native/api/s5_pipes.cp312-win_amd64.pyd similarity index 100% rename from api/s5_pipes.cp312-win_amd64.pyd rename to app/native/api/s5_pipes.cp312-win_amd64.pyd diff --git a/api/s5_pipes.cpython-312-x86_64-linux-gnu.so b/app/native/api/s5_pipes.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s5_pipes.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s5_pipes.cpython-312-x86_64-linux-gnu.so diff --git a/api/s6_pumps.cp312-win_amd64.pyd b/app/native/api/s6_pumps.cp312-win_amd64.pyd similarity index 100% rename from api/s6_pumps.cp312-win_amd64.pyd rename to app/native/api/s6_pumps.cp312-win_amd64.pyd diff --git a/api/s6_pumps.cpython-312-x86_64-linux-gnu.so b/app/native/api/s6_pumps.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s6_pumps.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s6_pumps.cpython-312-x86_64-linux-gnu.so diff --git a/api/s7_valves.cp312-win_amd64.pyd b/app/native/api/s7_valves.cp312-win_amd64.pyd similarity index 100% rename from api/s7_valves.cp312-win_amd64.pyd rename to app/native/api/s7_valves.cp312-win_amd64.pyd diff --git a/api/s7_valves.cpython-312-x86_64-linux-gnu.so b/app/native/api/s7_valves.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s7_valves.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s7_valves.cpython-312-x86_64-linux-gnu.so diff --git a/api/s8_tags.cp312-win_amd64.pyd b/app/native/api/s8_tags.cp312-win_amd64.pyd similarity index 100% rename from api/s8_tags.cp312-win_amd64.pyd rename to app/native/api/s8_tags.cp312-win_amd64.pyd diff --git a/api/s8_tags.cpython-312-x86_64-linux-gnu.so b/app/native/api/s8_tags.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s8_tags.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s8_tags.cpython-312-x86_64-linux-gnu.so diff --git a/api/s9_demands.cp312-win_amd64.pyd b/app/native/api/s9_demands.cp312-win_amd64.pyd similarity index 100% rename from api/s9_demands.cp312-win_amd64.pyd rename to app/native/api/s9_demands.cp312-win_amd64.pyd diff --git a/api/s9_demands.cpython-312-x86_64-linux-gnu.so b/app/native/api/s9_demands.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/s9_demands.cpython-312-x86_64-linux-gnu.so rename to app/native/api/s9_demands.cpython-312-x86_64-linux-gnu.so diff --git a/api/sections.cp312-win_amd64.pyd b/app/native/api/sections.cp312-win_amd64.pyd similarity index 100% rename from api/sections.cp312-win_amd64.pyd rename to app/native/api/sections.cp312-win_amd64.pyd diff --git a/api/sections.cpython-312-x86_64-linux-gnu.so b/app/native/api/sections.cpython-312-x86_64-linux-gnu.so similarity index 100% rename from api/sections.cpython-312-x86_64-linux-gnu.so rename to app/native/api/sections.cpython-312-x86_64-linux-gnu.so diff --git a/app/services/__init__.py b/app/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/epanet/__init__.py b/app/services/epanet/__init__.py similarity index 100% rename from epanet/__init__.py rename to app/services/epanet/__init__.py diff --git a/epanet/epanet-output.dll b/app/services/epanet/epanet-output.dll similarity index 100% rename from epanet/epanet-output.dll rename to app/services/epanet/epanet-output.dll diff --git a/epanet/epanet.py b/app/services/epanet/epanet.py similarity index 100% rename from epanet/epanet.py rename to app/services/epanet/epanet.py diff --git a/epanet/epanet2.dll b/app/services/epanet/epanet2.dll similarity index 100% rename from epanet/epanet2.dll rename to app/services/epanet/epanet2.dll diff --git a/epanet/linux/libepanet-output.so b/app/services/epanet/linux/libepanet-output.so similarity index 100% rename from epanet/linux/libepanet-output.so rename to app/services/epanet/linux/libepanet-output.so diff --git a/epanet/linux/libepanet2.so b/app/services/epanet/linux/libepanet2.so similarity index 100% rename from epanet/linux/libepanet2.so rename to app/services/epanet/linux/libepanet2.so diff --git a/epanet/linux/runepanet b/app/services/epanet/linux/runepanet similarity index 100% rename from epanet/linux/runepanet rename to app/services/epanet/linux/runepanet diff --git a/epanet/runepanet.exe b/app/services/epanet/runepanet.exe similarity index 100% rename from epanet/runepanet.exe rename to app/services/epanet/runepanet.exe diff --git a/globals.py b/app/services/globals.py similarity index 100% rename from globals.py rename to app/services/globals.py diff --git a/mcp/router.py b/app/services/mcp/router.py similarity index 100% rename from mcp/router.py rename to app/services/mcp/router.py diff --git a/project_info.py b/app/services/project_info.py similarity index 100% rename from project_info.py rename to app/services/project_info.py diff --git a/simulation.py b/app/services/simulation.py similarity index 99% rename from simulation.py rename to app/services/simulation.py index 783a0c3..af085f9 100644 --- a/simulation.py +++ b/app/services/simulation.py @@ -1,6 +1,6 @@ import numpy as np from tjnetwork import * -from api.s36_wda_cal import * +from app.native.api.s36_wda_cal import * # from get_real_status import * from datetime import datetime, timedelta @@ -13,14 +13,14 @@ import time import shutil from epanet.epanet import Output from typing import Optional, Tuple -import influxdb_api +import app.infra.db.influxdb.api as influxdb_api import typing import psycopg import logging -import globals +import app.services.globals as globals import uuid -import project_info -from api.postgresql_info import get_pgconn_string +import app.services.project_info as project_info +from app.native.api.postgresql_info import get_pgconn_string from timescaledb.internal_queries import InternalQueries as TimescaleInternalQueries from timescaledb.internal_queries import InternalStorage as TimescaleInternalStorage diff --git a/time_api.py b/app/services/time_api.py similarity index 100% rename from time_api.py rename to app/services/time_api.py diff --git a/tjnetwork.py b/app/services/tjnetwork.py similarity index 99% rename from tjnetwork.py rename to app/services/tjnetwork.py index 402496d..358e90d 100644 --- a/tjnetwork.py +++ b/app/services/tjnetwork.py @@ -1,6 +1,6 @@ from typing import Any -import api -import epanet +import app.native.api as api +import app.services.epanet as epanet ############################################################ diff --git a/app/tasks/__init__.py b/app/tasks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/utils/__init__.py b/app/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/infra/docker/Dockerfile b/infra/docker/Dockerfile new file mode 100644 index 0000000..6801213 --- /dev/null +++ b/infra/docker/Dockerfile @@ -0,0 +1,13 @@ +FROM python:3.10-slim + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY app ./app +COPY resources ./resources + +ENV PYTHONPATH=/app + +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/infra/docker/docker-compose.yml b/infra/docker/docker-compose.yml new file mode 100644 index 0000000..3f54ba1 --- /dev/null +++ b/infra/docker/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.8' + +services: + api: + build: + context: ../.. + dockerfile: infra/docker/Dockerfile + ports: + - "8000:8000" + volumes: + - ../../app:/app/app + - ../../resources:/app/resources + environment: + - PYTHONPATH=/app + depends_on: + - redis + + redis: + image: redis:alpine + ports: + - "6379:6379" + +# Add other services as needed (postgres, influxdb, timescaledb) diff --git a/postgresql_info.py b/postgresql_info.py deleted file mode 100644 index be5b0c4..0000000 --- a/postgresql_info.py +++ /dev/null @@ -1,36 +0,0 @@ -from dotenv import load_dotenv -import os - -load_dotenv() - -pg_name = os.getenv("DB_NAME") -pg_host = os.getenv("DB_HOST") -pg_port = os.getenv("DB_PORT") -pg_user = os.getenv("DB_USER") -pg_password = os.getenv("DB_PASSWORD") - - -def get_pgconn_string( - db_name=pg_name, - db_host=pg_host, - db_port=pg_port, - db_user=pg_user, - db_password=pg_password, -): - """返回 PostgreSQL 连接字符串""" - return f"dbname={db_name} host={db_host} port={db_port} user={db_user} password={db_password}" - - -def get_pg_config(): - """返回 PostgreSQL 配置变量的字典""" - return { - "name": pg_name, - "host": pg_host, - "port": pg_port, - "user": pg_user, - } - - -def get_pg_password(): - """返回密码(谨慎使用)""" - return pg_password diff --git a/requirements.txt b/requirements.txt index 7f52fa187c42234979bba4a015aae583c674f4e9..5b04d859b7842510b325e2b3b630f0ad3bd90c2a 100644 GIT binary patch delta 7 Ocmcbkd`fx4DM0`a5CeDs delta 26 hcmX@5d`Ef1DM2A#1}=s)hD3&9h7yKchGd2U1^{a829E#$ diff --git a/20250309beibei_v2.inp b/resources/20250309beibei_v2.inp similarity index 100% rename from 20250309beibei_v2.inp rename to resources/20250309beibei_v2.inp diff --git a/fx0217-mass injection.inp b/resources/fx0217-mass injection.inp similarity index 100% rename from fx0217-mass injection.inp rename to resources/fx0217-mass injection.inp diff --git a/history_pattern_flow.csv b/resources/history_pattern_flow.csv similarity index 100% rename from history_pattern_flow.csv rename to resources/history_pattern_flow.csv diff --git a/model22_1223.inp b/resources/model22_1223.inp similarity index 100% rename from model22_1223.inp rename to resources/model22_1223.inp diff --git a/requirements2.txt b/resources/requirements2.txt similarity index 100% rename from requirements2.txt rename to resources/requirements2.txt diff --git a/scada_info.csv b/resources/scada_info.csv similarity index 100% rename from scada_info.csv rename to resources/scada_info.csv diff --git a/script/sql/create/0.base.sql b/resources/sql/create/0.base.sql similarity index 100% rename from script/sql/create/0.base.sql rename to resources/sql/create/0.base.sql diff --git a/script/sql/create/1.title.sql b/resources/sql/create/1.title.sql similarity index 100% rename from script/sql/create/1.title.sql rename to resources/sql/create/1.title.sql diff --git a/script/sql/create/10.status.sql b/resources/sql/create/10.status.sql similarity index 100% rename from script/sql/create/10.status.sql rename to resources/sql/create/10.status.sql diff --git a/script/sql/create/11.patterns.sql b/resources/sql/create/11.patterns.sql similarity index 100% rename from script/sql/create/11.patterns.sql rename to resources/sql/create/11.patterns.sql diff --git a/script/sql/create/12.curves.sql b/resources/sql/create/12.curves.sql similarity index 100% rename from script/sql/create/12.curves.sql rename to resources/sql/create/12.curves.sql diff --git a/script/sql/create/13.controls.sql b/resources/sql/create/13.controls.sql similarity index 100% rename from script/sql/create/13.controls.sql rename to resources/sql/create/13.controls.sql diff --git a/script/sql/create/14.rules.sql b/resources/sql/create/14.rules.sql similarity index 100% rename from script/sql/create/14.rules.sql rename to resources/sql/create/14.rules.sql diff --git a/script/sql/create/15.energy.sql b/resources/sql/create/15.energy.sql similarity index 100% rename from script/sql/create/15.energy.sql rename to resources/sql/create/15.energy.sql diff --git a/script/sql/create/16.emitters.sql b/resources/sql/create/16.emitters.sql similarity index 100% rename from script/sql/create/16.emitters.sql rename to resources/sql/create/16.emitters.sql diff --git a/script/sql/create/17.quality.sql b/resources/sql/create/17.quality.sql similarity index 100% rename from script/sql/create/17.quality.sql rename to resources/sql/create/17.quality.sql diff --git a/script/sql/create/18.sources.sql b/resources/sql/create/18.sources.sql similarity index 100% rename from script/sql/create/18.sources.sql rename to resources/sql/create/18.sources.sql diff --git a/script/sql/create/19.reactions.sql b/resources/sql/create/19.reactions.sql similarity index 100% rename from script/sql/create/19.reactions.sql rename to resources/sql/create/19.reactions.sql diff --git a/script/sql/create/2.junctions.sql b/resources/sql/create/2.junctions.sql similarity index 100% rename from script/sql/create/2.junctions.sql rename to resources/sql/create/2.junctions.sql diff --git a/script/sql/create/20.mixing.sql b/resources/sql/create/20.mixing.sql similarity index 100% rename from script/sql/create/20.mixing.sql rename to resources/sql/create/20.mixing.sql diff --git a/script/sql/create/21.times.sql b/resources/sql/create/21.times.sql similarity index 100% rename from script/sql/create/21.times.sql rename to resources/sql/create/21.times.sql diff --git a/script/sql/create/22.report.sql b/resources/sql/create/22.report.sql similarity index 100% rename from script/sql/create/22.report.sql rename to resources/sql/create/22.report.sql diff --git a/script/sql/create/23.options.sql b/resources/sql/create/23.options.sql similarity index 100% rename from script/sql/create/23.options.sql rename to resources/sql/create/23.options.sql diff --git a/script/sql/create/24.coordinates.sql b/resources/sql/create/24.coordinates.sql similarity index 100% rename from script/sql/create/24.coordinates.sql rename to resources/sql/create/24.coordinates.sql diff --git a/script/sql/create/25.vertices.sql b/resources/sql/create/25.vertices.sql similarity index 100% rename from script/sql/create/25.vertices.sql rename to resources/sql/create/25.vertices.sql diff --git a/script/sql/create/26.labels.sql b/resources/sql/create/26.labels.sql similarity index 100% rename from script/sql/create/26.labels.sql rename to resources/sql/create/26.labels.sql diff --git a/script/sql/create/27.backdrop.sql b/resources/sql/create/27.backdrop.sql similarity index 100% rename from script/sql/create/27.backdrop.sql rename to resources/sql/create/27.backdrop.sql diff --git a/script/sql/create/28.end.sql b/resources/sql/create/28.end.sql similarity index 100% rename from script/sql/create/28.end.sql rename to resources/sql/create/28.end.sql diff --git a/script/sql/create/29.scada_device.sql b/resources/sql/create/29.scada_device.sql similarity index 100% rename from script/sql/create/29.scada_device.sql rename to resources/sql/create/29.scada_device.sql diff --git a/script/sql/create/3.reservoirs.sql b/resources/sql/create/3.reservoirs.sql similarity index 100% rename from script/sql/create/3.reservoirs.sql rename to resources/sql/create/3.reservoirs.sql diff --git a/script/sql/create/30.scada_device_data.sql b/resources/sql/create/30.scada_device_data.sql similarity index 100% rename from script/sql/create/30.scada_device_data.sql rename to resources/sql/create/30.scada_device_data.sql diff --git a/script/sql/create/31.scada_element.sql b/resources/sql/create/31.scada_element.sql similarity index 100% rename from script/sql/create/31.scada_element.sql rename to resources/sql/create/31.scada_element.sql diff --git a/script/sql/create/32.region.sql b/resources/sql/create/32.region.sql similarity index 100% rename from script/sql/create/32.region.sql rename to resources/sql/create/32.region.sql diff --git a/script/sql/create/33.dma.sql b/resources/sql/create/33.dma.sql similarity index 100% rename from script/sql/create/33.dma.sql rename to resources/sql/create/33.dma.sql diff --git a/script/sql/create/34.sa.sql b/resources/sql/create/34.sa.sql similarity index 100% rename from script/sql/create/34.sa.sql rename to resources/sql/create/34.sa.sql diff --git a/script/sql/create/35.vd.sql b/resources/sql/create/35.vd.sql similarity index 100% rename from script/sql/create/35.vd.sql rename to resources/sql/create/35.vd.sql diff --git a/script/sql/create/36.wda.sql b/resources/sql/create/36.wda.sql similarity index 100% rename from script/sql/create/36.wda.sql rename to resources/sql/create/36.wda.sql diff --git a/script/sql/create/37.history_patterns_flows.sql b/resources/sql/create/37.history_patterns_flows.sql similarity index 100% rename from script/sql/create/37.history_patterns_flows.sql rename to resources/sql/create/37.history_patterns_flows.sql diff --git a/script/sql/create/38.scada_info.sql b/resources/sql/create/38.scada_info.sql similarity index 100% rename from script/sql/create/38.scada_info.sql rename to resources/sql/create/38.scada_info.sql diff --git a/script/sql/create/39.users.sql b/resources/sql/create/39.users.sql similarity index 100% rename from script/sql/create/39.users.sql rename to resources/sql/create/39.users.sql diff --git a/script/sql/create/4.tanks.sql b/resources/sql/create/4.tanks.sql similarity index 100% rename from script/sql/create/4.tanks.sql rename to resources/sql/create/4.tanks.sql diff --git a/script/sql/create/40.scheme_list.sql b/resources/sql/create/40.scheme_list.sql similarity index 100% rename from script/sql/create/40.scheme_list.sql rename to resources/sql/create/40.scheme_list.sql diff --git a/script/sql/create/41.pipe_risk_probability.sql b/resources/sql/create/41.pipe_risk_probability.sql similarity index 100% rename from script/sql/create/41.pipe_risk_probability.sql rename to resources/sql/create/41.pipe_risk_probability.sql diff --git a/script/sql/create/42.sensor_placement.sql b/resources/sql/create/42.sensor_placement.sql similarity index 100% rename from script/sql/create/42.sensor_placement.sql rename to resources/sql/create/42.sensor_placement.sql diff --git a/script/sql/create/43.burst_locate_result.sql b/resources/sql/create/43.burst_locate_result.sql similarity index 100% rename from script/sql/create/43.burst_locate_result.sql rename to resources/sql/create/43.burst_locate_result.sql diff --git a/script/sql/create/5.pipes.sql b/resources/sql/create/5.pipes.sql similarity index 100% rename from script/sql/create/5.pipes.sql rename to resources/sql/create/5.pipes.sql diff --git a/script/sql/create/6.pumps.sql b/resources/sql/create/6.pumps.sql similarity index 100% rename from script/sql/create/6.pumps.sql rename to resources/sql/create/6.pumps.sql diff --git a/script/sql/create/7.valves.sql b/resources/sql/create/7.valves.sql similarity index 100% rename from script/sql/create/7.valves.sql rename to resources/sql/create/7.valves.sql diff --git a/script/sql/create/8.tags.sql b/resources/sql/create/8.tags.sql similarity index 100% rename from script/sql/create/8.tags.sql rename to resources/sql/create/8.tags.sql diff --git a/script/sql/create/9.demands.sql b/resources/sql/create/9.demands.sql similarity index 100% rename from script/sql/create/9.demands.sql rename to resources/sql/create/9.demands.sql diff --git a/script/sql/create/extension_data.sql b/resources/sql/create/extension_data.sql similarity index 100% rename from script/sql/create/extension_data.sql rename to resources/sql/create/extension_data.sql diff --git a/script/sql/create/operation.sql b/resources/sql/create/operation.sql similarity index 100% rename from script/sql/create/operation.sql rename to resources/sql/create/operation.sql diff --git a/script/sql/drop/0.base.sql b/resources/sql/drop/0.base.sql similarity index 100% rename from script/sql/drop/0.base.sql rename to resources/sql/drop/0.base.sql diff --git a/script/sql/drop/1.title.sql b/resources/sql/drop/1.title.sql similarity index 100% rename from script/sql/drop/1.title.sql rename to resources/sql/drop/1.title.sql diff --git a/script/sql/drop/10.status.sql b/resources/sql/drop/10.status.sql similarity index 100% rename from script/sql/drop/10.status.sql rename to resources/sql/drop/10.status.sql diff --git a/script/sql/drop/11.patterns.sql b/resources/sql/drop/11.patterns.sql similarity index 100% rename from script/sql/drop/11.patterns.sql rename to resources/sql/drop/11.patterns.sql diff --git a/script/sql/drop/12.curves.sql b/resources/sql/drop/12.curves.sql similarity index 100% rename from script/sql/drop/12.curves.sql rename to resources/sql/drop/12.curves.sql diff --git a/script/sql/drop/13.controls.sql b/resources/sql/drop/13.controls.sql similarity index 100% rename from script/sql/drop/13.controls.sql rename to resources/sql/drop/13.controls.sql diff --git a/script/sql/drop/14.rules.sql b/resources/sql/drop/14.rules.sql similarity index 100% rename from script/sql/drop/14.rules.sql rename to resources/sql/drop/14.rules.sql diff --git a/script/sql/drop/15.energy.sql b/resources/sql/drop/15.energy.sql similarity index 100% rename from script/sql/drop/15.energy.sql rename to resources/sql/drop/15.energy.sql diff --git a/script/sql/drop/16.emitters.sql b/resources/sql/drop/16.emitters.sql similarity index 100% rename from script/sql/drop/16.emitters.sql rename to resources/sql/drop/16.emitters.sql diff --git a/script/sql/drop/17.quality.sql b/resources/sql/drop/17.quality.sql similarity index 100% rename from script/sql/drop/17.quality.sql rename to resources/sql/drop/17.quality.sql diff --git a/script/sql/drop/18.sources.sql b/resources/sql/drop/18.sources.sql similarity index 100% rename from script/sql/drop/18.sources.sql rename to resources/sql/drop/18.sources.sql diff --git a/script/sql/drop/19.reactions.sql b/resources/sql/drop/19.reactions.sql similarity index 100% rename from script/sql/drop/19.reactions.sql rename to resources/sql/drop/19.reactions.sql diff --git a/script/sql/drop/2.junctions.sql b/resources/sql/drop/2.junctions.sql similarity index 100% rename from script/sql/drop/2.junctions.sql rename to resources/sql/drop/2.junctions.sql diff --git a/script/sql/drop/20.mixing.sql b/resources/sql/drop/20.mixing.sql similarity index 100% rename from script/sql/drop/20.mixing.sql rename to resources/sql/drop/20.mixing.sql diff --git a/script/sql/drop/21.times.sql b/resources/sql/drop/21.times.sql similarity index 100% rename from script/sql/drop/21.times.sql rename to resources/sql/drop/21.times.sql diff --git a/script/sql/drop/22.report.sql b/resources/sql/drop/22.report.sql similarity index 100% rename from script/sql/drop/22.report.sql rename to resources/sql/drop/22.report.sql diff --git a/script/sql/drop/23.options.sql b/resources/sql/drop/23.options.sql similarity index 100% rename from script/sql/drop/23.options.sql rename to resources/sql/drop/23.options.sql diff --git a/script/sql/drop/24.coordinates.sql b/resources/sql/drop/24.coordinates.sql similarity index 100% rename from script/sql/drop/24.coordinates.sql rename to resources/sql/drop/24.coordinates.sql diff --git a/script/sql/drop/25.vertices.sql b/resources/sql/drop/25.vertices.sql similarity index 100% rename from script/sql/drop/25.vertices.sql rename to resources/sql/drop/25.vertices.sql diff --git a/script/sql/drop/26.labels.sql b/resources/sql/drop/26.labels.sql similarity index 100% rename from script/sql/drop/26.labels.sql rename to resources/sql/drop/26.labels.sql diff --git a/script/sql/drop/27.backdrop.sql b/resources/sql/drop/27.backdrop.sql similarity index 100% rename from script/sql/drop/27.backdrop.sql rename to resources/sql/drop/27.backdrop.sql diff --git a/script/sql/drop/28.end.sql b/resources/sql/drop/28.end.sql similarity index 100% rename from script/sql/drop/28.end.sql rename to resources/sql/drop/28.end.sql diff --git a/script/sql/drop/29.scada_device.sql b/resources/sql/drop/29.scada_device.sql similarity index 100% rename from script/sql/drop/29.scada_device.sql rename to resources/sql/drop/29.scada_device.sql diff --git a/script/sql/drop/3.reservoirs.sql b/resources/sql/drop/3.reservoirs.sql similarity index 100% rename from script/sql/drop/3.reservoirs.sql rename to resources/sql/drop/3.reservoirs.sql diff --git a/script/sql/drop/30.scada_device_data.sql b/resources/sql/drop/30.scada_device_data.sql similarity index 100% rename from script/sql/drop/30.scada_device_data.sql rename to resources/sql/drop/30.scada_device_data.sql diff --git a/script/sql/drop/31.scada_element.sql b/resources/sql/drop/31.scada_element.sql similarity index 100% rename from script/sql/drop/31.scada_element.sql rename to resources/sql/drop/31.scada_element.sql diff --git a/script/sql/drop/32.region.sql b/resources/sql/drop/32.region.sql similarity index 100% rename from script/sql/drop/32.region.sql rename to resources/sql/drop/32.region.sql diff --git a/script/sql/drop/33.dma.sql b/resources/sql/drop/33.dma.sql similarity index 100% rename from script/sql/drop/33.dma.sql rename to resources/sql/drop/33.dma.sql diff --git a/script/sql/drop/34.sa.sql b/resources/sql/drop/34.sa.sql similarity index 100% rename from script/sql/drop/34.sa.sql rename to resources/sql/drop/34.sa.sql diff --git a/script/sql/drop/35.vd.sql b/resources/sql/drop/35.vd.sql similarity index 100% rename from script/sql/drop/35.vd.sql rename to resources/sql/drop/35.vd.sql diff --git a/script/sql/drop/36.wda.sql b/resources/sql/drop/36.wda.sql similarity index 100% rename from script/sql/drop/36.wda.sql rename to resources/sql/drop/36.wda.sql diff --git a/script/sql/drop/37.history_patterns_flows.sql b/resources/sql/drop/37.history_patterns_flows.sql similarity index 100% rename from script/sql/drop/37.history_patterns_flows.sql rename to resources/sql/drop/37.history_patterns_flows.sql diff --git a/script/sql/drop/38.scada_info.sql b/resources/sql/drop/38.scada_info.sql similarity index 100% rename from script/sql/drop/38.scada_info.sql rename to resources/sql/drop/38.scada_info.sql diff --git a/script/sql/drop/39.users.sql b/resources/sql/drop/39.users.sql similarity index 100% rename from script/sql/drop/39.users.sql rename to resources/sql/drop/39.users.sql diff --git a/script/sql/drop/4.tanks.sql b/resources/sql/drop/4.tanks.sql similarity index 100% rename from script/sql/drop/4.tanks.sql rename to resources/sql/drop/4.tanks.sql diff --git a/script/sql/drop/40.scheme_list.sql b/resources/sql/drop/40.scheme_list.sql similarity index 100% rename from script/sql/drop/40.scheme_list.sql rename to resources/sql/drop/40.scheme_list.sql diff --git a/script/sql/drop/41.pipe_risk_probability.sql b/resources/sql/drop/41.pipe_risk_probability.sql similarity index 100% rename from script/sql/drop/41.pipe_risk_probability.sql rename to resources/sql/drop/41.pipe_risk_probability.sql diff --git a/script/sql/drop/42.sensor_placement.sql b/resources/sql/drop/42.sensor_placement.sql similarity index 100% rename from script/sql/drop/42.sensor_placement.sql rename to resources/sql/drop/42.sensor_placement.sql diff --git a/script/sql/drop/43.burst_locate_result.sql b/resources/sql/drop/43.burst_locate_result.sql similarity index 100% rename from script/sql/drop/43.burst_locate_result.sql rename to resources/sql/drop/43.burst_locate_result.sql diff --git a/script/sql/drop/5.pipes.sql b/resources/sql/drop/5.pipes.sql similarity index 100% rename from script/sql/drop/5.pipes.sql rename to resources/sql/drop/5.pipes.sql diff --git a/script/sql/drop/6.pumps.sql b/resources/sql/drop/6.pumps.sql similarity index 100% rename from script/sql/drop/6.pumps.sql rename to resources/sql/drop/6.pumps.sql diff --git a/script/sql/drop/7.valves.sql b/resources/sql/drop/7.valves.sql similarity index 100% rename from script/sql/drop/7.valves.sql rename to resources/sql/drop/7.valves.sql diff --git a/script/sql/drop/8.tags.sql b/resources/sql/drop/8.tags.sql similarity index 100% rename from script/sql/drop/8.tags.sql rename to resources/sql/drop/8.tags.sql diff --git a/script/sql/drop/9.demands.sql b/resources/sql/drop/9.demands.sql similarity index 100% rename from script/sql/drop/9.demands.sql rename to resources/sql/drop/9.demands.sql diff --git a/script/sql/drop/extension_data.sql b/resources/sql/drop/extension_data.sql similarity index 100% rename from script/sql/drop/extension_data.sql rename to resources/sql/drop/extension_data.sql diff --git a/script/sql/drop/operation.sql b/resources/sql/drop/operation.sql similarity index 100% rename from script/sql/drop/operation.sql rename to resources/sql/drop/operation.sql diff --git a/temp.rpt b/resources/temp.rpt similarity index 100% rename from temp.rpt rename to resources/temp.rpt diff --git a/北碚市政管线风险评价结果.xlsx b/resources/北碚市政管线风险评价结果.xlsx similarity index 100% rename from 北碚市政管线风险评价结果.xlsx rename to resources/北碚市政管线风险评价结果.xlsx diff --git a/市政管线.dbf b/resources/市政管线.dbf similarity index 100% rename from 市政管线.dbf rename to resources/市政管线.dbf diff --git a/市政管线.prj b/resources/市政管线.prj similarity index 100% rename from 市政管线.prj rename to resources/市政管线.prj diff --git a/市政管线.shp b/resources/市政管线.shp similarity index 100% rename from 市政管线.shp rename to resources/市政管线.shp diff --git a/市政管线.shx b/resources/市政管线.shx similarity index 100% rename from 市政管线.shx rename to resources/市政管线.shx diff --git a/标准cleaned_demand_data.csv b/resources/标准cleaned_demand_data.csv similarity index 100% rename from 标准cleaned_demand_data.csv rename to resources/标准cleaned_demand_data.csv diff --git a/AutoPullGitChanges.bat b/scripts/AutoPullGitChanges.bat similarity index 100% rename from AutoPullGitChanges.bat rename to scripts/AutoPullGitChanges.bat diff --git a/all_auto_task.py b/scripts/all_auto_task.py similarity index 100% rename from all_auto_task.py rename to scripts/all_auto_task.py diff --git a/auto_cache.py b/scripts/auto_cache.py similarity index 100% rename from auto_cache.py rename to scripts/auto_cache.py diff --git a/auto_realtime.py b/scripts/auto_realtime.py similarity index 100% rename from auto_realtime.py rename to scripts/auto_realtime.py diff --git a/auto_store_non_realtime_SCADA_data.py b/scripts/auto_store_non_realtime_SCADA_data.py similarity index 100% rename from auto_store_non_realtime_SCADA_data.py rename to scripts/auto_store_non_realtime_SCADA_data.py diff --git a/build_pyd.cmd b/scripts/build_pyd.cmd similarity index 100% rename from build_pyd.cmd rename to scripts/build_pyd.cmd diff --git a/build_pyd.py b/scripts/build_pyd.py similarity index 100% rename from build_pyd.py rename to scripts/build_pyd.py diff --git a/clean_projects.py b/scripts/clean_projects.py similarity index 100% rename from clean_projects.py rename to scripts/clean_projects.py diff --git a/copy_project.py b/scripts/copy_project.py similarity index 100% rename from copy_project.py rename to scripts/copy_project.py diff --git a/create_project.py b/scripts/create_project.py similarity index 100% rename from create_project.py rename to scripts/create_project.py diff --git a/create_project_v3.py b/scripts/create_project_v3.py similarity index 100% rename from create_project_v3.py rename to scripts/create_project_v3.py diff --git a/create_template.py b/scripts/create_template.py similarity index 100% rename from create_template.py rename to scripts/create_template.py diff --git a/delete_project.py b/scripts/delete_project.py similarity index 100% rename from delete_project.py rename to scripts/delete_project.py diff --git a/demo.py b/scripts/demo.py similarity index 100% rename from demo.py rename to scripts/demo.py diff --git a/dev.py b/scripts/dev.py similarity index 100% rename from dev.py rename to scripts/dev.py diff --git a/drawpipe.py b/scripts/drawpipe.py similarity index 100% rename from drawpipe.py rename to scripts/drawpipe.py diff --git a/dump_inp.py b/scripts/dump_inp.py similarity index 100% rename from dump_inp.py rename to scripts/dump_inp.py diff --git a/get_current_status.py b/scripts/get_current_status.py similarity index 100% rename from get_current_status.py rename to scripts/get_current_status.py diff --git a/get_current_total_Q.py b/scripts/get_current_total_Q.py similarity index 100% rename from get_current_total_Q.py rename to scripts/get_current_total_Q.py diff --git a/get_data.py b/scripts/get_data.py similarity index 100% rename from get_data.py rename to scripts/get_data.py diff --git a/get_hist_data.py b/scripts/get_hist_data.py similarity index 100% rename from get_hist_data.py rename to scripts/get_hist_data.py diff --git a/get_realValue.py b/scripts/get_realValue.py similarity index 100% rename from get_realValue.py rename to scripts/get_realValue.py diff --git a/install.py b/scripts/install.py similarity index 100% rename from install.py rename to scripts/install.py diff --git a/open_szh.py b/scripts/open_szh.py similarity index 100% rename from open_szh.py rename to scripts/open_szh.py diff --git a/redis_clear_all_keys.py b/scripts/redis_clear_all_keys.py similarity index 100% rename from redis_clear_all_keys.py rename to scripts/redis_clear_all_keys.py diff --git a/restartpg.bat b/scripts/restartpg.bat similarity index 100% rename from restartpg.bat rename to scripts/restartpg.bat diff --git a/restore_project.py b/scripts/restore_project.py similarity index 100% rename from restore_project.py rename to scripts/restore_project.py diff --git a/restore_projects.py b/scripts/restore_projects.py similarity index 100% rename from restore_projects.py rename to scripts/restore_projects.py diff --git a/run_server.py b/scripts/run_server.py similarity index 94% rename from run_server.py rename to scripts/run_server.py index 958ce34..674b846 100644 --- a/run_server.py +++ b/scripts/run_server.py @@ -10,7 +10,7 @@ if __name__ == "__main__": # 用 uvicorn.run 支持 workers 参数 uvicorn.run( - "main:app", + "app.main:app", host="0.0.0.0", port=8000, workers=2, # 这里可以设置多进程 diff --git a/run_simlation.py b/scripts/run_simlation.py similarity index 100% rename from run_simlation.py rename to scripts/run_simlation.py diff --git a/run_simulation.py b/scripts/run_simulation.py similarity index 100% rename from run_simulation.py rename to scripts/run_simulation.py diff --git a/startfastapiserver.bat b/scripts/startfastapiserver.bat similarity index 100% rename from startfastapiserver.bat rename to scripts/startfastapiserver.bat diff --git a/startpg.bat b/scripts/startpg.bat similarity index 100% rename from startpg.bat rename to scripts/startpg.bat diff --git a/test_tjnetwork.py b/scripts/test_tjnetwork.py similarity index 100% rename from test_tjnetwork.py rename to scripts/test_tjnetwork.py