Introduce travel album entry with Sony PTP tethering pipeline, profile space settings page, home routing updates, Launch Screen storyboard, and related tests/docs. Co-authored-by: Cursor <cursoragent@cursor.com>
2.9 KiB
2.9 KiB
ProfileSpace 模块业务逻辑
模块职责
ProfileSpace 模块负责首页“空间设置”入口,对齐 Android space_settings -> ProfileInfoRoute 的个人空间配置能力。
该模块聚焦摄影师在当前景区下的公开展示和接单配置:
- 拉取个人空间资料。
- 修改头像、昵称和简介。
- 管理个人标签、拍摄说明标签和相机设备。
- 配置工作日与法定节假日营业时间。
- 配置接单状态。
- 展示未来 7 天日程,并支持添加、删除和拨打客户电话。
相册管理不属于本模块,仍由 Assets/相册模块承接。
核心对象
ProfileSpaceView:空间配置页 UI,负责资料展示、表单输入、日程展示和保存入口。ProfileSpaceViewModel:维护编辑草稿、原始快照、脏状态、校验和提交逻辑。ProfileSpaceInfoResponse:空间配置详情响应。UpdateProfileSpaceRequest:空间配置更新请求。ProfileAPI:封装空间配置读取和更新接口,同时复用用户昵称、头像更新接口。ScheduleAPI:复用已有排班新增和删除接口。OSSUploadService:复用头像上传能力。
加载流程
- 首页点击
space_settings后进入ProfileSpaceView。 - 页面从
AccountContext.currentScenic读取当前景区 ID。 ProfileSpaceViewModel.load调用ProfileAPI.profileSpaceInfo。- 接口成功后回填头像、姓名、昵称、简介、标签、设备、营业时间、接单状态和日程 map。
- ViewModel 保存一份
ProfileSpaceEditableSnapshot,用于判断保存按钮是否可用。
缺少当前景区时,页面展示缺少景区空态,不发起空间配置接口。
保存流程
- 用户修改表单后,ViewModel 根据当前草稿和原始快照判断
hasChanges。 - 点击保存时先校验:
- 昵称不能为空。
- 标签和拍摄说明均最多 8 个,单个最多 20 字,禁止空值和重复。
- 四个营业时间必须填写。
- 工作日、节假日开始时间必须早于结束时间。
- 如头像有变化,先调用
OSSUploadService.uploadUserAvatar上传,再调用ProfileAPI.updateUserAvatarURL回写头像。 - 如昵称有变化,调用
ProfileAPI.updateUserInfo(nickname:)。 - 调用
ProfileAPI.updateProfileSpaceInfo保存空间配置。 - 保存成功后刷新原始快照,清除头像暂存,并同步
AccountContext和账号快照中的昵称/头像展示信息。
保存失败时保留当前草稿和未保存状态,页面展示错误信息。
日程流程
空间配置页展示从空间详情接口返回的 schedule map,并在页面内显示从今天起连续 7 天的日程。
添加日程复用现有 ScheduleAddView,提交逻辑仍由 Schedule 模块负责。页面返回后会重新加载空间配置。
删除日程调用 ScheduleAPI.deleteSchedule,成功后重新加载空间配置,保持日程来源一致。