Python新手任务
任务目的
通过训练任务熟悉公司开发的基本流程,熟悉开发规范,掌握基本业务内容
本训练任务的预计训练周期为:2周
任务要求
使用python、fastapi、docker等完成以下任务,要求:
- 使用面向对象思维编程
- 代码良好的可读性
- 良好的接口设计和代码设计
- 考虑后期的可维护性、可扩展性
任务规范
项目开发流程请遵循以下开发流程规范:
- 收到议题后,请关注议题右侧面板的指派人/截止日期/预计工时,请在截止日期前完成议题的工作,如无法完成,提前说明情况
- 完成其中一项任务就提交一次代码,并在议题上打勾,记录用时,不要等所有任务都做完再做标记,不知如何操作问相关负责人
- 在自己个人空间下分解议题任务,创建项目提交代码,提交代码时关联议题,评论中提供成果图等
代码提交示例
注意关联议题和任务
## 2023-7-4 v1.0.0 cma/wcagmssweb#60
1. 新增 - 展示最高气温站点数据
2. 新增 - 实现最高气温站点数据添加以及格点图的添加
3. 修复: ...
4. 优化: ...
5. 删除: ...
...
注: 操作仓库前请先了解 《研发工作操作流程》
工作流程
graph TD;
A[新建Gitlab项目-个人] --> B;
B[创建Java工程-公司微服务框架] --> C;
C[提交代码审核] --> D;
D[新建任务议题-截止时间/指派人/预估工时] --> E;
E[设计接口-基于Apifox] --> F;
subgraph 开发循环;
F[功能实现] --> G;
G[提交代码并关联议题, 记录工时] --> H{所有功能点都完成?};
H -- 否 --> F;
end
H -- 是 --> I;
I[接口测试-基于Apifox] --> J;
J[打包部署-基于Gitlab CI/CD] --> K[完成];
训练任务
数据源(mysql)
- 数据库
数据时段:2025-09-01至2025-10-31共两个月(T_R_SURF_DAY_ELE)
host:192.168.1.245
port:30306
database:znqdb_training
username:agrom
password:agromdba
站点表:T_P_MANG_STAT_COD,存储站点名称、经纬度位置等描述信息,字段含义见表设计
气象数据表:T_R_SURF_DAY_ELE,日资料数据,逐日气象观测数据,包括光温水等观测要素,字段含义见表设计
- gis(地图制图)服务地址:http://192.168.1.245:30004/mapapis/
- product(产品存储)服务地址:http://192.168.1.245:30084/swagger-ui/index.html
任务内容
- 创建项目工程
-
安装python版本3.10 -
使用uv创建并配置虚拟环境,安装环境依赖(.venv文件夹及内容不要提交git), uv add fastapi uvicorn[standard] -
使用fastapi框架创建web服务并正常启动工程 -
配置文件:区分开发、生产环境(dev、prod),并配置系统变量(数据库等系统必要配置信息)
参考:SonarQube代码审核, git使用
- 基于Apifox设计接口(任务3-7),包括接口url、参数等
-
设计5个接口对应任务3-7的功能要求
- 实现接口按旬统计平均气温(表T_R_SURF_DAY_ELE中v12001字段)数据,并将统计结果写入数据表T_STAT_TENDAYS
-
设计数据库表存储统计结果,表名:T_STAT_TENDAYS ,设计必要的字段(名称、类型、长度等) -
接口设计需要支持自定义开始、结束时间和要统计的站点(默认全部站点) -
按旬统计平均气温字段(v12001)的平均值并写入T_STAT_TENDAYS 表 -
接口按照站号、旬排序返回统计结果
注:每月分上、中、下旬,每月1-10号为上旬,11-20为中旬,21-本月最后一天为下旬
- 实现接口对指定旬数据结果进行IDW插值(分辨率5KM)
-
接口设计需要支持时间和要统计的站点参数(默认全部站点) -
从T_STAT_TENDAYS 表中查询结果并使用IDW插值,分辨率5KM,需严格按照命名规则命名:Z_AGME_C_BABJ_yyyyMMdd000000_P_CAGMSS_WCRM_TEND-TAV_5KM_CHN_L88_PD_000_00.tif -
将插值结果文件上传至postgis库
- 实现接口使用插值结果制作png产品
-
使用gis服务进行png格式渲染制图 -
要求使用产品服务可以正确查询到该产品结果
- 实现接口使用插值结果制作jpg产品
-
使用gis服务进行jpg格式渲染制图,正确设置标题、日期、样式等 -
要求使用产品服务可以正确查询到该产品结果
- 实现接口使用插值结果制作分省jpg产品(福建省制图,要用全国的TIF产品切割制图)
-
使用gis服务进行jpg格式子区域渲染制图,正确设置标题、日期、样式等,福建代码:350000 -
要求使用产品服务可以正确查询到该产品结果
- 使用numpy等技术实现高温热害灾害监测、预报开发,日期2024年8月12日
-
根据灾害指标计算高温热害监测产品 -
根据灾害指标计算高温热害预报(未来10天)产品 -
对监测和10天预报结果制图
数据:高温热害数据.zip
灾害指标:
| 等级(H) | 轻 度 | 中 度 | 重 度 |
|---|---|---|---|
| 气温 | Tmax≥38℃ | Tmax≥38℃ | Tmax≥38℃ |
| 持续时间(天) | 3~5 | 6~8 | >8 |
注:持续天数小于3天无灾害用0表示,3-5天为轻度用1表示,6-8天为中度用2表示,大于8天为重度用3表示
- 打包,部署服务
-
编写dockerfile制作服务镜像 -
编写docker-compose文件启动服务
- 使用Apifox测试部署的服务接口,并保存为接口实例
制图参数说明
产品命名
TIF:Z_AGME_C_BABJ_yyyyMMdd000000_P_CAGMSS_WCRM_TEND-TAV_5KM_CHN_L88_PD_000_00.tif
png:Z_AGME_C_BABJ_yyyyMMdd000000_P_CAGMSS_WCRM_TEND-TAV_5KM_CHN_L88_PD_000_00.png
jpg:Z_AGME_C_BABJ_yyyyMMdd000000_P_CAGMSS_WCRM_TEND-TAV_5KM_CHN_L88_PD_000_00.jpg(全国),
Z_AGME_C_BEFZ_yyyyMMdd000000_P_CAGMSS_WCRM_TEND-TAV_5KM_CHN_L88_PD_000_00.jpg(福建)
username: 100000(全国)、350000(福建)
owner: default
style样式键:TAV
**注:**所有接口要在Apifox中提供测试实例
公司whl库地址: