doublex001
|
9911277e10
|
feat(api): 接通评分权重设置到真实后端(读权重/模板 + 互斥双模式保存)
读:GET /profile/me/review-weights + GET /review-weight-templates 并行拉取
写:PUT /profile/me/review-weights,实测为两种互斥模式(实网 2026-09-30 验证)
· 套用模板:只传 { templateCode }
· 自定义: 只传 { weights }(八个维度全给、总和 100)
· 同时传两者 / 未知 templateCode / 缺维度 / 总和≠100 → 一律 400 code=1001
接口文档的 body 示例是错的,见《联调问题清单-致后端》§1.12
- 维度集合改为以后端下发为准:原前端自造的「九大中文维度」与后端八个
英文 token 不一致(后端无「地理位置/工作强度」,多出 JD_CLARITY、
SALARY_TRANSPARENCY 等),照旧实现会默认显示错误的维度集合
- 后端不下发维度中文名 → constants 新增 WEIGHT_DIMENSION_LABEL /
WEIGHT_DIMENSION_ORDER / WEIGHT_TOTAL 作为唯一真相源;未登记 token
追加末尾并原样显示,不静默吞掉后端新增维度
- 新增 matchWeightTemplate():保存时据此在两种互斥模式间二选一
- saveWeightSettings 增加可选 templateCode 参数;保存后用服务端回传值
覆盖本地编辑态(不调 refresh,避免整页闪回 loading)
- 新增 weight-settings.test.ts(15 例):锁住映射顺序/中文名/未知 token
兜底、模板 id 映射、模式判定(含维度数不同不得误判)、双模式 body 互斥
- mock 形态与真实同构(同八维 + 同四模板),避免两套口径分叉
|
4 weeks ago |
doublex001
|
b22ed57151
|
fix(api): 投递时间线字段映射 + 接入投递匹配状态
- 后端 timeline 节点字段是 toStatus/reason/createdAt,前端 ApplicationTimelineEvent
用 status/note/time,此前直接透传导致企业端投递详情时间线渲染空白
- fetchApplicationTimeline 增加映射:toStatus→status(经 token 转换)、reason→note、createdAt→time
- 新增 fetchApplicationMatch 接入 GET /applications/{id}/match,含 ApplicationMatch 类型
- 补 2 条回归测试(timeline 映射 + match 透传)
|
4 weeks ago |
doublex001
|
1e75b7d470
|
fix(api): 修正两处幽灵接口调用(评分路径 / 移除不存在的薪资格)
- fetchJobOverallScore 改打真实端点 /jobs/{id}/personalized-review-score,
新增 mapPersonalizedScore 把后端 dimensionScores 对象映射为雷达图维度数组
- 移除 fetchSalaryData:后端无 /jobs/{id}/salary(salary-calculator 域实网 404),
它在 useJobDetail 的 Promise.all 中,404 会让整个岗位详情页加载失败
- 岗位详情页删除无数据来源的「真实薪资区间」表(薪资仍由 detail.salaryMin/Max 展示)
- 清理 SalaryData/SalaryRange 类型、MOCK_SALARY_DATA 及相关测试
|
4 weeks ago |
doublex001
|
5f47b8e38b
|
feat(api): 接入四维能力测评(/abilities)并桥接结果页
- 新增 fetchAbilityTypes / createAbilityAttempt / fetchAbilityAttempt /
saveAbilityAnswers / submitAbilityAttempt / fetchAbilityResult / fetchMyAbilities
- fetchAbilityAssessment 补真实分支:取最近一份 COMPLETED 结果并映射
- 实网实测契约(文档未标注):
题目 id 是 attemptQuestionId、答案字段是 selectedOptionId(写 optionId 报 9805);
答卷详情不带 version,保存与提交均无需乐观锁;未答完提交报 9806
- 四维 code 为 LOGIC/COMMUNICATION/EXECUTION/LEARNING,与 mock 阶段的
「专业能力/项目经验/技能广度」不是同一套口径,真实态以后端为准(产品口径待定夺)
- 结果有效期 validUntil/validityStatus 由后端判定,前端不自行作废
新增 src/__tests__/ability-attempt.test.ts(5 用例)
tsc 0 错误;jest 530 全过;eslint 0 error
|
4 weeks ago |
doublex001
|
e1dc514a0c
|
feat(api): 接入测评答卷全链路(/assessments)并桥接单题推进 UI
后端测评是「答卷」模型(一次抽 30 题 → 批量保存 → 提交出结果),
前端 UI 是单题推进,桥接全部收敛在 api 层,页面与 hook 无需改动:
- 新增 fetchAssessmentTypes / fetchAssessmentQuestions / fetchMyAssessments /
createAssessmentAttempt / fetchAssessmentAttempt / saveAssessmentAnswers /
submitAssessmentAttempt / fetchAssessmentResult 八个真实端点
- fetchHollandAssessment / submitHollandAnswer / fetchHollandResult 补真实分支
- 关键契约(实网实测,文档未标注):
创建用 body {typeCode}(不是 type);保存答案必须回传 version 乐观锁;
未答完提交报 9706;未完成取结果报 409/9703
- 结果映射:primaryCode→code、dimensionScores→六维、explorationDirections→行动建议;
后端不下发的类型解析/推荐岗位留空数组,不本地编造
- 答题过程中后端不下发实时六维(维度属隐藏字段),分布置空,不本地估算
新增 src/__tests__/assessment-attempt.test.ts(7 用例)
tsc 0 错误;jest 525 全过;eslint 0 error
|
4 weeks ago |
doublex001
|
a914f5221c
|
fix(api): 按实网响应校正岗位/偏好/评价汇总字段与 0-based 分页
实网联调(job.youthome.com.cn,学生号 19900009021)发现前端已接端点与后端契约不同构:
- 岗位 DTO:后端 title/company.name/薪资单位元,前端 positionName/companyName/K;
新增 mapBackendJobItem 统一转换(列表/收藏/详情三处共用),缺失字段留空不拿 mock 顶替
- 偏好 DTO:后端多选数组+英文 token,前端单值中文;读写双向映射,
salary/status 后端无字段不发送
- 评价汇总:totalReviews→total、ratingDistribution{rating5..}→distribution[]
- 分页:后端全站 0-based,前端按 1-based 传会丢第一页(/applications/me 首页恒空);
新增 toBackendPage/toFrontendPage 集中转换
- 新增 scripts/audit_coverage.py(248 端点覆盖率审计)与 live_probe.py(实网批量探测)
tsc 0 错误;jest 518 全过
|
4 weeks ago |
doublex001
|
51f5a9b2d2
|
feat(enterprise): 补齐企业端收到的投递与候选人反馈(P0-7)
后端有、前端完全没有的整条企业投递链路(含 4 个候选人反馈端点):
- api: fetchCompanyApplications(GET /company/candidates,筛岗位/状态/关键词/分页)、
fetchCompanyApplicationDetail(GET /company/candidates/{applicationId})、
updateApplicationStatus(PATCH /applications/{id}/status)、
fetchCandidateFeedback / createCandidateFeedback / updateCandidateFeedback / deleteCandidateFeedback
- 状态 token 跨边界转换:后端大写 SUBMITTED/VIEWED/INTERVIEW/HIRED… ↔ 前端小写联合类型,
双向都过 toApplicationStatus / toBackendApplicationStatus,页面不拼大写串
- http: HttpMethod 补 PATCH(契约里投递状态、意愿分、适合度分都是 PATCH,原先只能绕开统一请求层)
- types: CompanyApplicationItem / CompanyCandidateDetail / CompanyApplicationQuery /
CandidateFeedback / CandidateFeedbackInput;ApplicationStatus 补 'hired'(此前漏了「已录用」)
- constants: APPLICATION_STATUS_LABELS / COMPANY_APPLICATION_FILTERS /
APPLICATION_STATUS_TRANSITIONS(禁止状态倒退)/ CANDIDATE_FEEDBACK_TAG_SUGGESTIONS
- theme: applicationStatusColors 九态徽标色板,全部走 token
- 页面: app/enterprise-applications.tsx 投递工作台(筛选条计数独立于筛选、关键词、四态、返回即刷新);
app/application-detail.tsx 详情(状态流转 + 二次确认、时间线、反馈读/写/改/删)
- 入口: 企业端「我的」快捷入口与菜单各加「收到的投递」;两页路由注册(headerShown:false,避免叠 header)
- 组件: 抽出 components/RatingStars.tsx,岗位评价页与本页共用一份星级,删掉页面内的重复实现
- 测试: 新增 enterprise-applications.test.ts 14 例(token 双向、筛选、持久化、反馈单条约束、真实路径);
全量 514 例通过
|
4 weeks ago |
doublex001
|
1ae124c2f7
|
feat(jobs): 补齐岗位评价增删改(P0-6)八维评分/标签/汇总与编辑删除
- api: 新增 fetchJobReviewDetail / updateJobReview / deleteJobReview / fetchJobReviewSummary,
createJobReview 入参由 content 单字段扩为 { rating, content, tags, dimensionScores },
body 与文档 POST /jobs/{jobId}/reviews 对齐;mock 阶段同一岗位重复发布=覆盖更新(模拟后端唯一约束)
- types: EmployeeReview 增加 rating / dimensionScores / status / canEdit / updatedAt;
新增 JobReviewCreateInput / JobReviewUpdateInput / JobReviewSummary / JobReviewStatus
- constants: 新增 src/constants/review.ts(八维维度 REVIEW_DIMENSIONS、标签候选、评分上限)
- hook: useJobDetail 并行取汇总,新增 editReview / removeReview
- 页面: 岗位详情页评价区加汇总卡(平均分+星级分布+热门标签)、评价卡星级与八维、本人评价的编辑/删除入口;
底部单行输入框改为评价编辑器弹窗(综合评分+分项评分+标签+正文),四态齐全
- 测试: job-api 补 rating/tags/dimensionScores 断言 + 覆盖更新 + 改/删/汇总 5 例(全量 500 例通过)
|
4 weeks ago |
doublex001
|
0f8ab9a6b6
|
feat(api): 补齐简历多版本(P0-5)列表/创建/详情/修改/删除/设默认/导出任务
- api: 新增 resume-versions 全链路 9 个端点(对齐 /profile/me/resume-versions 与 /resume-export-tasks)
mock 以模块级可变数组模拟持久态;真实路径含 multipart 上传占位说明
- hook: useResumeVersions 覆盖列表/创建/设默认/删除/导出轮询
- 页面:app/resume-versions.tsx 版本卡(默认徽标/设默认/导出/删除)+ 新建弹窗,四态齐全
- 入口:简历页头部加「版本」入口;路由在 _layout 注册
- 主题:补充 scrimLight 遮罩 token(亮/暗双模式)
|
4 weeks ago |
doublex001
|
39471046b5
|
feat(api): 补齐消息操作态(P0-4)创建会话/消息列表/标记已读/撤回
- api: 新增 createConversation / fetchMessages / markConversationRead / recallMessage,
真实路径对齐后端 /conversations 系列;sendChatMessage 真实路径改为 /conversations/messages
- hook: useConversation 接入消息列表(fetchMessages)、进入标记已读、长按撤回
- 沟通页:进入会话即标记已读;长按本人文本消息可撤回(本地覆盖为撤回态)
- 类型:ChatMessage 增加 recalled;新增 MessagePage / BackendMessage / CreateConversation*
|
4 weeks ago |
doublex001
|
c16ce63039
|
feat(auth): 隔离运营商取号适配层,补齐取号超时/网络预检/缓存管理
把端上取号从 api.ts 抽到 src/lib/carrier-sdk.ts,与微信登录的
wechat-sdk.ts 对称:两条登录通道的接入方式此前不对称,运营商取号
直接写死在接口层,换 SDK 时要动业务代码。
厂商无关:适配层只暴露 5 个能力(可用性/网络预检/预取号/取号/清缓存),
对外统一形状 CarrierSdkNumber,接入移动/联通/电信/阿里云/极光任一家
都只改这一个文件,页面、hook、类型、api.ts 零改动。
补齐运营商文档强调但项目缺失的 4 个工程细节:
- 超时:SDK 默认 8s,不包装则弱信号下无限挂起,页面没有出口
- 蜂窝网络预检:取号走数据网关,纯 Wi-Fi 取不到,可提前给出引导
- 取号缓存 scrip:预取号建缓存,提高成功率并允许未开蜂窝时取号
- 敏感动作清缓存(delScrip/delectScrip):注销/换绑时主动失效旧缓存
取号失败原因显式建模为联合类型(no-cellular/timeout/unsupported-carrier/
sdk-unavailable/unknown),不再混成一句"未能获取本机号码"——三者的
下一步引导动作不同。失败一律返回空串,绝不返回假号码。
收敛 mock 号码到单一定义:此前 fetchCarrierPhone 与 loginByCarrier
各写一份,迟早漂移成两个号。
tsc 0 错误;jest 383 passed / 27 suites。
|
1 month ago |
doublex001
|
0c2ebf6149
|
feat: 清零假交互,补全导出分享与企业端写通道,修复四态与图标缺陷
合并 2026-09-18 当天的 4.9–4.13 五个批次。范围仅前端:后端(Java + SpringBoot)
由其他成员实现,本次新增接口一律按约定在 api.ts 中预留注释版 fetch,未写后端代码。
4.9 假交互盲区 + 四态缺口 + 企业端写通道
- 修掉 4.8「死控件已清零」结论的盲区:审计脚本只认「无处理函数 / 空处理函数」的
Pressable,查不到「有处理函数、点了只弹『功能开发中』」这一类,全仓实有 37 处。
- 按「能真做的真做,不能做的删入口」逐条处理:能接线的接线(如「评分申诉」→ /appeal);
能真导出的复用 shareText;无落点的删入口,并同步删掉 api.ts 里对应的下发项,
不留「数据里有、页面不渲染」的悬空字段。
- 修复 error 被静默丢弃的真 bug:legal/checkout 与 legal/service 的网络故障会被渲染成
「套餐不存在 / 服务不存在」,把用户引向错误的自救路径;另有 5 处有 error 分支但无重试
入口、1 处 refresh 已在作用域内却没用。统一改用既有 StateView(ErrorState 自带 onRetry)。
- 企业端岗位管理补「下架 + 刷新」写通道:新增 updateJobStatus / refreshJob,经 storage
覆盖表叠加(mockRequest 不深拷贝,直接改常量会污染全局且重启即丢),JobManagementJob
补 refreshedAt 字段,hook 补写方法与进行中标志,页面加二次确认,并补写通道单测。
- 企业端列表页补筛选/排序真实现,修掉一个无 value/onChangeText 的死输入框;Tab 过滤
从页面 useMemo 下沉到 api 层(原与「业务规则放 API 层」相悖)。
- 扩展 scripts/check-affordances.mjs 覆盖上述盲区,防止同类问题再次逃过审计。
4.10 平台资质证照页 + 死链修复 + 推送缺口
- 新增 app/settings/qualifications.tsx(平台运营主体自身的证照公示,合规 / 应用商店
上架审核用),配套 src/types/qualification.ts、src/hooks/useQualifications.ts、
api 取数函数与单测。注意它和企业端 EnterpriseCertificationForm 不是一回事:后者是
入驻企业上传自己的营业执照以取得认证,主体 / 目的 / 入口全不同,已在类型文件顶部写明。
- 修复死链。
- 补记 09-11~09-17 共 12 个提交从未推送的缺口(远端一直停在 09-10),并把「提交之后
必须推送」写进 AGENTS.md:17:50 的动作明确为 commit → push 两步,9:20 拉取前先看
git rev-list --left-right --count HEAD...@{u}。
4.11 企业端状态文案缺陷 + 状态映射下沉
- 修 4.9 写通道回看时暴露的缺陷:标着「草稿」的卡片按钮显示「重新上架」。JobManagementJobStatus
有三个值(active | offline | draft),三元表达式只分了两支,草稿落进「已下线」那一支;
确认文案「重新上架后,候选人可以再次看到该岗位」对从未上架过的草稿两句都不成立。
- 状态 → 文案映射下沉到 api 层,页面不再自行分叉。
4.12 六处导出 / 分享真机验证 + 霍兰德参与人数两处不一致
- 6 处导出 / 分享路径在 Android 模拟器上逐个验到系统分享面板,并借面板的文本预览核对
拼装内容与页面一致(数字、名称、状态)。
- 修正一处数据前后不一致(霍兰德参与人数两处对不上)。
4.13 六处空态实测 + 无效图标名缺陷 + check:icons 新门槛 + 缓存失败态结案 + 分享文本测试锁
- 用「注入空数据 + 逐个截图」把 4.9 遗留的 6 处空态实测通过(progress / legal /
hr-evaluation / ability / jobs/offer-compare / jobs/[id]),确认按设计渲染、无死代码。
- 修复文书模板 gavel-outline 无效字形名:Ionicons 全库 1357 个字形里没有 gavel,运行时会
打 "not a valid icon name" 且图标渲染为空白;页面的 `as keyof typeof Ionicons.glyphMap`
断言把类型错误吞掉了,故 tsc 一直没报。改用语义最接近的 hammer-outline。
- 新增 scripts/check-icons.mjs + npm run check:icons 门槛:直接读取已安装包的 glyphmap
(另存一份必然与真实图标库脱节),扫描 app/ 与 src/ 中的图标名字面量,含灵敏度验证。
- 结案 settings 缓存「读取失败」态:不是「未验证」,而是 readCacheBytes() 把异常全吞成 0,
故障传不上来,该分支在任何条件下都不可达。新增 cache.test.ts(12 例),以「构造会抛错的
文件系统」把这条永不抛错的契约锁住。
- 补上第七处分享路径(入职清单导出)的真机验证,7 处分享至此全部验过。
- 新增 share-text.test.ts(28 例),补 4.9 同批 5 个分享拼装函数一直缺的测试锁(4.9 方案里
写了「并补单测」,当时只给范式 buildChecklistText 补了)。侧重锁三类:空值守卫、取的
是本地选择态而非接口默认值、对外可见格式;并把 4.12 那个真机证伪实验固化成不依赖设备的断言。
- 顺带把「数据层引用外部词表」三类系统排查完:图标名(已修 + 已设门槛)、路由(已被
check-routes 覆盖,本次补验其数据层灵敏度)、颜色(硬编码色值 0 处)。
其他
- AGENTS.md 第九节记录暗模式决策:本项目维持纯亮色。理由是全仓 3302 处静态 colors.X 分布在
124 个文件,其中 119 个为模块级 StyleSheet.create —— 模块级样式在启动时即固化颜色,与
运行时切换主题不相容,接入暗模式属重构级工程,且当前无自动化视觉回归手段可验证这 3302 处
改动。故本轮只记录决策、不改代码,将来应作为独立重构批次推进。
- 项目开发状态.md 同步各批次结论与证据(含一次错误归因的更正:深链不路由不是 expo-dev-client
缺失,而是应用跑在 Expo Go 里、Expo Go 只注册 exp://,已补 am start 实测证据)。
门槛:tsc 0 / eslint 0 / 23 文件 302 例 / check:routes 0 / check:affordances 0 /
check:backend-stubs 140 / check:icons 0
|
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
|
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 |
doublex001
|
2afe503b32
|
feat(salary): 薪资计算器保存记录与计算历史
- types: 新增 SalaryCalcRecord(输入快照+结果快照+备注+时间戳)
- api: salary:records 本地持久化 fetch/save/delete,以 storage 为唯一真相源
- hooks: 新增 useSalaryRecords(useAsyncData 取列表 + save/remove 变更)
- page: 历史按钮→历史弹层(加载/错误重试/空态/列表,点按回填参数);
保存按钮→保存弹层(备注+确认),清除两处占位 Alert
- test: 新增保存/倒序读取/删除用例;同步修正城市基数 clamp 影响的既有用例
|
2 months ago |
doublex001
|
f6d42023be
|
feat: 薪资计算器城市选择 + 文书模板预览(占位审计断点收口)
- 薪资计算器:新增城市社保/公积金基数上下限表,选城市后 clamp 社保基数并计入计算(断点②)
- 文书模板:新增模板正文与预览页 /legal/template,正文 selectable 长按可复制(断点③)
- 分层:types/constants/api/页面;tsc --noEmit 0 错误、eslint 0 警告、路由审计 0 死链
|
2 months ago |
doublex001
|
cbf38e7745
|
feat: 法律服务付费闭环、会员权益兑现与岗位评价发布(2026-09-10)
按提交纪律精确分阶段 git add(未用 -A / 未用 git rm),tsc --noEmit 0 错误、
eslint .(全量)0 警告。
| 模块 | 主要文件 | 变更要点 | 状态 |
|---|---|---|---|
| 付费支付闭环 | legal/checkout.tsx(新)、useLegalMembership.ts(新)、legal.tsx、upgrade.tsx | 选套餐→结算→选支付方式→模拟支付→会员激活并 AsyncStorage 持久化;套餐卡可点击、返回时 focus 刷新 | 完成·真实SDK仅换 api 函数体 |
| 会员权益兑现 | legal/service.tsx(新)、useLegalServiceRequests.ts(新)、legal.tsx | 修复「付了钱却拿不到服务」:未开通引导开通,已开通进入使用页提交申请并留痕 | 完成 |
| 岗位评价发布 | jobs/[id].tsx、useJobDetail.ts、api.ts | 修复「评价生态却发不出评价」:新增 createJobReview,发布后置顶并持久化 | 完成 |
| 类型与导出 | types/legal.ts、types/index.ts、api/index.ts、hooks/index.ts | 新增订单/会员态/服务申请类型与对应函数、hook 导出 | 完成 |
| 文档 | 项目开发状态.md | 同步三批功能状态与审计结论 | 完成 |
注:mock 阶段持久化统一走 src/lib/storage.ts(AsyncStorage,youzhi: 前缀),
storage 为唯一真相源,真实后端就绪后仅替换 api.ts 对应函数体。
|
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
|
0431d84ad3
|
refactor(menu): 按角色拆分功能菜单,从根上消除角色混淆
- 类型层:AppRole('candidate'|'enterprise') 下沉至 src/types/user.ts,
RoleContext 改为复用并 re-export;types 桶导出补登记 AppRole
- 数据层:MOCK_MENU_ITEMS 拆为 MOCK_CANDIDATE_MENU_ITEMS(16 项求职者功能
+企业入驻入口) 与 MOCK_ENTERPRISE_MENU_ITEMS(6 项企业功能)
- fetchMenuItems(role) 按角色下发对应菜单
- 企业端总览 EnterpriseOverview 新增 menuItems 字段,接入 MOCK_ENTERPRISE_MENU_ITEMS
- useProfileData(role) 透传角色;profile.tsx 用 useRole() 传入
- 企业端「我的」新增「更多服务」区渲染 menuItems(与「管理后台」分区并列)
效果:求职者端不再出现发布岗位/岗位管理等企业功能,企业端不再混排
求职者功能,角色隔离从根上解决后台术语/企业功能暴露给 C 端的问题
|
2 months ago |
doublex001
|
62ff6c65f9
|
feat(data): 隐私二级设置/注销/删数据/法律文档 类型与 mock;竞争力排名与岗位评价管理补数据态
类型层(src/types/settings.ts):
- 新增 PrivacyDetailSetting / DndSetting / KeywordBlockSetting / AccountCancelData / DeleteAllData / LegalDocument 及 LegalSection 类型
- src/types/index.ts 同步导出
接口层(src/api/api.ts):
- 新增隐私二级设置(开关类 6 页)mock 与 fetch/update 接口
- 新增勿扰模式、关键词屏蔽 mock 与增删接口
- 新增账号注销、删除数据 mock 与提交接口
- 新增隐私政策、用户协议完整条款(含 18 岁未成年人门槛,公司名/法院等占位标注【待确认】)
- 竞争力排名 mock 填充数据态;岗位评价管理空态标志切为 hasData:true 以展示数据态
- 修复 submitAccountCancel 未使用参数(_reason)
|
2 months ago |
doublex001
|
37182f47ab
|
feat(data): 扩展类型定义、mock 数据与 hooks 层
类型层(src/types):
- 新增 14 个业务领域类型:enterprise / data-export / settings / rank / compare / offer-compare / evaluation / game / interview / legal / operation / resume / tools / weight
- 扩展 JobManagement、TalentRecommendation、EnterpriseCommunication,新增 hasData 字段驱动空态与数据态分支
接口层(src/api):
- 重写企业端 mock 数据(岗位管理 / 人才推荐 / 企业沟通),默认 hasData: true
- 新增隐私中心与个人数据导出的 mock 数据与接口
- 预留真实 fetch 示例,签名保持不变
Hooks 层(src/hooks):
- 新增 42 个业务 hooks,统一基于 useAsyncData 封装
- 新增 usePrivacyCenter、usePersonalDataExport、useWeightSettings
- 扩展 useProfileData 接入企业端入口
|
2 months ago |
doublex001
|
a6301a8570
|
feat: 新增岗位详情页,重构个人中心与底部导航
- 岗位详情:新增 JobDetail/JobOverallScore/SalaryData/EmployeeReview 等类型、fetchJobDetail 等接口、useJobDetail Hook,新增 app/jobs/[id].tsx 页面(含 SVG 雷达图、真实薪资区间、员工评价、评论输入),岗位列表卡片接入详情跳转
- 个人中心:重做我的页 UI,品牌蓝渐变头部、综合评分卡片、八大维度横向评分条、求职偏好、勋章横滑
- 导航栏:底部 Tab 改为悬浮毛玻璃胶囊,选中浅蓝高亮 + 图标弹跳动画,引入 expo-blur 依赖
|
2 months ago |
doublex001
|
30cc3dc106
|
feat: 完成求职App核心页面与数据层并迁移至 Expo Router
|
2 months ago |