Commit Graph

161 Commits

Author SHA1 Message Date
qzl 46394ffcdf Merge dev into main
Build production Docker image / build-backend-image (push) Successful in 48s
Build production Docker image / deploy-production (push) Successful in 44s
Fix .env quoting for safe shell sourcing
2026-04-30 11:29:22 +08:00
qzl 388775e05f fix: quote env values with spaces for safe shell sourcing 2026-04-30 11:29:10 +08:00
qzl 786acfe010 Merge dev into main: fix deployment secret handling
Build production Docker image / build-backend-image (push) Successful in 53s
Build production Docker image / deploy-production (push) Failing after 6s
Avoid logging multiline deploy secrets and document ECR cleanup permissions.
2026-04-30 11:20:21 +08:00
qzl f5f27d0496 fix(deploy): avoid logging multiline secrets 2026-04-30 11:20:13 +08:00
qzl 2657a7a339 Merge dev into main: fix workflow checkout
Build production Docker image / build-backend-image (push) Failing after 51s
Build production Docker image / deploy-production (push) Has been skipped
Use self-hosted Gitea clone instead of external checkout action.
2026-04-30 11:17:15 +08:00
qzl c2ba1442a3 fix(deploy): avoid external checkout action 2026-04-30 11:17:00 +08:00
qzl 7a84bb5d16 Merge dev into main: production deployment automation
Build production Docker image / build-backend-image (push) Waiting to run
Build production Docker image / deploy-production (push) Has been cancelled
Enable production rollout through Gitea Actions and include latest app configuration updates.
2026-04-30 11:08:37 +08:00
qzl 98f4a8d07a fix: update production app configuration 2026-04-30 11:07:57 +08:00
qzl 79d5d0638a chore(deploy): automate production rollout 2026-04-30 11:02:37 +08:00
ZL-Q 688c091770 docs: 统一应用名称为觅爻 2026-04-29 21:31:27 +08:00
ZL-Q 203cdd9330 fix(deploy): reduce backend worker footprint 2026-04-29 21:28:21 +08:00
qzl 5da1cba851 Merge dev into main: include uv lock
Build production Docker image / build-backend-image (push) Failing after 35s
Track uv.lock so the production Docker workflow can build from a clean checkout.
2026-04-29 18:22:53 +08:00
qzl b17862bff7 fix(deploy): include uv lock for Docker builds 2026-04-29 18:21:57 +08:00
qzl a2ce6d8502 Merge dev into main: backend ECR deployment flow
Build production Docker image / build-backend-image (push) Failing after 3m11s
Add backend Docker build workflow, ECR push, and EC2 Docker Compose deployment docs.
2026-04-29 18:07:10 +08:00
qzl fb163cfeab chore(deploy): add backend ECR deployment flow 2026-04-29 18:04:25 +08:00
qzl 59760416e6 chore: record journal 2026-04-29 14:28:16 +08:00
qzl 58cbb8d84f chore(task): archive 04-28-fix-ai-english-output 2026-04-29 14:27:54 +08:00
qzl 16cb47e75a feat: 新增追问模式和iOS本地化,重构后端输出模型 2026-04-29 14:26:15 +08:00
ZL-Q f497afbff2 feat: 实现AI拒答机制和语言控制优化
- 添加 RunStatus.REFUSED 状态,AI可明确表达拒答意图
- 优化 System Prompt 使用视觉强调提高AI对拒答规则的遵守
- User Prompt 添加 SCOPE CHECK 和语言约束
- Worker Rules 添加多语言版本角色扮演规则
- Runner 传递 language 参数到 worker stage
- json_finalize 添加语言约束参数
- 更新单元测试匹配新的 prompt 结构
2026-04-29 01:38:59 +08:00
ZL-Q adb2b3bcc3 chore: 整合 migration 文件并优化配置
- 整合 18 个分散的 migration 文件为 5 个模块化文件
- settings.py 支持 .env.local 覆盖 .env
- 移除 user schema 中未使用的 country 字段正则
- 更新 profile protocol 文档移除 country 字段
- pyproject.toml 添加 ruff 到 dev 依赖
- 简化 integration test conftest 邮箱 fixture
2026-04-29 00:37:45 +08:00
qzl dab47f0cb3 chore: 优化本地开发环境配置
- 添加 .env.local 支持,app.sh 和 dev-migrate.sh 自动覆盖
- Docker Compose 使用 profiles 区分 dev/prod 环境
- 改进认证 dev session 判断逻辑,使用 test account 配置
- 修复 CoinPackageCard 重复代码问题
- 清理 opencode 配置,移除敏感信息
- 新增 infra/docker/README.md 文档
- 修复 ruff/pyright/flutter lint 错误
- 更新测试用例移除已删除的 country 字段
2026-04-28 18:49:38 +08:00
ZL-Q 86062d5e78 fix: 修复 packages 接口访问不存在字段导致的运行时错误
- 移除 router 中对 result.region、result.currency、pkg.price 的访问
- 修正 pkg.type.value 为 pkg.type (type 是 Literal 不是 Enum)
- 更新协议文档以反映实际实现
- 新增 Apple IAP 协议文档
- 标记未使用的错误码为 RESERVED
2026-04-28 17:31:24 +08:00
ZL-Q 41ade24bcf chore: record journal 2026-04-28 17:23:46 +08:00
ZL-Q dd48d1d59d chore: 更新主题、反馈页面和测试用例
- 更新 App 主题配置
- 优化反馈页面
- 更新认证和通知测试用例
2026-04-28 17:23:03 +08:00
ZL-Q 85023a668b refactor(divination): 优化占卜界面和组件
- 更新占卜处理和结果页面
- 优化占卜共享组件
2026-04-28 17:22:47 +08:00
ZL-Q 295dbc09ab feat(payment): 优化套餐配置和支付服务
- 简化套餐配置结构,删除冗余的 default.yaml 和 us.yaml
- 优化 Apple IAP 服务和验证逻辑
- 更新套餐数据模型和协议文档
- 添加支付相关测试用例
2026-04-28 17:21:14 +08:00
ZL-Q a940f2ea47 feat(notification): 通知标题和正文支持多语言
- 通知静态配置支持 title/body i18n
- 前端通知列表和详情页展示本地化内容
- 新增数据库迁移脚本
- 更新通知协议文档
2026-04-28 17:20:17 +08:00
ZL-Q b9617ae152 refactor(settings): 统一语言设置,合并 interface_language 和 ai_language
- 后端 Schema 将 interface_language 和 ai_language 合并为 language
- 前端设置界面只保留一个语言选项
- AI 回复语言统一使用 language 设置
- 更新协议文档
- 新增数据库迁移脚本
2026-04-28 17:19:47 +08:00
ZL-Q 940c67e642 feat(points): 实现积分流水列表功能
- 后端新增 GET /api/v1/points/ledger 接口
- 前端新增积分流水列表页面
- 积分中心添加「查看流水」入口
- 重命名 AccountDeleteScreen 为 AccountDataScreen
- 流水列表支持分页加载和空状态展示
2026-04-28 17:19:08 +08:00
ZL-Q a83001de0d feat(locale): 实现 App 启动时语言和时区自动设置
- 新增系统语言/时区读取工具函数
- SessionStore 扩展支持时区存储
- 启动流程自动检测并保存系统语言/时区
- 注册时传递语言/时区到后端
- 登录后从服务器同步语言/时区
2026-04-28 17:18:16 +08:00
ZL-Q 14752cdcfa chore(task): archive 04-27-feat-ios-apple-pay 2026-04-28 17:17:40 +08:00
ZL-Q c7a75a6445 chore(task): archive 04-28-refactor-unify-language 2026-04-28 17:17:39 +08:00
ZL-Q 8de03314fd chore(task): archive 04-28-feat-locale-timezone-bootstrap 2026-04-28 17:17:39 +08:00
ZL-Q 9bc24fa0c4 chore(task): archive 04-28-feat-points-ledger 2026-04-28 17:17:38 +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 b453ff7345 chore(trellis): add task tracking for ios apple pay feature 2026-04-27 11:01:20 +08:00
qzl 285bb91851 feat: enable local supabase and update llm catalog
- Enable supabase in docker-compose.yml for local development
- Update llm_catalog.yaml with deepseek-v4-flash configuration
2026-04-27 11:00:13 +08:00
qzl 926929a3cb docs(trellis): update for cloud supabase migration 2026-04-27 10:04:29 +08:00
qzl fd4fae318d Merge dev into main: cloud supabase migration ready for production 2026-04-27 09:57:54 +08:00
qzl 5325793203 fix: correct tests and type annotations for cloud supabase migration 2026-04-25 15:53:44 +08:00
qzl 08db431653 feat(legal): update legal documents and add zh_Hant support 2026-04-25 14:14:49 +08:00
qzl 2d46251220 chore(task): archive 04-17-feat-privacy-do-not-sell 2026-04-20 12:52:39 +08:00
qzl 5c4ba49ffc chore: record journal 2026-04-20 12:52:35 +08:00
qzl 4a3fe85fc9 chore(task): archive 04-17-feat-user-feedback 2026-04-20 12:51:15 +08:00
qzl ae7727a1c4 chore: record journal 2026-04-20 12:50:54 +08:00
qzl 6a2a9d2c87 feat(feedback): implement user feedback collection system with email reporting
Backend:
- Add user_feedback table with RLS policy
- Create feedback submission API (multipart/form-data)
- Implement xlsx report generation with embedded images
- Add scheduled email delivery via Feishu SMTP
- Create HTML email templates (daily_report, no_feedback)

Frontend:
- Add feedback screen with type selection and image picker
- Support anonymous submission via skipAuth flag
- Collect device info and app version

Protocol:
- Document feedback API contract and error codes
- Update http-error-codes.md with FEEDBACK_* codes
2026-04-20 12:49:54 +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 be30eb6eab chore: record journal 2026-04-16 17:53:16 +08:00
qzl c79c773d67 feat(notification): add target_mode enum constraint and merge register-notifications script
- Add NotificationTargetMode enum (new_users/exist_users/all_users/user_ids)
- Create Alembic migrations: drop duplicate indexes, add target_mode column
- Merge register-notifications.sh into dev-migrate.sh sync-notifications subcommand
- Shorten notification config path: static/notification/notifications -> static/notifications
- Update registration flow to dispatch notifications by target_mode
- Add is_first_registration to RegisterBonusResult for first-time user detection
- Remove dead code: link_published_notifications_to_user
- Update welcome_points.yaml to target new_users only
- Add 44 unit tests + 1 integration test, all passing
2026-04-16 17:50:57 +08:00
qzl d91064835b chore: record journal 2026-04-16 16:15:22 +08:00