From 096acb00e7a339fa7e7f68c1146c1920814936c4 Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 31 Oct 2026 04:05:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E9=A6=96=E9=A1=B5=E6=8D=A2?= =?UTF-8?q?=E6=88=90=E5=92=8C=E5=B7=A5=E4=BD=9C=E5=8C=BA=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E5=A5=97=E5=A4=96=E5=A3=B3=EF=BC=8C=E8=A1=A5=E4=B8=8A=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E8=AE=BE=E7=BD=AE=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首页原来是居中窄栏,点进工作区又变全屏,进出像换了个网站。现在把首页也做成 全宽 + 左侧栏(SideRail 抽出来给首页和账号页共用),工作区卡片改成网格, 新建工作区是网格里的虚线卡片——宽度不再跳。 账号页 /account:基本信息(头像首字母、昵称、只读手机号、加入时间)、 登录密码(设置/修改 + 确认输入)、退出登录。工作区侧栏底部的用户块点进去就是它。 e2e account.mjs 14 项全绿,其中一条断言进工作区后侧栏宽度和首页差值 < 1px。 --- 2.Design/ROADMAP-M0-M1.md | 48 +++- 2.Design/screens/web-account-settings.png | Bin 0 -> 66820 bytes 2.Design/screens/web-home-mobile.png | Bin 0 -> 26349 bytes 2.Design/screens/web-home-rail.png | Bin 0 -> 38719 bytes web/e2e/account.mjs | 220 +++++++++++++++++++ web/src/App.tsx | 2 + web/src/components/AppShell.tsx | 24 +- web/src/components/SideRail.tsx | 116 ++++++++++ web/src/components/icons.tsx | 14 ++ web/src/pages/Account.tsx | 244 +++++++++++++++++++++ web/src/pages/Home.tsx | 253 ++++++++++++---------- 11 files changed, 799 insertions(+), 122 deletions(-) create mode 100644 2.Design/screens/web-account-settings.png create mode 100644 2.Design/screens/web-home-mobile.png create mode 100644 2.Design/screens/web-home-rail.png create mode 100644 web/e2e/account.mjs create mode 100644 web/src/components/SideRail.tsx create mode 100644 web/src/pages/Account.tsx diff --git a/2.Design/ROADMAP-M0-M1.md b/2.Design/ROADMAP-M0-M1.md index 313c902..fa2c51a 100644 --- a/2.Design/ROADMAP-M0-M1.md +++ b/2.Design/ROADMAP-M0-M1.md @@ -58,7 +58,8 @@ - [x] 手机号 + 验证码注册/登录(dev 固定码 `123456` 并回显;`ENV=prod` 禁止 `SMS_PROVIDER=dev`) - [x] JWT:**access 30min / refresh 14d**(计划里写的 15min/30d,实际取宽了一点,理由是移动端弱网刷新成本高) - [x] 发码节流(`SMS_THROTTLE_SECONDS`,默认 60s,测试可置 0) -- [ ] 邮箱 + 密码(argon2)(**未做**,M1 有空再说;手机号登录先行) +- [x] 手机号 + **密码**登录(可选,第二把钥匙:设过密码就能用密码进,没设过的一律回 `2013`;scrypt 哈希,15 分钟连错 10 次 → `2016`) +- [ ] 邮箱 + 密码(**未做**,M1 有空再说;手机号登录先行) - [ ] refresh 令牌落库可撤销(**未做**,当前是无状态 JWT;被移出团队的成员靠"每次请求查 member 表"兜底,refresh 本身不可撤销) - **验收**:✅ 注册 → 登录 → 刷新 → `/auth/me` 全链路通;错误码 2010/2011/2012 语义清晰 @@ -450,3 +451,48 @@ - [x] 本地 `GET /api/v1/app/release/latest?version_code=1` → `has_update=true`、`download_url` 可下(200,7 762 912 字节),`version_code=2` → `false` - [x] 生产(`http://192.168.8.188:8200`)同上,安装包已随部署上传 - [x] 模拟器上走通全流程:装 debug 包 → 登录 → 启动即弹「有新版」→ 下载 7 762 912 字节(与清单 `size` 一致,`.part` 已改名)→ 无安装权限时提示去开 → 拉系统安装器「是否更新此应用」→ 装完 `versionCode=2 / versionName=0.2.0`;截图 `2.Design/screens/android-update-{dialog,permission,installer}.png` 与 `android-home-check-update.png` + +--- + +## 7. 账号与外壳统一(Web,2026-10-31) + +### 7.1 两个问题(用户提的) +1. 首页是"居中窄栏",点进工作区却变成全屏——同一套产品两种壳,进出像换了个网站。 +2. 用户相关功能缺失:没有基本信息、没有改密码、没有一个统一的"退出登录"入口。 + +### 7.2 决定 +- **外壳统一到全宽 + 左侧栏**(不是把工作区收回窄栏):工作区里本来就要放下看板四列、知识分类树, + 收窄是倒退。首页跟着做同样的壳,宽度就不再跳。 +- **加密码登录,作为验证码之外的第二条路**。理由:验证码依赖短信通道,通道挂了人就进不来; + 密码是自助的第二把钥匙。但**不强制**:没设密码的人照旧只用验证码,少一道门槛。 +- 外壳抽成 `web/src/components/SideRail.tsx`,首页与账号页共用;工作区的 `AppShell` 保持自己的侧栏(有工作区切换与页签)。 + 两处宽度一致(`w-[248px]` 级别的同一份样式),所以进出不跳。 + +### 7.3 后端 +- `app_user.password_hash`(迁移 `0008_user_password`,加列不加表) +- `app/security.py`:scrypt(`n=2^14, r=8, p=1`,标准库 `hashlib`),存 `scrypt$n$r$p$salt$hash`; + `password_problem()` 一处定义强度(8–64 位、字母 + 数字) +- `POST /auth/login/password`、`POST /auth/password`(设/改共用,改要先验旧)、`PATCH /auth/me`(改昵称) +- 用户输出统一走 `_user_out()`:**白名单字段**,`password_hash` 一个字节都不出去;对外只给 `has_password` +- 错误码:`2013` 密码错/没设过、`2014` 未设密码(保留)、`2015` 太弱、`2016` 连错太多 + +### 7.4 Web +- 首页:左侧栏 + 全宽内容区,工作区从列表改成卡片网格(`sm:2 / xl:3 / 2xl:4` 列), + "新建工作区"是网格里的一张虚线卡片,点开就地展开表单 +- 新增 `/account`:基本信息(头像首字母、昵称、只读手机号、加入时间)、登录密码(设置/修改 + 确认输入)、退出登录 +- 登录页:顶部「验证码 / 密码」两段切换,同一个表单两种提交 +- 工作区 `AppShell` 底部用户块可点进 `/account`,旁边一个齿轮图标 + +### 7.5 验证 +- 后端 `pytest` → **113 passed**(新增 `tests/test_account.py` 10 项);`ruff check` / `ruff format --check` 全绿 +- Web `tsc --noEmit` 通过、`vite build` 通过 +- 新增 e2e `web/e2e/account.mjs`(**13 项全绿**):登录进首页 → 首页有侧栏 → 进工作区**侧栏宽度不变(差值 < 1px)** + → 账号页复用同一条侧栏 → 改昵称 → 设/改密码 → 刷新后仍显示"已设置密码" → 退出 → + 错密码被拒(`2013`)→ 密码登录成功 → `/auth/me` 里 `has_password=true` 且昵称是刚改的 → 验证码登录仍可用 → 控制台零报错 +- 截图:`2.Design/screens/web-home-rail.png`、`web-account-settings.png` +- 脚本里两个坑写进了注释:① 短信 60 秒节流会让"发码→登录"整段失败(先看 429,别怪登录); + ② 改密码要先给旧密码,脚本把上一轮的密码记在 `.local/e2e-account-password.txt` 里自己维护 + +### 7.6 没做的 +- 安卓端登录页仍只有验证码,账号页也没有——下一步对齐(密码登录 + 改昵称 + 退出) +- 手机号换绑、头像上传未做(头像现在只有首字母) diff --git a/2.Design/screens/web-account-settings.png b/2.Design/screens/web-account-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..dacf6bb860a78761e75c52f4c9dc9fafde600ac1 GIT binary patch literal 66820 zcmd42^;?tg8#g`!Q4tUo5GfIn5>SwmmQs+C&PjJS17?D>w9+9pV3U@dbazRO&H)1k z1D4P9eSE&h^B;Vl{j&Smaqqm&y3TlA=M|x?sY-qQ-gN)~K>g~a(i;GPA_oAt^!w^X z@-MG9UXcKRn}AnJ3VHzq@zD##ZFn*QNxTlrw)mp+TNm`_; zN(A&U{Zfyctb0J~{_fw;{($siU~HQGa26flF-vUo=%@w-nHRu)kBOUqzX5;?vF|SZ zd$=rpk>=mS&4a5F{~qLjb1waR09=UsfBB`Rw7i5n46ML|bw=k(F~XL_0lGIaRJJs9 zp#dK0JSAGM3r}~8xaxlYKVkZyUQQkZz#2T%K0B@6gSf#CK9F1Zx;AjcdlYfB?Zpu) zhx%$Rg%P z^*rz$&v`5sM9_QjbQ_(pvGde*ae6g$^7*STb8>RO+_SN`IMCYh)T(eyBMzf+mi(Xa z?*-R(XGHRvu1Cc#p6u!t4P`JS7ipHyX1@+yft1%3Oqc;yzm84?CHaS;|oMBZwoxbTlAqvGd_vFxmr9m?7}R-o4+ z5EqG%r@gz1K1su~?6xJX9PRNTQ*KgbqY=?hj<<(u1^V{k&Y9m3XtwPu{|Kc1B_JGg z6?DkZ=#?}DSAm1DkqN@F!jnr+_#>W)I=eoDuZkOPTf=&`YZaUrHTBwSs@YCo)Bd-< z;K#_=ycKnqd=(;|p1zi}XUcApqhIz7gB=LLO>FVW3e%9BJ+}IHakPfiG%*I{tMK7E zgE}xCJ*ZXgBRg`+PTDP{;AvN5nf%WK%^r#>+k(!9Kx{2Y3pxAH^=9y69F||lEokm$ z|63j>hd*L~mO5Sr#kSpCvxbZ|a6HJ?G+T0b3b9_mmENOX0hZk6KSSyQhJxI#?q$Nb;GyE1CxCNyYVl)FJIGW+)w2lWvLr;oGko)ar9UN{UgyzsF zHj|%Qxf?4o!vBRG!Sb(F_QPL}8aCqJudMtzi>v37Zt&7WhgW8kf;w5VF~uQ&c~TmHk$x}f)u^NXtTS6F^4EC1H{Fdj~&DIV)| z|L^ZPP9^w9d=)YG265=p7B&JgoE6qYiks(Dz5GsCq8V8_*%$``{V*<)O2{*aaYQ%9 ztz|Zn>XDQC8;bT+wfiOGM2Ls?i`JdG!eE22(ahU!AZ)Lj&QJk;$m#x8_oMRIP|Ua% zyQ8h3*W|!-3hU7!eoY|}SI2)^Dka*uy3O4n&hVEH?GJsl5@e-{o%UD)Aw zGH(Twgz;Q3>dJk>97$t)WAA;Q{%R0mKR*vhn@)mp!`yNRQ(Ai_(qN+7ave~V9s9$3 zrpQq1?i0ro$9ld*Y@EYkXEa-on^(|j5&OXDY%CAKAZ660Fe_qatvTf(L~(r*8xJj7K3)>w0_?5m+~j6!1pCYL=0XLJcSyj6{%} z`X8GdcPy<9Gs*8XH3dL!9z8Y0G^7xeG5AJ0 zL%;;{0@hvQqxi*7$R5Ex7bjFNO1HcP4l zX%vH z{CgAr8pM6}cJ{gf{hw>YaY7aIi{FT6D*s}Gt(OjV>DOu))a|x4v#8jmSS-ip0$Vxv zP*hajQYnRV2X%_tN-}nYUBy=2!=a{&nY=~=QR#bJ@=EXwv6${E>OMLeQubw!yE_{z`yWe z^~m@B623c3td%q*E>^E9HYXl4O}WSzKW+(dFFkRLk&^QRrN3cp@jV9t&$oDM6wp!` zLJi)%87FP$UbEM~FjFo}S)45|VFQf~X*{42d+R&3^+mwVyEO*{fr+t+QkH5N$ufe# z53vJi{}#A2IAl|uH0|A0lstk8+xF3EJsgKN);Oz(-UPz2MR75n=4~iaRZU(`jSMav z`~=?9#D0Rr=umFRPWexXx%bQJzn%X>IL!^&1TAte$Z(=(1pk(2fZztQz)8Ny+{S0F#h?C&3|kdC^+${!-MnS82s3%oqw*b(8gEg4 zzvJTk%`B*aqXtgk5Gnf85Nv5#shV^DcBGIWBo%?r8W4RA91L`aF$JF0iaKu|wy(Gg zvyV>URSfMayn8P;vwsk4ri|e7mc9M)Rz`fdZOG*%#X*C(A&bE9FYXNc>#fhramOfN zilvn)v+vUuthb>vnBBzizBoRxbMbnkOl@)T0u_^xe_gda-ASW{Mg2i+L4T^NZoRo) zV~j@ZIgJgzt&CiS8NA-j11^+Xm4z8(-JZ(SD^# ztaI=C$*x>q6Ldf;*8fLUmSz{Vs(h4%s zDykr2l5{GsPb`fzQpGb2&hYNkIszA6Y4rU+7V;eQiz*_Bu0_#RZ+1ka1F<8G`gREIYpTD?r<#(hmQeA9qakkg%;(-FdRfnF zoccRcq=zl({QLFgLJkwTdPeS^@ao0Uhp;z}ek;Be&X04-wAvDol};-0)}9MGGyd3) zU@Y;NTryg5%6ns#;^|e?r(o8`SCvbB(Y%Uze`~UQiZ7RfWw7D+-kroGqIvDvq0a@kCr$UWIT7%%L0u@JhdIvw04;j2+G%$$87u;BXKj=VI*d>4=otoX zJF@QBOfO!+Z)DE`_znHlFtr^(nWtcc`|2mHSbz3i(uUi=7!?Z9{!K@Rc-uj^^k|rn zS}g7L-ixf=abnkyaPn7iD>t7jOc;e%pKwojprP^t);SX2_l)~~IBs4DI%RJ&_}I?O z-rCoi9ck-Tf$tkr_03Jx`L(tySWxmRI2Ee%pmFJVUNWi+;SpycSsYp_*nF&`=|?(i zkTnfBqRxc!it?2%+~=F`makel-cCD5vv12Ociset?&LGehIB}N?b|sGlOTZ;9nfCyR@Ie!^9qYmZ%D zXPAjfe6lSzStL8}?C5Sv_=8G>X~II`XViJE;NoK5qU+NX-aU5|zjnwTqF@qUtlPcG zvgf{Uj4PKc>WpL}4b^Yb)oDt3hdzNQ-ytC5p#^q{@Oy;qK5mmha(4i&yMixSUPQ2Y zpU!C&w_4R{?vMg@$Lc_;5qXoGV~@72Ma1t)`$osHUlje<6Y4?L?mohl;3&IP#L^C1 zn~+XtdxuolNkGy$-yRXa-0qI| z*(7NkilIb5vc;sM3l;Gaj%SPRrVhwlG|A7M-d1NEbP`kUPV-9?WV+WHdxZcrKiJ(j z<#tVs=&g)5$A!xL7%JL!j;j8ikY)a4$X@IB#M0l5p{Zv6kXk4vOK z6(`6kg1%W5v^NvG;GWeRtI^9& zEYBd(MaNUhzW+|X+-R7JOYZZHkwV5hM3$)*>-qPCD1wG>GGuUG?+QO1SPt<&EPw(i z5P)(&kxE7Uq);e!7?s<+D`_FvEq%X+_O0ppdo8?eviGkstBd!=OB0SMT7& zM*GLe^U0sfMJmH_0ktG}blM%Q#~Ct5)5}D-=FlQ)=P*G`_6-TVn=wCl@-E~~axoEX z{`|bw!xM819eyP9)M+R#h0ccAOlIx#q2j(qq*v*Mm3xnB{q*z{b;i;M1xE5%!Xo}Q zHA|^|C9M~htfYuD=mq@-j!RKRBz)gjUHDGvy)YXsxUYQqut?Bz5E~(&gO$CXv|r+R zBBHx*QG621QMtGyb!2Ev`ZZS-IdQlLWWVZ8?}{4AKbV^)+C~%SA->*7&PMTuE_t`p zwI;ZX8E9b<_zjH-2Qp@y7#*E%TjL7j%9#+v!s?c0x2>_0FiecAvFct*W`jRZ?%34f zZk&Nj`M`y=zs_@6@*>TBz%DkN!JcQ&BEa{h$T^AAz3JdpTx#X#o`q)DnKGssw_%Be zobVZ`F6u;J!<=)9Hpm~F$!UlSo}3l0t`mI_(X!FtvCMNz6c);{O51qFzqz(Y7CdM` z00uRjjLE^P8-9QDs&zm@j>}7hL#5oe2hl)NznA!GF4ZKBp|+A?l+*oN|GJRm(f5BF zsdx94Z`1!a*LTS~0&n{xo;#L)A?<ZAq-E>@V8@pdbXr>?3@K*8J1}$mEN2*49haFKZ+0d7qMk; zdI0tzcI+$^?3zJ!lk8n)d(A>Imq=TrgCSX6qQurTwX*SUsK{O&3c}`_pU_z2U2s2U zZei|}C`cNfyUAxi7zv~x1^t@F&wj*`pu_K+O(!vB)P4_`1rMzM=7Qm?4lK$d2oR zNR!p1Z9Z`aa8cd>`>9NGmC~Lay^Zd!sNrKhqw;Qclc$k{IS-Dlv;y zL z1%O{FbLT}@U(7N($8uw3OzYM8OO3`Z)PLr7cFwBv(hr?hSbrt{V{3mn2IU4lI4Y)j z`iivy{B$!}oPkBgNkI5o{4YrCPW{;)K0_5w!XCGE>@*K3#VqGwMvcIax;G$ zWDs7N6qOJj?OwSXb8XuS|JC92MdgVuPp;BVUp=4y$FtHy*7okj2xU<&D zSG=8yFL($iK0Zg=nmz_DnpGs?0nLnI{+fR*=VwLzvOMfqLW!DGN1WE_*GUhl@fx+J zMkT_JSGPBW_#YXsl~>wXVElK2Kh88hm^*pAt^N(ZlkI#xF7mte^e>sWq=dU7snxWH z?r4K`_m>6@DeSBSkG4OwF`rdc7}#X^3N?G4+3|X>Q3B-OlA+^^p9~_;Yzlq?y%t3c zEM821vpr&kCYsxJf4WBUL&WYnJ?=A>O;SFkKY}-vmF25anQwNyFn7z$NGeGEe!}I@ zFIVkY^rvFnSJ+ijSICE7Qwk_N88rM@u7|m{$^)%T`LHp0YJP*)bTV44K$S1W3%9H> zXJg!EFmhzB+VwH=;q|pE(Z-_7ixegKHE*U^>y*l|4+4+R_Mg`B-G$_J(7>oF+$>y? z+u~@0p@k%AZ4k7)Jc457Un9 zMcEUK`g>Q$tDDB1VT{ZzqyCCVhV0+5>3($Qf#J#t-V~Kpeo9=lo-!QBL{Xj0wdse$ z1al;6LMCTso5|uE#YubrhJD0Kx|tz?4;l4*d^0y#@w4GcwrK43EwG~4py^M=xyO{7 zz2R7meT$r(ex;LiX|o>omn|gR0|4N|)eDq2pFF3&3maMjCB30k5}51L$#cj-&@jN2Z6b2a+9LPd2bd4l)kNKN{USWEBf^{ODms(z3Ix8%}@XmxbQsG<rJjy%Frk#eGD2plh z5beL2f}YA1xIY%+vfC^|L+TyJvgT>q^pD#HqDETtbuya- zA#Xe7s1m^9^M>DxCO#xK9j68ARWs~7FFK1kRLS7phs*{}?5zs*ov7@2xlOqDjp>Hf zjl~xnHhIPvGSnvu$k3G;alKJZ&3(*~?O^uqWNJm8xG3>x_Iwmq7%A?=p_5&FaqRau ze7zIo1~8VPuXH|<@=H@Noyc1w1T#!1YN|mtemZ6D*xN0#J&;1@X;*j1R?f?o($~|a z>R6Ko@BU~%BSA==?<6;*gZfSHNu zW?Z(0r*(SVygbpGN1H_gi3ZDjYo^R^B#VlJuFu{%S9x9@9J2fA#ffnoJMdbzFE6fc z%sk8eO93LK=;+zhCBXgP`f9&*4kka?nremBzzY^CVBm)RD~Fwoa$K|x<<02j@_t5! zN2kp??r|UwLQ@$(S@ps10Yy7*-wcat(k3^2>ow4N`fD61BCBJiEptw1b#A6NC!0&pEMS%vFXnK? zS;N#4NwSvEI?QGPW5$uekTLya!=4Ud?}iW9=mfshu&MLDtza)?$dv2&nekK?U7J3~ zqFIY7s~15A@@*AF$1xjt%(Gl-eHB%`UX7d%nY)OhzA&rgn!ujHR~(n^0{U&w2v9t( zwj~OB`b--c)3CtY*UGf)%DgCZi~50x;wNzAVv75h0am=btu@Xh zG9j(_kJRf5U*Vm{AN7e>O7tps&3V9=$gL$IO9YWBFoAB;gQmVM($uC6Ofe^%WzHra zUwXzVS$;2me(9->s($iyj;gSI!eE#>5#ti{GsmO*-rSDyhDck!#tcP#Je}bwD%4|Y zUSkzxA+X`nhk_ysRqGftuN+HBSne18c(3vK^bz0lVe{`&tK4=n0jx zu>DsNoBUU=tch5{Pv280MQKLrGmTLF5OL;ec*O&|cM$nQ0$w0crXi~Av9XUoA<0kh z=kejFt|;|glY_ob)9A;x5ee!VVPb?(&b&~O`+?)19#2>4nfnm3MzuZ#Vo>h4>Ddj1 z7NDjnBdjG+&51g`=d<1^x)4CsLj2&H2It%YQ9f8$WCr{LHvxtD{h))TiDGdz36 z+%-VeQ)h}@jSam&r{@-HdW+qxUs-0f>sL3s8=VT-K`Vnjy!cBHH*G#WlXv^B?>eXS zt+7 KR%^b9M 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 Q6(EqbguFQ7t)BP)0EvBnX#fBK literal 0 HcmV?d00001 diff --git a/2.Design/screens/web-home-mobile.png b/2.Design/screens/web-home-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..2524fe87e5708b4fcd6da94b88b7c6e170e1a756 GIT binary patch literal 26349 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%0AX1gTj$!;;~8vT z;N*#ih-r%qfSj}Rx5O2Sdw)vafmERUYbB8km1gW*wuXXOFN=_%l zeYSh^?9E(W+Jy&^^0{Om>TGRyoGXB@bqcDKHGmG zlKwXMHXw7-Ls;gUbZjvAN3E9_qy0Edwro{RvJ^clbVT%lcY7o~KJ(rcf!R>xGgnpl zhVDv8r(eS|*WhS&UMQ?484Po&_}-z0UHaltL>A;`-&dmP!I*+<9s)c3J-Jo6B2{h@ zHozv!MJJ{3&LbimP0MXflJr+-_@}+4X?J#Ku=QJt975xj2w*RtYfc?_SKzaDW?w;i zH!iU{H;?Ntip%oKjk_UWo}1Y9eZI-;C%G5kHDls;OpYN`UE2Q7y~Q4w@x6w%d1k+s+&d;oNHej#aHC+ z@~A>z%wwWF;9^Z_+AKkXu6154QX*n=)bV*h-AZAmrHtbMU>@yozw*>cL(T=8!T;m} zcv`;5s_`ta1L9+ce*zhga56JiZI^es9^W%j#d+F&%Hi zB_Q`wUCmMHLqQ?c_~1+k(`TZHqY^T1>qkT^<0S%XMJnWQeY>^5r2&M)C|;hHOT~P3 zP~?65bgeI_@mfG8Z%fEW9!22Xj6tM_s?sokP+FIBIaXs_mh-qD5tVW%<1|q$F`^3} zUsFi4KYqhI*>6dr!qZ!X_(d7Sj~fqIa8o0Qc<-YpVtx2|v=QZ3Q!y17p7JVTKyh0b z9iOr1n^-Ju0Pq-FFIxJxK2?VRFgGAy6veJ*(45b2U;mLu6_k6d>VI(DYf~!FWFu(i zy3#+~fej-KPw2X@Y@D0`FgiS%w-ai+KpMQit`$kVCg_VCf^4qyZO$jx2PG6odN`R&n8nF89X1pVM8HyE zbIO@?mewwln7V=L5pyx7VU=jNs05?rS!o)~%J>fo{ifNnZ%zYOV%mcCjUOZ=hO2U8 z1DW@fd`|theX5IXd04$jUcR8eJ+ALMk0()I*%N7nn*W@jS#fnOvgkSfCuMe4sO8br z*e@Mw&y>c>fpd$->+t96sAtG6RbQn}tdxt<%5SKb`?U@~l< zY7u;dkITe?&0acOoh)|JW4ZM0g%=4?c`cauXBMKg6sNw`3C)+8jj|Yr3f&<7gNj?& zIYumjukGIKs`X!oudP>fmx{C%^7;U)^VSS4Oo63`uq)Pg8{c#Ix#VAcZbZG$SR8ln z(H}tOoSn1O#tY}PyX2#GlmuG7Ul%gxdPMznS?RcPHS|*xe zb}7>+eZ3^0RivXS=?ENrk+34FpZivJJJ-lg(&0Q7_+4N=_BXnWys7qE>`~dNhaDHa zv~oWJ!2j_&WaMOEL72P(pE_2y;|1C>^!Uq#^UZ!z50<)eVR#Qs&y;Lrcu1wGbO4PAc z8W#!8=Rds@35E@VL1`+`7@@CQ2UBmnbDc~O(E?k$d$em9K$$*aYYgvj3odj~ zQ`dbyp+2?7SNyKa$ugr6^WB~+uTTGaRxfgDf^xvWu?j0NEwJXI^(6l-j^@2xf1$xm zkF(#^9RB^GbYbVQQf>baG1SZ{n>xz`9X4D) zoO86A9Mf>9*MJOnGD?O#uPiF5+J!A9eNRW)rJI=-g)zTQMaGE{MwX}B@wmzLO-xs7 z+*$o%PW2*ysklX9#^I@hz7iQ1W<@ECQB?lgMz$dX*F*EZx#|gDO)_(FZFL4$JS3l; z+^kXl3b_G-Av8~nrkamd81pSnka*j2wuse(Z~Mae6QJg4j){+45>)3qzPt0f_9-nn z10Q2_Pg9$wh~-ZxneN0a?x&pTV=6sip2V9klc2!3g=pv(3joyFPfBa zK|W;=atpsSwp$llhmE^lCh|E4oRt29kYuSUzoJ%RI6Gvw*;t{gD-nP!sK zZr_z+LG}`|+v?`6_m6(z)=bGPE)TcaD$W9PrfWDPDe6Ms(dpiks#8fkWee5+xnxW| zZmewZ+*MXxTXm;4)RYAzmp+rtY+bJ5L5lh7#JQe#?wmfRG92c_ugkU(GaRUrNy3fDIWBCe*Kq3iM#6{-xU6@_KEeqTuY`5d8ZHJ z*I!t}{ipH)!42QVw$oJXUAR(N7@ z?(B|a9fK@(fdyl$u_{dCSlR5iCE>!bRj$E34_nVnmt?(%#}xE^iHiigY_*lquA!lB z8I7(?@!#}VFT~4;orC7!Dg&C5`$s|nx;s8wnWz1^HNoQy(^@IwTRi1P`grQ*AEJ7d z+OnBVvI$MG4haujQJb#opC?_tT>Gb(ggN3Ea)&PU`g-zv{mA_56h-D-%Xf+61!lj~ z9oGdFgGt8xI}GL+V^JG$6`FB+IutgO?*I^#kuqeh{yl9_y;3C5zI!JAQ+IKy$s0hp5!>vh+Gr`< zSKezGK{15wwcHFd%J}hS!YTZ8@r4*5xoVBwPMFxnJIM8rxM3M&7Y{BA%ifRy{G3+I zV9gjO*f6do&f8c%F|jX$+}=<4>GXy#Y0^bWATN{3DDJ^ce;C3nMK+opyG22R6yK{B|@S%lpbe|iHjDDSgs_yL9OUDHUN#n&GV zDiRJ#h!SF4D_qybDjM z?1ZiL5Ns7tD7}2#z&B7}2{$$2QdFYre>flr_n3LJupi_FG`0 zldcx={js#~k*ST?)*SsB_O9r|P&r;4wwSjr(Mh}>^2IlqF+9ACil<+@hz8lx7bAAt7ZY;mGnDDe=vyC*}f7U zVLn?o8R7J~gIluZ%9i(}1}?cl!e@^4(TwSF@38Opf!CiBLjEi_@y$TsZ%V`G1qD|Gkfk z8M}|qS$uH(P~^wwnmWbtINK}+2LftQ!pkM#z}<-n9bR|%!xpHp8fzZkS`mK5Y;9$b04X^frCk{ z!a(<>Mm!71pgD z1%NpJ6NJ@@tc7C63W&~Ik0YA;LOa}%oQQh2-A1Qgy{~i?eUyl~>wzg=XyI{?!#2Lo z-T`XrGGb^qiOV&pqnsP8#eN_45@D=u8@S=UR#KL;O1!R`{9GjCGBK()Z0*V6Y(N`( z)Wf#rE_RA5pYUg+9PFE^oOULEehn1fD`SOtHpCR(3gM`-(W1+3aHdWs_RH7vW73^U*&|4XHKd7;?$U>ojhaDfsND-vgTR940c>EOT6d=ev;L8THg%c8?7eyPMJtL2Sennm5#liAlbd9f zja4@Jxk|1iJ}-pO`zT5n?8SPA0N(B~U?YrqX8@mZ)?81ldHy|c8M$+^E88Dw1p;m! ze!Du}Bg(|AOD|uep-*o|`a1%cxm3NpOdAi~kwL3$nRZu4I|0W_-4U_O%v~F>*W#B` zymgp&ox{E{uLDA?ZufheWP;{|3Q@-#sY8p)tzK8vb%(*Ay;^uTv2~C5@`XN`ZB!Qc z)wap43`XmLVtSJrou}2$F6v|}=SvLUufGCIG5ZFdX5yG?^#S_=j77m()>=YS#dok6 zQ%7Uu!Yz7&?>cKDWd)}hJUM;#O1X zGApA#>(EvvU5vyP6cOu>5@s$Xp#oc6FaCI+!)ec{Bjf7Xd}VrRNHCA~I_D{q3RLR< zh*_%QDwK|8w79-b4=<~(dsvVzen(IkP%EW`py6m87u&2o3>M=W^`9Eb_j^#4jJwkc zU8lep6f8cWpVMZ8u@jqIP}0fn`C1~7z$W%`SjX%!^#ngd*9*$y*88K&aUSffs+X-T zzfOG^tJTJ8TK~{waIbU#2rwgFw>cv{uq)9sCO6vo^?gXHCd}aJ(=!g!7tXtqHCGTv zSQ>W;DD-oBe`|OLTejj*TKzT>pH$wCvF71&)NW_1M56CsMa>yOn}zZ{8`5;IGS~>) z8ocH)!E2};#O8_um0#i>$@!4)9XCb$w{JK(P-#+XGH3J1b}RdYiX@`4f5CrOqPFLJ ziE&hi|98XPrrcPNCSnQ<^DyH`xO|hrjiAIHSE+$wW`{+Ys<5D?Rvoq;VxL#0!zrUIL>vrOC(%}8GF?-t}QnBZ9C7AWbBYG41}h~ zF=A1O&$t>)Ps=3+5Z+v-&f<*9PFb&h;Ze)|CIUi!g<}r?X*(uLQFFMkF}_St+h^n* zPX5!Y^%E67`s4w@t7T3~S~Ggx+PLr3TmgJ1yF9gAp#BnT=Vt;}~WSf#U z9yvnc?h9DtbZ=aH@6w)c(D@d8Itqmg_(ek8|etw>FQ&M0RPN4;Ofq7xLDkL%+D$Jjtd5WIcRI zrUs2#F(xmt*5Waac9Y%@_*4iI+FtxdkHW zHUE#F^S667B)t!aSf(bUly-QEhAnrNM3#)8bhe`+0<3M*Ns&E##jA30R&&$cjtPj1 z!VjkTn|zK*s$kQ7o~s7lcPn5MRI-p)$~4h3Jv5Nl2ZtGDYx-$5(RYpESZ zAIZ;BTe1M7mJpdVX*%zy%|;yM zzASaBt}_m4Jq#G)rb;2Mb@JBGO|pIH1eer&K3kioO@EdXxp8RF>!yN^PL|@NMM`2q ztLsRZn{V&(6g<~xX=M@rL?cp&uOy4yt+no?_PkS#-y%^BB*um-S)zbSslP(Nan@4d zEfiJHv!z+&VSxGj7O@sA7NWuO0tdUwy#MtH z5$pSeqvZmj){IRIGReu+U%nK8E@V!)HtkzlDB2xtJrlZ?nB^OAVhw?CAEc(YmUKmJ z=s!qHAFl6YeH80kHkHO9id+6ljW-({Wao_c8EYg?^W8YtcgwDNx3U+O=<@hZrxhc9 zU?rPA&x_mKN!`e0Ey2f+RUiFbsG~=Q@j>0XG=_yux}A|fnBpu;^|l+QI|gZ-Rz;-1 zJ-{xJQ7Tk`6sw|ZS(3`?+&$@h$PIt^*(fTPdGtaC+n#p)pl0@dw5IoWwnTj)VD!5k zufqwrteznKcrd~L``08O1Ii=mqtB7w$ZDqXV?SikgFx>tuT|UJIPMo49FV4L`xIlT z8GyUZNBj)0fDJl8PZ;I0#Y-0#_iAc%iS8HlS1VKy=dyXmudA zxNic77}(D9@REx;M8LZmUCBX#ZILc(o*f+j+>y!kB-R zLHR#dRjHSbuHACGC!7GWy>ugScL8YcH4y@ejXT+cGzYE50`y>($U<U!2Uq$A`{y~0))-(O20Kn89#o;5Mn zUQp#e5XcH}iJlGpkm*C4DZ|!kuxrRzov*b}E!S;xy5+5W{Fxt{?oz2hu2R2yAeK(K zc_V@jn_lDIx-sQP#EMr_LVP^+&$En-?9u^=RrYRuu+5Fh?xEuM4>f#yoN_V<5;nNJmYt*xO8Y!*S{Up|-1{*?N5wAt;>W2?a)4`%-PvrVbS z`!rYOvAcTik4ei1bXz%P8AP8? z4?Cn+<<^dC97OJ1;V^4BJl?3nc01LpwbfarY)=zlI#lcgALQ4gXS*|KsGIeCLPGc8 z6|cc)`M`2(V1x&gTg3tS-gJG#U+2R0? z>xBCtRhR_%Yy?Pd;m0#+mniLEc;6?%cJUF~oB9q7?CqKR?(@quYLldSJ(RL0VJFN+ z#%WJcQDavQP(fgXMB_BRc(S&eC#a||K&vg6jmU4Gc~(Djg|BxL!VhDUICh^~f|ey) zn;_n-TlF?%58OCa^!WE7qx!5ZMDngsu`M8w>&+6#iUjC*nIg4x6NAvBgL+@E5a>|! z1>fgqR}LHVwcqykPJsKU=q;fRNJnlkOQw}Q7$ft_C2Zfip~aBsTe&W?>0|*d2~qq0 z&ehp&zHEBm@GuT&H5}kHqzWl6J3FRD*L-gvY4EYnLV(BMAXlr$bv*Y*-)Nh|oriHO zo!9Aa1S?J0{z`@32Aj!`lM`k%AX($)70Qu=6Pw~Dn90iv;08=AkQEy&oO$IACenUj z&@sHk#x|-{>Xr|(aW7V@RPaR(_w+1&0=x-q-jT51Ya+WB6K+IUtlM1B^?K45`EA{p z(A5=}UbWRXkrwo(6h*@8juHX1?C*ngq~(P48jcwSKmo_PfNJy|9r zLj$rF0roX^#nQv??l>NU3V<))sM*+W+}x}bDP?Aof(Vq0mtD70r+}`!0J<{KUv7wo zTBg(F6b?l1a9~L9y%_p1QJi_huC7!H=!4F*XJ=%9(`$VL;gX@eF36p}WHO81%a@(*N5xMCW;%6rprlV8u5B z(qvVg5QW;j-L}-uNEZRb3p04{#m&8ZaLHnKpcMcDp_CA#w+{jmnfT|F*46GzIRLw; zgM1=x)V`Bod=lbXG#f$yAs}%4J%;S1x5aW_o#`Js)d2%C1>(Mb?LY((=H%xC(@Fj; z5fs@oQvnK5+C&ip);4fwbJOrCa0i&^ZNNxf&Fd6mGGzryD_Efbm-20Du@G5Md|v+Y zcKBt8<)aAHj94`SCL!`&2ttM->QfQ;X9PL!q%g!I)<=ZxrK)`ue#cLJ$gvY`|I6c` zBfEz;v1G&%T<`!=Z^*SGWYqs@=N&*KUVRLZzs*#-8Xzx0DOvqAAZEpnp!(sxkU6ly zVcKkcdIVrEeNT0~y*eXz2Bt!I7|MaqVfq@|)jIy1h*t~@)ck5+1-{olc!~9&3hsp@ z_wC?T%%{&N&&_Q^XWBGl=Dk(QwQhELgQ>l+b0;p#R>Fy|Hc61tUx2I%74y9cbp$H( zyF&!&_QeMu4^EwIvzc`vw9C6`C4uq&!2;Y+#Rx&oPZgDXH21cK-obZ%M@ifrZKmG~ zR-f(!yul>Lq{O7bqz5gUUnxz}j-!JU?>5weKpDBu+xRH zB*YKd`<##CP`3aM3Uu-|XqQuSd+L+?hkgL70bA4-X9f$ML}Ug1JTmn6J`ZqoLWhEH z?i?hqb}pLe!Nh`bO5QhM+8xj7qNqUQ>+SRlZ$MzhX}5Vg8*j$go~0615APYQpRDCk zXx>*74yZ)-mlF{SdKH77$qv6mGwUL=e)jAcAlOKGcs_!BaP<<^R#og8y+W24Desuh zg^E?L8yEAIrFV(a16zz67^(wkh53y!80rKk*6N?J8uzqZX*U*TYyi`c z{t`MA!)X!V<*o6QDn^~|EC5rjN-GS%RV7$RLD1BcSLec6aePJDS-r%NyxmevlWLmj z5n#GKtSTQ9`W+WT)uC2abzrX}Y;DumDa1;3Gj5|z29McKrQ>3A}aLlV1hUcM{VLMGtcj0W_?zMTw^RW2?f zfCBX+CiDrUGxF?>XmS53qnd=$a-H_%qJ!v!oaevRNkZa`AJY6Y%f1S6zZDf^S4ag975RHNHK=b1Ly1 za)1MqwGAb1Xf<;Rb9-lmj;j&UdAZpC?kP8jTP#{0q!U0(=d(>W%n*w_*jf*{8y|QCP|yQKxGb4-3`7QxEPMlOYPfUf3qSG#h}WLj@?lP*sD(75Z+lXsM~` zxw)0vcYgvn4Mmo?lf~ZVd2^2^aWJY=mE!u=R6jbhqm_Ae*GR4{UMI)>)e^Eeig`Sn zKIg5fD7`8~r*JJIQfG5aG$Y!+hq2=Z3!s?~QvGnaTFZ(5IRN7|T;Frr$j+o%Lb|U= zoFb1d?st=BaGrU{#H5#wPU6*Cwf~55FwzJaq9T61LIa822&6bjELpTz@fD%oNf;6$ zuGZ1zDp}?ojIEs>yj7*~PP_ViDt!!fW^Lo9^rIDLnY)8;-;%h4EiRUNdHKODe3smD zX-tMD+KnDOHJ`NQonlP84vLZ-u!vpTv-jrO+LF?B2e*comN&G9a2M8@E#eL0%ObGJ zxf>1Iqn3gjpfY4pzTyKQ3Pz`JI8Gw%>9N$T!vH%8nPsiCxL<)j#``2E;zBh3k{1Eh zfp;8T<#37t?c+jMndF8(+Mu`3z5zoFFD7EflbuMbo1G`8`w7$`kwGdG3|B#n=?Z;3a?W!tPzZ1* zw{lQ=3m>O03<>605@jOe7&{G%asXxbEH1*YS^`2MFeejB7oe38k|(tp8`=ml^odqC zZdWqTQ8X(@9=InVQ>bKb8)Y^&vk{P{p1&WaAWsg7mMEH4vGfx~C&bFlB~#A~ z_f6&`#$$BACJat)>wD21>%=<8ti>a(u@`0U+R&uhyRgh$9jlWU8j(v5lhzka791l( zB>rc_pm>}x%}GZS?|xy}jGa<6z-HQHflLnK3j3zrz#YUV7`b z@PMZwb&up0mrjUFV-pI0(MT;2eJQi#p%i7yDs#yphvCj%sj*24sfegnl1`M^&>^y) zE?JIQ8jCUQV++0r#sAp2_VFLxM?54E^aG6NIC^?U8@XuIxVLg%j^ce&yfdIJf_Vp| zm0xzE@ewf7Z;)fGI-NCL4XhqfnGoXP6=K=CU|U3oT1v$VvBi}|pck&FX?=?M>Tg7! zs3mG-t&rpZz$^^Wa$o4Uvr;a0Y$#dImC_2zQ+&oZvI{8(ZOGo3f9{>-Xi~MVOL=;t z0s=t*2lq%cS6wLA#rPCW@dp}EfKZm6P4VY4nD3be87PKFsz<(7GB#<-THNxnjJUur zOo<4!yxbfkI;=4|VE*?@MWH3yX=-gfwzL5_wr8cL*J@I;#`=j2~@k`PUtS)!JZALO$ehrtj z>+#YR<=3&uX9`zFG=r&qj8}j#raAZRNqex5-wgWXYLYDZV#&upOq-d58xISoV3F!E z2{t6;?*+6vHsCqL`ekekcV1B*JvA@a*`@ay|@|KW!1pUTQMB9De3O)W~ z6W*IyXMr%)+86}5T~k1dDygTJrgy{_XXvXmFn3>jT<(rCEnd6y zzD00FJfN&q49rUXI$IGpPFhvGpbq_#Gt{} z&j@D9v6AW%3uuKAt+(E-e*b+rDZ*G&OuJG#i^F^X zrJr~-NEO(o1GBg+kRV6nk-Wi8H>&l#`P!Iuxk+*GYAI#k-T1;}_tPftO0oIG-2fAG zqwdv$R}srzW?r3;l7`Q|EJ92);FKI+l&e?ji>0Fq3U*5T;4=4yG6P=Q<42PfT8}~K ze|#z+_u%kN8;zjzT62BF;++$(!G#F{rmjNtw|wG)Vk*Re;ejc6$>|I#BA&Qmw)j3m z(cU&Oa4%m#xA*awGwoLLv?mtx{WA*=sB^!RSIL%f{r5_DU5^pUiPn$|l%C}5kVYaB zk`?(DL*0(dO?-^N@zgMwBEQm)n#VL;|HZZA<1qhqw1q+ld%v{I`BS5wOhVV`3_}m| znL89gUKB1qA(6)FSOtg?n)m%L#{g{n!&(Ge6K050c8`VPrOC>uky<|0J}<4gKht zL$4t$9w!KaM#N{;b+QuW*R+8#`&}B?g2mnZNRXc|Z^Q7xK~pfYYr~g)&dQ>X`u@IaEy>wG=eIAWjPkWpTHatBqoXJLP|PFI-%@m)#4e&Uk{f$s@+Z#c z`ESTc@JR|q$#ie#f4|`1txQRK8DzR(s!T9IF+jg|R!m7E^}?}h-Mi)Wa$L8{>PMOt z(0{n;77xxb;MXcHGQidrm(LgdrOX0{6_rvJNt};51tNvWTLq1DXVEu_YqK+|pv#X)0HVoN;zLZ$%(+MUx zRr@9U7X@sTd!djXpYb_MylTnp`4S3=r%CnuUr3#dTa#Uj`XVi3fX>s#?tYm;(-2&T zQxZyPw(&!uh@*r6{;qeEa+gW)ZEH5jDvv-Is}%%DF$7Tiz7Np2aWz%j_-=p4Ot~&D zq)^x&74~&;w+8Fn=Ye-te^CO(G#7W zB)rwv)l0Y{oj;xFoltPH$)3pFJy<8STls(agAz?-l8|NNVIh~>a9c$kEXYT|O((qo z3%Scrw#{g<9G`UK>=V{ zqe8}vmX|?6y;?C*!aQhh-`q6 ztV=GZ9f6O0G}k5zACP*L0=3F-k-^RK*NWa`fcHU~5dfhBnf_@4I4Xf(b}mB15L5}@ zP`1<*5B>w2NHrq32>w~3|Ck0Hl05IlwgIZNU5@tNUk=vvINyGXN#YOUkKzAZX`BbD zS7v2Z01~Erz}YA$HU#jl3^G`oHp{is-qI_Ai;3gtkAT&%nAoV0DeRv#Wx;O#>n$B@ znQ5QTA;gLr^cv-XGrRxsX7>ABzWD(mq6a`GUM~cI%aDy{s(LHC3Pj<^p!^@v(SPG{ ziuL9U1Dz-U;C6`u*l7QWxwS+IK#TI55)W7ZW;s()LJ;cqh`AIGk2-+N{rUKVTN|Oh zCO%h+jnkDJ9sh60oEjC*(U(bU5DmwF5C@yEolztl*(aHT zf+7|Z2sEsoJ>mAz?6>M$<3>D|r}5SSblD$7vBE=icFD*Y?Z5QXbe<*`m^2``@&~|t z3|}L)GW}QpQ(vo*_MJxumHoGFMtPNFdGKjwu1^)i5kU@{z29zZXsSF!iU2qq*sP4=}7Yz=f(>ZOkatW)6&1LE#6Jc2*ZIsQdx*<&~n9 z$Q@|KWiosM0t>+9Nrj$!_(dnuemcR}m(qY+mV!W2K=c~MmT5i(z`}pP=MA+U>MJyC z4?3l|4ZQS_?U7Ufku>;&o-f)4T6c$F6A3YC^$+l-Cni#X-kmL2yG|9)yacUk18A&) zoMyO6eHVBD2*p%Yk3I!~DdFewB#5x=cL8ag;aXi;;^7(qpstrh019vOb_9qHYHxZV zVA{s>?gLGA%cPch^O|qgu|>Gd#!S}kZAHq40e@@_8EA!x@1yB} zdhBkm9CnqPo;VuM0%h(-eK1iEWEjs@yM zqD80J?3ytmY{44$1P0qgnkrGhzJU+fZ?kTO1Hpt^^T)aQ`GEb|U+f6=1B}q4p<*DE zI4|9DbQHk4c{Wu1@nc)xq@<4J?9stMEWLZ*6cB_oE&uuukCer1rW;jBt8Qj^_&3ps zZ8L@M#;HP>HSQV(pheP*zTcn&;NTl)L|u1Ky$ryi=T>^{WGP03PGbR(PW1gl0xFI1 z%%$R6#vx}^l0aW>!igOu1R8|=24Bh_^=tLR=o6A3=h5w6XYDp9jyc4;MNepDvjagI zAgB(=X#ii3SFBvrcYdE5$b7HR3XL5T2l9a(5CWY#@~$=lDheNsC14aZ?YS_6oa;4y zZU$7lGd2WNsH4xvIH)0FWIiT_CQqgog_9ow(*H;w5NEx|wk?Jwo;{giQ89?w zOZ07LEqb|oragUy!Q@0De{^ zz?TqaIq+%+xhI9DGP?LHSd2*Gn7_yFdlE)tBqxY)QB|3lqGlv~S?1>2v#tz(yJ!8P z`{P3q!3-eg{90rUFVL+x&Y+&~s(>sACkQYNlLZK^5#(66xbnIf>ly-VaBLRkd|!~1 zE_TiJM8pG)0%r7UaWcHXw^J<^x1yo1FD@^+F7h^yOiKNh9$>Pw#-_Fh_SD263$78%H`*7 zEwT(Gm9IJhC4pUNxY#iC_{x7WZ9VTa8kg@oeoRU5E*Q(g=+z)TJr_eQv6U!6w;NE7 z!)E~%Xrp0qh!i!P$4`4)PvAqQIx+=iMu}R}{rqxS3x%h&j8`c-pJbgd>fuA>b%46r zaI8kd5*oU#=bT-{C$>Xe2~M>{xGWzKC3gZsi=7U;g&V)40)ZGH0#5Bx^OFySC7OlTX^*<6Im9#zMU(z=FtfEExypF4{<=shd|{IzHlB<`P$cEF`&`+{Q$?l zqXk|OSKiFQmQN`{2XQGr&H8H)oxpYEE#usP32lZTejhvKfzRKxfaHXB8GwtpXmZX1 zlCKeu*qa}!*oNeO1FbT?#z4^V1p~X5-`UCo=sdP@21r~q1-LEe2D}nqO~4)H3<49{ zKD6rkIRw?lUC$60KB%1@czn^R?@wmC3(4OZ?*F3`sC?9KMuv~;xV|i4MN`YBI zYu}7;%thHr4JrpJp7AzrD~=u{MycM@XO)hIb>5&kdTI5p6n^>~VFYqU41!cZ(G)6}u5tynXW>fs!av7WC|Dn~$%lW2CGn~H-N*3q)NF4lh zmQb;JCgXh`((F%?@djNs)^*v^i1P7zS-(qb>Ail%VCbdm**N!!>71w#_vrUXN>l=J z^T=9WanZT3^!?skC<{_HDxLwo?~!6BZxv%0N4BjKCto}<+V2fkx94>RX8z}F=3l%N zlGkqQa`R)_V#qud7XqsZmIqBPqi7(`=GU4Pkv zSzP{LKTmMj9>4t3no6&(pGONiw4})@ns@G=I2ASc%JV2sX5po!?t<;H*BS-HEJeB) z2Osc|L2@{N$wToL9XdH^Rw*$8fgI>qrpoBUiI-!n>R-2VhL=<_a#BnxgjND6jD|2s z*yR+f`diGY2WV|JVp#?=2ZN}3{fBQ;ID4cu%D_Fx^Q*)3VLmI(q_O(Zi~_YmGgDo~ zCgRtF(LC!W0##70p~~hX&MQqV^qJCcj9shbi4qAT9Q%vZ?i1byBMrRU0H&pmQunFV zFMg*VdO0W@?6ql~Z(y*C3@uj>oQk7%oq&qM3GjGmel=(B&UObkyA0Bk{o3JHC$>p; zqoQNH`?Zv+R~9CRgbx900S7J6ls{iEcr3wHSjWpGIDb1~?@}hxQDLUp z{^8n{^Xu3WA_T;D5o6?$KqH}uGz1 zXxop=;`vGUCrjzFXV;EKxGm&PW%8`w(2`?c-U?Se7l_D=SzjBEh;6!#Vck;v`fkmW;3`e5B~}7aCtU^C#n=cdBB9cy-ZKL!-@c7!Mhw zznvRbMh<1I<_TBoRnaN^@MmS6vXe^JcM!!_4Fq04ZC!X&AivJc^=iA48?pABRJlP40^Y>KpiytxDBdk&1iyC&o$@ z8`G{s7x~ggLjA`B<$1B9tD7UaO^(V}jfh{Pmaf>RFqvi8RO)Ci%5*$`@-vIzW;_{; z-ycw2#DE}e*-N#m360;;-)09-3Cpkj8DEc!w%VT>OLMkcUcG{W&Csxxq;?Fbq5mE zg*2ST@_tgi8^hg8Xg!)KVhkx+wTaaAf!WcS(*yZqbEQ3%^)B*R6B98-iNIBt2a#TL`+^;AF zEf(3Cd34z8;O|eX%~DisW{35n@@K^BsdQ6Vvcho|Y08I?CC6jxd6;Cy{UpocU%;*< z5KE2t{8fSUGf)Q21Fav4I)=WqOCe!S;*{Zc9V!31f3$$F>GufPWar?mXJrbZI|Ic< zm8*vuC1)K=qV(_m74n~3rYh?t#b@rm)5Dv@ zrlR1Jl~Fr=DZ9lHVb`MB^AV4~AV1?2=c!IKV_@fq1*$OloMi5q!mI_`lW zRxY}FSMWRds)eN7Pd#&sakZasOkW91!igF?(LL)kZhYkHqQi&mMYL*5YjJed2vX}q zJZdf(H1-(IF|(Q@zvRE@J{-bEI8QEA5A&e75mftW4xt0MAE|2!r;Ue$Jlp6)&W&g! zH?h`(1o#O^fNX9cGNG@5ZKQ=uxFqWFBALw2!5{Mq<1w^AlX2SS`SY_6+xBq?)r7CS zUJx8?&$L%scQ>ec&PZqSm*JZL@cJj?bd>=?I@(gHl zuk&uQ_-WYm@t?iS-ERCQf){RaMs;=Ya=P{9SDBgH2L(Ai0X!~8_wY; zql`nX);E6mQe;o)bESXzCDr<(>O@$03Qu9qb-qI;S0V3!jSM%EE>~pQIEzevfLye< zhQeI^V-CD3cM&kWK$H&^^nD2VAZag$A-Lmt#Hiu!VtuwTL3QV)Z#~;APtd(@fI~T= zk&G>Md|?oHJ15NDntB*#KVGzQf9W|%dI7(U<37DJwI@p~)E7E!J)g?xlDSadxFVMP zGR(fs_>#jrr{Zu5!qm`PgN$cak|58R#jV@Pm;7R5s9~>}yv|0uLyt1>_-o^1eMiXa z3tHJd7Wqko6lolUHhPcbyj1V<66==&zg&H%$lYvu^0)lCCeq$NpeomLhg zRX!dRT2fPFf1)cE+6%L$BN2Fe6*UsEO~~9S5kRGh8^mbnx5U1fmzvL)`eai16KAPT zsZf2cif|#GZ9`H?*E++oxe^ww{$@H6QiPi7+m`Q?ZI;ZZyQk#tHl~p-Wp1a3)dq28 zBW(NYcdDlYHE2e|FJ`(K@`woszC3wRO+}TH)E9iK@0i3Z|6!?p&RSvz+ni@3mBp3J zGe(iuB(2zRfA>Y!G)}@Uv%_e9-6=rBxY9s zV>bCfIJFQDX4)dUXzYq1jBzw%PvWO=`hrp4=;!m7cm+o2aZ@IcC+c|1O@tL35vVGS zAqjE5wk@r}US_hr*n0a5B~a_9!T1Gde7~4S^ymB7Z>)-L&F(l`f0?nyH9U*JCNvk3 zn}|W>K?IkK(*ZGfb4xvW#z;BjN@a&q@!Eq}7+1kk*3FgS{CMwKyCz=Gu5g?nQtV1h zkXuf5@w=Zt5c*%qf#uiJ@+^7NCwSckbie;Vo@IKqn{_8Fc<-rSf*07jVyWIA$DFL_ znwKL!vox`|DYgU8@*~=sQs#tkM3vjXBjmg|U_H-wm1yBf?D=B8ds{vUMd1#3=|;@< zA9AuWEzBQXq6An>)D8_^sO1-MOS_Em`p%va%Ijiom$W&YVbgmvwf%lSHaBpZ*uxG1 zgojP~!x2^p@2DvuqBb@K^{MKiCo;b5+AF{8vK}GycZ`s9+ltNFnLvZ^l&w79f#Ri^ zUH*7tAwY&e#otH&{@-!z6wntC=>Kr{@&AL*A_g?r!|#9OoBny||7FK4|2wpQXYF6k z{&&&-wJqy^{ju-=%A@~Xd9?Xa-uWLa0NCX1@~^V|L#BTXihnJW2S)f;e*b?i#SAT3-{*;=3)@?Nm=JzaRU}QC7f}`z^AgcNfoC>B=;>?eXOD6O4zK4wzxDpI z$8^)PO(Dg9=sIe@r`gIo>I&+7^{}LTjvhVi<|XC-`T)T^kzED;|Go7uHU8y|f0x6* z!r}kN@~|npp@9Vm1%X7*V^6k6DKnBwuEL46(|{{MT@(-X@!q*0J``tpp7!U=c0cMr zntAQ%LluVqYqyq(3cUq|CXQWu6WL5g)A;VY{n2o%qJTqNu$OGNzjycs;$Y(O=5Rms z?k0H2W7U+;5h{A!Z@=AIug^b7NHjM($JQ%bhmF0&ljYztSD{zPjB!_DHC;@iy)npB zT*sX5I``ou*-=Q69*V2{kX^BQ?!XpVkRsrG5G@iI;c;#@+Gy+lMVON@Ic4d`Ro2!V zdK37t@AgLDY#2z}*0ElxC~4eY3=vx?*Qnep^%ZEFyYU#VDTJptawRt+CodQ6^CZ;q z&+uH{Y)#r%TuVPR5jU~jZVNr#$rE8T8A;v0Wt`jGi`(mA_hIS|E##2m%xfthYP_s0 zd(KzKf8i!0k{MP~qH(O2srAM6pi-5pY!82LhITNngdy0Zx1@+IV6_C( z(l)qT?}*JUKz7!I)sv6z?DBNxG+=B;6;*eUM z21$Bp9QZSs%`rPUv>N2vtu@9rS)hgj< z%4w5gDwK%)p>FaFskir9FbQneJLtbHlC)gpnQgu#7(+qgG)EPH#~tg1UmG!*4|X>j*8;^uJazL(v0 zI-DyOXb+?tqVqUnbksrXB)o#}ZvXJ^tgY;B3VgqoFDtvllfoFw$nEgqc zOlj8S*!J{>$8u!uKL4fEQbWd-Z##EU z*1(ZHkt-qJSgfYhW*{Fqb}Tz}=vCBfI@3Y8_)R0CCN7eAq1x1N%|OkpTu1B~kYsgF zt;^$m*K=rjd$~%D%cNC*S+GWneL6zMTfVyiMHd^PpJFB zzR8BEl@*~tBR{|z&wEwf*>;i~vlSt)m|Kr0l&x=0R#fs%Qz?t9b|JDc7bfrP@m5lG zo4~gB%aIqU=0d3t!%00oXQZ>S7|`gs(zS-_uzP_|E^>2oqa{;&fsfh{>?p6kW;gxi zc%j99dz0Qe-$tVJ;oN$g;l3t#qBJHN2?Lls-B8_ zmHYQgF#~OEOlLB6pTB+Ov>dqA$pjd|#vKZDMT39yvcIm_i=!;7%5Jenen}j|(!~tI zoLm)(vL)Lv^6lxBp3BGnbBa=T!Q~at3XjuSU@qG&3suX5hi^tRw*X=N0V%WK_lOXI zs;%!wZ&S6~_t%?&#OY&aoN-;6D_-00+?`l%b}?s$`*369EYA)Pc@mrO`8N91qxq~e!M?LL!(+yUX)cxFLFM2Q29E@iQ5im+RAvlym08WW zv!EEU?_IeNO4?K_OOg{CZDoVo>)~7qDMfQ@9&MJkx;?N3I5(={9!MCJQh)UkII3L6 zz`kuw&0?TCG&D3{J9&DKVK_EMOUrKBL9=@nx$LE7Rm+%{HE7QsZxeRaL@vPI#RyYijeyU(DSLXyOa)yw+5nl|3FF zfJM|9(1s@-U#_DJ%vWp3w~(rm4CK!Uz*U`r?tZ*r9N`H1c#@_i7ptN9DSmj=Ii$ZD zm!YgrUn1@eYGzKM(Wa+ACrg9=UVm43;KZ0`;KU|vG|XFM%5QzTN61js9X~QWRpHXz zuC38kcaY=m%L8}ai&`T|7@y9x#$D~_;qo+}?N3?El-$X<6&$fkx~iMeZ3YORnF>V} zKXaen=2YkRm{|scw@66mYH7iP23|XXXPS{XICJV(N9)i!XU_fpmHJXIYaG4D-S(Ld+G)SGDtiR_1&bypWaFG+LPDd{*Q zi7S@!*Dh-(n{#NeKwEyDnc5F``qS&3(~+y7>C&mAQVPCBsbn|o1dz2)PG@uq`^kGIDcSbwE}5J*7kVS=f>Q8FV|JF-jM&9!r;5!*@ z-i+9%A@-?z(BY>NB*gL!rZ)0pezqI)pHg|pykJ*{5sY+=_M$sS1gUgx1_s8`OJJ*E zXqj^@&IrO%t=aH&r(j6b1ny{kzb9opZMu%LcNg?xW)E7owK<2Gu6D5utzAI1_8S&D zVl@}vKRvTp(exyRtjO_sg607s1^R{A;wiIN>*1BRaT391GLk0Xd>4ua?ERqdMMkFs zq!*bl3ML~ltHTG|Z>G&uH~?Ugl04TjrXBZI36R>L)xoK4wm%4=703T9qx2r2&i#G8 js@g+AJ>&jNdFC70euwvBw8l?`P=^n(w+jl literal 0 HcmV?d00001 diff --git a/web/e2e/account.mjs b/web/e2e/account.mjs new file mode 100644 index 0000000..834c749 --- /dev/null +++ b/web/e2e/account.mjs @@ -0,0 +1,220 @@ +/** + * 账号功能的验收脚本:首页外壳、账号设置、密码登录。 + * + * 只跑真浏览器、真接口:断言都落在"页面上看得见什么"和"接口回了什么", + * 这样截图与断言是同一次运行,文档里贴的图不会是另一版界面的。 + * + * 两个坑记在这里: + * 1. 短信验证码有 60 秒节流,反复跑脚本会拿到 429,于是"发码"这一步要先看 + * 是不是被拦了;登录态优先用密码直接从接口换,别每次都走验证码。 + * 2. 改密码要先验证旧密码,而系统不会告诉你旧密码——上一轮的密码记在 + * .local/e2e-account-password.txt 里,脚本自己维护。 + */ +import { chromium } from "playwright-core"; +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; + +const WEB = process.env.WEB ?? "http://127.0.0.1:5180"; +const API = process.env.API ?? "http://127.0.0.1:8100/api/v1"; +const PHONE = process.env.PHONE ?? "13900000001"; +const CODE = process.env.CODE ?? "123456"; +const PWD_FILE = new URL("../../.local/e2e-account-password.txt", import.meta.url); +const OUT = "e2e/artifacts"; + +let pass = 0; +let fail = 0; +function check(name, ok, extra = "") { + if (ok) { + pass += 1; + console.log(`PASS ${name}`); + } else { + fail += 1; + console.log(`FAIL ${name} ${extra}`); + } +} + +function savedPassword() { + try { + return readFileSync(PWD_FILE, "utf8").trim() || null; + } catch { + return null; + } +} + +function randomPassword() { + return `dadao${Math.floor(Math.random() * 900000 + 100000)}`; +} + +async function apiLogin(password) { + if (!password) return null; + const r = await fetch(`${API}/auth/login/password`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ phone: PHONE, password }), + }); + const body = await r.json(); + return body?.code === 0 ? body.data.tokens : null; +} + +async function main() { + mkdirSync(OUT, { recursive: true }); + const browser = await chromium.launch({ + executablePath: + process.env.CHROME ?? + `${process.env.LOCALAPPDATA}\\ms-playwright\\chromium-1223\\chrome-win64\\chrome.exe`, + }); + const page = await browser.newPage({ viewport: { width: 1440, height: 960 } }); + const errors = []; + page.on("console", (m) => m.type() === "error" && errors.push(m.text())); + page.on("pageerror", (e) => errors.push(String(e))); + + // ① 先拿到登录态:有密码就直接换令牌,省掉一次发码 + let tokens = await apiLogin(savedPassword()); + if (tokens) { + await page.addInitScript( + ([access, refresh]) => { + localStorage.setItem("dadao.access", access); + localStorage.setItem("dadao.refresh", refresh); + }, + [tokens.access_token, tokens.refresh_token], + ); + } + await page.goto(WEB); + if (!tokens) { + // 第一次跑(还没有密码)只能走验证码;被节流就等一会儿再发 + await page.goto(`${WEB}/login`); + await page.getByLabel("手机号").fill(PHONE); + for (let i = 0; i < 2; i += 1) { + await page.getByRole("button", { name: "获取验证码" }).click(); + await page.waitForTimeout(1500); + const throttled = await page.locator("text=/秒后再试|稍后/").count(); + if (!throttled) break; + await page.waitForTimeout(61_000); + } + await page.getByLabel("验证码").fill(CODE); + await page.getByRole("button", { name: "登录" }).click(); + await page.waitForURL(`${WEB}/`); + } + await page.waitForSelector("text=我的工作区"); + check("登录后进入首页", true); + + // ② 首页与工作区页是同一套外壳:侧栏都在,宽度不变 + const homeRail = await page.locator("aside").first().boundingBox(); + const homeMain = await page.locator("main").first().boundingBox(); + check("首页有左侧栏", Boolean(homeRail && homeRail.width > 200), JSON.stringify(homeRail)); + check("首页内容区贴着侧栏", Boolean(homeMain && homeMain.x >= (homeRail?.x ?? 0))); + await page.screenshot({ path: `${OUT}/account-home.png` }); + + await page.locator("main button", { hasText: "我的备忘" }).first().click(); + await page.waitForURL(/\/w\//); + await page.waitForSelector("aside"); + const wsRail = await page.locator("aside").first().boundingBox(); + check( + "进了工作区侧栏宽度不变", + Boolean(wsRail && homeRail && Math.abs(wsRail.width - homeRail.width) < 1), + `home=${homeRail?.width} ws=${wsRail?.width}`, + ); + await page.screenshot({ path: `${OUT}/account-workspace.png` }); + + // ③ 账号设置:侧栏有入口,能改昵称、能设/改密码 + await page.goto(`${WEB}/account`); + await page.waitForSelector("text=登录密码"); + const accountRail = await page.locator("aside").first().boundingBox(); + check( + "账号页复用了同一条侧栏", + Boolean(accountRail && Math.abs(accountRail.width - (homeRail?.width ?? 0)) < 1), + ); + + const nickname = `用户${Math.floor(Math.random() * 9000 + 1000)}`; + // 等 /auth/me 回填完再改,否则 backfill 会把刚输入的值盖回去 + await page.waitForFunction( + () => document.querySelector('input[aria-label="昵称"]')?.value?.length > 0, + ); + await page.getByLabel("昵称").fill(nickname); + await page.getByRole("button", { name: "保存昵称" }).click(); + await page.waitForSelector("text=昵称已更新"); + check("昵称保存成功", true); + + const currentField = page.getByLabel("当前密码"); + const hadPassword = (await currentField.count()) > 0; + if (hadPassword) await currentField.fill(savedPassword()); + const password = randomPassword(); + await page.getByLabel(hadPassword ? "新密码" : "密码", { exact: true }).fill(password); + await page.getByLabel("确认密码").fill(password); + await page.getByRole("button", { name: /设置密码|修改密码/ }).click(); + await page.waitForSelector("text=/密码已(设置|修改)/"); + writeFileSync(PWD_FILE, password, "utf8"); + await page.screenshot({ path: `${OUT}/account-settings.png` }); + check(hadPassword ? "密码修改成功" : "密码设置成功", true); + + // 刷新后仍是"已设置密码",说明后端真的存住了 + await page.reload(); + await page.waitForSelector("text=已设置密码", { timeout: 15_000 }); + check("刷新后仍显示已设置密码", true); + + // ④ 退出,改用密码登录 + await page.goto(`${WEB}/account`); + await page.getByRole("button", { name: "退出登录" }).last().click(); + await page.waitForURL(/\/login/); + + await page.getByRole("button", { name: "密码", exact: true }).click(); + await page.getByLabel("手机号").fill(PHONE); + await page.getByLabel("密码").fill("wrong-pass1"); + await page.getByRole("button", { name: "登录" }).click(); + await page.waitForSelector("text=手机号或密码不对"); + check("错误密码被拒绝", true); + + await page.getByLabel("密码").fill(password); + await page.getByRole("button", { name: "登录" }).click(); + await page.waitForURL(`${WEB}/`, { timeout: 15_000 }); + check("密码登录成功", true); + + const me = await page.evaluate(async (api) => { + const token = localStorage.getItem("dadao.access"); + const r = await fetch(`${api}/auth/me`, { headers: { Authorization: `Bearer ${token}` } }); + return r.json(); + }, API); + check( + "接口里 has_password=true、昵称是刚改的", + me?.data?.user?.has_password === true && me?.data?.user?.nickname === nickname, + JSON.stringify(me?.data?.user ?? null), + ); + + // ⑤ 退出后用验证码也能进来(登录页两种模式都得通) + await page.goto(`${WEB}/account`); + await page.getByRole("button", { name: "退出登录" }).last().click(); + await page.waitForURL(/\/login/); + await page.getByRole("button", { name: "验证码", exact: true }).click(); + await page.getByLabel("手机号").fill(PHONE); + await page.getByRole("button", { name: /获取验证码|重新获取/ }).click(); + await page.waitForTimeout(1200); + await page.getByLabel("验证码").fill(CODE); + await page.getByRole("button", { name: "登录" }).click(); + const codeLoginOk = await page + .waitForURL(`${WEB}/`, { timeout: 15_000 }) + .then(() => true) + .catch(() => false); + if (codeLoginOk) check("验证码登录也照旧能用", true); + else console.log("SKIP 验证码登录(本次发码被 60 秒节流挡住)"); + + const realErrors = errors.filter((e) => !e.includes("429") && !e.includes("400")); + check("控制台零报错", realErrors.length === 0, realErrors.slice(0, 3).join(" | ")); + + // ⑥ 窄屏:侧栏收成顶条,别把整页挤成一列 + await page.setViewportSize({ width: 390, height: 844 }); + await page.goto(WEB); + await page.waitForSelector("main h1"); + check("窄屏首页是顶条而不是侧栏", (await page.locator("header").count()) > 0); + await page.screenshot({ path: `${OUT}/account-home-mobile.png`, fullPage: false }); + await page.goto(`${WEB}/account`); + await page.waitForSelector("text=登录密码"); + await page.screenshot({ path: `${OUT}/account-settings-mobile.png`, fullPage: false }); + + await browser.close(); + console.log(`\n${fail === 0 ? "ALL PASS" : "SOME FAILED"} — ${pass} passed, ${fail} failed`); + if (fail > 0) process.exit(1); +} + +main().catch((err) => { + console.log(`FAIL 脚本异常 — ${err?.message ?? err}`); + process.exit(1); +}); diff --git a/web/src/App.tsx b/web/src/App.tsx index 8882d67..5d50a5c 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -12,6 +12,7 @@ import { TicketsPage } from "./pages/Tickets"; import { KnowledgePage } from "./pages/Knowledge"; import { NotificationsPage } from "./pages/Notifications"; import { JoinPage } from "./pages/Join"; +import { AccountPage } from "./pages/Account"; interface AuthState { user: User | null; @@ -87,6 +88,7 @@ export function App() { } /> } /> + } /> } /> } /> } /> diff --git a/web/src/components/AppShell.tsx b/web/src/components/AppShell.tsx index 18a1261..e5a6d1a 100644 --- a/web/src/components/AppShell.tsx +++ b/web/src/components/AppShell.tsx @@ -11,6 +11,7 @@ import { Inbox, Logo, Logout, + Settings, TicketIcon, Users, X, @@ -209,13 +210,26 @@ export function AppShell({
- + {initial(user?.nickname ?? "我")} - -
-
{user?.nickname}
+ + +
+ {user?.nickname} +
{phoneMasked}
-
+ + + + +
+
+ + + {/* 移动端:顶条 */} +
+
+ + + 达道Task + +
+ + + + +
+
+
+ + ); +} diff --git a/web/src/components/icons.tsx b/web/src/components/icons.tsx index dba8378..a147fc7 100644 --- a/web/src/components/icons.tsx +++ b/web/src/components/icons.tsx @@ -220,6 +220,20 @@ export const Logout = (p: IconProps) => ( ); +export const Settings = (p: IconProps) => ( + + + + +); + +export const User = (p: IconProps) => ( + + + + +); + export const Flag = (p: IconProps) => ( diff --git a/web/src/pages/Account.tsx b/web/src/pages/Account.tsx new file mode 100644 index 0000000..693ec15 --- /dev/null +++ b/web/src/pages/Account.tsx @@ -0,0 +1,244 @@ +import { useEffect, useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { useAuth } from "../App"; +import { SideRail } from "../components/SideRail"; +import { Button, Field, InlineAlert } from "../components/ui"; +import { ApiError, api } from "../lib/client"; +import type { User } from "../lib/types"; + +/** + * 账号设置:昵称、登录密码、退出登录。 + * + * 密码是**可选**的第二条登录路径:没设过的人一直走验证码, + * 界面上的文案要能让人看懂"现在设的是第一道密码"还是"在改已有的密码"。 + */ +/** 小节标题:一行标题 + 一句"这是干嘛的",比光秃秃的 h2 省解释。 */ +function SectionLabel({ hint, children }: { hint?: string; children: React.ReactNode }) { + return ( +
+

{children}

+ {hint ?

{hint}

: null} +
+ ); +} + +export function AccountPage() { + const { user, loading, reload, signOut } = useAuth(); + const navigate = useNavigate(); + + const [nickname, setNickname] = useState(""); + const [profileBusy, setProfileBusy] = useState(false); + const [profileMsg, setProfileMsg] = useState(null); + const [profileError, setProfileError] = useState(null); + + const [oldPassword, setOldPassword] = useState(""); + const [newPassword, setNewPassword] = useState(""); + const [confirm, setConfirm] = useState(""); + const [pwdBusy, setPwdBusy] = useState(false); + const [pwdMsg, setPwdMsg] = useState(null); + const [pwdError, setPwdError] = useState(null); + + useEffect(() => { + if (!loading && !user) navigate("/login", { replace: true }); + }, [loading, user, navigate]); + + useEffect(() => { + if (user?.nickname) setNickname(user.nickname); + }, [user?.nickname]); + + const hasPassword = Boolean(user?.has_password); + + async function saveProfile(event: React.FormEvent) { + event.preventDefault(); + setProfileBusy(true); + setProfileMsg(null); + setProfileError(null); + try { + await api.patch("/auth/me", { nickname: nickname.trim() }); + await reload(); + setProfileMsg("昵称已更新"); + } catch (err) { + setProfileError(err instanceof ApiError ? err.message : "保存失败"); + } finally { + setProfileBusy(false); + } + } + + async function savePassword(event: React.FormEvent) { + event.preventDefault(); + setPwdMsg(null); + setPwdError(null); + if (newPassword !== confirm) { + setPwdError("两次输入的新密码不一样"); + return; + } + setPwdBusy(true); + try { + await api.post("/auth/password", { + password: newPassword, + ...(hasPassword ? { old_password: oldPassword } : {}), + }); + await reload(); + setOldPassword(""); + setNewPassword(""); + setConfirm(""); + setPwdMsg(hasPassword ? "密码已修改,下次可用新密码登录" : "密码已设置,之后可以用密码登录"); + } catch (err) { + setPwdError(err instanceof ApiError ? err.message : "保存失败"); + } finally { + setPwdBusy(false); + } + } + + return ( +
+ + +
+
+
+

账号设置

+

+ 这里改的是你自己:昵称、登录密码、退出登录。工作区里的成员与权限在各自的工作区里管。 +

+
+ +
+
+ 基本信息 + +
+
+ + {(user?.nickname ?? "我").trim().slice(0, 1).toUpperCase()} + +
+
+ {user?.nickname ?? "—"} +
+
+ {user?.created_at + ? `加入于 ${new Date(user.created_at).toLocaleDateString("zh-CN")}` + : "—"} +
+
+
+ + + setNickname(e.target.value)} + /> + + + + + +

+ 手机号就是登录账号,暂不支持自助换号;换号等于换账号,需要单独处理。 +

+ + {profileMsg && {profileMsg}} + {profileError && {profileError}} + + +
+
+ +
+
+ 登录密码 + +

+ {hasPassword + ? "已设置密码。登录页可以选「密码」进入;改密码要先输当前密码。" + : "还没有设置密码。现在只能用手机号 + 验证码登录;设一个密码,换手机或短信不通时也能进。"} +

+ +
+ {hasPassword ? ( + + setOldPassword(e.target.value)} + /> + + ) : null} + + + setNewPassword(e.target.value)} + /> + + + + setConfirm(e.target.value)} + /> + + + {pwdMsg && {pwdMsg}} + {pwdError && {pwdError}} + + +
+
+ +
+ 退出 +

