docs(m2): #58 EXIF bottom + Photos-ready lineup order

Lock Ty’s decisions: width stations start 6in from EXIF-oriented
photo bottom along the approved length axis; lineup is clean cal,
dimension overlay, then other batch PNGs in capture order.
This commit is contained in:
grokbot_ty
2026-09-15 21:04:16 +00:00
parent 2eb825c84e
commit ab5bdafbd8
+12 -4
View File
@@ -16,7 +16,7 @@ Phone capture of one slab → a lined-up set of Woo-compatible inventory PNGs, p
3. App runs the Milestone 1 workflow on that calibration photo only: Mask → Length axis → Measure (length `L`, thickness, Calculate). 3. App runs the Milestone 1 workflow on that calibration photo only: Mask → Length axis → Measure (length `L`, thickness, Calculate).
4. After Calculate, the app applies the approved mask sheet and sensitivity, and the same crop rules (3:4 portrait, 80% fill, transparent PNG, shorter-side floor), to every other photo in the batch. 4. After Calculate, the app applies the approved mask sheet and sensitivity, and the same crop rules (3:4 portrait, 80% fill, transparent PNG, shorter-side floor), to every other photo in the batch.
5. App adds a second copy of the calibration inventory PNG with dimension overlays burned in (see Dimension overlay). 5. App adds a second copy of the calibration inventory PNG with dimension overlays burned in (see Dimension overlay).
6. User sees: all formatted inventory PNGs lined up for preview, and the Milestone 1 calibration details (widths, sqft, bdft, scale, clean calibration PNG) presented as in Measure. 6. User sees Photos ready: inventory PNGs lined up in this order — clean calibration PNG, then the dimension-overlay copy of the calibration PNG, then the other batch photos in capture order — plus the Milestone 1 calibration details (widths, sqft, bdft, scale) presented as in Measure.
A batch of one photo still works: that photo is the calibration photo; the end set is the clean PNG plus the dimension-overlay copy. A batch of one photo still works: that photo is the calibration photo; the end set is the clean PNG plus the dimension-overlay copy.
@@ -25,7 +25,7 @@ A batch of one photo still works: that photo is the calibration photo; the end s
1. Batch — add one or more photos; continue when the batch has at least one. 1. Batch — add one or more photos; continue when the batch has at least one.
2. Pick calibration — user chooses which batch photo is the reference. 2. Pick calibration — user chooses which batch photo is the reference.
3. Mask / Length axis / Measure — Milestone 1 states on the calibration photo only. 3. Mask / Length axis / Measure — Milestone 1 states on the calibration photo only.
4. Photos ready — lined-up inventory PNGs for every batch photo, plus the dimension-overlay copy of the calibration PNG, plus Milestone 1 numbers. 4. Photos ready — lineup order: clean calibration PNG → dimension-overlay copy → other batch photos in capture order; plus Milestone 1 numbers.
Device draft restores the last approved state, including the batch and which photo was calibration when those exist. Device draft restores the last approved state, including the batch and which photo was calibration when those exist.
@@ -46,7 +46,14 @@ A second copy of the **calibration** inventory PNG is added to the collection. O
Orientation follows the **user-approved length axis** from Milestone 1 (not the upright edges of the photo). Orientation follows the **user-approved length axis** from Milestone 1 (not the upright edges of the photo).
- **Length:** dimension graphic beside the wood on the right in axis-space (outside the slab edge along the length direction). - **Length:** dimension graphic beside the wood on the right in axis-space (outside the slab edge along the length direction).
- **Widths:** stations every 12 in along the approved length axis, starting 6 in from one end of the slab span, continuing while the station is not within 6 in of the other end (stations at 6, 18, 30, … in inches along the axis while ≤ `L − 6`). Each width is drawn across the wood perpendicular to the length axis, with arrow tips on the left and right slab edges and the measurement text on that line. - **Widths:** stations every 12 in along the approved length axis, starting 6 in from the **bottom** of the slab span, continuing while the station is not within 6 in of the top (stations at 6, 18, 30, … in inches along the axis while ≤ `L − 6`). Each width is drawn across the wood perpendicular to the length axis, with arrow tips on the left and right slab edges and the measurement text on that line.
- **Bottom:** after the calibration photo’s EXIF orientation is applied, the bottom edge of that oriented photo establishes which end of the slab is bottom for width stations. Length-axis direction still follows the user-approved Milestone 1 axis; EXIF only picks which end is bottom vs top along that span.
## Photos-ready order
1. Clean calibration inventory PNG
2. Dimension-overlay copy of the calibration PNG
3. Remaining batch inventory PNGs in capture order
The clean calibration PNG remains in the set. The annotated copy is extra. The clean calibration PNG remains in the set. The annotated copy is extra.
@@ -56,7 +63,8 @@ On a phone UAT build:
- User can capture 1–N photos, pick calibration, complete Milestone 1 on that shot, and see every successful batch photo as a 3:4 transparent inventory PNG lined up. - User can capture 1–N photos, pick calibration, complete Milestone 1 on that shot, and see every successful batch photo as a 3:4 transparent inventory PNG lined up.
- Calibration measures match Milestone 1 presentation. - Calibration measures match Milestone 1 presentation.
- Dimension-overlay copy of the calibration PNG is present with black length and width graphics oriented to the approved axis. - Dimension-overlay copy of the calibration PNG is present with black length and width graphics oriented to the approved axis; width stations start 6 in from EXIF-established bottom.
- Lineup order is clean calibration → dimension overlay → other batch photos in capture order.
- No Woo create. No inference URL. - No Woo create. No inference URL.
## Out of scope ## Out of scope