15 Commits

Author SHA1 Message Date
ZL-Q dd48d1d59d chore: 更新主题、反馈页面和测试用例
- 更新 App 主题配置
- 优化反馈页面
- 更新认证和通知测试用例
2026-04-28 17:23:03 +08:00
ZL-Q a83001de0d feat(locale): 实现 App 启动时语言和时区自动设置
- 新增系统语言/时区读取工具函数
- SessionStore 扩展支持时区存储
- 启动流程自动检测并保存系统语言/时区
- 注册时传递语言/时区到后端
- 登录后从服务器同步语言/时区
2026-04-28 17:18:16 +08:00
ZL-Q 87f92987b2 feat: 实现 iOS Apple Pay 内购支付功能
前端:
- 集成 in_app_purchase 插件,实现 IAP 支付流程
- 添加支付模块 (payments/) 处理产品获取、购买、验证
- 积分中心页面集成 Apple Pay 购买入口
- 设置页面重构: 关于/隐私/协议直接展示,删除 legal_center 子页面
- 修复欢迎引导页滚动检测阈值问题
- 修复解卦结果页 iOS 侧滑返回手势被阻止的问题
- 邀请码绑定按钮临时禁用(待后端实现)

后端:
- 新增 apple_iap_transactions 表记录交易
- 实现 Apple 服务器端验证 (App Store Server API)
- 支付成功后自动发放积分
- 支持 Sandbox/Production 环境切换
- 添加退款处理和交易状态机

协议:
- 更新积分流水协议,支持 purchase/refund 类型
- 新增 PAYMENT_* 错误码
2026-04-28 10:45:29 +08:00
qzl 913ed26f8d feat(privacy): add personalized ads toggle in settings
- Add PrivacySettings schema with can_sell field (default: false)
- Move privacy toggle to GeneralSettingsScreen with clear labeling
- Update l10n for zh/en/zh_hant with user-friendly copy
- Clean up redundant PrivacyNotificationSettingsScreen
- Update profile-protocol.md to reflect new privacy schema
- Fix basedpyright warnings in user.py
2026-04-17 13:11:09 +08:00
qzl c74e3f688c fix: 修复 basedpyright 类型错误和语言设置同步问题
runner.py: 将 user_text 解构从 tuple 第二元素改为第一元素(str),
消除 str | list[dict[str,Any]] 与 Msg.content 的类型不兼容问题。
简化了始终为 true 的 user_blocks 条件分支。

repository.py: 将 result.rowcount 的 type: ignore 替换为基于
pyright: ignore[reportAttributeAccessIssue],消除 basedpyright 错误。

app.dart: 保存 profile 时同步 _locale 和 session store 中的语言标记。
2026-04-14 12:42:35 +08:00
qzl 6bc9c88ce8 fix: 修复语言设置为简体中文而非繁体翻译 2026-04-13 16:14:28 +08:00
qzl 1e22f27de2 feat: integrate invite API and improve notification handling
- Add invite code display and binding functionality via API
- Fix notification unread count sync on auth state change
- Improve notification mark read with server state validation
- Add auth state listener to trigger notification refresh
- Add YaoCoinConverter for coin-to-yao type conversion
- Remove YaoLegend from divination screens (UI cleanup)
- Abbreviate relation labels in yao detail view
- Add re-register notice to account delete screen
- Update 'coins' terminology to 'points' in localization
- Fix backend points consumption to only run in CHAT mode
- Add HttpxAuthNoiseFilter to suppress auth endpoint logging
- Fix notification static_schema import path
- Add test coverage for notification bloc error handling
- Update AGENTS.md page header rules and image handling
- Delete deprecated run-dev.sh script
2026-04-13 14:52:22 +08:00
qzl 3f3d613d99 feat: 实现站内通知系统
- 后端: 新增 notifications/user_notifications 表迁移及 ORM 模型
- 后端: 实现 schema/repository/service/router 全套通知 API
  - GET /api/v1/notifications (列表+游标分页)
  - GET /api/v1/notifications/unread-count
  - PATCH /api/v1/notifications/{id}/read (幂等)
  - PATCH /api/v1/notifications/mark-all-read (幂等)
- 后端: payload 使用 Pydantic discriminated union (none/open_route/open_url)
- 后端: 19 个单元测试全部通过
- Flutter: 通知 feature 完整实现 (models/apis/repositories/bloc/UI)
- Flutter: Home 页通知按钮接入真实页面,显示未读 badge
- Flutter: 14 个测试全部通过
- 协议文档: notification-inbox-protocol.md 及错误码注册
2026-04-10 18:50:08 +08:00
qzl 46513829cd feat: 添加账号删除功能 2026-04-10 10:40:44 +08:00
qzl e80a82bef4 docs: 更新协议文档,删除废弃计划文档
- 更新 http-error-codes, user-points-chat-data-protocol
- 更新 divination-run-protocol, profile-protocol
- 删除废弃的后端和前端设计计划文档
2026-04-08 17:23:02 +08:00
qzl 6e82053ea7 feat(home): 重构首页为底部导航栏布局,支持首页与个人页面切换 2026-04-07 18:43:58 +08:00
ZL-Q 8a18b3528b feat: 实现用户画像、占卜历史与后端用户管理模块 2026-04-06 01:28:10 +08:00
qzl d87b2e1e3a feat: 接入起卦后端流程并完善积分扣减链路 2026-04-03 19:04:46 +08:00
qzl f245eec5f6 feat: 实现起卦、设置与积分系统 2026-04-03 16:56:47 +08:00
qzl 31594558eb feat: 切换邮箱认证并重构前后端启动与门禁 2026-04-02 18:39:35 +08:00