Skip to content

Repository files navigation

💰 Cashback Counter (返现小助手)

Cashback Counter 是一款基于 SwiftUISwiftData 构建的现代 iOS 记账应用。它不仅能记录日常消费,最核心的功能是智能计算信用卡返现。通过集成 Apple IntelligenceVision 框架,它实现了"拍一拍"自动识别小票、自动选卡、自动计算最优返现金额,帮助用户最大化利用信用卡权益。

App Store

当前 App Store 版本 2.4.1。下方标注「🚧 开发中」的功能已完成开发,将随下一个版本发布。

✨ 核心功能 (Features)

  • 📸 智能拍一笔 (AI-Powered Entry)
    • 自定义相机:集成 AVFoundation 实现无缝拍照体验。
    • AI 识别:利用 Apple Foundation Models (端侧大模型) 深度分析收据,自动提取商户、金额、日期。
    • 智能分类:根据商户名自动推断消费类别(餐饮、出行、数码等)。
    • 自动选卡:通过识别收据上的卡号后四位,自动匹配并选中对应的信用卡。
    • 云端增强:可选启用 Apple Private Cloud Compute 提升识别准确率,数据端到端加密,Apple 与开发者均无法读取;云端不可用时自动回退端侧模型。
  • 💳 卡片管理 (Card Management)
    • 支持添加自定义信用卡,设置复杂的返现规则(如:餐饮 5%,超市 3%,境外 3%)。
    • 模版库:内置常见香港银行(信银国际,汇丰香港/美国,工银亚洲等)模版,一键添加。
    • 多维规则:支持基于消费类别 (Category)消费地区 (Region)消费方式的混合计算逻辑。
    • 返现上限:支持按月/按年的上限统计,双币卡可选「并入本币上限」或「独立外币上限」两种模式。
  • 🏦 银行自动同步 (Bank Sync) 🚧 开发中
    • 通过 Plaid 绑定美国的信用卡与活期/储蓄账户,交易自动导入并交给现有费率引擎计算返现与积分。
    • 自动匹配卡片:按账户尾号匹配卡包里的卡;同尾号多张时由用户确认。
    • 智能去重:按「卡+日期+金额」做数量对齐,同一天同店的两笔相同金额不会被误判为重复。
    • 退款自动抵销:退款会冲掉对应的原始消费,返现与上限用量跟着回冲;还款和转账不会被误判成退款。
    • 新交易通知:银行有新交易时推送提醒(银行级,不含金额与商户)。
  • 🌍 多币种支持 (Multi-Currency)
    • 支持全球主流货币(CNY, USD, HKD, JPY 等)。
    • 实时汇率:集成 Frankfurter API,自动将外币消费换算为本币(CNY)进行统计。
    • 入账金额:支持记录消费原币金额与实际入账金额(解决银行汇率差问题)。
  • 📊 统计与导出
    • 账单分析、支出趋势、按卡的消费与返现汇总。
    • 收入单:匹配部分支出以计算实际利润。
    • 支持导出每月/每年消费为 CSV。
  • 🌐 多语言:简体中文、繁體中文、English。

🔒 隐私说明

手动记账的数据完全不离开你的设备 —— 仅保存在本地或你自己的 iCloud(基于 SwiftData),不上传、不收集。

启用「银行自动同步」后会引入一个自建后端,这部分需要说清楚:

  • 交易数据不在服务器留存。 后端每次向 Plaid 现取现回,响应发出后即不存在;服务器上没有任何交易流水的副本。
  • 拿不到完整卡号。 Plaid 的任何产品都不提供卡号(属于 PCI DSS 管辖范围),App 能看到的最详细信息是账户尾号。
  • 银行凭据加密存储。 Plaid 的 access_token 以 AES-256-GCM 加密入库,密钥不在数据库、也不在代码里。
  • 可随时退出。 解绑银行会先在 Plaid 侧撤销授权再删除本地记录;删除账号会一并解绑所有银行并撤销 Apple 登录授权。已导入的交易记录会保留在你的设备上。

不启用银行同步的话,App 不会与任何自建服务器通信。

🛠 技术栈

客户端 SwiftUI · SwiftData(+CloudKit) · Foundation Models · Vision · StoreKit 2 · AuthenticationServices
银行数据 Plaid(仅美国)
后端 🚧 Spring Boot · PostgreSQL · 部署于 Azure App Service
账号 Sign in with Apple

未来计划

已完成

  • ☑️ 导出每月/年消费量为 csv
  • ☑️ 生成针对每张卡的消费和返现表格
  • ☑️ 类原生 Apple Pay 界面
  • ☑️ 允许生成收入单,匹配部分支出,计算利润
  • ☑️ 货币类型支持更多国家
  • ☑️ 完善多币种信用卡的返现规则
  • ☑️ 统计信用卡返现上限
  • ☑️ 上架 TestFlight / App Store
  • ☑️ 多语言(简中/繁中/英文)

进行中 / 计划中

  • 🚧 银行账户自动同步(Plaid,仅美国)
  • ⬜️ 支持更多国家和地区的银行
  • ⬜️ 区分卡组织(Visa / Mastercard / AmEx 等)

目前已知的问题

  • 没有区分卡组织
  • 不确定在大量数据下系统稳定性如何
  • 银行同步仅支持美国的金融机构(Plaid 不覆盖中国大陆、香港等地)
  • 同步进来的交易固定按「美国」计算消费地费率
  • 通过第三方钱包(如 AlipayHK、PayPal)的支付会被归类为「其他消费」,因为银行数据无法反映真实的消费品类

关于本项目

  • 本人是第一次用 swift 开发,vibe coding 都使用的是 Gemini 和 Claude,如果有 bug 欢迎提 pr
  • App 已上架 App Store,可放心使用;但仍建议在大版本更新前,先在设置页导出一份数据备份

About

一个返现和账单计算器

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages