{"plan":{"storageMode":"postgres-ready","postgresTables":[{"name":"users","purpose":"真实 Auth 接入后的用户资料和 provider 身份映射。","source":"data/users.json"},{"name":"market_price_snapshots","purpose":"原始市场价格快照，保留来源、城市、物品、品质和采集时间。","source":"data/market-price-snapshots.json"},{"name":"ingestion_batches","purpose":"采集任务审计记录，保留成功/失败、耗时、覆盖范围和错误原因。","source":"data/ingestion-batches.json"},{"name":"watchlist_rules","purpose":"用户关注规则和价格提醒阈值。","source":"data/watchlist-rules.json"},{"name":"watchlist_alert_history","purpose":"提醒扫描历史，用于通知中心和邮件队列。","source":"data/watchlist-alert-history.json"},{"name":"email_dispatch_history","purpose":"邮件提醒派发历史，用于去重和审计。","source":"data/email-dispatch-history.json"},{"name":"membership_subscriptions","purpose":"PayPal 订阅 webhook 落地后的真实会员状态。","source":"data/membership-subscriptions.json"},{"name":"saved_routes","purpose":"个人保存的搬砖路线和预估利润。","source":"data/saved-routes.json"},{"name":"route_executions","purpose":"个人路线的实际执行收益记录。","source":"data/saved-routes.json:executions"},{"name":"api_quota_usage","purpose":"Advanced 导出和 Data API 每日额度用量审计。","source":"data/api-quota-usage.json"}],"redisKeys":[{"key":"albion:market:dashboard:{server}","ttlSeconds":300,"purpose":"首页行情工作台聚合结果。"},{"key":"albion:market:opportunities:{server}:{filterHash}","ttlSeconds":180,"purpose":"城市价差榜筛选结果。"},{"key":"albion:daily-report:{server}:{date}","ttlSeconds":3600,"purpose":"每日行情日报和摘要。"},{"key":"albion:user:{userId}:routes","ttlSeconds":120,"purpose":"个人路线面板和收益记录。"},{"key":"albion:user:{userId}:watchlist","ttlSeconds":120,"purpose":"关注规则、提醒扫描和通知中心。"}],"schemaVersion":"2026-06-25-users"},"storage":{"mode":"postgres","databaseConfigured":true,"databaseReachable":true,"database":{"reachable":true,"schemaReady":false,"missingTables":["users","membership_subscriptions"],"writable":true,"nonWritableTables":[],"tables":{"users":{"rowCount":0},"marketPriceSnapshots":{"rowCount":5740,"latestCollectedAt":"2026-07-07T00:53:35.952Z"},"ingestionBatches":{"rowCount":41,"latestFinishedAt":"2026-07-07T00:53:35.953Z"},"watchlistRules":{"rowCount":0},"watchlistAlertHistory":{"rowCount":0},"emailDispatchHistory":{"rowCount":0},"savedRoutes":{"rowCount":0},"routeExecutions":{"rowCount":0},"membershipSubscriptions":{"rowCount":0},"apiQuotaUsage":{"rowCount":0}}},"jsonTotals":{"users":0,"marketPriceSnapshots":140,"ingestionBatches":0,"watchlistRules":2,"watchlistAlertHistory":2,"savedRoutes":0,"routeExecutions":0,"emailDispatchHistory":0,"membershipSubscriptions":0,"apiQuotaUsage":0},"differences":{"users":0,"marketPriceSnapshots":5600,"ingestionBatches":41,"watchlistRules":-2,"watchlistAlertHistory":-2,"savedRoutes":0,"routeExecutions":0,"emailDispatchHistory":0,"membershipSubscriptions":0,"apiQuotaUsage":0}},"migration":{"generatedAt":"2026-07-08T05:09:01.065Z","schemaVersion":"2026-06-25-users","readyForPostgres":true,"totals":{"users":0,"marketPriceSnapshots":5740,"ingestionBatches":41,"watchlistRules":0,"watchlistAlertHistory":0,"savedRoutes":0,"routeExecutions":0,"emailDispatchHistory":0,"membershipSubscriptions":0,"apiQuotaUsage":0},"sourceFiles":{"users":"data/users.json","market_price_snapshots":"data/market-price-snapshots.json","ingestion_batches":"data/ingestion-batches.json","watchlist_rules":"data/watchlist-rules.json","watchlist_alert_history":"data/watchlist-alert-history.json","email_dispatch_history":"data/email-dispatch-history.json","membership_subscriptions":"data/membership-subscriptions.json","saved_routes":"data/saved-routes.json","route_executions":"data/saved-routes.json:executions","api_quota_usage":"data/api-quota-usage.json"},"warnings":[]},"generatedAt":"2026-07-08T05:09:01.065Z"}