Files
SlabUploader/docs/PRODUCT.md
T
Ty 01aa4c52c3 docs(phase2): reconcile requirements and migrate capabilities/contracts
Surface-matrix sweep of every source doc; added nine missed behaviors (METADATA-115, REVIEW-50, APP-55/60/65, SETTINGS-45 mode, Generate-text availability, defaults-off). 153 requirements, 0 coverage gaps.

Migrated capabilities to docs/capabilities/ and contracts to docs/contracts/; added WOO-API, API, DATA-MODEL, PROMPTS, UX, TEST-SPEC. Populated MILESTONES; branch-neutral trunk docs; renamed umbrella term to Woo Slab Taxonomy. Archived reconciliation working records under .audit/archive/.
2026-09-18 21:02:06 -07:00

69 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Product overview
SlabUploader creates one WooCommerce listing per wood slab for Whidbey Wood Store.
Each slab is one unit and one listing. Photos and metadata are the inventory record.
Photographs are taken of the slab on a green or black sheet. That is the capture starting state.
Owner: Ty. Store: https://www.whidbeywoodstore.com/
## Complete listing
A finished listing has:
- Inventory photo(s), uniform 3:4 transparent PNG
- SKU, length, thickness, price
- Species, wood category, edge type, figure, grade
- Thickness band, moisture
- Optional `fig-*` tags
- Title, short_description, description
- Zero or more `feat-*` tags
Store categories, attributes, and `fig-*` / `feat-*` tags are the filters shoppers use. When content generation runs, the model writes the prose; deterministic templates are the fallback and inject the measured values.
The locked name for that synced taxonomy package is **Woo Slab Taxonomy**. Details live in `docs/capabilities/CREATE.md`.
## Decision rights
| Field | Source |
|---|---|
| Length, thickness | User |
| SKU | User |
| Mask and crop | App proposal, user approve |
| Widths, sqft, bdft | App, from approved reference photo + length + thickness |
| Species, wood category, edge, figure, grade, tags | App may propose; user may change |
| Price | App proposal `bdft × species $/bdft`; user may replace |
| Title, short_description, description | Model or template from listing facts; user may edit |
User-entered length, thickness, SKU, price, and taxonomy override computed or inferred values.
## System seams
Milestones 1 and 2 run in the browser. No backend and no inference URL on the shipped path.
Milestone 1 handoff is the device draft: source photo, approved mask, inventory PNG, length, thickness, widths, sqft, bdft.
Milestone 2 extends the draft with the photo batch, calibration choice, per-photo inventory PNGs, and the dimension-overlay calibration copy.
Milestone 3 introduces FastAPI as the Woo client and inference proxy. Store credentials and inference secrets stay on the server. Spec: `docs/capabilities/CREATE.md`.
## Create rules (summary)
Full behavior is in `docs/capabilities/CREATE.md`.
- `SLAB-UAT-*` creates as a WooCommerce draft (store status).
- Duplicate SKU blocks create.
- A listing can be created with inference off.
- A device draft in the app is separate from a WooCommerce draft.
## Milestone status
| Milestone | Spec | Status |
|---|---|---|
| 1 Capture | `docs/capabilities/CAPTURE.md` | Shipped |
| 2 Photos | `docs/capabilities/PHOTOS.md` | Shipped (UAT `:10881`) |
| 3 Create | `docs/capabilities/CREATE.md` | Scope is the M3 ID set in `docs/MILESTONES.md`. Exit: submission-ready for WooCommerce. |
Scope is the M3 requirement subset in `docs/MILESTONES.md`; `docs/REQUIREMENTS.md` is normative.