日报:KitaApp 本地验证 · 请假管理功能跑通 — 2026年3月25日


今天做了什么

KitaApp 的代码骨架终于串起来了。今天在本地模拟器上逐一走查了 MVP 的七项核心功能,确认每一条链路都能跑通:

功能验证内容结果
登录流程注册 → 验证邮件 → 登录 → 自动跳转 tabs
邀请码Admin 生成码 → 新用户输入 → 加入正确组
公告推送Teacher 发布 → Parent 端实时出现 → 点「Ja」→ 统计更新
媒体上传选照片 → 压缩 → 上传 → Gallery 出现 → 长按无菜单
请假管理Parent 提交 → Teacher 查看 → 标记已读 → 状态变更
权限守卫Parent 访问 /create 路由 → 发布按钮不可见
Token 持久化登录 → 杀进程 → 重开 → 自动恢复登录态

七个绿灯全亮,本地 MVP 功能层面已经闭环。


请假管理——最让我满意的一屏

在所有功能里,请假管理(Abwesenheit) 是我觉得最能体现产品价值的模块。幼儿园场景下,家长请假是最高频的沟通行为之一:孩子生病、家庭旅行、看牙医……每天都有。传统做法是微信群里发一条消息,然后老师手动记到 Excel。消息容易被刷掉,统计全靠人力。

KitaApp 把这个流程结构化了。家长在 App 内提交请假申请,填好日期、类型(全天/半天)和原因;老师端收到后一键确认。截图里可以看到三条真实的测试数据:

  • Lukas Weber — 4 月 1 日全天,家庭旅行,状态「Ausstehend(待审核)」,老师还没点确认
  • Emma Weber — 3 月 25 日半天,看牙医,状态「Bestätigt(已确认)」
  • Lukas Weber — 3 月 24 日全天,生病,状态「Bestätigt(已确认)」

每条请假卡片用颜色区分状态:橙色代表待处理,绿色代表已确认。底部四个 Tab(Neuigkeiten / Fotos / Abwesenheit / Profil)构成了 App 的主导航。

KitaApp 请假管理界面 — 教师视角,展示待审核与已确认的请假条目

这个界面看起来简单,但背后的设计逻辑我想了很久:卡片式布局让信息一目了然,状态标签在右上角最醒目的位置,操作按钮(Bestätigen)只在待审核条目上出现。信息密度和操作效率之间的平衡,是我在这版 UI 里最在意的事。


下一步:加密方案的「深水区」

功能跑通只是第一步。KitaApp 面向的是德国幼儿园,DSGVO(欧盟通用数据保护条例)合规是硬性要求。孩子的姓名、照片、出勤记录都是高度敏感的个人数据,必须做到端到端加密——服务器上只存密文,开发者(也就是我)也无法解密。

这就引出了几个我正在研究的技术难题:

难题一:加密与查询的矛盾

加密后的数据无法直接做 SQL 查询。不能写 WHERE child_name LIKE '%小明%',因为服务器端看到的只是一堆密文。目前我在评估三条路:

  • 本地索引:客户端本地建搜索索引,缺点是首次同步慢、多设备一致性难保证
  • 搜索性加密(SSE):密文可查询,但泄露模式仍是学术界活跃研究课题,生产环境安全性存疑
  • 混合方案:非敏感字段(child_id、日期)明文可查,敏感字段(姓名、医疗信息)加密,解密在客户端完成——这大概率是 MVP 阶段的落地方案

难题二:群组密钥管理

幼儿园是一个动态群组:老师离职、家长年年换。每次人员变动都需要更新群组密钥。MLS 协议(Messaging Layer Security)在理论上解决了这个问题,但当前的开源实现(如 OpenMLS)仍在早期阶段,频繁的密钥轮换对移动端性能和电量的影响也需要实测。

难题三:批量媒体加密的性能

老师拍完活动照片,一次可能上传 20-30 张。每张照片在本地加密再上传,耗时可能从几秒延长到数十秒,低端安卓设备更是瓶颈。


分阶段路线图

阶段时间核心目标
MVP3-4 个月PocketBase + Docker 单园部署,AES-256 字段级加密 + PBKDF2 密钥衍生
产品化4-6 个月Terraform 自动化部署,多园管理面板,Shamir 密钥分片
安全增强6-12 个月MLS 协议替代简单群组加密,搜索性加密,TÜV 认证准备

当前状态

  • ✅ 本地 MVP 七项核心功能全部验证通过
  • ✅ 请假管理 UI 与流程符合预期
  • ⬜ 部署到服务器并验证远程链路
  • ⬜ 端到端加密方案原型实现