iOS Widget 发布签名踩坑:pbxproj、entitlements 与 aps-environment背景:主 App 能发,Widget 却签不过某 AI 日记应用iOS 客户端在 2026-10-15 迎来小组件与灵动岛(一次提交:iOS widgets and dynamic island, comic sharing and orientat...2026-10-28项目实践
OTA 签名更新与 EdgeOne 加速:热更新也要防篡改背景:不经过 App Store,也能修东西某 AI 日记应用是 Expo / React Native 应用,iOS 客户端是主要载体之一。发版有两条路:走 App Store 审核、更新整个 App;或 OTA(Over-The-Air...2026-10-07项目实践
蓝绿零停机部署:一台 VPS 上的双槽位滚动发布背景:一台 VPS,也要零停机某 AI 日记应用服务端跑在一台 VPS 上。小团队常见部署是“停旧、起新”:先停旧容器再拉起新容器,中间几秒到几十秒空窗,用户正好在写日记、提交时撞上发布窗口,就会遇到连接失败。对日记应用来说,这种中断尤其糟糕。 20...2026-09-16项目实践
Vercel SPA 深链 404:三次改写失败的复盘背景:首页能开,深链全是 404某 AI 日记应用的前端是单页应用(SPA)。SPA 有个部署特点:首次打开首页,服务端返回一个 HTML 入口,之后页面切换由前端路由在浏览器里完成;但用户直接打开深链如 /home,或刷新子页面,服务端必须把请求也...2026-08-26项目实践
API v2 拆分:游标分页、懒加载与 ETag 304背景:一个大接口撑不住了某 AI 日记应用是 Expo / React Native 统一客户端加服务端的 AI 日记 / 漫画应用。早期客户端常走一个很“全”的入口:一次请求想把聊天、日记、书库、总览都拿回来。数据量小的时候很舒...2026-08-05项目实践
从 SQLite 到 PostgreSQL:48 张表的迁移与 Redis 协调 说明:本次草稿依据提交记录,未逐行核对实现。提交未给出迁移脚本的具体 SQL 与细节;查不到的只讲思路,不编造迁移脚本的具体 SQL。 背景:SQLite 到此为止本项目服务端早期用 SQLite,后来切换到 PostgreSQL。一次提交(20...2026-07-15项目实践
短信验证码:阿里云 PNVS 接入、腾讯兜底与发送限流 说明:本次草稿依据提交记录,未逐行核对实现。提交未给出阿里云 API 的具体参数与细节;查不到的只讲思路,不编造阿里云 API 的具体参数名。 背景:短信是入口,也是最易被滥用的入口在本项目,手机号验证码是统一登录入口的一部分。README 记载...2026-06-24项目实践
Apple Sign-in:原生与 Web 双端接入及双域名容灾 说明:本次草稿依据提交记录,未逐行核对实现。提交未给出回调地址与配置细节;查不到的只讲思路,不编造回调 URL 的具体值。 背景:入口统一,接入方式不同本项目的登录取向很明确:手机号验证码、Google 与 Apple 走统一注册、登录入口,按 ...2026-06-03项目实践
角色向导与多风格肖像:从一张参考照到可复用的角色 说明:本次草稿依据提交记录,未逐行核对实现。提交未给出模型、参数与细节;查不到的只讲思路,不编造具体生成模型名或参数。 背景:角色是日记与漫画的共同底座在某 AI 日记应用,角色不只是一个头像。它要同时服务于写日记时的聊天参考与生成漫画时的人物形...2026-05-13项目实践
漫画生成流水线:风格工厂、Prompt 编译与多页阅读器 说明:本次草稿依据提交记录,未逐行核对实现。提交只写了做了什么,未给出每一处细节;查不到的,本文只讲思路,不补具体文件名、函数名与参数。 背景:难点在“成组”,不在“单张”某 AI 日记应用是 AI 日记应用:先写日记、聊天,再把一天变成内容。漫...2026-04-22项目实践