- Api 增 tickets/ticketAction/verifyTicket/promote,状态机交给服务端,客户端只发动作 - TicketsScreen:派给我的 / 我发起的、按状态给接收/开始/提交/通过/驳回、6004 与 6003 给出人话提示 - 仍未编译验证(本机无 JDK/Gradle),见 android/README.md
安卓端(M0 骨架)
Kotlin + Jetpack Compose。当前只做了 M0 的骨架:登录、工作区列表、新建工作区、生成邀请码。
任务/工单/知识(M1 起)在 ui/ 下按同样结构扩展。
打开与运行
- Android Studio 打开
android/目录(它会把缺失的 Gradle Wrapper 补齐)。 - 在
android/local.properties里指定后端地址(模拟器访问宿主机用10.0.2.2):dadao.apiBase=http://10.0.2.2:8100 - 运行
app配置。后端需先在本机 8100 端口起来。
仓库里没有提交
gradle/wrapper/gradle-wrapper.jar(二进制,且 M0 阶段由 Android Studio 生成更稳)。 等 M5 正式做安卓时把 wrapper 一起提交,保证构建可复现。
结构
app/src/main/java/com/dadao/task/
├── MainActivity.kt 入口 + 极简三态路由(Splash/Login/Home)
├── data/
│ ├── Api.kt OkHttp + kotlinx.serialization;信封解包、业务码抛 ApiException
│ └── TokenStore.kt 令牌本地存储(M5 换 EncryptedSharedPreferences)
└── ui/
├── Theme.kt 与 Web 一致的墨青 + 陶土色板
├── LoginScreen.kt 手机号 + 验证码(开发环境后端回显验证码)
└── HomeScreen.kt 工作区列表 / 新建 / 生成邀请码
已知待办
- 明文令牌存储(
TokenStore里已标 TODO),M5 换 Keystore 加密。 - 无离线缓存,弱网直接报错——与产品 D7「在线优先」一致。
- 邀请链接
https://dadaotask.com/join/<wsId>/<code>已在 Manifest 注册,但落地处理尚未实现。