Files
test/app/api/__pycache__/statistics_api.cpython-311.pyc
T

26 lines
10 KiB
Plaintext
Raw Normal View History

2026-09-21 19:03:31 +08:00
§
W�ªj ãóF—dZddlmZddlmZddlmZmZddlm Z ddl
m Z m Z ddl
mZmZddlmZdd lmZdd
lmZmZmZmZmZmZmZmZmZmZdd lm Z dd l!m"Z"ed
dg¬¦«Z#e# $deee d¬¦« dndod4„¦«Z%e# $d5ee&ed6¬¦«dpd7„¦«Z'e# $d8d9¬:¦«dpd;„¦«Z(e# $d<ee&ed=¬¦« dqdrdA„¦«Z)e# $dBee&edC¬¦« dsdtdI„¦«Z*e# $dJee&edK¬¦« dudvdR„¦«Z+e# $dSee&edT¬¦« dwdxdX„¦«Z,e# $dYee&edZ¬¦« dydzd[„¦«Z-e# $d\ee&ed]¬¦«dpd^„¦«Z.e# $d_ee&ed`¬¦« d{d|de„¦«Z/e# $dfee&edg¬¦« dyd}dj„¦«Z0e# $dkeedl¬¦«dpdm„¦«Z1dS)~uX统计分æž�接å�£ï¼ˆéœ€æ±‚ 2.6ã€�2.7.2ã€�4.4),统一挂在 /statistics å‰�缀下。é)Ú annotations)Ú Annotated)Ú APIRouterÚQuery)Úsettings)Ú DbSessionÚ ReadAccount)ÚRespÚok)Ú
StudentDao)Ú
PageResult)
Ú AllAboveItemÚClassAvgDurationItemÚClassAvgScoreItemÚClassOverviewItemÚFailDetailItemÚ
FunnelItemÚ OverviewOutÚ
SalaryTopItemÚStudentDurationItemÚVolatilityItem)Ú
StudentOut)ÚStatisticsServicez /statisticsu2.6 统计分æž�)ÚprefixÚtagsz/students/by-ageu<2.6.1 动æ€�年龄范围查询(gt/gte/lt/lte/eq/between))Úresponse_modelÚsummaryÚgteNéé
ÚageÚascÚdbrÚ_r ÚoperatorúLAnnotated[str, Query(description='gt / gte / lt / lte / eq / ne / between')]ÚvalueõFAnnotated[int | None, Query(ge=1, le=100, description='年龄阈值')]Úvalue2õTAnnotated[int | None, Query(ge=1, le=100, description='between 时的第二个值')]Úclass_idúAnnotated[int | None, Query()]Úgenderú(Annotated[int | None, Query(ge=1, le=2)]Ústatusú(Annotated[int | None, Query(ge=1, le=3)]Ú
advisor_idÚ educationúAnnotated[str | None, Query()]ÚpageúAnnotated[int, Query(ge=1)]Ú page_sizeú#Annotated[int, Query(ge=1, le=200)]Úorder_byõ9Annotated[str, Query(description='支æŒ�按 age 排åº�')]Úorderú-Annotated[str, Query(pattern='^(asc|desc)$')]c
ó¶—tj||||||||| | |
¬¦ « }tj|||
| ¦«\}}}
}t ||
| |d„|D¦«dœ¦«S)N)r+r-r/r1r2r8r:có6—g|]}tj|¦«‘ŒS©)rÚmodel_validate)Ú.0Úss ú.D:\xwt0803\wolin_sms\app\api\statistics_api.pyú
<listcomp>z#students_by_age.<locals>.<listcomp>>s#€Ð>Ð>Ð>°1•*Ô+¨AÑ.Ô.Ð>Ð>Ð>ó)Útotalr4r6ÚpagesÚitems)rÚ age_queryr Úpaginater )r#r$r%r'r)r+r-r/r1r2r4r6r8r:ÚstmtrGrErFs rBÚstudents_by_agerK!s‹€õ* Ô &Ø
ˆH�e˜VØ &°ÀJØ h°eð ñ ô €Dõ
!+Ô 3°B¸¸dÀIÑ NÔ NÑ€Eˆ5�$˜Ý
Ø °9ÀuØ>Ð>¸Ð>Ñ>Ô>ððñ ô ðrDz/classes/overviewu62.6.1 多维度ç�­çº§ç»Ÿè®¡ï¼ˆäººæ•° + 性别分布)cóD—ttj|¦«¦«S©N)r rÚclass_overview©r#r$s rBrNrNBs€å
ÕÔ.¨rÑ2Ô2Ñ 3Ô 3Ð3rDz/students/age-distributionu年龄分布(图表用))rcóR—ddlm}t| |¦«¦«S)Nr)Ú
StatisticsDao)Úapp.dao.statistics_daorQr Úage_distribution)r#r$rQs rBrSrSGs0€à4Ð4Ð4Ð4Ð4Ð4å
ˆm×,Ò,¨RÑ0Ô0Ñ 1Ô 1Ð1rDz/scores/all-aboveu02.6.2 æ¯�次考核都在分数线以上的学生éPÚ thresholdõ?Annotated[float, Query(ge=0, le=1000, description='分数线')]cóx—tj|||¦«}t||d›dt|¦«›d�¬¦«S)NÚgu2 分以上(æ¯�次考核都达标)的学生共 u 人)Úmsg)rÚ all_abover Úlen)r#r$rUr+Úrowss rBÚscores_all_abover]OsI€õ Ô & r¨9°hÑ ?Ô ?€DÝ