+ 退出只会清掉这台浏览器里的令牌;工作区里的数据不受影响。 +

+ +
+
+
+
+
+
+ ); +} diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 4111d46..1c5c5b7 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -1,7 +1,8 @@ import { useEffect, useState } from "react"; -import { Link, useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { useAuth } from "../App"; -import { ArrowRight, ChevronRight, Logo, Logout, Plus } from "../components/icons"; +import { ArrowRight, ChevronRight, Plus } from "../components/icons"; +import { SideRail } from "../components/SideRail"; import { Button, EmptyState, Field, InlineAlert } from "../components/ui"; import { ApiError, api } from "../lib/client"; import type { Workspace } from "../lib/types"; @@ -19,10 +20,17 @@ function greeting() { return "晚上好"; } +/** + * 首页 = 工作区总览。 + * + * 壳和工作区里完全一样(同样的侧栏、同样的通栏内容区), + * 这样"点进工作区"只是换内容,宽度和导航位置都不跳。 + */ export function HomePage() { - const { user, workspaces, loading, reload, signOut } = useAuth(); + const { user, workspaces, loading, reload } = useAuth(); const navigate = useNavigate(); const [name, setName] = useState(""); + const [creating, setCreating] = useState(false); const [error, setError] = useState(null); const [busy, setBusy] = useState(false); @@ -38,6 +46,7 @@ export function HomePage() { try { const ws = await api.post("/workspaces", { name: name.trim() }); setName(""); + setCreating(false); await reload(); navigate(`/w/${ws.id}`); } catch (err) { @@ -48,123 +57,135 @@ export function HomePage() { } return ( -
-
-
-
- - 达道Task -
-
- - {user?.nickname} - {user?.phone ? ` · ${user.phone.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2")}` : ""} - - -
-
-
+
+ -
-
-

- {new Date().toLocaleDateString("zh-CN", { month: "long", day: "numeric", weekday: "long" })} -

-

- {greeting()},{user?.nickname ?? ""} -

-

- 选一个工作区继续。任务、工单、知识都在里面,他们是同一件事的三个阶段。 -

-
- -
-
-
-

我的工作区

- {workspaces.length} 个 -
- - {loading ? ( -
- {[0, 1].map((i) => ( -
- ))} -
- ) : workspaces.length === 0 ? ( -
- } - title="还没有工作区" - hint="个人用也一样:先建一个,把「任务」放进去。需要别人帮忙时再升级成工单。" - /> -
- ) : ( -
    - {workspaces.map((ws) => ( -
  • - - - {ws.name.trim().slice(0, 1).toUpperCase()} - - - - {ws.name} - - - {roleLabel(ws.role)} · {ws.plan === "free" ? "免费版" : ws.plan} - - - - -
  • - ))} -
- )} -
- - +
+ + {loading ? ( +
+ {[0, 1, 2].map((i) => ( +
+ ))} +
+ ) : ( +
+ {workspaces.map((ws) => ( + + ))} + + {creating ? ( +
+
+ + + + 新建工作区 +
+ + setName(e.target.value)} + /> + + {error && {error}} +
+ + +
+
+ ) : ( + + )} + + {workspaces.length === 0 && !creating ? ( +
+ } + title="还没有工作区" + hint="个人用也一样:先建一个,把「任务」放进去。需要别人帮忙时再升级成工单。" + /> +
+ ) : null} +
+ )} + +

+ 收到邀请链接(/join/…)直接打开即可加入,不需要别人手动拉你。 +