轻松聘
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

12 KiB

有职 App 开发进度与规划文档

生成日期:2026-09-10 最后更新:2026-09-10(EAS 构建/OTA 配置骨架已建 · 技术债 8 处 any 已清理) 范围:项目健康审查 + 已开发 / 待开发清单 结论先行:当前项目可运行(tsc 0 错误、eslint 0 error、路由 0 失效跳转),无需修正阻塞错误。


一、健康审查结论

检查项 命令 / 方式 结果
类型检查 npx tsc --noEmit ✅ 0 错误(Exit 0)
代码规范 npx eslint . ✅ 0 error / ⚠️ 8 warning(均为 any 软警告)
路由闭合 node scripts/check-routes.mjs ✅ 63 路由全部存在,0 失效跳转
入口接线 读 app/_layout.tsx / app/index.tsx ✅ 根栈 → 入口围栏 → 双端 Tab 完整
应用配置 app.config.js ✅ name「有职」、scheme youzhi、plugins 正确

判定:项目处于可启动状态(expo start 即可运行),未发现阻塞运行的错误。本次未进入"修正"环节。


二、技术栈与架构

  • 框架:Expo SDK 57 · React Native 0.86.2 · React 19 · TypeScript 6 · Expo Router(文件路由)
  • 双端同构:
    • 求职端 (tabs):岗位 / 沟通 / 成长 / 我的(落地 jobs)
    • 企业端 (enterprise):岗位 / 人才 / 沟通 / 我的(落地 job-management)
  • 分层(src/):types(领域模型) · api(5088 行 mock 数据层) · hooks(语义化取数) · components(42 组件) · context(Auth/Role) · theme(colors token) · constants · utils · lib(storage / wechat-sdk)
  • 数据链路:页面 → Hook(useXxx) → API(fetchXxx) → 后端。当前全 mock,签名已固化,接真实后端只改 src/api/api.ts 函数体。
  • 配色治理:统一走 src/theme/colors.ts,禁止硬编码十六进制;透明度用 token + 15/20 后缀。

三、已开发模块(按业务域)

页面规模以行数为代理指标;5 行薄壳(如隐私政策 / 用户协议)是合理架构——内容由 LegalDocScreen 按 docId 加载,非空壳。

3.1 用户端(求职端)

