From 6c11aff234ad02f4a57d0ef8dcf99ac343ea130c Mon Sep 17 00:00:00 2001 From: LYFxiaoan Date: Tue, 15 Jul 2025 11:25:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=E6=9B=B41.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature_branch_workflow.md | 101 ++++++++++++++++++ requirements.txt | 2 + .../__pycache__/__init__.cpython-313.pyc | Bin 694 -> 684 bytes .../__pycache__/data_utils.cpython-313.pyc | Bin 5165 -> 5155 bytes .../__pycache__/kan_model.cpython-313.pyc | Bin 14869 -> 14859 bytes .../__pycache__/mlstm_model.cpython-313.pyc | Bin 13436 -> 13511 bytes .../__pycache__/model_manager.cpython-313.pyc | Bin 29311 -> 29301 bytes .../optimized_kan_forecaster.cpython-313.pyc | Bin 16282 -> 16272 bytes .../__pycache__/slstm_model.cpython-313.pyc | Bin 7334 -> 7359 bytes .../transformer_model.cpython-313.pyc | Bin 6955 -> 6995 bytes .../models/__pycache__/utils.cpython-313.pyc | Bin 2443 -> 2433 bytes 11 files changed, 103 insertions(+) create mode 100644 feature_branch_workflow.md diff --git a/feature_branch_workflow.md b/feature_branch_workflow.md new file mode 100644 index 0000000..406a4ec --- /dev/null +++ b/feature_branch_workflow.md @@ -0,0 +1,101 @@ +# 功能分支开发与合并标准流程 + +本文档旨在说明一个标准、安全的功能开发流程,涵盖从创建分支到最终合并的完整步骤。 + +## 流程概述 + +1. **创建功能分支**:基于主开发分支(如 `lyf-dev`)在远程仓库创建一个新的功能分支(如 `lyf-dev-req0001`)。 +2. **同步到本地**:将远程的新分支同步到本地,并切换到该分支进行开发。 +3. **开发与提交**:在功能分支上进行代码开发,并频繁提交改动。 +4. **推送到远程**:定期将本地的提交推送到远程功能分支,用于备份和协作。 +5. **合并回主分支**:当功能开发和测试完成后,将功能分支合并回主开发分支。 + +--- + +## 详细操作步骤 + +### 第一步:同步并切换到功能分支 + +当远程仓库已经创建了新的功能分支后(例如 `lyf-dev-req0001`),本地需要执行以下命令来同步和切换。 + +1. **获取远程最新信息**: + ```bash + git fetch + ``` + 这个命令会拉取远程仓库的所有最新信息,包括新建的分支。 + +2. **创建并切换到本地分支**: + ```bash + git checkout lyf-dev-req0001 + ``` + Git 会自动检测到远程存在一个同名分支,并为您创建一个本地分支来跟踪它。 + +### 第二步:在功能分支上开发和提交 + +现在您可以在 `lyf-dev-req0001` 分支上安全地进行开发。 + +1. **进行代码修改**:添加、修改或删除文件以实现新功能。 + +2. **提交代码改动**: + ```bash + # 添加所有修改过的文件到暂存区 + git add . + + # 提交改动到本地仓库,并附上有意义的说明 + git commit -m "feat: 完成用户认证模块" + ``` + > **最佳实践**:保持提交的粒度小且描述清晰,方便代码审查和问题回溯。 + +### 第三步:推送功能分支到远程 + +为了备份代码和进行团队协作,需要将本地的提交推送到远程仓库。 + +```bash +# 将当前分支 (lyf-dev-req0001) 的提交推送到远程同名分支 +git push origin lyf-dev-req0001 +``` + +### 第四步:合并功能到主开发分支 (`lyf-dev`) + +当功能开发完毕并通过测试后,就可以准备将其合并回 `lyf-dev` 分支。 + +1. **切换到主开发分支**: + ```bash + git checkout lyf-dev + ``` + +2. **确保主开发分支是最新版本**: + 在合并前,务必先拉取远程 `lyf-dev` 的最新代码,以减少冲突的可能性。 + ```bash + git pull origin lyf-dev + ``` + +3. **合并功能分支**: + 将 `lyf-dev-req0001` 的所有改动合并到当前的 `lyf-dev` 分支。 + ```bash + git merge lyf-dev-req0001 + ``` + * **如果出现冲突 (Conflict)**:Git 会提示您哪些文件存在冲突。您需要手动打开这些文件,解决冲突部分,然后再次执行 `git add .` 和 `git commit` 来完成合并提交。 + * **如果没有冲突**:Git 会自动创建一个合并提交。 + +4. **将合并后的主分支推送到远程**: + ```bash + git push origin lyf-dev + ``` + +### 第五步:清理(可选) + +当功能分支确认不再需要后,可以删除它以保持仓库整洁。 + +1. **删除远程分支**: + ```bash + git push origin --delete lyf-dev-req0001 + ``` + +2. **删除本地分支**: + ```bash + git branch -d lyf-dev-req0001 + ``` + +--- +遵循以上流程可以确保您的开发工作流程清晰、安全且高效。 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 7587ab2..cd70cd8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,3 +56,5 @@ tzdata==2025.2 werkzeug==3.1.3 win32-setctime==1.2.0 wsproto==1.2.0 + +python-dateutil diff --git a/server/models/__pycache__/__init__.cpython-313.pyc b/server/models/__pycache__/__init__.cpython-313.pyc index d7cfc3d60b10cc1173dce88f3dd7486e9f3e9c52..cab3c66f257e2b415fda4c208b88c4a27d95d5bc 100644 GIT binary patch delta 39 tcmdnSx`vheGcPX}0}vc8F4@Sf$;4;uW)%~jUzA;3keHkrGuekJ3jo(s3zGl< delta 49 zcmZ3(x{a0lGcPX}0}yo0^VrC($s}RxVHFb}o?n!mnU`K16Yrmw8d8*+8WTU+i75*J DTr&?f diff --git a/server/models/__pycache__/data_utils.cpython-313.pyc b/server/models/__pycache__/data_utils.cpython-313.pyc index 3ba7a46024bbbbeebfd44c4f97c8723caa6d38dc..01f2056c73707d6353601e78ac98159ab0ea3005 100644 GIT binary patch delta 40 ucmZ3hu~>uqGcPX}0}vc8F4@Takde>S%_=55zbL!7ATc>LW-|+urVs%6eGDl8 delta 50 zcmZ3iu~vioGcPX}0}w2j?X!{lA)|!7hgD2`cz#iKW?p)6OuT7%Q6yCAD>%SQ1&mm6Y+D)7^8zpX>w$P#`O(_cbuUb1wp+Uy6H;IXV(l=|N zpg?nIstPWNMpXqTsQ7745LV*nfJD_w2#G_h9vW?v3m2$3P=Qbp;=sJwkRSvj`SY8% zGjG24-Z%5-+&4MjuRfng;-lIq&wak;3qJcPpIns^Qi6;~VEvO}8`vUf+eYle4sdYW zo^XuF!wM+FPH;w~dZ}4T$PH3LnX<8yq1v?tx6dt{PVRK=IX%MZ=1$M9v(`IHRPRHi zF|HC*PL>z)+Q#O$ggA}sw#$ka8G;v~f*o=%_55Sbou)gL%H-3OrczYq^9Ucy=2HXD zOih+xo-U*_+7$cA-4U$9#npw;L~`tume0phsa!Fqr&2B>=K0K1@8F-+5LEC#sKcd7 zA*~n6d8PzfRM?O1CUiUK1<*}J*NU_R7OiId7(!@agMp+sil&Ot!9EIHCv9xFE==Oa zD|K5o(r!E-^pZ|I0-i*`%v3vwO=q}mD)X;9^@%>#-#?cl%>{iseEopI+2}io%-S>9n4iOU>kf>fkes zP?%h-#65zPY~76s^(yN#!A_8UK`C(-IO6+oYe#oQ_k>iQq^Tu@c&|%vfu$C z7fgUx7RPdd>k{R9H<*kVR6{R~?@aA`cj7pXSL;f4vc9eZkmBt~$E8XU0b`91>(OH24ozc>I88ixBcB5;eNhk#K z$5QPK-cSrz#e%VYyNw}zUPnM_aD3KKlVlQJ%8^VS1+`)KYEUwz>^jCbmyV6}oV5N`1w#dqZQ%hKkl=Qf`{x;Z%XSgw$=fVlA1b0hSE zan~j54CH3Ij`LmoQRssWKE)@B4sm#7CxkqZDz>G-wp7oKAMUC-NcvXc+Tz;cZxS~} Gh`#_+0i0L> delta 1617 zcmZ`(OKclO7~ZkH>sO2&YA3Pt*ll9V-jJ9&X^?m}T&gr7ZdE&^P)o+OH?b9aP5xaA zMeTt@%j4E`gsLDRp(2&`gu)6aQZJMPDi=~AgtVm+7X%eTs)RsDAi?~zsUu!<`1YTF z=6`}QQX>Y<-Qp@6{FwF`6g6Puy%a2G@8w|}}xh-7`_ zdPNHQnF25)2+}$KnZND7@W%&c=N>DSm)o$`&{vI8`KYcHLDNcQ`m2AOMCkrNKk-_R z20jdox|tJo7=q|4#=w?Z6|>c8LO*JT8BlL*OtwA7I+(U(YP!(|C-i>2F@!Km3$bEw z48;tBO5cxNA}PAmCzAtKr|%mVNn6L`K{A0Mpbr7FSKYvkjxpJm)?TW>s$pP8ilRV@ zzMe>vb-JCX<Pu(*RiRc=-` zG%$E;?ck}3S*@2>8eo{vV_hGXNivK!JdLg))KJG$)lllCe~$DoU|3tMYR#sh`kapa zpM@>*sK7J#F+0{tTrWEXL}*3cN6yfWe2!$S-{p&L;-+-$4#V|i;sGRYxBtw5ZY2+p zcj)IyAVvCQYBtKdB^qX>x~BS_JTi1MrREkfR|AbPFXaUu5-CJI_R|ivo+%U;vny?2 zB-bujKc=n_r+>%jR{CuIIJ=~}pn(QOls%4roD3*1usytf4-?V5;~H<;y^iaK-Z0Dc zMy;ml*Xdg3$TIIDcj&N=p0K^Dt9TfAybwH#%4LKT2+turk8l#9J0eiR?e1U%)p(c} zb_$gUr|GnMmZa%5wM}kVnep?k*?;iE$;82K{J`-0H@9$od`OMK-VmTCTWmEAv&DG- zZDLq@5Cg>M;N*A&>$ZKGUTxQKrbN0lITyvZWB1^wt!Ndq1DXK=x;?q{IA_0yonotY z*Zm1VoA@HKQG|+aFh*J$WXomVzw)Qn)7g`RT(;hN_+8SQWG^%im^VDcKn+kMH{($Q zFh)Pf$s|L+$}OvVBoF+{?JnQ9nX$1$m!>|6N6t?q z<*vd2uAqbk!)qw<@Ca=7|BElqQl55cIfs@AH|VYD!Bk9~x+gFI{#sGb^5>K6Guu$D zXLX&md*opMQ65rc7i?*60$a}z>t c3q5y)7=88N9dhrf?dMb!zv~|JijPAGcUb3Cf+|UHKZstH70(uA$z<9 E0H070r2qf` diff --git a/server/models/__pycache__/slstm_model.cpython-313.pyc b/server/models/__pycache__/slstm_model.cpython-313.pyc index 83602865592e6d41b4f03ce2c59a30af90798abb..f3874eebbc144451afac687b85814e0a59dca920 100644 GIT binary patch delta 1132 zcmZ`&OK1~O6rDGjnS9zwOlg~6KdB03qz0izs7OE77W+w&BqG{Cj7ge=CX;YyLM;{A zMZ0ikd8nWux)Hh($;ySeb)~oxM(bAH73|W5@4ksu7tZ3$d-vUY=G^ zkHDU;RQVk(`OE>^3tcBrp4>KP@Zzg6mplM(zD1Q1ZL z<^WDNg&fK%V<;JhgKeVGC`9Pn&S7$e9&{Rg{g^CsHGhfYJv-^9I@j-G3BVgs(nZ~< z10W4dAk5IO>PR@umIh%k2`Cxl-=NUb-Y*J%0c7g;?ZuXHc{EhZqc>~WYHqy<2DsUg z)p09l=F8cY3K%AMTHkzwWYdc^T*Of!q%npSa24Sg1Iv@B7n;@LV#P2m8FG55$c0#P zo{h}VT=qQv$6?7_2k>67dp0M0wjy>@$4P8}{NIwuimNhW)Yk4B4ix0FW8F5t!`e!;}p(mtWOXTh;)5ABe}tSsmoDSY;5s z$radOtH7aKs;#1J0%(l|UlV)CQ}kzOduf^_X(C)_FPOo#^v4Qt2^l0l5{WI5+@{9N zw#Q<;y>g{cDC$q?yYSozK59;A8-wNYJJ7`REb#BCbRrTCFXF+GVIYCqwo&v*$j9B0 z#2~^leGu8+d=fhMg`RyOc&H=^@!S(1x_8}&LXzI?3rR@v3%@eg*mIaz_Tb#FzQ4gTv z#drW;yy$_O3EoW4M*jjY9yCueUcF&FdhyL$L@vI=Z)fJcnVtFl=H1|{LGzbsMip_M zKATue@0hLKo^YNk86`ue6$rj$N(Hq`Nh+t5jA|*F(2}}f>@21dnha?oq#uT2`YN%F zA6RkjP3pe5hlY$mv)T!|ezi>|x|3u~KWHBb$x{6jp0FTaAmaCpSQ=mTAAy-~?Wg}eA z3jwGd4jB1g4X(>RK+b}d1ygu7Q^8D9(6|)zNX#4Tb;D!QUh8Yz3z06yoA&K4kvV4* zuF=9h*A8*Dw@+y4=X_TRc&Ndq(BOM>A9=(YT7ZnPt(Npj$uU077i}}>wVi!#86cNf zJeg{h#3JY144PP}fRJ_hc5Nj2mP91SX>rXS#F|-$RlG1F99xC!;sax7YyVaPMn!;Y zk{A>V2Mxv?WACkIvdcbMlN*v>nIG%}Rzl)!H9HQnyb0qNyo@k`Fo`gQFpY4uJTQZ9 zurg@PA;M1& diff --git a/server/models/__pycache__/transformer_model.cpython-313.pyc b/server/models/__pycache__/transformer_model.cpython-313.pyc index 023db8f70d32c6cdf27a444653cb41c94181542d..b07c4f27d7edee890b0cdeccbaf475fd00d1fd88 100644 GIT binary patch delta 190 zcmZ2&cG-;YGcPX}0}u#pF3k`V-pD7&!e`@V6%(FclwDkqn4B83*_nSz8TFAx`rpO01XVU=R?w&aZHh zUtxj#Wq!l!{FWE_Eq5qg=C{4TVLN%Aq?>3q(9$Ar5a9_VUh;uh*^_@t_HhWa+I?UE i5|jI-{1{6o-;=Tu)?>7r;WXcKrsr1%AhSprs2Bj)EH_C2 delta 184 zcmca?w%UyEGcPX}0}vQ3^2qojw2@DcMZ(R)DkeTWzbHF1FTFS>-ajujq$o8tCVsOn zOS}+c!{mEB(wkR^r7;SsFlaLS6?p=6zx)pbnw*nuB@8E*OEfX=oBT^+y$~CNfXH=z zg^T