Skip to content

feat(resume): 在“我的”页面交付简历管理 - #335

Merged
5 commits merged into
1024XEngineer:devfrom
gangcaiyoule:codex/issue-334-resume-mobile
Aug 4, 2026
Merged

feat(resume): 在“我的”页面交付简历管理#335
5 commits merged into
1024XEngineer:devfrom
gangcaiyoule:codex/issue-334-resume-mobile

Conversation

@gangcaiyoule

Copy link
Copy Markdown

功能描述

  • 在“我的”页增加简历概览卡片,展示数量与解析完成情况。
  • 新增简历管理页和详情页,支持最多 3 份 PDF 的上传、查看、重命名、替换、删除、解析重试。
  • 展示等待、解析中、成功、失败状态,并在处理中自动刷新。
  • 展示解析后的岗位、简介、技能、工作/项目/教育经历,支持人工修订岗位、简介和技能。

实现思路

  • 新增独立 mobile/lib/resume 模块,拆分模型、Client、Controller、平台文件能力和页面。
  • Wire Client 严格实现 [MS3][后端] 定义 Resume 模块接口与可编译骨架 #320 的 REST 契约,Bearer 只进入请求头,写操作携带幂等键与乐观锁版本。
  • PDF 选择和外部阅读通过可注入端口隔离,生产环境使用 file_pickerurl_launcher
  • Resume Controller 接入全局认证私有状态清理,避免账号切换后残留数据。
  • UI 复用 SpeakUp Design System 的色板、间距、圆角、Card、Header 与按钮规范。

测试方式

PUB_HOSTED_URL=https://pub.dev make check-flutter

已验证:依赖锁定、格式检查、 Flutter Analyze 零告警、全量 783 项测试通过。新增测试覆盖三份上限、PDF 校验、上传状态、我的页入口、管理页状态、Bearer 与 Multipart 契约。

依赖关系

Closes #334

@fennoai fennoai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found one issue worth addressing before merge. I could not run the Flutter test suite in this environment because flutter is not installed; git diff --check passed.

String? resumeId,
Future<void> Function() action,
) async {
if (_busyResumeId != null) return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_runAction silently returns whenever another resume operation is in flight, but several entry points can still reach it: pickAndUpload() opens the file picker before this check, and list-row actions are only disabled for the currently busy resume. That means users can pick a PDF or confirm a rename/delete while another operation is running and then see nothing happen. Please either gate these actions before launching dialogs/file pickers and disable all resume actions while busyResumeId != null, or surface a notice instead of dropping the action.

@Lq0412 Lq0412 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK

@Scorbunny2 Scorbunny2 closed this pull request by merging all changes into 1024XEngineer:dev in 9559402 Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants