docs: Scout re-review to v0.6.2+14
Refresh product strategy, code review, User's Guide, and Dashboard after latest tallyflow-assets-iot pull: Edge optional toggle, tag decode sheet, Locate hit indicator, Collect clear/sort, SDG RAIN CIN filter fix.
This commit is contained in:
@@ -20,10 +20,10 @@ All core repos reviewed and documented in `Product/Code Reviews/`. Key themes:
|
|||||||
- [[Product/Code Reviews/Code Review Notes]]
|
- [[Product/Code Reviews/Code Review Notes]]
|
||||||
- [[Marketing/Messaging/Positioning]]
|
- [[Marketing/Messaging/Positioning]]
|
||||||
|
|
||||||
_Last updated: 2026-07-27_
|
_Last updated: 2026-07-30_
|
||||||
## Additional Roadmap Note (added later in session)
|
## Additional Roadmap Note (added later in session)
|
||||||
- **TallyFlow Assets (Mobile) + TallyFlow Edge integration** — Real-time location, sensor data, and zone-based workflows accessible directly from the mobile app.
|
- **TallyFlow Assets (Mobile) + TallyFlow Edge integration** — Real-time location, sensor data, and zone-based workflows accessible directly from the mobile app.
|
||||||
|
|
||||||
## Product naming (2026-07)
|
## Product naming (2026-07)
|
||||||
- **TallyFlow Scout** (`tallyflow-assets-iot`) — Collect / Verify / Locate handheld for **Edge**. Does not replace **Assets** (Core mobile).
|
- **TallyFlow Scout** (`tallyflow-assets-iot`) — Collect / Verify / Locate handheld for **Edge**. Does not replace **Assets** (Core mobile). Latest reviewed: **v0.6.2+14** (Edge optional toggle, tag decode sheet, Locate hit indicator).
|
||||||
- **TallyFlow Edge** — product name for former IoT; repo remains `tallyflow-iot`.
|
- **TallyFlow Edge** — product name for former IoT; repo remains `tallyflow-iot`.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# TallyFlow Scout
|
# TallyFlow Scout
|
||||||
|
|
||||||
**Status:** Active product (app v0.5.3+10 as of July 2026 review)
|
**Status:** Active product (app **v0.6.2+14** as of 2026-07-30 review; master `0e37633`)
|
||||||
**Repo:** `tallyflow-assets-iot` (package `tallyflow_scout`)
|
**Repo:** `tallyflow-assets-iot` (package `tallyflow_scout`)
|
||||||
**Pairs with:** **TallyFlow Edge** (repo `tallyflow-iot`)
|
**Pairs with:** **TallyFlow Edge** (repo `tallyflow-iot`) — optional; can run fully offline
|
||||||
**Does not replace:** **TallyFlow Assets** (`tallyflow_mobile`) — the Core-connected mobile app for enrollment, inventory, zone moves, seek-and-find, and scan-and-print
|
**Does not replace:** **TallyFlow Assets** (`tallyflow_mobile`) — the Core-connected mobile app for enrollment, inventory, zone moves, seek-and-find, and scan-and-print
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
@@ -11,15 +11,16 @@
|
|||||||
|
|
||||||
| Section | What it does |
|
| Section | What it does |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
| **Collect** | Scan barcode/RFID; submit reads to Edge as a **remote reader**, or **export CSV** when Edge is offline / not configured |
|
| **Collect** | Scan barcode/RFID; submit reads to Edge as a **remote reader**, or **export CSV** when Edge is offline / disabled / not configured |
|
||||||
| **Verify** | Scan a GS1 barcode, then RFID tags; show whether each EPC encodes the **same GS1 identity key** (SGTIN / SSCC / GRAI / GIAI interoperability). Optional auto-confirm countdown when all match |
|
| **Verify** | Scan a GS1 barcode, then RFID tags; show whether each EPC encodes the **same GS1 identity key** (SGTIN / SSCC / GRAI / GIAI interoperability). Optional auto-confirm countdown when all match |
|
||||||
| **Locate** | Seek-and-find by EPC hex, GTIN/GS1, or Internal part number with RSSI / geiger feedback — **works fully offline** (no Edge required) |
|
| **Locate** | Seek-and-find by EPC hex, GTIN/GS1, or Internal part number with RSSI / geiger feedback — **works fully offline** (no Edge required). Hit indicator lights whenever tags are in the field |
|
||||||
|
|
||||||
Scout is the mobile companion for **Edge site deployments** (docks, tunnels, on-prem readers). It is **not** the full asset system of record app: enrollment, zones, Core sync, and scan-and-print remain **TallyFlow Assets**.
|
Scout is the mobile companion for **Edge site deployments** (docks, tunnels, on-prem readers). It is **not** the full asset system of record app: enrollment, zones, Core sync, and scan-and-print remain **TallyFlow Assets**.
|
||||||
|
|
||||||
## Positioning (marketing truth)
|
## Positioning (marketing truth)
|
||||||
|
|
||||||
- **Edge path, not Core path** — Scout talks to Edge remote-reader REST (`/api/v1/reader/barcode`, `/api/v1/reader/rfid`, `/health`). Assets talks to Core.
|
- **Edge path, not Core path** — Scout talks to Edge remote-reader REST (`/api/v1/reader/barcode`, `/api/v1/reader/rfid`, `/health`). Assets talks to Core.
|
||||||
|
- **Edge optional** — Settings **Use TallyFlow Edge** can be turned off for pure CSV / demo / floor work without health checks or submits.
|
||||||
- **Complementary** — Sell Scout with Edge for handheld collect / verify / locate at the reader edge. Sell Assets with Core for asset lifecycle and inventory programs.
|
- **Complementary** — Sell Scout with Edge for handheld collect / verify / locate at the reader edge. Sell Assets with Core for asset lifecycle and inventory programs.
|
||||||
- **Offline-capable floor tool** — Collect list + CSV export + Locate work without a live Edge server; submit when online.
|
- **Offline-capable floor tool** — Collect list + CSV export + Locate work without a live Edge server; submit when online.
|
||||||
- **Hardware-real** — Android industrial scanners via `flutter_hardware_scanner` (e.g. Janam XR2, ATID, SEUIC, URFID stacks); camera barcode fallback on phones; desktop always in simulator mode for demos.
|
- **Hardware-real** — Android industrial scanners via `flutter_hardware_scanner` (e.g. Janam XR2, ATID, SEUIC, URFID stacks); camera barcode fallback on phones; desktop always in simulator mode for demos.
|
||||||
@@ -31,23 +32,30 @@ Scout is the mobile companion for **Edge site deployments** (docks, tunnels, on-
|
|||||||
- Offline **Locate** / seek-and-find on the floor without Core
|
- Offline **Locate** / seek-and-find on the floor without Core
|
||||||
- CSV collect for demos, audits, or sites not yet wired to Edge submit
|
- CSV collect for demos, audits, or sites not yet wired to Edge submit
|
||||||
- SI / partner demos with desktop simulator (JSON tag groups, optional automation)
|
- SI / partner demos with desktop simulator (JSON tag groups, optional automation)
|
||||||
|
- On-device **tag decode** (GS1 EPC-96, GS1 barcode AIs, SDG RAIN CIN) without leaving the floor tool
|
||||||
|
|
||||||
## Core features (from product review)
|
## Core features (from product review)
|
||||||
|
|
||||||
- Material 3 shell: **Collect / Verify / Locate** bottom navigation
|
- Material 3 shell: **Collect / Verify / Locate** bottom navigation (l10n key `navUpdate` = “Collect”)
|
||||||
- Collect: pending/sent/failed status, manual batch submit or auto-send, CSV share/save (including GS1 type-filter rollup mode)
|
- Collect: pending/sent/failed status, manual batch submit or auto-send, CSV share/save (including GS1 type-filter rollup mode); list menu for **clear** and **sort** (value / RSSI)
|
||||||
- Verify: lists all RFID tags (no EPC soft-filter hiding mismatches); Confirm / Reset actions; swipe to Locate or delete
|
- Verify: lists all RFID tags (no EPC soft-filter hiding mismatches); Confirm / Reset; swipe to Locate or delete
|
||||||
- Locate: EPC mask filters (GS1 / SDG RAIN / hex / part); power slider; geiger audio; handoff from Collect/Verify swipe
|
- Locate: EPC mask filters (GS1 / SDG RAIN / hex / part); power slider; geiger audio; hit lamp while any tags are in field; handoff from Collect/Verify/decode sheet
|
||||||
|
- **Tag decode sheet** — tap a Collect/Locate row for decoded GS1 / SDG RAIN / barcode AI fields; RFID can jump to Locate
|
||||||
- Internal `part_serial` RFID settings aligned with **TallyFlow Print** (group Collect by part; Locate by part)
|
- Internal `part_serial` RFID settings aligned with **TallyFlow Print** (group Collect by part; Locate by part)
|
||||||
- Edge health banner; EN + ES localization
|
- Edge health banner when Edge is enabled; **disable Edge** for CSV-only mode
|
||||||
- Settings: base URL, remote reader name, optional API key, RFID power, scan beep, symbology filters, verify auto-confirm seconds
|
- Stronger RFID beep gate so Locate geiger does not fight inventory beeps
|
||||||
|
- EN + ES localization
|
||||||
|
- Settings: Use Edge, base URL, remote reader name, optional API key, RFID power/session, scan beep, symbology filters, verify auto-confirm seconds, Internal part_serial layout
|
||||||
|
|
||||||
## Technical notes
|
## Technical notes
|
||||||
|
|
||||||
- Android package path renamed toward Scout branding (`com.tallyflow.scout`)
|
- Android applicationId / namespace: `com.tallyflow.scout`
|
||||||
- Vendor AARs for some handheld stacks live under `android/app/lib/` (see repo README); SEUIC uses on-device system libraries
|
- Vendor AARs for some handheld stacks live under `android/app/lib/` (see repo README); SEUIC uses on-device system libraries
|
||||||
|
- ATID + URFID ship incompatible `libserial_port.so` — separate build variants or prune AARs per device (conflict fix landed post-0.5.x)
|
||||||
- Desktop (macOS / Linux / Windows): simulation only — load JSON tag groups, send to Edge, add to list, or export CSV
|
- Desktop (macOS / Linux / Windows): simulation only — load JSON tag groups, send to Edge, add to list, or export CSV
|
||||||
- Service strings in code/README may still say “TallyFlow IoT”; **product name is TallyFlow Edge**
|
- Service client still named `tallyflow_iot_client`; **product name is TallyFlow Edge**
|
||||||
|
- SDG RAIN CIN filter uses EPC prefix `D3C4C753` (AFI in Gen2 PC word, not EPC body)
|
||||||
|
- README feature list lags app (still under-describes Verify / decode / Edge toggle); trust code + this note for marketing
|
||||||
|
|
||||||
## Related components
|
## Related components
|
||||||
|
|
||||||
@@ -55,9 +63,12 @@ Scout is the mobile companion for **Edge site deployments** (docks, tunnels, on-
|
|||||||
- `tallyflow_mobile` — **TallyFlow Assets** (Core mobile; not replaced by Scout)
|
- `tallyflow_mobile` — **TallyFlow Assets** (Core mobile; not replaced by Scout)
|
||||||
- `tallyflow-print` / Print UI — Internal EPC encodings Scout can decode/group
|
- `tallyflow-print` / Print UI — Internal EPC encodings Scout can decode/group
|
||||||
- `flutter_hardware_scanner` (+ XR2 / SEUIC / ATID device plugins)
|
- `flutter_hardware_scanner` (+ XR2 / SEUIC / ATID device plugins)
|
||||||
|
- `sgtin` / flutter-sgtin — GS1 EPC-96 and element-string decode used by Verify + decode sheet
|
||||||
|
|
||||||
## Open / watch
|
## Open / watch
|
||||||
|
|
||||||
- Website and datasheets should say **Scout + Edge**, not “Assets for IoT”
|
- Website and datasheets should say **Scout + Edge**, not “Assets for IoT”
|
||||||
- Distribution channel (Play / sideload / SI bundle) not fixed in vault
|
- Distribution channel (Play / sideload / SI bundle) not fixed in vault
|
||||||
- Do not market Scout as Core enrollment or scan-and-print — those stay on Assets
|
- Do not market Scout as Core enrollment or scan-and-print — those stay on Assets
|
||||||
|
- README version footer still stale (`0.1.0+1`); app version is pubspec `0.6.2+14`
|
||||||
|
- Symbology checklist is not full OEM set — soft-filter vs device scan tool ownership still a cross-app story
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ This note will contain ongoing code review findings across the TallyFlow ecosyst
|
|||||||
- [x] tallyflow-print (print/encoding backend)-ui
|
- [x] tallyflow-print (print/encoding backend)-ui
|
||||||
- [x] tallyflow_spreadsheet_importer (Flutter spreadsheet import tool)
|
- [x] tallyflow_spreadsheet_importer (Flutter spreadsheet import tool)
|
||||||
- [x] flutter_tallyflow_iot_rest_client (Flutter REST client for Edge)
|
- [x] flutter_tallyflow_iot_rest_client (Flutter REST client for Edge)
|
||||||
- [x] tallyflow-assets-iot (**product: TallyFlow Scout**; Collect/Verify/Locate for Edge) — [[tallyflow-scout]]
|
- [x] tallyflow-assets-iot (**product: TallyFlow Scout**; Collect/Verify/Locate for Edge) — [[tallyflow-scout]] (re-reviewed 2026-07-30 → v0.6.2+14)
|
||||||
|
|
||||||
## General Observations
|
## General Observations
|
||||||
(Notes will be added here as review progresses)
|
(Notes will be added here as review progresses)
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
**Product name:** TallyFlow Scout
|
**Product name:** TallyFlow Scout
|
||||||
**Package:** `tallyflow_scout`
|
**Package:** `tallyflow_scout`
|
||||||
**Version reviewed:** 0.5.3+10 (master `2c479fb`, July 2026)
|
**Version reviewed:** **0.6.2+14** (master `0e37633`, 2026-07-30)
|
||||||
**Tech stack:** Flutter (Material 3), `flutter_hardware_scanner`, optional camera barcode (ML Kit), HTTP client to Edge
|
**Prior review:** 0.5.3+10 (`2c479fb`, 2026-07-27)
|
||||||
|
**Tech stack:** Flutter (Material 3), `flutter_hardware_scanner` ^0.14 prerelease, camera barcode (ML Kit), `sgtin` (path), HTTP client to Edge
|
||||||
|
|
||||||
## Role in platform
|
## Role in platform
|
||||||
|
|
||||||
@@ -12,32 +13,57 @@ Handheld **Collect / Verify / Locate** app for **TallyFlow Edge**.
|
|||||||
|
|
||||||
## Destinations
|
## Destinations
|
||||||
|
|
||||||
1. **Collect** (nav key still `navUpdate` in l10n) — scan list, submit to Edge remote reader API or export CSV
|
1. **Collect** (nav key still `navUpdate` in l10n → “Collect”) — scan list, submit to Edge remote reader API or export CSV
|
||||||
2. **Verify** — GS1 barcode identity vs RFID EPC encodings (`gs1_verify_match`); optional auto-confirm
|
2. **Verify** — GS1 barcode identity vs RFID EPC encodings (`gs1_verify_match`); optional auto-confirm
|
||||||
3. **Locate** — offline seek-and-find / geiger (`locate_screen`, RSSI colors aligned with Assets pick-list palette)
|
3. **Locate** — offline seek-and-find / geiger (`locate_screen`, RSSI colors aligned with Assets pick-list palette); continuous hit indicator when any tags are in field
|
||||||
|
|
||||||
|
## Delta since 0.5.3 (marketing-relevant)
|
||||||
|
|
||||||
|
| Area | Change |
|
||||||
|
|------|--------|
|
||||||
|
| **Edge optional** | Settings `useTallyFlowEdge` — when off, no health checks / submits; CSV & floor tools only (`edgeActive`) |
|
||||||
|
| **Tag decode sheet** | Tap row → GS1 EPC-96 / SDG RAIN CIN / barcode GS1 AIs; RFID can open Locate |
|
||||||
|
| **Collect list** | Overflow menu: clear list; sort by value or RSSI (plus default recent) |
|
||||||
|
| **Locate UX** | Hit counter/lamp stays visible while tags are in the field (not only focused finds) |
|
||||||
|
| **Audio** | `RfidBeepGate` serializes driver beep vs Locate geiger mute |
|
||||||
|
| **Decode/filter** | SDG RAIN CIN filter fixed (`D3C4C753` EPC prefix) |
|
||||||
|
| **Branding** | Simpler app icon / splash assets |
|
||||||
|
| **Settings UX** | Sheet height capped (~80%); shorter help copy |
|
||||||
|
| **Hardware** | Stronger URFID vs ATID AAR conflict handling note in tree |
|
||||||
|
|
||||||
## Integration
|
## Integration
|
||||||
|
|
||||||
- Client: `lib/services/tallyflow_iot_client.dart` → `{baseUrl}/api/v1/health`, `/reader/barcode`, `/reader/rfid`
|
- Client: `lib/services/tallyflow_iot_client.dart` → `{baseUrl}/api/v1/health`, `/reader/barcode`, `/reader/rfid`
|
||||||
- Remote reader must exist on Edge (`type = remote`, enabled); reader name must match Settings
|
- Remote reader must exist on Edge (`type = remote`, enabled); reader name must match Settings
|
||||||
- Offline: Collect + CSV + Locate without server; banner when Edge unreachable
|
- Offline / Edge-off: Collect + CSV + Locate without server; banner only when Edge enabled and unreachable / unconfigured
|
||||||
|
|
||||||
## Hardware
|
## Hardware
|
||||||
|
|
||||||
- Android industrial devices via hardware scanner plugin (XR2, ATID AARs, SEUIC, URFID noted in tree)
|
- Android industrial devices via hardware scanner plugin (XR2, ATID AARs, SEUIC, URFID noted in tree)
|
||||||
- Camera barcode fallback when no hardware scanner / init failure
|
- Camera barcode fallback when no hardware scanner / init failure
|
||||||
- Desktop: simulator always on
|
- Desktop: simulator always on
|
||||||
|
- applicationId: `com.tallyflow.scout`
|
||||||
|
|
||||||
## Notable modules
|
## Notable modules
|
||||||
|
|
||||||
- `epc_mask.dart`, `sdg_rain_decode.dart` — EPC type / Internal part decode
|
- `tag_decode_sheet.dart` — decode UI + `TagDecodeDetails.resolveRfid` / `resolveBarcode`
|
||||||
- `scan_csv_exporter.dart` — CSV share/save
|
- `epc_mask.dart`, `sdg_rain_decode.dart` — EPC type / Internal part decode (CIN filter fix)
|
||||||
|
- `rfid_beep_gate.dart` — Locate mute vs inventory beep
|
||||||
|
- `scan_csv_exporter.dart` / `scan_csv_export.dart` — CSV share/save
|
||||||
|
- `rssi_display.dart` — shared RSSI presentation
|
||||||
- `l10n` — English + Spanish
|
- `l10n` — English + Spanish
|
||||||
- Tests cover EPC mask, GS1 verify match, locate finds, CSV export, symbology filter
|
- Tests: EPC mask, GS1 verify, locate finds, CSV, symbology, tag decode, useTallyFlowEdge, rfid beep gate, power slider
|
||||||
|
|
||||||
## Marketing guardrails
|
## Marketing guardrails
|
||||||
|
|
||||||
- Say **Scout works with Edge**; **Assets works with Core**
|
- Say **Scout works with Edge**; **Assets works with Core**
|
||||||
- Three sections only: Collect, Verify, Locate
|
- Three sections only: Collect, Verify, Locate
|
||||||
- Locate offline is a real differentiator for floor find without Core
|
- Locate offline + optional Edge-off are real differentiators for floor find without Core
|
||||||
|
- Decode sheet is operator convenience, not a full GS1 stack / compliance product
|
||||||
- Do not claim full asset CRUD, zones, or scan-and-print in Scout
|
- Do not claim full asset CRUD, zones, or scan-and-print in Scout
|
||||||
|
|
||||||
|
## Follow-ups (docs/code debt)
|
||||||
|
|
||||||
|
- Repo README still under-lists Verify / decode / Edge toggle; version footer stale
|
||||||
|
- `part_serial` assignment-match flags currently unused by decode path (reserved)
|
||||||
|
- Cross-app symbology story still open (README technical debt section)
|
||||||
|
|||||||
@@ -108,13 +108,14 @@ Site edge service for fixed and remote RFID/barcode readers. Runs as an always-o
|
|||||||
- Compatible with Core in cloud or on-premises, or standalone without Core
|
- Compatible with Core in cloud or on-premises, or standalone without Core
|
||||||
|
|
||||||
### 6. TallyFlow Scout
|
### 6. TallyFlow Scout
|
||||||
Handheld Flutter app for **Edge** floors (`tallyflow-assets-iot`). **Does not replace TallyFlow Assets.**
|
Handheld Flutter app for **Edge** floors (`tallyflow-assets-iot`, app v0.6.x). **Does not replace TallyFlow Assets.**
|
||||||
|
|
||||||
**Three sections:**
|
**Three sections:**
|
||||||
- **Collect** — scan barcode/RFID; submit to Edge as a remote reader, or export CSV offline
|
- **Collect** — scan barcode/RFID; submit to Edge as a remote reader, or export CSV when Edge is offline/disabled; list clear/sort; tap a row for tag decode (GS1 / SDG RAIN / barcode AIs)
|
||||||
- **Verify** — GS1 barcode vs RFID EPC identity match (SGTIN/SSCC/GRAI/GIAI-style)
|
- **Verify** — GS1 barcode vs RFID EPC identity match (SGTIN/SSCC/GRAI/GIAI-style); optional auto-confirm
|
||||||
- **Locate** — seek-and-find by EPC/GTIN/part with geiger feedback; works offline without Edge
|
- **Locate** — seek-and-find by EPC/GTIN/part with geiger feedback and in-field hit indicator; works offline without Edge
|
||||||
|
|
||||||
|
**Settings:** optional **Use TallyFlow Edge** toggle (CSV/demo without health checks when off).
|
||||||
**Hardware:** Industrial Android scanners (e.g. Janam XR2, ATID, SEUIC, URFID); camera barcode fallback; desktop simulator for demos. EN/ES UI.
|
**Hardware:** Industrial Android scanners (e.g. Janam XR2, ATID, SEUIC, URFID); camera barcode fallback; desktop simulator for demos. EN/ES UI.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user