From 552a9a1f34d43f2fc93c0aeca82691114b13dfd7 Mon Sep 17 00:00:00 2001 From: doublex001 <16157008+doublex001@user.noreply.gitee.com> Date: Tue, 15 Sep 2026 13:10:08 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=90=8C=E6=AD=A5=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8E=E5=BE=AE=E4=BF=A1=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=96=B9=E6=A1=88=EF=BC=8C=E8=AE=B0=E5=BD=95=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E6=94=B9=E9=80=A0=E4=B8=8E=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E6=A0=A1=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 项目开发状态.md: - 补充 2026-09-15 登录方式三通道改造、密码闭环、登录态缺口修复的记录 - 微信登录标记为「入口已摘除、代码保留待启用」,附恢复入口的方法 - 校正三处数字:路由 63 → 67(复跑 check-routes,0 失效跳转)、 React Native 0.86.2 → 0.86.3、password.test.ts 用例 18 → 24 微信登录接入方案.md:文档开头加摘除说明,澄清本文描述的是代码现状与 未来接入路线,不代表当前有可用入口。 --- 微信登录接入方案.md | 8 ++++++++ 项目开发状态.md | 18 ++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/微信登录接入方案.md b/微信登录接入方案.md index ea23548..0534f04 100644 --- a/微信登录接入方案.md +++ b/微信登录接入方案.md @@ -1,5 +1,11 @@ # 微信登录接入方案(P1) +> ⚠️ **入口已摘除(2026-09-15,产品决定)** +> 丁总决定前端不做 QQ / 微信登录,现阶段登录方式只保留「手机号 + 短信验证码」与「手机号 + 密码」,以后另加青核登录。 +> **代码与页面完整保留待启用**:`P2W`(扫码)/`B1`(授权)页面、`useWechatLogin`、`useWechatBindPhone`、`wechat-sdk.ts`、`types/wechat-auth.ts`、本文件所述三个接口函数**均未删除**,仅从 `P1Login` 与 `P2PhoneCode` 摘掉了入口。 +> 恢复入口 = 在 `P1Login.tsx` 重新挂上微信按钮与 `useWechatLogin` 状态机 + 在 `P2PhoneCode.tsx` 恢复微信圆标;`app/register.tsx` 的 `P2W` / `B1` 两个 case 一直都在。 +> 本文以下内容描述的是**代码现状与未来接入路线**,不代表当前有可用入口。 + > 状态:方案文档 · 不涉及代码改写 · 真实后端就绪后按路线图替换 mock 即可 > 适用范围:有职 App 微信授权登录(三分支状态机) > 关联文件:`src/lib/wechat-sdk.ts`、`src/hooks/useWechatLogin.ts`、`src/api/api.ts`、`src/types/wechat-auth.ts`、`components/onboarding/screens/P1Login.tsx`、`components/onboarding/screens/P2PhoneCode.tsx` @@ -11,6 +17,8 @@ 前端三分支状态机与页面流转**已全部联通**,当前唯一阻塞点是:微信原生 SDK 未接入(Expo Go 无法跑原生模块)、以及后端两个接口仍是 mock。 **接入真实微信 = 替换 1 个函数 (`requestWechatAuthCode`) + 替换 2 个接口函数体 (`fetchWechatLoginResult` / `bindWechatAndRegister`) + 申请微信开放平台移动应用 + 用 EAS Build 生成自定义客户端。** 上层 hook、页面、类型**零改动**。 +> 注:摘除入口后,`P1Login.tsx` 不再引用 `useWechatLogin`,上表「页面流转」一行的起点需改为 `P2W`;恢复入口时按现状挂回即可。 + --- ## 1. 现状盘点(已实现 vs 待接入) diff --git a/项目开发状态.md b/项目开发状态.md index 18d87ed..966e60c 100644 --- a/项目开发状态.md +++ b/项目开发状态.md @@ -1,7 +1,7 @@ # 有职 App 开发进度与规划文档 > 生成日期:2026-09-10 -> 最后更新:2026-09-10(EAS 构建/OTA 配置骨架已建 · 技术债 8 处 `any` 已清理) +> 最后更新:2026-09-15(登录方式改为「验证码 / 密码 / 运营商一键登录」三通道 · 密码闭环打通 · 登录态未写入的严重缺口已修复) > 范围:项目健康审查 + 已开发 / 待开发清单 > 结论先行:**当前项目可运行**(`tsc` 0 错误、`eslint` 0 error、路由 0 失效跳转),无需修正阻塞错误。 @@ -13,7 +13,7 @@ |---|---|---| | 类型检查 | `npx tsc --noEmit` | ✅ 0 错误(Exit 0) | | 代码规范 | `npx eslint .` | ✅ 0 error / ⚠️ 8 warning(均为 `any` 软警告) | -| 路由闭合 | `node scripts/check-routes.mjs` | ✅ 63 路由全部存在,0 失效跳转 | +| 路由闭合 | `node scripts/check-routes.mjs` | ✅ 67 路由全部存在,0 失效跳转(2026-09-15 复跑) | | 入口接线 | 读 `app/_layout.tsx` / `app/index.tsx` | ✅ 根栈 → 入口围栏 → 双端 Tab 完整 | | 应用配置 | `app.config.js` | ✅ name「有职」、scheme `youzhi`、plugins 正确 | @@ -23,7 +23,7 @@ ## 二、技术栈与架构 -- **框架**:Expo SDK 57 · React Native 0.86.2 · React 19 · TypeScript 6 · Expo Router(文件路由) +- **框架**:Expo SDK 57 · React Native 0.86.3 · React 19 · TypeScript 6 · Expo Router(文件路由) - **双端同构**: - 求职端 `(tabs)`:岗位 / 沟通 / 成长 / 我的(落地 `jobs`) - 企业端 `(enterprise)`:岗位 / 人才 / 沟通 / 我的(落地 `job-management`) @@ -70,7 +70,14 @@ 2. 我的页补【设置】入口 —— ✅ `enterprise-overview.tsx` 第 281 行已 `router.push('/settings')` 3. 统一快捷入口话术 —— ✅ 已完成(2026-09-10):`MOCK_ENTERPRISE_QUICK_ACTIONS` 与沟通页 `QUICK_ACTIONS` 中 6 处 label 已对齐规范词(人才库→人才推荐、评价管理→岗位评价管理、沟通→企业沟通、面试日程/面试安排→面试评分),与「我的」菜单、`/interview-score` 路由名一致。 4. 沟通页快捷操作接线 —— ✅ 已完成(2026-09-10):`QuickActions` 死入口已绑定 `onPress`;批量发邀请→`/talent-recommendation`、面试评分→`/interview-score`(根级自包含页、可返回)走跳转,批量发Offer / 群发通知无对应企业端页、按项目约定弹 `Alert '功能开发中'`。tsc/eslint 0 问题。 -- **微信登录**:三分支(`new` / `active` / `deleted`)已建模,前端状态机 + 页面流转(P1Login → P2PhoneCode → P3)**已全联通**;`src/lib/wechat-sdk.ts` 隔离待接真实 SDK;需 EAS 自定义客户端 + 微信开放平台移动应用(iOS 另需 Universal Links)。当前为 mock 分支切换验证。**接入路线图已落文档:`微信登录接入方案.md`**。 +- **微信登录**:⚠️ **入口已于 2026-09-15 按产品决定摘除**(丁总:前端不做 QQ / 微信登录)。三分支(`new` / `active` / `deleted`)状态机、`P2W` / `B1` 页面、`src/lib/wechat-sdk.ts`、相关 hook / 类型 / 接口**全部保留未删**,仅 `P1Login` / `P2PhoneCode` 不再挂入口;`app/register.tsx` 的 `P2W` / `B1` case 亦保留。**接入路线图仍见 `微信登录接入方案.md`**(该文档开头已加摘除说明)。恢复入口 = 重新挂上按钮与 `useWechatLogin` 状态机。 +- **登录方式(2026-09-15 改造)**:现为「手机号 + 验证码」(`P2`)·「手机号 + 密码」(`P2P`)·「运营商一键登录」(`P2Q`)三通道,微信入口已摘除。 + - **修复了一个此前存在的严重缺口**:`P2PhoneCode` / `P2QuickLogin` 原先只 `navigate('P3')` 而**从不写入登录态**(`useLogin` / `loginByPhone` 写好却无人调用),全项目唯一写 token 的地方是微信链路 —— 入口一摘 `isTokenValid` 将恒为 false、每次冷启动都被打回登录页。现三条通道均已接入 `useAuth().login()`。 + - **密码闭环**:`P2P` 密码登录 → `P2R` 设置/重置密码(**同页两阶段**:验证手机号 → 设新密码,成功后直接下发登录态)→ 设置页 `/settings/password` 修改密码(改完强制重登)。「登录即注册」的用户天生无密码,**首次获得密码即走「忘记密码」入口**,不额外插入注册步骤。 + - 密码规则(8–20 位、需含字母和数字)在 `src/api/api.ts` 的 `validatePassword` 统一计算,错误码 → 文案映射在 `src/constants` 的 `PASSWORD_RULE_LABEL`;新增测试 `src/__tests__/password.test.ts`(24 例)。 + - 新增公共件:`src/components/PasswordField.tsx`(密码输入 + 明文切换)、`src/hooks/useAgreementGate.ts`(协议门卫,此前逐字复制 3 份)、`src/utils/validators.ts`(手机号 / 验证码规则单一来源)。 + - **按钮底色全局改深**:`components/onboarding/ui/PrimaryButton.tsx` 的 `colors.primary`(#2C83FD) → `colors.primaryBtn`(#1F6FDB)。原白字对比仅 **3.64:1,不满足 WCAG AA**;`primaryBtn` 为 **4.82:1**,且 AGENTS.md 配色规范本就要求 primary 不作白字按钮底。**副作用:整条注册流程按钮视觉变深,如已对外出图需重新确认。** + - 账号与安全页的「微信账号」项已随入口一并移除(`MOCK_ACCOUNT_SECURITY`),避免留下有出口无入口的死项;「修改登录密码」项补上 `route: '/settings/password'`,此前点击无任何反应。 ### 4.2 功能完整性缺口(标注【待确认】为推断项,需与产品对齐) @@ -114,6 +121,9 @@ npx eslint . # 路由闭合审计(改动路由后必跑) node scripts/check-routes.mjs +# 单元测试(src/__tests__ 下纯逻辑) +npm test + # 启动 npm start # 即 expo start ```