init projectmycelium
This commit is contained in:
65
docs/dev/design/archive/vision/ux/current_personas.md
Normal file
65
docs/dev/design/archive/vision/ux/current_personas.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Current Personas and Fixture-backed Marketplace State
|
||||
|
||||
Last Updated: 2025-08-09
|
||||
|
||||
This document captures the canonical demo/test state of the Project Mycelium when running with fixtures.
|
||||
It enables developers and reviewers to reproduce the exact marketplace state and verify the intended UX.
|
||||
|
||||
- Data Source: fixtures (filesystem)
|
||||
- How to run:
|
||||
- APP_DATA_SOURCE=fixtures
|
||||
- APP_FIXTURES_PATH=./user_data
|
||||
- APP_DEMO_MODE=true (optional banner and safe guards)
|
||||
- APP_ENABLE_MOCKS=false (we do not rely on MockDataService)
|
||||
|
||||
## Snapshot
|
||||
|
||||
- Users: 10 (user1..user10)
|
||||
- Providers: user1..user3
|
||||
- Mixed (provider+buyer): user4..user6
|
||||
- Buyers: user7..user10
|
||||
- Products: 3 (seeded; will expand)
|
||||
- WireGuard VPN (category: applications) — provider: user1@example.com — featured
|
||||
- Public Gateway Bundle (category: gateways) — provider: user2@example.com
|
||||
- Object Storage (100GB) (category: applications) — provider: user3@example.com
|
||||
- Services: TBD
|
||||
- Orders: TBD
|
||||
|
||||
## Personas (credentials for demo)
|
||||
|
||||
These credentials are for demo/test environments only. Do not ship to production.
|
||||
|
||||
| Persona | Email | Password | Roles |
|
||||
|---------|---------------------|----------|---------------------|
|
||||
| user1 | user1@example.com | password | ["provider"] |
|
||||
| user2 | user2@example.com | password | ["provider"] |
|
||||
| user3 | user3@example.com | password | ["provider"] |
|
||||
| user4 | user4@example.com | password | ["provider","buyer"] |
|
||||
| user5 | user5@example.com | password | ["provider","buyer"] |
|
||||
| user6 | user6@example.com | password | ["provider","buyer"] |
|
||||
| user7 | user7@example.com | password | ["buyer"] |
|
||||
| user8 | user8@example.com | password | ["buyer"] |
|
||||
| user9 | user9@example.com | password | ["buyer"] |
|
||||
| user10 | user10@example.com | password | ["buyer"] |
|
||||
|
||||
## Ownership and Data Rules
|
||||
|
||||
- No orphan data: every product/service has an owner_user_id.
|
||||
- Orders link buyer_user_id -> items -> product_id/service_id.
|
||||
- Future payments will be linked via payment records.
|
||||
|
||||
## Known Scenarios to Verify
|
||||
|
||||
- Buyer journey (add to cart, buy-now, view invoice).
|
||||
- Provider publishing a product/service and seeing it live.
|
||||
- Insufficient balance UX contract where applicable.
|
||||
|
||||
## Reset and Updates
|
||||
|
||||
- Reset to seed (planned): cargo run -- seed --reset
|
||||
- Fixtures path: ./user_data
|
||||
- Versioning: see ./user_data/version.json
|
||||
|
||||
## Change Log
|
||||
|
||||
- 2025-08-09: Initial scaffold with 10 demo users, pending product/service/order seeds.
|
@@ -0,0 +1,75 @@
|
||||
# Manual Test Checklist — Fixtures Mode
|
||||
|
||||
Last Updated: 2025-08-10
|
||||
|
||||
This checklist validates the Project Mycelium when running with fixture data in `user_data/`.
|
||||
|
||||
## Prereqs
|
||||
- APP_DATA_SOURCE=fixtures
|
||||
- APP_FIXTURES_PATH=./user_data
|
||||
- APP_ENABLE_MOCKS=0
|
||||
- APP_CATALOG_CACHE=true
|
||||
- APP_CATALOG_CACHE_TTL_SECS=5
|
||||
- Optional: APP_DEMO_MODE=true
|
||||
- Command: `make fixtures-run` (or `make fixtures-check` to compile only)
|
||||
|
||||
## Personas
|
||||
- Users: `user1@example.com` … `user10@example.com`
|
||||
- Password: `password`
|
||||
- Roles: see `docs/dev/design/current/ux/current_personas.md`
|
||||
|
||||
## Sanity: Products and Categories
|
||||
- [ ] Home/Marketplace page loads without error.
|
||||
- [ ] Exactly 3 seeded products are visible:
|
||||
- WireGuard VPN (applications) — featured
|
||||
- Public Gateway Bundle (gateways)
|
||||
- Object Storage (100GB) (applications)
|
||||
- [ ] Categories auto-derived include `applications` and `gateways`.
|
||||
- [ ] Featured section shows WireGuard VPN.
|
||||
- [ ] Product detail page renders for each seeded product (name, description, price, provider).
|
||||
|
||||
## Dev Cache Behavior (Phase 0)
|
||||
- [ ] With `APP_CATALOG_CACHE=true` and `APP_CATALOG_CACHE_TTL_SECS=5`, refresh the marketplace twice within 5s; second load should be faster locally and show identical results.
|
||||
- [ ] Edit a product field in `user_data/products.json` temporarily; refresh before TTL → old value; after TTL (or restart) → new value. Revert the edit after the check.
|
||||
- [ ] No duplicate products appear across sections due to catalog deduplication.
|
||||
- [ ] Category pages reflect normalized singular IDs (e.g., `applications` → `application`).
|
||||
|
||||
## Search and Filters
|
||||
- [ ] Search "vpn" returns WireGuard VPN.
|
||||
- [ ] Search "storage" returns Object Storage (100GB).
|
||||
- [ ] Filter by category `applications` shows 2 products; `gateways` shows 1 product.
|
||||
|
||||
## Cart Flow (user7@example.com - buyer)
|
||||
- [ ] Login as user7 → navigate back to marketplace.
|
||||
- [ ] Add WireGuard VPN to cart.
|
||||
- [ ] Cart badge updates immediately (global `emitCartUpdated` behavior) and persists on refresh.
|
||||
- [ ] Proceed to cart → item, price, currency are correct.
|
||||
- [ ] Checkout succeeds and creates an order entry.
|
||||
|
||||
## Buy-Now Flow (user8@example.com - buyer)
|
||||
- [ ] From product detail, click Buy Now for Public Gateway Bundle.
|
||||
- [ ] Order completes without error.
|
||||
- [ ] Orders dashboard shows the new order.
|
||||
|
||||
## Invoice View (both cart and buy-now)
|
||||
- [ ] From Orders dashboard, click "View Invoice" for each order.
|
||||
- [ ] Invoice page renders with correct order details.
|
||||
- [ ] Print dialog works (browser print-to-PDF acceptable).
|
||||
- [ ] Buy-now invoice is accessible (regression: endpoint falls back to persistent storage).
|
||||
|
||||
## Insufficient Balance UX
|
||||
- [ ] Attempt a purchase that should exceed balance (if needed, temporarily adjust product price or reduce user wallet balance in user JSON for testing).
|
||||
- [ ] Error follows the unified contract documented in architecture/prompt files (wording and structure consistent across flows).
|
||||
|
||||
## Provider Perspective (user1@example.com - provider)
|
||||
- [ ] Login as user1 and verify WireGuard VPN appears under provider listings (if such view exists) or can be filtered by provider.
|
||||
- [ ] Ensure provider name/email appears correctly on product detail.
|
||||
|
||||
## General
|
||||
- [ ] No references to MockDataService are used at runtime in fixtures mode (logs free of mock warnings).
|
||||
- [ ] Currency display matches configuration; prices render with expected currency code.
|
||||
- [ ] Static assets and templates load correctly; no console errors in browser.
|
||||
|
||||
## Notes / Findings
|
||||
- Record any discrepancies, missing data, or UX issues.
|
||||
- If changes are made to fixtures, re-run `make fixtures-check` and test again.
|
Reference in New Issue
Block a user