You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
extension/ Chrome extension: queue auto-join, drop intel
51
51
terraform/ GCP infra (Cloud Run, Firestore, LB, CDN, Scheduler)
52
52
test/
53
-
unit-test.js 312 unit tests
54
-
api-test.js 103 API integration tests
53
+
unit-test.js 313 unit tests
54
+
api-test.js 104 API integration tests
55
55
smoke-test.js 71 Playwright UI smoke tests
56
56
```
57
57
@@ -66,7 +66,7 @@ test/
66
66
-**Dashboard**: static files from `public/` served at `/` and `/admin`.
67
67
-**Docs**: Swagger UI at `/docs`, spec at `/docs/spec.json`.
68
68
69
-
On startup: eBay OAuth token pre-fetched, TCGdex card database loaded from Firestore cache (24h TTL), set names + logos loaded in parallel.
69
+
On startup: eBay OAuth token pre-fetched, TCGdex card database loaded from Firestore cache (no TTL, on-demand sync via `POST /api/card-database/sync`), set metadata (names + logos) loaded in parallel. Server waits for card DB and set metadata before accepting connections.
70
70
71
71
## Multi-region deployment
72
72
@@ -98,8 +98,10 @@ All caches use Firestore (shared across Cloud Run instances, single region). No
98
98
|`cache-ebay-sold`| 24 hours | eBay sold comp results |
99
99
|`price-history`| permanent | Sold comp prices over time |
100
100
|`api-keys`| permanent | Developer API keys (hashed) |
101
-
|`error-logs`| permanent | API errors with request IDs |
102
-
|`api-analytics`| 30 days | Request analytics (tier, path, latency) |
101
+
|`error-logs`| 30 days (TTL) | API errors with request IDs, type filter |
|`error-logs`| type + createdAt desc | Error filtering by type |
155
159
156
160
**ML dataset pipeline**: graded slab images (PSA/BGS/CGC/TAG) are passively collected into `grading-dataset` Firestore collection from multiple sources: eBay sold (via `track-prices` and `/api/sold`), magi sold (via `track-prices`), and any search with sold results (`/api/search`). Grade is parsed from listing title or grade label. `GET /api/grading-dataset/stats` monitors collection progress.
0 commit comments