业务域 路由 关键页面(行数) 规模 状态
引导 / 注册 /guide /register /onboarding guide(194) · register(69) · onboarding(488) 中 已开发
岗位 /jobs /jobs/[id] /jobs/compare /jobs/rank /jobs/offer-compare /jobs/weight-settings jobs(756) · id · compare(306) · rank(753) · offer-compare(676) · weight-settings(285) 大 已开发
沟通 /chat /chat/[id] chat(556) · id 大 已开发
成长 /growth /game /game/level /progress /assessment /ability /holland* /interview* /resume* /job-preference 多页 300–600 行 大 已开发(逐关内容见四.2)
我的 / 设置 /profile /settings 及 10 个子页 profile(743) · settings(262) · about / account / account-cancel / privacy* / notification / delete-data / user-agreement / privacy-policy 大 已开发
增值 / 合规 / 工具 /legal* /tools/* /hr-evaluation /audit-report /appeal /operation-rules /enterprise-certification /personal-data-export /candidate-detail /article/[id] /history /favorites /job-evaluations 多页 300–720 行 大 已开发

3.2 企业端

业务域 路由 关键页面(行数) 规模 状态
岗位管理 /job-management /job-publish /job-evaluations job-management(645) · job-publish(633) · job-evaluations(752) 大 已开发
人才 /talent-recommendation /candidate-detail talent-recommendation(684) · candidate-detail(719) 大 已开发
沟通 /enterprise-chat enterprise-chat(611) 大 已开发
我的 /enterprise-overview enterprise-overview(594) 大 已开发(【设置】入口已接线 /settings;Tab 选中色已统一 primary)

企业端设置类页面复用根级 app/settings/*,符合「设置类统一收纳于【设置】页」规范。


四、待开发 / 进行中 / 风险

4.1 既定任务(来自项目规范,需逐项核实)

  • 企业端三项(历史记录为待办,代码审查显示已基本完成):
    1. Tab 选中色统一回 primary —— ✅ 代码已用 colors.primary
    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。

4.2 功能完整性缺口(标注【待确认】为推断项,需与产品对齐)

  • 通关小游戏(7 关):框架页 game.tsx + game/level.tsx 已建,7 关(认识自己 → 能力 → 岗位 → 企业 → 简历 → 面试 → 签约)内容与数据已完整:MOCK_GAME_LEVELS 共 22 题(self 4 / 其余各 3),题型含单选/多选/输入,配套解析与 tags 用于岗位推荐。评分(≥60 通关)、解锁、进度聚合逻辑均在 submitGameLevel 实现。✅ 2026-09-10 完成内容增厚(每关由 1–2 题补至 3 题左右)。
  • 阿布阿诺 AI 法律服务:免费层(咨询 / 模板 / FAQ)页已建;付费层 legal/upgrade.tsx 已建,付费 / 支付链路已接通(mock 支付闭环)——legal/checkout.tsx 选套餐→选支付方式→模拟支付→会员态激活并 AsyncStorage 持久化;legal.tsx / upgrade.tsx 套餐卡可点击进入结算,会员态在返回时即时刷新。真实支付 SDK 后续仅换 api.ts 的 createLegalOrder / payLegalOrder 函数体。付费后权益已兑现:新增 legal/service.tsx 会员服务使用页——未开通点会员服务仍引导开通,已开通则进入使用页(服务说明 + 引导语 + 需求输入框 + 提交申请 + 申请记录持久化),legal.tsx 会员卡标签按态显示「会员 / 已开通」。
  • 岗位评价发布(双向透明评价生态核心):✅ 2026-09-10 接通。此前 jobs/[id].tsx 底部发布按钮为「功能开发中」占位——产品核心定位即评价体系却无法发布。现已新增 createJobReview(AsyncStorage 键 job:reviews,按 jobId 归属),fetchEmployeeReviews 合并「本人发布(置顶)+ 内置评价」,useJobDetail 暴露 publishReview,页面接线含空输入拦截、发布中 loading、成功后清空输入框并自动刷新列表。
  • 隐私政策 / 用户协议内容:src/api/api.ts 中 MOCK_PRIVACY_POLICY / MOCK_USER_AGREEMENT 已含完整合规草案(各 9–10 章),18 岁门槛已落地(隐私政策第六章 + 用户协议前言)。仅余【待确认】占位待法务/产品替换:公司全称、注册地址、客服邮箱/电话、个人信息保护负责人邮箱、管辖法院。属上架硬性审查项,占位填妥即可提交审核。

4.3 工程与上线

  • 应用图标:✅ 已完成(提交 878710c)。assets/icon.png 已替换为「有职」logo,实测 1024×1024,符合商店要求。

  • 启动屏:✅ 已接线。安装 expo-splash-screen@57.0.9,在 app.config.js 以 config plugin 形式配置 assets/splash-icon.png(1024×1024、imageWidth: 200、resizeMode: 'contain'、白底)。此前该资源为死资源且冷启动白屏。因应用为纯亮色(userInterfaceStyle: 'light'),未配置 dark 分支。注意:启动屏属原生配置,Expo Go 内不生效,需 eas build 出包后可见。

  • EAS / OTA:eas.json 配置骨架(development / preview / production + submit)已建;app.config.js 的 runtimeVersion / ios.bundleIdentifier / android.package / extra.eas.projectId 字段已就位。以下两项占位符会直接阻塞 eas build / eas submit,上架前必做:

    1. owner: 'REPLACE_WITH_EAS_OWNER' —— 需替换为你的 Expo 账号名;
    2. extra.eas.projectId: 'REPLACE_WITH_PROJECT_ID' —— 需替换为真实 EAS 项目 ID。

    两者均可由 eas login 后执行 eas init 自动注入,不要手工填。ios.bundleIdentifier / android.package 当前为 com.youzhi.app,可按开发者账号调整。

  • updates(OTA)块当前为注释状态,属有意为之:见提交 aa7b171。占位的 REPLACE_WITH_PROJECT_ID 会让 Expo Go(开发期)启动时去拉取不存在的远程更新,报 "Failed to download remote update" 并蓝屏。待 eas init 注入真实 projectId 后再取消注释启用 OTA。

  • 真实后端:全量 mock(src/api/api.ts 5088 行),未切换真实 fetch。

  • 技术债:8 处 any 软警告已全部清理(图标断言改为 keyof typeof Ionicons.glyphMap、路由断言改为 as string),eslint . 现 0 error 0 warning,tsc --noEmit 保持 0 错误。


五、后续增量开发建议(优先级)

  • P0(上架前必做):图标替换 应用图标【已完成,878710c,1024×1024「有职」logo】 · 隐私 / 协议内容填充 隐私/协议草案【已存在,含 18 岁门槛,待填【待确认】占位】 · EAS 初始化 EAS 配置骨架【已完成,owner / projectId 两处占位符阻塞 eas build,需 eas init 注入,详见 4.3】 · 18 岁门槛核对 18 岁门槛【已在隐私政策第六章 + 用户协议前言落地】 · 微信登录接入评估 微信登录接入评估【已完成 → 见 微信登录接入方案.md,SDK 接入阻塞于微信开放平台 AppID】 · 启动屏接线 启动屏【已完成,expo-splash-screen + splash-icon.png,需出包验证】。
  • P1(核心差异化):微信登录接入方案 微信登录接入方案【已落文档,真实 SDK 接入阻塞于微信开放平台移动应用申请】 · 企业端快捷入口话术统一 企业端快捷入口话术统一【已完成,6 处 label 对齐规范词;含沟通页快捷操作 onPress 接线,tsc/eslint 0 问题】 · 付费法律服务支付 付费法律服务支付【已完成:mock 支付闭环,选套餐→结算→模拟支付→会员激活持久化,tsc/eslint 0 问题】 · 通关小游戏 7 关内容 通关小游戏 7 关内容【已完成:结构原已建成,本次增厚至 7 关 22 题,tsc/eslint 0 问题】。
  • P2(打磨):技术债清理 技术债已清理(8 处 any → 明确类型,eslint 0 warning) · 真实后端对接 · OTA 通道验证。

六、附:审查命令速查

# 类型检查(硬门槛,必须 0 错误)
npx tsc --noEmit

# 代码规范
npx eslint .

# 路由闭合审计(改动路由后必跑)
node scripts/check-routes.mjs

# 启动
npm start   # 即 expo start