doublex001
|
eea5144710
|
fix(config): 收尾真实后端切换遗留改动(mock 兜底开关 / 个人资料空值 / 测试对齐)
上轮接真实后端(求职端核心闭环)后遗留在工作区、未随提交入库的 4 处改动:
- app.config.js: apiUseMock 恢复 true —— 已接真实分支的接口走后端、未接的继续走 mock,
保证 App 随时可跑;联调只接哪些就切哪些,不做一刀切 false 导致整体白屏
- app/(tabs)/profile.tsx: 求职偏好取值加 ?? '' 兜底,存储缺字段 / 后端 partial 响应
不再让 value.trim() 抛 undefined
- 测试: job-api fetchJobDetail 断言对齐 /jobs/public/{id};password 的改密用例补 setMockMode(true);
profile-resume 对齐 /profile/me 的 realName/location/education 字段名
(此批为上一轮遗留,非本次 P0-6 产出,故单独成提交)
|
4 weeks ago |
doublex001
|
55a9222e77
|
refactor(api): 按 OpenAPI 校正 89 个接口路径,69 幽灵域退回 mock-only
- 以 job.youthome.com.cn OpenAPI 为唯一准绳,实机验证 89 个 request 函数
- ALIGNED 6 / WRONG→REAL 14(/messages/conversations→/conversations、/resume→/profile/me/resume、/jobs/rank→/jobs/{id}/competition-ranking、/enterprise/candidates→/company/candidates 等)
- PHANTOM 69:所属域后端无契约,真实态不再调用 request,翻开关也不触网
- 清除全部【待确认】标记(含【待确认:…】形式)
- 修复 fetchResume 双前缀、fetchRankData ${jobId} 未插值两处转换 bug
- 4 个桥接测试 + job-api/password 测试改为断言真实路径
|
4 weeks ago |
doublex001
|
075f7c1f41
|
feat(api): 加 mock 开关并转岗位域候选读取接口(业务端点连接口)
承接后端联调地基,开始接入真实业务端点:
- 请求层新增 mock 开关:http.ts 的 isMockMode()/setMockMode() 读 app.config.js 的
extra.apiUseMock(默认 true)。业务函数 if (isMockMode()) 返回本地数据不触网,
联调期置 false 直连后端,避免"全转真实破坏开发期 UI"。RequestOptions 加 query
支持(数组逗号拼接、undefined 跳过)。
- 岗位域 6 个候选侧读取接口改造成统一形态(保留签名与返回类型 T,仅换函数体):
fetchJobList→GET /jobs(pageSize→size 映射)、fetchJobDetail→/jobs/{id}、
fetchJobOverallScore→/jobs/{id}/score、fetchJobPreference→/profile/me/job-preference、
fetchFavorites→/profile/me/favorites、fetchJobProgress→/tools/job-progress。
旧 @url 多带 /api 前缀、未带 /v1,已按规范 §7 重映射。
- auth.ts 6 个鉴权函数同样挂 isMockMode() 分支(mock 返回本地双 Token/成功),
保开发期 parity——否则 dev 登录会直打真后端必崩。
- 新增 job-api.test.ts(8 用例:开关两面 + query 拼装);password.test.ts 鉴权断言改在
mock 关闭态校验真实契约。
- 文档 后端联调前端实现.md 补 §三 业务端点转换进度与路径重映射表。
OpenAPI 主机在本环境被网络封禁、无法取真实字段,故 T 沿用现有项目类型(AGENTS.md
"保留签名只换函数体"),真实结构待真机联调按 OpenAPI 校正。
tsc 0 错误;eslint 0 错误;jest 406 passed / 29 suites。
|
1 month ago |
doublex001
|
3ef1df2eab
|
feat(auth): 接入后端联调地基(统一请求层+双Token+角色权威化)
落实《职来后端接口联调说明》(job.youthome.com.cn 规范)的前端地基:
- 新建 src/api/http.ts 统一请求层:Base URL 从 env 读取(默认生产 HTTPS 域名)、
Authorization: Bearer 注入、信封 code/message/data/requestId/timestamp 解析、401 单飞
刷新一次并重放、X-Request-Id 透传、HTTP 状态码语义映射(400/401/403/404/409/429/
500/503)。
- 新建 src/lib/token-store.ts:access+refresh 双 Token 内存单例 + AsyncStorage 持久化,
沿用 qingsongpin: 前缀(已更正旧记忆的 youzhi: 误记)。
- 新建 src/api/auth.ts 真实鉴权端点:sendSmsCode / loginByPassword / loginBySms /
fetchCurrentUser / requestLogout / registerCompany,并加 mapBackendRole
(STUDENT→candidate、COMPANY→enterprise、ADMIN→admin)。
- AuthContext 扩 refreshToken 字段、setSession(access,refresh,expiresAt)、logout 清 Token、
启动 hydrateTokens 并注册 401 清会话回调。
- AppRole 扩 admin;删除 api.ts 旧 mock 的 loginByPassword/sendSmsCode(旧端点与规范不符),
归一到 auth.ts。P2PasswordLogin 登录后 setSession 双 Token 并调 /auth/me 权威化角色。
- app.config.js 默认 apiBaseUrl 改为 https://job.youthome.com.cn/api/v1(保留环境变量覆盖)。
业务端点(jobs/profile 等 100+)仍走 mock,下一阶段按 OpenAPI 逐个换 request() 即可。
规范 §1–§10 逐条对照见 后端联调前端实现.md。
tsc 0 错误;jest 398 passed / 28 suites。
|
1 month ago |
doublex001
|
5fbb7222f0
|
feat(auth): 补齐密码登录通道并修复登录态从未写入的缺口
【严重缺口修复】P2(验证码)/ P2Q(一键登录)此前只 navigate('P3'),从不写登录态——
全项目唯一写 token 的地方是微信链路。微信入口一旦摘除,isTokenValid 恒为 false,
每次冷启动都会把用户打回登录页。现三条通道均接入 useAuth().login()。
【新增通道】P1 主通道改为「验证码登录」,「一键登录」为次,新增「密码登录」(P2P):
- P2P 手机号 + 密码登录;P2R 设置 / 重置密码(同页两阶段:验证手机号 → 设新密码,
成功后直接下发登录态,用户无需再登录一次)
- 设置页新增 /settings/password 修改密码,改完强制重登
【密码规则】8–20 位且需含字母和数字,规则计算统一放在 api.ts 的 validatePassword /
validatePasswordConfirm,错误码 → 文案映射放在 constants 的 PASSWORD_RULE_LABEL,
按联合类型 PasswordRuleError 建模,新增成员漏配文案会被测试拦下。
【微信入口摘除】按产品决定(丁总 2026-09-14)前端不做 QQ / 微信登录:
P1Login 移除微信按钮、滑块验证与注销弹窗;P2W / B1 页面、useWechatLogin 状态机、
wechat-sdk 及三个接口函数全部保留待启用,接入路线见 微信登录接入方案.md。
【去重公共件】新增 PasswordField(密码输入 + 明文切换)、useAgreementGate(协议门卫,
此前在 3 个页面被逐字复制)、utils/validators(手机号 / 验证码规则的单一来源)。
【测试】新增 src/__tests__/password.test.ts(24 例)。全套 6 套 45 例通过,
tsc --noEmit 0 错误,eslint . 0 问题,check-routes 67 路由 0 失效跳转。
|
1 month ago |