# Tasks 模块业务逻辑

## 模块职责

Tasks 模块负责首页“任务管理”和“发布任务”入口，包括任务列表、筛选、分页、任务详情、可关联订单、云盘附件选择和本地附件 OSS 上传。

任务状态只保存在本模块 ViewModel 内，不写入 `AppSession`、`AccountContext` 或 TabBar。当前景区 ID 从 `AccountContext.currentScenic` 读取，缺少景区时不请求任务接口。

## 数据来源

`TaskAPI` 封装任务接口：
- `taskList` 获取任务列表。
- `taskDetail` 获取任务详情。
- `availableOrderList` 获取发布任务可关联订单。
- `addTask` 提交发布任务。
- `cloudFileList` 仅用于发布任务选择云盘附件，不代表完整云盘模块迁移。

任务本地附件上传复用 `OSSUploadService.uploadTaskFile`，上传成功后把最终 OSS URL 放入 `upload_file` 提交给发布任务接口。OSS STS、上传进度和本地文件数据不落盘。

## 页面流程

任务管理页支持状态筛选、任务名称搜索、开始/结束日期筛选、下拉刷新和加载更多。点击任务卡片进入任务详情页，详情接口失败时保留列表摘要信息作为兜底。

发布任务页支持填写任务名称、任务备注、紧急小时、选择关联订单、选择云盘文件和选择本地图片/视频。提交前先校验表单，再上传本地附件，最后调用发布任务接口。任意附件上传失败时不提交任务。

## 迁移边界

本轮不迁旧工程中把订单管理和核销订单拼成“待办任务”的逻辑；订单与核销已经归 `Features/Orders` 管理。

本轮不迁完整云盘资产管理，只保留发布任务所需的文件选择能力。云盘的新建文件夹、上传、删除、移动、重命名等能力后续应放在独立云盘模块中迁移。
