Add TravelAlbum, ProfileSpace, and wired camera transfer modules.
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>
This commit is contained in:
58
suixinkan/Features/ProfileSpace/ProfileSpace.md
Normal file
58
suixinkan/Features/ProfileSpace/ProfileSpace.md
Normal file
@ -0,0 +1,58 @@
|
||||
# ProfileSpace 模块业务逻辑
|
||||
|
||||
## 模块职责
|
||||
|
||||
ProfileSpace 模块负责首页“空间设置”入口,对齐 Android `space_settings -> ProfileInfoRoute` 的个人空间配置能力。
|
||||
|
||||
该模块聚焦摄影师在当前景区下的公开展示和接单配置:
|
||||
- 拉取个人空间资料。
|
||||
- 修改头像、昵称和简介。
|
||||
- 管理个人标签、拍摄说明标签和相机设备。
|
||||
- 配置工作日与法定节假日营业时间。
|
||||
- 配置接单状态。
|
||||
- 展示未来 7 天日程,并支持添加、删除和拨打客户电话。
|
||||
|
||||
相册管理不属于本模块,仍由 Assets/相册模块承接。
|
||||
|
||||
## 核心对象
|
||||
|
||||
- `ProfileSpaceView`:空间配置页 UI,负责资料展示、表单输入、日程展示和保存入口。
|
||||
- `ProfileSpaceViewModel`:维护编辑草稿、原始快照、脏状态、校验和提交逻辑。
|
||||
- `ProfileSpaceInfoResponse`:空间配置详情响应。
|
||||
- `UpdateProfileSpaceRequest`:空间配置更新请求。
|
||||
- `ProfileAPI`:封装空间配置读取和更新接口,同时复用用户昵称、头像更新接口。
|
||||
- `ScheduleAPI`:复用已有排班新增和删除接口。
|
||||
- `OSSUploadService`:复用头像上传能力。
|
||||
|
||||
## 加载流程
|
||||
|
||||
1. 首页点击 `space_settings` 后进入 `ProfileSpaceView`。
|
||||
2. 页面从 `AccountContext.currentScenic` 读取当前景区 ID。
|
||||
3. `ProfileSpaceViewModel.load` 调用 `ProfileAPI.profileSpaceInfo`。
|
||||
4. 接口成功后回填头像、姓名、昵称、简介、标签、设备、营业时间、接单状态和日程 map。
|
||||
5. ViewModel 保存一份 `ProfileSpaceEditableSnapshot`,用于判断保存按钮是否可用。
|
||||
|
||||
缺少当前景区时,页面展示缺少景区空态,不发起空间配置接口。
|
||||
|
||||
## 保存流程
|
||||
|
||||
1. 用户修改表单后,ViewModel 根据当前草稿和原始快照判断 `hasChanges`。
|
||||
2. 点击保存时先校验:
|
||||
- 昵称不能为空。
|
||||
- 标签和拍摄说明均最多 8 个,单个最多 20 字,禁止空值和重复。
|
||||
- 四个营业时间必须填写。
|
||||
- 工作日、节假日开始时间必须早于结束时间。
|
||||
3. 如头像有变化,先调用 `OSSUploadService.uploadUserAvatar` 上传,再调用 `ProfileAPI.updateUserAvatarURL` 回写头像。
|
||||
4. 如昵称有变化,调用 `ProfileAPI.updateUserInfo(nickname:)`。
|
||||
5. 调用 `ProfileAPI.updateProfileSpaceInfo` 保存空间配置。
|
||||
6. 保存成功后刷新原始快照,清除头像暂存,并同步 `AccountContext` 和账号快照中的昵称/头像展示信息。
|
||||
|
||||
保存失败时保留当前草稿和未保存状态,页面展示错误信息。
|
||||
|
||||
## 日程流程
|
||||
|
||||
空间配置页展示从空间详情接口返回的 `schedule` map,并在页面内显示从今天起连续 7 天的日程。
|
||||
|
||||
添加日程复用现有 `ScheduleAddView`,提交逻辑仍由 Schedule 模块负责。页面返回后会重新加载空间配置。
|
||||
|
||||
删除日程调用 `ScheduleAPI.deleteSchedule`,成功后重新加载空间配置,保持日程来源一致。
|
||||
Reference in New Issue
Block a user