Files
DadaoTask/android
dadao 6e33e1024d feat(web,android): 看板拖拽、详情侧栏编辑、快速录入与安卓任务列表
Web:
- 看板四列可拖拽,非法流转当场说明原因;勾选后可批量移动
- 详情侧栏全部可编辑(标题/优先级/截止/标签/备注/评论),409 自动刷新
- 快速录入 #标签 !优先级;键盘流 j/k、Enter、e、Esc
- Playwright 真浏览器 e2e 7 项断言全绿(web/e2e/smoke.mjs)
- 1000 条任务实测首屏 P50 38-55ms

Android(未编译验证:本机无 JDK/Gradle):
- 任务列表/详情/勾选完成/快速新建,冲突时提示并刷新
- 修:User/Member 字段名与后端 nickmame/phone 对齐,原先必然反序列化失败
2026-10-28 04:05:41 +08:00
..

安卓端(M0 骨架)

Kotlin + Jetpack Compose。当前只做了 M0 的骨架:登录、工作区列表、新建工作区、生成邀请码。 任务/工单/知识(M1 起)在 ui/ 下按同样结构扩展。

打开与运行

  1. Android Studio 打开 android/ 目录(它会把缺失的 Gradle Wrapper 补齐)。
  2. 在 android/local.properties 里指定后端地址(模拟器访问宿主机用 10.0.2.2):
    dadao.apiBase=http://10.0.2.2:8100
    
  3. 运行 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 注册,但落地处理尚未实现。