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
|
1b1f6e573d
|
refactor(api): 联调地基收尾(auth/双Token/角色/环境配置/品牌资源)
- auth.ts 登录链路对齐 /auth/password/login → /auth/me 角色权威化
- token-store 持久化 access+refresh;useSmsCode 接入真实短信
- storage.ts 键前缀收敛;P2PasswordReset 文案修正
- app.config.js 默认 apiBaseUrl 指向 job.youthome.com.cn/api/v1
- AGENTS.md 补充『提交后必须推送』约定
- 品牌资源:brand-logo.jpg 替换为有职 logo,icon.png 同步;清理 favicon/splash 冗余
|
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
|
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
|
00522d53f9
|
feat: 死控件清零并修复一键登录取号、重做引导页
一键登录(P2Q)取不到手机号的根因不在取号:页面读的是 data.phone,而该字段
只有短信通道才写入,且 loginByCarrier 返回的 phone 被直接丢弃,于是号码位恒为
占位「本机号码」。现改为进页面即预取(useCarrierPhone + fetchCarrierPhone),
失败时置灰按钮并给出「重新获取 / 改用验证码登录」,成功后把号码写回引导资料
(P2P/P2R 预填与 B3 联系人电话同源)。真实取号是运营商原生 SDK,Expo Go 跑不了,
接入路线图见新增文档《运营商一键登录接入方案.md》。
引导页重做四屏内容与配图,配图位走新增组件 ImageSlot:素材未到位时在页面上标注
「配图待补」+ 该放什么图,补图只改 assets.ts 的 source 一行;设置页补「查看引导页」
入口(此前只有首次启动能进,看过一次就再也进不去),并区分「首次启动」与
「已登录回顾」两种出口,避免把已登录用户甩回注册流程。
企业沟通 / 人才推荐两页的 Tab 与搜索真正生效:Tab 计数与待办数量改由列表推导
(原先写死的数字与示例数据对不上,会出现「Tab 写 3、列表 0 条」),无对应页面的
漏斗图标摘除,筛选复位不再只是弹提示;申诉举证接真实选图,候选人详情「发起沟通」
跳会话页,面试评分支持本地草稿与恢复,入职清单勾选落库并可增删自定义待办、导出文本,
薪资计算器「更多工具」改指真实路由(原先三项都指回自己),技能词云接搜索与学习路径生成。
测试新增 3 个文件 51 例(共 219 例全绿),存储 mock 由「恒返回 null」改为带状态 Map,
使「存了要能读回来」这类行为真正被验证;tsc / eslint / 三个审计脚本(0 失效跳转、
0 死控件、137 个接口预留)均 0 问题。
另:package-lock.json(本项目统一用 yarn.lock)与本地调试截图加入 .gitignore。
|
1 month ago |
doublex001
|
0e3f1333c1
|
feat(ui): 接入品牌启动屏,消除冷启动白屏
assets/splash-icon.png(1024×1024)此前是死资源:app.config.js 既无
splash 配置,项目也未安装 expo-splash-screen,冷启动只能走默认白屏。
现以 config plugin 形式接入 expo-splash-screen:
imageWidth 200 / resizeMode contain / 白底。
选项取值依据已安装版本 expo-splash-screen@57.0.9 自带的
plugin/build/types.d.ts,而非凭记忆书写。应用为纯亮色
(userInterfaceStyle: 'light'),故不配置 dark 分支。
注意:启动屏属原生配置,Expo Go 内不生效,需 eas build 出包后可见。
|
1 month ago |
doublex001
|
aa7b171774
|
fix(config): 移除占位 updates 配置,修复 Expo Go 启动蓝屏
根因:app.config.js 中 updates.url 为占位符 https://u.expo.dev/REPLACE_WITH_PROJECT_ID,
Expo Go 启动时 expo-updates 会按该地址拉取远程更新,必然超时失败
(Failed to download remote update / UpdateFailedToLoad)→ ErrorActivity 蓝屏。
修复:开发期移除该占位块(注释保留 + eas init 后注入说明)。
运行时验证:expo-updates 变为 disabled(warn),ExperienceActivity 正常渲染,
JS 层无错误日志。
|
2 months ago |
doublex001
|
b8d19d29cc
|
chore: 有职 App 多模块推进与配置同步(2026-09-10)
按每日 17:50 提交纪律,精确分阶段 git add(未用 -A / 未用 git rm),
tsc --noEmit 0 错误。涵盖本日及近期累积改动。
| 模块 | 主要文件 | 变更要点 | 状态 |
|---|---|---|---|
| 构建/发布 | eas.json, app.config.js | EAS 构建/OTA 骨架(runtimeVersion/updates/channel、iOS·Android 包名) | 完成·占位待注入 |
| 依赖治理 | package.json, yarn.lock, package-lock.json(删) | 移 web 脚本、统一 yarn、删陈旧 lock | 完成 |
| 微信登录 | wechat-sdk.ts, useWechatLogin.ts, useWechatBindPhone.ts, wechat-auth.ts, P2WechatCode.tsx, DeletedAccountModal.tsx | 三分支状态机(new/active/deleted)+注销不可复活 | mock 完成·真实SDK 待开放平台申请 |
| 企业端 | enterprise-chat.tsx, enterprise-overview.tsx, talent-recommendation.tsx | 快捷入口话术统一 + 沟通页快捷操作 onPress 接线 | 完成 |
| 通关小游戏 | src/api/api.ts | 7 关内容增厚至 22 题(单选/多选/输入混排) | 完成 |
| UI 技术债 | profile/audit-report/game/legal.tsx | as any → Ionicons 类型化、路由类型化 | 完成 |
| 滑块验证/注销 | SliderCaptcha.tsx, ScreenShell.tsx, settings/account-cancel.tsx, index.tsx | 滑块验证 + 账号注销流程接线 | 完成 |
| 注册链路 | register.tsx, P1Login.tsx, P2PhoneCode.tsx, AuthContext/RoleContext | 微信分支 + 手机号验证整合 | 完成 |
| 路由审计 | scripts/check-routes.mjs | 死链/失效跳转自检工具 | 完成 |
| 文档 | 项目开发状态.md, 微信登录接入方案.md | 状态盘点 + 接入路线图 | 完成 |
|
2 months ago |
doublex001
|
731b4c9bac
|
feat(onboarding): 品牌更名「有职」并重构注册引导流程
- 品牌从「职来」更名为「有职」(slug: youzhi),同步 storage 前缀与全部文案
- 登录页与选择身份页合并重构为分步引导注册(register + onboarding 多屏 + UI 组件库)
- 新增品牌 logo,设置页「身份切换/退出登录」改跳注册页
- 更新 AGENTS.md 仓库地址与提交节奏说明
|
2 months ago |
doublex001
|
30cc3dc106
|
feat: 完成求职App核心页面与数据层并迁移至 Expo Router
|
2 months ago |