docs(33): capture phase context
This commit is contained in:
138
.planning/phases/33-currency-system/33-DISCUSSION-LOG.md
Normal file
138
.planning/phases/33-currency-system/33-DISCUSSION-LOG.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Phase 33: Currency System - Discussion Log
|
||||
|
||||
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
||||
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
||||
|
||||
**Date:** 2026-04-13
|
||||
**Phase:** 33-Currency System
|
||||
**Areas discussed:** Data model & source currency, Conversion strategy, User experience & display, Catalog & sharing implications
|
||||
|
||||
---
|
||||
|
||||
## Data Model & Source Currency
|
||||
|
||||
### Core pricing model
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Per-item source currency | Add priceCurrency column alongside priceCents | |
|
||||
| Per-user base currency only | All prices assumed in user's currency | |
|
||||
| Everything stored as USD | Normalize to USD on entry | |
|
||||
| Market-specific pricing | Prices are market-specific, not converted. Different markets have different UVP/MSRP | ✓ |
|
||||
|
||||
**User's choice:** Market-specific pricing — not just exchange rate conversion. A €2,000 bike in Germany may be £2,200 in the UK because that's the UK market price, not a conversion.
|
||||
**Notes:** User emphasized that German UVP (MSRP) can be completely different from UK or US retail prices. This is a market reality, not a conversion problem.
|
||||
|
||||
### Community price data
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| On catalog detail page | "Report your price" button | |
|
||||
| During add-to-collection | Capture when adding item | |
|
||||
| Both (tied to ownership) | Only report for items you own, auto-captured from collection | ✓ |
|
||||
|
||||
**User's choice:** Both, but tied to collection ownership — you can only report prices for items you have. Prevents duplicates.
|
||||
**Notes:** User also identified that candidate "price I found it for" is research-quality data. Purchase date should be tracked for temporal context.
|
||||
|
||||
### Scope check
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Foundation layer | UVP display + conversion, community data later | |
|
||||
| Full system | Everything: market prices, community submissions, conversion | ✓ |
|
||||
| Let's scope it together | Walk through each piece | |
|
||||
|
||||
**User's choice:** Full system in Phase 33.
|
||||
|
||||
---
|
||||
|
||||
## Conversion Strategy
|
||||
|
||||
### Rate source
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Free API (ECB/frankfurter.app) | Daily rates, no API key, ~30 currencies | ✓ |
|
||||
| Paid API (Open Exchange Rates) | More currencies, intraday, ~$12/mo | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** Free API — ECB via frankfurter.app
|
||||
|
||||
### Conversion location
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Server-side | Server fetches rates, returns converted prices | ✓ |
|
||||
| Client-side | Client converts locally | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** Server-side
|
||||
|
||||
---
|
||||
|
||||
## User Experience & Display
|
||||
|
||||
### Market/locale detection
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Manual setting only | User picks market in settings | |
|
||||
| Auto-detect + manual override | Browser locale / IP, changeable | |
|
||||
| Tied to currency choice | Currency = market, with auto-suggestion | ✓ |
|
||||
|
||||
**User's choice:** Currency tied to market (EUR=EU, GBP=UK, USD=US) with auto-suggestion from browser locale and IP geolocation. Best of both worlds.
|
||||
|
||||
### Converted price display
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Prefix with ~ and muted style | ~£1,720 with tooltip | |
|
||||
| Dual display | €2,000 (~£1,720) — source prominent, converted in parens | ✓ |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** Dual display
|
||||
|
||||
---
|
||||
|
||||
## Catalog & Sharing Implications
|
||||
|
||||
### Catalog detail page
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| User's market first, others expandable | Local UVP + community avg prominent, other markets collapsible | ✓ |
|
||||
| All markets in a table | Price table showing all markets at once | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** User's market first, others expandable
|
||||
|
||||
### Shared setup prices
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Owner's original prices | Show in owner's currency with conversion toggle | |
|
||||
| Viewer's market prices | Auto-convert to viewer's currency | |
|
||||
| Layered disclosure | Card: viewer's market MSRP. Detail: full breakdown including owner's price | ✓ |
|
||||
|
||||
**User's choice:** Layered — card shows viewer's market MSRP, detail page shows full breakdown (owner's price, all market MSRPs, community averages).
|
||||
|
||||
### Comparison table currencies
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Normalize to user's currency | All candidates in viewer's currency, marked as approximate | ✓ |
|
||||
| Source currency with tooltip | Each in source currency, hover for conversion | |
|
||||
| You decide | Claude picks | |
|
||||
|
||||
**User's choice:** Normalize — mixed currencies (EUR, USD, JPY, TRY) are useless for comparison. Rough converted price gives direction even if not exact. Users can add their own researched "price I found it for."
|
||||
|
||||
## Claude's Discretion
|
||||
|
||||
- Rate caching strategy
|
||||
- Schema design for market prices table
|
||||
- Community price aggregation approach
|
||||
- Transition from current simple priceCents model
|
||||
|
||||
## Deferred Ideas
|
||||
|
||||
None — discussion stayed within phase scope.
|
||||
Reference in New Issue
Block a user