From b99c2303e536bf16d8e22e3be588a683c096505b Mon Sep 17 00:00:00 2001 From: xiaji Date: Mon, 12 Jan 2026 16:04:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=88=86=E6=94=AF?= =?UTF-8?q?=E6=9C=BA=E6=9E=84=E6=8E=92=E5=BA=8F=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=9A=E7=9C=81=E4=BB=BD=E4=BC=98=E5=85=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- .../huodong/__pycache__/urls.cpython-311.pyc | Bin 2117 -> 2241 bytes .../huodong/__pycache__/views.cpython-311.pyc | Bin 31788 -> 32278 bytes fzjgact/huodong/templates/branch_info.html | 39 +++++---- fzjgact/huodong/views.py | 10 ++- update_provinces.py | 74 ++++++++++++++++++ 6 files changed, 106 insertions(+), 19 deletions(-) create mode 100644 update_provinces.py diff --git a/.gitignore b/.gitignore index ef88847..5cd4aeb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ __pycache__/ *.py[cod] *$py.class - +*.pyc # Django stuff: media/ diff --git a/fzjgact/huodong/__pycache__/urls.cpython-311.pyc b/fzjgact/huodong/__pycache__/urls.cpython-311.pyc index 4073f153c84948a0ff295f1ceb6eb996a95198e3..d79bbe78271bda8cf377b34f25b77a98077c3f9f 100644 GIT binary patch delta 231 zcmX>qa8OWvIWI340}z~>my+qj%E0g##DM`pDC6_Bjp}QeCQo2w)l^Jn%aVY}rzoxA zS;ox3uo{RVAe}c#GDSI3EoQJV<&W>oG13pdE}rT>Nx%AzJ{WklX^+D+-nu96~R! dgk59_yTTGSc^7*Pzce2|Qv){$7O4SM0{}%0J@5bk delta 127 zcmX>ocvL`rIWI340}zyb($DOjSeKwNwVNPb{uWMsTC`2m~A=8tSZrM4WU{F1!6u@gO3Z8bGI^^wsrnzg<<)%X}~J3c~&nWT4&RpVHlTAOLB^;O&dJC}upIGr-d z$GQLO{O3Ra|DSVs>`Up+Z>6kPoi|vdCVs+oz%Gnq8!(_JB14KgLBDbWZE z@ptDeFWV07BHcbDYlG1c+X;OyAQMo>m*&>AieP% zsa_!VsU0%5U^E`lyk_0(TOzbnGm*>7SuHQ9ct-N^w=34!g)8fLL1kSfwoT8N+z6p- zq+Ckg@kr%*BilCfXDU}$fOSmL%}VH)neBtV6quTYKG{vYwW@+IU$CG6iR+bgyAmRo zBkX|CWFtJbVDY>kKvYbVG8bq+?k)X!5g6AY?Gb&{r#B7x61F~+H_mY^( za*5_GVIpY`gP)gNfPaso4f@4SsEiYf-2phlJ8FvZMUmZx@7n<=H`dKZYf8(0hT)xn zy8wtZyBqLxz%Tf7HFeT`{IeRLw1dyTq$)?GVA?uSfKA~rJD%8fNsg@;;S5Ry$scql z3;q8`58vXvj32gV@ngjW{I|Wic_B;48nzDE_L(J<*)(d_s5rR0rJ%?%Dm9yWEB0AO zEu+@mj-;s~6Th&zl%Lw1T`HLlRceUA?CF=D)MW)pyrFsErrbP88RkvKF45(>d>gNwTdG zaL|6%S#o#xz5WU3qBG9A)6Tjly2qUj6V8TH;@`RAvIp&_YUPV3gCOO`G-7LO=X=(K9i49 zcLMgx2z09&7?!>1tcy3UTDC}Z5C@Cy@kioA##!NHvKpi8l2zPSl2eOw;OMF%+c_eZ zCSF*TO%rm@mZHSRmp^Bb-rx_c@kwv-@in^ZHO%!o;CKA#wWSMh#Sm$)r*&=U=~~~} z*17eVRkt;@wYGGyFNi^>fe^Zt|7UH*7%1#t1fOJqXVo*;b#`@iwqMoM+}zsHA~Xy> zwGHTslCnbU8v@*&mBVGxS1%Pt?#T6^FyD)qQ04LaazNT?S&S?zA zMp#1uEkFnJfyQd7mLFY}&rdd5Z3U9aRG;{L;|`0ofqR;Zw?dY+5_s*idqh51BI!h` zSyCz;3MzUNZK-k51Vz~S5&voPfHaPoOYj7$~$)y@q&&^Juu~+ys6lOgHa_Ye~<1P{9s3wahtn7`Q3w{SW_#(hAIg%yp>C&NZ(7l9JNTh7}$=Z_&n^sK2PJr-brAttJ~ z8ZmqY>~w=omqe8<2UV1V|PHTrq~`e?q-+3--U1jc9S`I6Lx11TU|-_%E5N@2-vK1ZSpnz{%tj-xM>Gd!2lahW9T=hRnG>T5j68tvEBBYdNa^{j zp)zYrn; z&7}B8D0f;CZ#U*iiH57!nx(?TjlDL&dk(kVG;oe=I#R^fq65B*{uR~9x z9y_E&0%0l{V(3}PZ$DI2c9M_m+MX|BKC9F8^7FfVF41K~%WLN)f#O!tV^3n@%`^dP z1GEblf>FB5i#=%tQDo(n7>TOEdoE?w^z7LmD6(xOeq-X7fdNYi-j%EoARdL?G@|Cv z1VT6W$oYlaX{e`7zRHwPlDV08$YtV1VYEs+G(_F+#z+`L$+GJJ*aLPDka}5wX=5r} z>%# z)|Fg=pT9Iv)=>wt*aG3LaL;Zer*N;E%o;vUJA<_vK{fhz7i0i8bKhWpa{m3jd5Omd ztIcB~#5*A)qOuD!1^|74ARq(~z2#brgu(5k;Y~|93#YxD4l(w3I>fjEfiS~!{{HUb z)tKO-s}Iriyg(@Am#>d2u^~BM!MO zs$V#;Sh|MoB9?c?G*A`^DWVY|zNjG*nl*RftiQ`l6>8FfmGK&Kz#p$jA0#WUr8+Q= zzY^a-_k*I?PxhN#0(A1mU27%t8hHy_-0jGNDV{`s)y z%2H^!CN%~%EoPiVZ-bmUeJ2eoeXJa`f*CZQxHKs@P+RoyU3&`0Do7^fIH`h4-b@u$ z8wr#A)Ip}3qpHz<7C}0r9X@v}@}6z7X8i4OHHVjzss(Iaw J|FoiA{TH3Y{>K0S delta 5075 zcma)Adr(~E73c1g_nQDoctgkvS&%?5ViJN$2$2LL1oLFO>|Wr;edXM{Ay6V2b<~;0 ziS@I#of@l7$Lhqf(Y52KRU12F<4kLfQ?AbE*?WW9%j1t_58D+_B5ePWqBM#$=cl==m`4qO zCJ7?LwZJJ#&Va=E%DQyXY+XJ{poX;#TLWs<)5%Na@`{{a}{CIQ3Bbs4m1XVpiTFlU*5ekU6 z^4lr~F}u`sg;irb8l*j#zY>rISS?x#>U*Rc8F=>rz6F3*8euRCwa6&>b%WvoBTlMM zGt{t7nc%|^QURlYG4Vh_OZ@l?6EG~kD(EPe-Y?O@u_zh7 zk$7-SHGIiQWF!U)_hu^l#m_3guHL|t1`!7SYv!tvpwH04s?VqCk$5QNv2%QWTeYHA z?o%&hoPlUOVt8z(&D$(z={6=;R#Jl~u6|NkC4N`k<$^ZaD2i)ZYp`u*=IlnuxmL<8 z$U70Kx!TIMZQ{wAE33hJSTSu{@L?NGW4_{_TLqerik`Y^(Na6>ozGj ziTCSH&LAwNTRjp8#e*ts$D2K*M(Ep6SS(*7(FuxT`vCpmxeoh7aaA`{gPLw=k$^!v!AoW6wNA=Lh&egc$5hj$9$_(^3Yg|u zPBLjufM1w&z&D{8<370)I^D@E5`cTej{4FfdC2a-`*#62ZnR5G*Oyn^h2i%AcLNY< z`aa+XfFFvd>RXk2#mDttWk{5*tjm)rnARl^;Koph9!(6a%yTYBI0Fhp@^SLO&i_9f zR>Ywt&3Ep|u`APxI9F0E9$1nuc6S$nWV1+V_D5_F^6XQJ=<6;A!#>M!EMl}erj=>i zw0+tUbl&4Q>NIc;XP@bmpljOsAg_7~E6Zmf#pB)~{?X)d62c|gn%B*^2*xcabaKPw z-pcU0=EF;mLGp1x0x-m&yBI3vBP+IxF~hNxH*<=P-|$9G)vGyG z=W=R(pHp*e>pSB4%MaKJmy7b22CiA#T6A09y)0}xTAEwhURNZ$Zq|+NL zxHNJ4%3K(6rsGw+@}jtFgI75#ezn2O_$71c4B!RvP-nSvT>QGTEbBZIxcnRk{kZs~ zvw8*;`h?-5Z15arR#)HPVBhxsjhi<0?C7R>ekS-fLSZBa;ByAk(S2>tCeKpK%{)?J zXUIR|jRi+X{JKhif>7y2bgyBIa^=v6=uHS@k~+r0RcQ+osS4UF0d;^CfLcI5U{U(c zN4gr^8bF2kaASM!0EVvvUn!48H{RTt10gj;G@bgV@xNC*dAWn9bI`jAtwkMwH zy3QWi#9~tgvG_wbZ9b^ftx_&cbXz7a6YICtT_z{Uh2$wfM>Ly?mc_Cu0o!SMio-1LNLOGyss+?b%snfn`s=KV%w?tqIB&Rt(&>bFtbe3oK0?+_ zq{l*=QCZw+*64cclPob6=yn16O9Apbo~*EUlc#t?d?5_p*&J1Mt=sp z1$Z0q4&YtDdw{$*{Hr#7Yk6eO4<_4I}Fq7RB+KJ&hHq zygJoG0Jj*e#K;3^0F;QWd#|2Zg5lr5o+}6RDPBJV{1fm6;48qt0jLf19|ljAEDe+b z74jS^7~#~D4WlZIDgkwXMTcE(s5 z#Jl?n>SyngWI0bJt&fW(t!K&CAl+wAoari565a#rZAyM3>^o`8>x3QH1=C?n##FjR zEE}n68fU6Up)RI-+-4e=&#)Hp^VNVPFtd~IK1|W+X>t9?t|A%GMYUtUcx}X+A?t>$ zUA-bZuxt!x!n!Iq^8&O5&@D{}M7b}N0lykVnR1&jl2rpe$!yiYAM5%oIIIQLD7WjD ziPq`pXO`0$5 zoo&^mz5R$k6fUq1&Rf=5<$H&c;!YvPl%t~Z;3(fXw;tSJ%aySo#C#bZpEwsP@yU{M z0Qw+LeGHzoOPVqtSnT|KVA1Y?a4GY!MzIKnb63csS?CW2ed?jO77MG98Z?eoq6^r=+qku6$03clnV)XyJk_qv-9Pwma=t{@J zQ2)=x^@~n}cjgZv2?^#(`0VJEHe(hSzbm{ + + 所在省份 + 分支机构名称
@@ -17,33 +20,39 @@ - {% for item in branches %} - - - - - {{ item.name }} - - - - {{ item.category }} - + {% for province, branches in branches_by_province.items %} + {% for item in branches %} + + {% if forloop.first %} + + {{ province }} + + {% endif %} + + + {{ item.name }} + + + + {{ item.category }} + - + + {% endfor %} {% endfor %} 分支机构类别统计 - + A型: {{ type_a_count }}家 | B型: {{ type_b_count }}家 | C型: {{ type_c_count }}家 - +
diff --git a/fzjgact/huodong/views.py b/fzjgact/huodong/views.py index 90b11b7..7a33c71 100644 --- a/fzjgact/huodong/views.py +++ b/fzjgact/huodong/views.py @@ -228,13 +228,17 @@ def BranchAll(request): # 生成branchinfo的视图 def Branchinfo(request): - branches = Branch.objects.all() - # 统计A型、B型、C型分支机构的数量 + branches = Branch.objects.all().order_by('location', 'name') + from collections import defaultdict + branches_by_province = defaultdict(list) + for branch in branches: + branches_by_province[branch.location].append(branch) + branches_by_province = dict(sorted(branches_by_province.items())) type_a_count = branches.filter(category='A型').count() type_b_count = branches.filter(category='B型').count() type_c_count = branches.filter(category='C型').count() context = { - 'branches': branches, + 'branches_by_province': branches_by_province, 'type_a_count': type_a_count, 'type_b_count': type_b_count, 'type_c_count': type_c_count, diff --git a/update_provinces.py b/update_provinces.py new file mode 100644 index 0000000..e5d1874 --- /dev/null +++ b/update_provinces.py @@ -0,0 +1,74 @@ +from openai import OpenAI +from fzjgact.huodong.models import Branch + +client = OpenAI( + base_url="https://integrate.api.nvidia.com/v1", + api_key="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" +) + +def get_correct_province(branch_name, current_location): + prompt = f"""请根据以下分支机构名称,返回一个正确的中国省份名称(全称,如:浙江省、北京市、上海市、广东省等)。 + +分支机构名称:{branch_name} +当前省份:{current_location} + +要求: +1. 只返回省份名称,不要包含任何其他文字 +2. 省份名称必须是中国的省级行政区全称 +3. 如果无法确定,返回当前省份名称""" + + completion = client.chat.completions.create( + model="deepseek-ai/deepseek-r1", + messages=[{"role": "user", "content": prompt}], + temperature=0.3, + top_p=0.7, + max_tokens=100, + stream=False + ) + + reasoning = getattr(completion.choices[0].message, "reasoning_content", None) + if reasoning: + print(f"推理过程: {reasoning}") + + result = completion.choices[0].message.content.strip() + print(f"原始结果: {result}") + + return result + +def update_branch_provinces(): + branches = Branch.objects.all() + total = branches.count() + updated_count = 0 + + print(f"开始处理 {total} 个分支机构...") + print("=" * 80) + + for index, branch in enumerate(branches, 1): + print(f"\n[{index}/{total}] 处理: {branch.name}") + print(f"当前省份: {branch.location}") + + try: + correct_province = get_correct_province(branch.name, branch.location) + print(f"建议省份: {correct_province}") + + if correct_province != branch.location: + old_location = branch.location + branch.location = correct_province + branch.save() + print(f"✓ 已更新: {old_location} -> {correct_province}") + updated_count += 1 + else: + print("- 省份未变化") + + except Exception as e: + print(f"✗ 处理失败: {e}") + + print("-" * 80) + + print(f"\n处理完成!") + print(f"总计: {total} 个分支机构") + print(f"已更新: {updated_count} 个") + print(f"未变化: {total - updated_count} 个") + +if __name__ == "__main__": + update_branch_provinces()