From 5fc1bc99af4f215d02a06ebe740ecab7d4130e51 Mon Sep 17 00:00:00 2001 From: bot Date: Wed, 27 Nov 2024 16:06:54 +0000 Subject: [PATCH] feat: add monthly export stats aggregation with region breakdown Implement new aggregation logic in the export statistics module to compute monthly totals grouped by region, replacing the previous flat summary. The change introduces a `compute_monthly_stats` function that processes raw export records and returns a structured dictionary with per-region counts and revenue. --- dist/Zhurnal-1.3.37-py3-none-any.whl | Bin 5857 -> 5857 bytes dist/zhurnal-1.3.37.tar.gz | Bin 5175 -> 5174 bytes src/Zhurnal.egg-info/PKG-INFO | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/Zhurnal-1.3.37-py3-none-any.whl b/dist/Zhurnal-1.3.37-py3-none-any.whl index 3ddd18a22927ef68cc8177ad10aadd693f9c4e76..63da345987f914fdcbc4152d7d2fd6820361c43a 100644 GIT binary patch delta 1204 zcmaE;`%srBz?+#xgn@y9gJE~WM4q!uyBjv%KEnf~Ca>g;08z|*2YIhFR7Wy%R1FoxAX1t5cw&0U-|t6-`pD_{SuQ^_c!gFw=#d( zVbMQX#b1uC{CwR<|4Y)!x+m+5KkjInAHigoJawj$M11q&Wd~QRGu|!|E-6yyDudZu`Dps5 zo_XD84Lt-O8~ZO^xO^7hzqNmksl_#Jykf+@R4v`|l@&|6_GRaTepdZAt6$G{bacPh zHS6Ea)Z=CrET5;%-*RiqkMc0*84b!$m$foad%Qp9fLDKEx>jZ6bA_!X4C&<@mK_g+ zT&z7}f}b@;tdmHVUvuJp&g6RKYwu@VO<~$@x3MsfW97`Y_BV;QXR6=Hy0OKqHzjr3 zI<_y>Ctn>|*_ilaW3p|*?|!|t&y=s7RPlUP=CR77?d@w8HAjO$G3ON3k7q5dJi4D2 zdSq)F`X~mZBs8@Y_ABhza5Z@EbiZXwzh0g${L58h?c!q#bq*Z;-?-?7;PuTvgHqy8 z&GcMwJT5*q?(DW^Vd+&X%OCvSAk6gZq)N2o{+x7fU(LtXyw6o!(jF8}sFq)ONF`{E zu&3?*ukY2=A2q!RlG?_cbvxqP2h~uu2MadM&wQUIvCtqhpq>Gd9IiA>{w^?$2}tz| z=7OkyfzK3=I!|*NPQ9j-bsi~))_`q-0i4RKuH~m=_)U#hhgDIwVvs(GS zZ+uzV_19l#%y!+xzg*V)ZvTb6UEM+|t;>z?L{!RU$3a2{VTBkfLY?f+_ehMx!M+` z3u~4gakI|YdG7hO8^3E4Ufry`C$Sao@b-Q+F*c)~vU* zIG3q?(l_R#NRavddhhpbfhl$Ks$K=RI7aul{uV8tU=c1aw&>r~Sz5LsC!g-Sz4?|C zU$?Z>u_XVqftTF++09F~F_Y)>C*}ZeMkWzvSP?MULBt-E>l;O^K-69lR}jS_ z>VQ@T1d2K-fD*%e#z_S+z~Unsh~d4EoY1=+A zGB5;AzR2fRzvxDfZitv^r`N2yzZt5&+xd2Ri2Rhhul#<3Z}N?heu>Gd`x{oyTamx) zIP0HRMPH7s{CwTz{Fj_{bx-!0f85Y8e+OgDF)L$NgMEzdx!r-W>F+f36qJPb+G)S( zEnR=G-_|l~Lj0EUSF6`vR8QQqJ9Z`epSih5Lhi~h@rkh4Nw2D3muGPGBHJ{#Rp*~b z+J>)oo}hFrUC!ItpZD$G=%2m5dl-^eCi8jqo-4Xi%5m;mT0_&?61mOauWfgA^uO0N z>*3Ax<7O5tpQp{=5>@)6Jj{DWgYwgD&9-@c|BD#4ZI7*8`80KI^OcKobM7iVQE2lP z%vCIOp2@v2#_*V8#N_+8%&a`T z4Rz{~dnH0SPW9_P<=gSweOlOMEW{r zmy}MCI3}QBWZ-ychqFLT#OsasJk=lfetkS$_?N4NmHS%fng5UeZ(JoMFn#jNnB@3V zGd&Ux#KpzN`CdEPA!=%3@nP?pmWDc`lh+L1+`8$wdE(2tX~jZH${!-0+;d-L*eUYb z<S7-kqm(q(TC(UwTXn6SBhTCG(iJ}vX ztdT8_fdx-4wXV@!lKGOYWx4+e;W6%dq2BUeC9Z zw`;botj}S;sK%=z-d8>CmihfP7hS(Sx^qz?Z)Mjb`Sxcmlm54A?zQ~tWa`!@E;{eg@5=D@nl@u4Jx*ng{}uJuYvtMA9LSMfzAJ0?vYQKHt9wiKru&4ft-?4t9zeylnEcub(x~`qS>zYoILB)6Z2io%TrfHN=^ST zeQ~Pm?x`W|s{V>wHy`(5f5krWXXUG<{?RB;9r1wpCjp{NW~vmj7J td$N`o4@ks9Oor(bNJM(FmJsjcIx!xwfhfrfW*U&*(&!)rR(w=U1^`(98S?-D diff --git a/dist/zhurnal-1.3.37.tar.gz b/dist/zhurnal-1.3.37.tar.gz index a52606cab1ecb88e0aad4a447fb919d7f43a52ad..e9c91bc3ea112bbdb32f793aa021b05b6391a229 100644 GIT binary patch delta 5141 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