主判断
价值链是“扫食品 -> 判 UPF/NOVA -> 历史/日记 -> premium”
新用户先经历问卷、UPF 教育和相机权限,再进入条码扫描、配料表拍照、餐食拍照或搜索。结果页围绕 processed level、NOVA 解释、配料/添加剂原因和分享传播构建。
基于 APK 静态报告和 blutter Flutter AOT 输出,恢复产品链路、接口面、扫码/图像识别实现线索、可复刻 MVP 和静态 stop point。未进行真机、MITM、账号登录或购买沙盒验证。
主判断
新用户先经历问卷、UPF 教育和相机权限,再进入条码扫描、配料表拍照、餐食拍照或搜索。结果页围绕 processed level、NOVA 解释、配料/添加剂原因和分享传播构建。
技术边界
CameraX、mobile_scanner、MLKit barcode、libbarhopper 和 tflite barcode 模型证明本地条码识别;配料 OCR、餐食识别、processed score 和 NOVA 分类没有恢复出完整本地规则,更像后端服务。
research/app-package-forensics/processed-upf-food-scanner/apk-pure-latest/report.htmlresearch/app-package-forensics/processed-upf-food-scanner/apk-pure-latest/analysis.jsonresearch/app-package-forensics/processed-upf-food-scanner/apk-pure-latest/activity-triage.htmldata/extracted/package_forensics/runs/20260610-flutter-arm64-focus/processed-upf-food-scanner/deep-tools/flutter-aot/arm64-v8a/apk_contents__config.arm64_v8a.apkobjs.txt、pp.txt、blutter_frida.js、asm/processed_app/**| Route / 页面 | 证据关键词 | 产品含义 |
|---|---|---|
/onboarding | QuestionScreen、questions/:questionIndex | 收集吃后感受、是否看配料、想改善什么。 |
/onboarding/join-movement | JoinMovementScreen、activeUsers | 社群/运动式信任构建。 |
/home | RecentScansSection、RecentArticlesSection、HomeStats | 扫描历史、内容教育、统计聚合。 |
/scan / /scan/camera | Scan Barcode、Scan Ingredients、UnifiedCameraService | 统一扫描入口,切换条码/配料/餐食模式。 |
/scan/result | ScanResultScreen、ProcessingType、NOVA | 食品详情和评分结果。 |
/scan/add-meal / /scan/meal-results | MealService、classification、portion | 餐食拍照、补充问题、结果和日记。 |
/scans / /diary | AllScans、My List、MealLogsProvider | 历史、收藏/购物清单、饮食日记。 |
/profile / /settings | Get Premium、restorePurchases、Delete Account | 订阅恢复、会员状态、账号删除。 |
首次价值:静态字符串显示 Start Scanning、Skip and Start Scanning、Launching camera on first home screen visit,说明新用户路径偏向先获得一次扫描结果。
付费包装:Upgrade to Premium、Unlimited food scans & meal captures、RevenueCat paywall/customer center 说明订阅卖点围绕扫描次数、餐食拍照和会员状态。
主 API base URL:https://api.processedapp.com/api/v2。认证线索包括 Firebase ID token 的 Authorization header 和 x-api-key header 名称;本报告不记录任何值。
| API 面 | 证据关键词 | 能确认的能力 | 静态边界 |
|---|---|---|---|
/scanning/barcode | BarcodeService、barcode request body | 条码上送后端,返回食品扫描结果。 | 数据库来源和评分公式未知。 |
/scanning/product/{barcode} | /scanning/product/、scanRecorded | 按 barcode 拉详情并记录扫描。 | path 拼接和缓存策略需动态确认。 |
/scanning/manual | ingredientsImage、base64 image | 配料表图像/文本分析。 | OCR/LLM/规则引擎 vendor 未知。 |
/meals/init | initMeal、sessionId | 餐食图片分析初始化。 | 服务端处理队列和模型未知。 |
/meals/analyze | answers、classification、portion | 结合补充问题生成餐食结果。 | 权重、阈值和置信度未知。 |
/meals/logs | startDate、endDate | 食品日记和历史。 | 分页/一致性细节未知。 |
/list | My List、barcodes | 收藏/购物清单同步。 | exact method 和幂等语义需动态确认。 |
/premium/verify | RevenueCat sync、premium reconciliation | 会员状态服务端校验。 | entitlement id 和价格未知。 |
/feedback | stars、improvements、more | 应用内反馈。 | 后端流向未知。 |
/account | delete account、reauthenticate | 删除账号。 | 服务端删除范围和 SLA 未知。 |
| Host / URL | 证据关键词 | 用途判断 |
|---|---|---|
processedapp.com/wp-json/wp/v2/posts | ArticleService、cached_articles_v1 | WordPress 文章内容,支撑教育和 SEO。 |
processedapp.com/processing-classifications/ | 结果页/分享链接 | NOVA/processing 分类解释。 |
world.openfoodfacts.org/cgi/search.pl | search_terms、states_tags、ingredients_text | 食品搜索候选和公开食品库补充。 |
可确认 Auth、匿名登录、Google 登录、Firebase ID token、Realtime Database appConfig/activeUsers.json、Crashlytics、sessions/datatransport。
字段线索有 update_requirement、min_build_number、latest_build_number,用于 optional/required update modal。
manifest 和 Dart 侧均有 RevenueCat paywall/customer center、CustomerInfo、Offerings、restore purchases 和服务端 /premium/verify。
Firestore 边界:只看到 Firestore timestamp 兼容解析线索,未看到足以证明客户端直连 cloud_firestore 的强证据。
广告/归因边界:只见 ads identifier 类间接依赖,未看到 AdMob placement、AppsFlyer、Adjust、Branch、Facebook、PostHog、Amplitude 或 Mixpanel 的强证据。
本地可确认
mobile_scanner channels:条码事件和方向。libbarhopper_v3.so、libimage_processing_util_jni.so、barcode tflite 模型。更像远端
/scanning/manual + ingredientsImage。/meals/init -> sessionId -> /meals/analyze。classification、processedLevel、warnings 由 API 返回。| 对象/字段 | 静态证据 | 判断 |
|---|---|---|
ProcessingType | wholeFood、minimal、processed、ultraProcessed | 客户端有 NOVA 1-4 风格展示模型。 |
MealResult | classification、processedLevel、mainIngredient、portion、warnings | 餐食结果结构清晰,但计算过程不在客户端完整暴露。 |
HomeStats | score、averageScore、breakdown、last30Days | 有留存/进度统计表达。 |
| Open Food Facts | product_name、ingredients_text、states_tags、code | 公开库用于搜索/候选,正式评分仍需后端确认。 |
相机 + MLKit barcode + Open Food Facts + 简单 UPF 规则,扫一次即返回 NOVA 1-4、命中原因、低风险替代建议。
条码缺失时上传配料表图片到后端,用 OCR/vision 提取 ingredients;unknown 时明确标注不确定,不伪装确定性。
第 2-3 次扫描后触发 paywall,卖 unlimited scans、meal captures、history sync、diary stats 和 deep ingredient explanation。
blutter_frida.js hook ApiService、BarcodeService、MealService、RevenueCatService。