🎬 个人项目:生存余量 (Runway) - 极简个人财务推演工具
📌 项目简介 本项目是一款基于跨平台框架 (Expo/React Native) 开发的极简财务预算与推演应用。应用最初面临严苛的苹果 App Store 审核挑战,经过敏捷的商业化重构,成功转型为一款合规的纯粹财务工具。 针对当代年轻人的财务规划需求,应用将经典的经济学公式(资产 ÷ 消耗率 = 财务跑道)具象化。用户不仅可以直观计算存款的剩余支撑天数,更可通过内置的“沙盘推演”引擎,通过交互式滑块实时模拟资金变动对未来趋势的绝对影响,为“反脆弱”的财务决策提供直观依据。
核心价值: 本项目不仅是一次完整的从 0 到 1 的独立开发实践,更是一场真实的商业规则博弈。它展示了如何在遭遇平台合规性拒审(Guideline 1.1.6)后,通过精准的产品定位转换与功能升维(打破 Guideline 4.2 最低功能限制),化危为机,将一个简单的工具重塑为具有深度交互价值的 FinTech 资产。
💡 设计思路与反思 (Product Philosophy) 化恐慌为理智(产品重定位): 项目初期曾采用带有生存焦虑色彩的设计,但在遭到苹果审核团队关于“误导性/令人不适内容”的警告后,我迅速剥离了所有死亡相关的术语与视觉元素。将界面从压抑的主题重塑为以深色和生长绿为主的极简金融风格,用理性的“财务跑道”取代了感性的“生命倒计时”。 交互深度即护城河(防 4.3 策略): 极其简单的除法计算器极易被商店判定为“低价值 Spam”。为提升原生应用的核心竞争力,我摒弃了静态的数据展示,引入了动态趋势图与实时交互滑块。让应用从“被动显示器”进化为“主动模拟器”。 AI 驱动的敏捷重构: 深度结合 Trae 等 AI 辅助工具进行代码重构。通过精准的提示词工程 (Prompt Engineering),在极短时间内完成了全局变量去敏、UI 组件抽离以及复杂跨平台兼容性问题的定位与修复,大幅缩短了迭代周期。
🛠️ 技术栈
| 模块 | 技术选型 | 核心作用 |
|---|---|---|
| 跨平台架构 | React Native (Expo) | 构建 iOS 与 Web 端高度一致的 UI 视图与底层逻辑 |
| 交互与可视化 | react-native-chart-kit, Slider | 实现财务跑道趋势的动态绘制与参数调节的双向绑定 |
| 状态与持久化 | React Hooks, AsyncStorage | 管理复杂的拖拽状态响应,并实现极简的本地无感数据持久化 |
| AI 辅助流 | Trae (Claude 3.5/GPT-4o) | 承担代码大批量审查、变量清洗、正则替换及兼容性方案输出 |
🚀 核心功能 📊 可视化财务跑道 (Financial Projection): 彻底告别枯燥的纯数字面板。通过底层图表渲染引擎,将用户的静态资产转化为一条随时间递减的平滑曲线,资产枯竭的临界点一目了然。 🎛️ 实时沙盘推演 (What-If Simulation): 行业标准的 Fintech 交互体验。提供“削减日常开支”与“注入紧急备用金”两组滑动控制器。用户拖拽滑块时,图表引擎在毫秒级内重新计算并重绘整条预测曲线,提供丝滑的“所见即所得”决策反馈。 💾 极简本地记忆 (Zero-Friction Tracking): 利用 AsyncStorage 实现数据的本地加密持久化。应用会记住用户的财务现状,消除每次启动重复输入的摩擦力,即开即用,保障绝对的个人隐私。
⚔️ 技术亮点与挑战 (Challenges & Solutions)
挑战一:React Native Web 端的触控事件兼容性断层
问题: 在 Windows 环境下使用浏览器进行 Web 调试时,原生 Slider 组件无法响应鼠标的拖拽事件(仅支持移动端 Touch 事件),导致核心的沙盘推演功能在网页端直接瘫痪。
方案: 引入 Platform 环境侦测模块实施防御性渲染。针对 web 环境强制降级并劫持渲染为 HTML 标准的 <input type="range"> 组件,重新封装 onChange 事件并与 React 状态对齐,以极低的成本完美打通了双端的交互体验。
挑战二:浮点数精度溢出与 React 状态冻结
问题: 沙盘推演的滑块在拖动时,由于底层计算产生了超长浮点数(如 -40.9827%),导致图表组件接收非法 Props 从而引发前端白屏崩溃;同时未绑定的受控组件导致滑块 UI 冻结。
方案: 重新梳理单向数据流。在组件层为滑块严格配置 step 步长阈值,在逻辑层引入强类型转换与格式化清洗,确保前端渲染和图表引擎接收的始终是绝对安全的有效数值。
挑战三:App Store 严苛的 1.1.6 审核条款阻击
问题: 原始应用涉及“寿命预测”,被机器扫描与人工审核双重拦截,面临产品胎死腹中的绝境。
方案: 执行彻底的代码级去敏战役。撰写结构化的英文指令,指挥 AI 遍历整个工程,将所有诸如 death_date 的危险变量全部重构为 runway_days。并在重新提交时,向审核委员会提供了极具针对性的申诉文档,阐明了经济学公式底层逻辑,最终成功突围。
📝 结语 Runway 是一次将技术、设计与商业规则深度融合的实战演练。 作为一名正在从应用化学向软件工程与产品设计转型的学生,这个项目让我深刻体会到:优秀的代码只是基石,真正能让产品存活并创造价值的,是对平台规则的敬畏、对用户心理的把控,以及面对报错与拒审时的系统性破局能力。