doublex001
|
5d2b8996e1
|
refactor(auth): 登录落地与换端改以服务端角色为准
- 新增 useLoginLanding:验证码/密码/一键登录三入口共用的登录后落地判定,按后端 identitySelectionRequired 与服务器角色决定去身份选择还是对应端
- 新增 useIdentitySwitch:切换企业端改为调用 POST /auth/identity/select,不再本地改角色导致鉴权错位
- AuthContext/RoleContext/token-store 及微信、密码、注册各登录 Hook 与引导页适配新契约
- 移除废弃安卓自适应图标资源与根目录过期联调文档,归档 scripts/api.ts.bak
|
4 weeks 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
|
928c310c36
|
feat(theme): 新增间距设计令牌层并收敛 onboarding 非卡片间距
- 新增 src/theme/spacing.ts:标尺(xs4/sm8/md12/lg16/xl24) + 语义令牌(card8/gutter8/framework16/block12/section12),src/theme/index.ts 从 ./spacing 导出
- 扩展 scripts/check-spacing.mjs:resolveSpacing 解析 spacing./spacingTokens. 引用,令牌化卡片不再被静默跳过(修潜在 bug),输出新增令牌命中统计
- onboarding 35 文件非卡片间距令牌化+收敛(18→block/22→section/14→block/10→sm/12→block)
- 更新项目开发状态.md 4.21
- B5(app 框架 padding:16) 本批延期,spacing.framework 单一来源已就绪
|
1 month ago |
doublex001
|
3aa3c60004
|
feat: 软件改名「轻松聘」,引导页改为三屏满屏主题色
改名(带断言的白名单脚本,逐文件核对改前出现次数,对不上不写盘):
- 显示名「有职」→「轻松聘」:代码+配置 13 文件 50 处,文档 12 处
- 标识符 youzhi → qingsongpin:app.config.js 的 slug / scheme /
ios.bundleIdentifier / android.package、storage 键前缀、高德 URL 的 src、
screenshots 截图流水线 manifest 的 scheme
- 注意:storage 的 KEY_PREFIX 变更会让本机旧数据读不到(未上架、仅开发数据,
可接受;若已有线上用户数据必须写迁移而非直接换前缀)
引导页 app/guide.tsx 四屏 → 三屏(标题为产品文案):
求职开挂 AI护驾 / 真实能力 一测便知 / 一起解锁 职场秘籍
- 副标题只写仓库里查得到的已上线模块,未编造能力
- 整页底色改用新增 token onboardingGradient(primary → primaryBtn → primaryDark):
现成的 headerGradient 三支末端是青 #4FD1C5,白字仅约 1.9:1,只适合顶部深色区,
不能做整页底色;配 locations=[0,0.34,1] 使正文落在 5.2:1 以上
- 底部按钮反色为白底 + primaryText 蓝字;前两屏「下一步」、第三屏「开启体验」
- 状态栏加 style="light"(根布局是 dark,深蓝底上会黑压黑)
- 素材位 guideEvaluate/guideWeightDim/guideGameMap/guideLegalAI
→ guideAiCopilot/guideAbilityTest/guideGrowthUnlock
待补图(已逐张打开确认,非推测):assets/icon.png、splash-icon.png、
brand-logo.jpg、android-icon-{foreground,background,monochrome}.png 仍是有职字标
门槛:tsc 0 / eslint 0 / 26 套件 365 用例全过 / check:spacing 196 张卡片全 8px 全绿
真机:模拟器像素测量,CTA 按钮左边界 16.0dp、高 50.0dp,渐变三点与理论值吻合
|
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 |