Skip to content

docs backend evidence ev support EE 22

AlexandreZanata edited this page Oct 24, 2026 · 1 revision

EE-22 — Community electric price/experience Android journeys

Status: LOCAL_DONE Validation: PASS Integration: INTEGRATION_PENDING

Parent: b5fc0277 (maintained dev, EE-26). Date: 2026-10-23. Depends MEX-32, EE-12/13/18/21; reuses free account/session, EE-12 commands, EE-13 projections and the durable pending pattern. Rules EV-10–15/22; journeys EV-04–07/08/12. Risk: auth/privacy/replay/UI.

Before behavior: a signed-in free account can publish a dated place/connector/price/condition/experience report, list community reports, edit or withdraw its own report, vote on helpfulness and report another account's observation. Reading stays anonymous and free. No GPS, home context, route, photo or source key exists in the draft or wire. A pending write survives offline/process restart under the same client ID; a lost response retries verbatim, a stale edit stays visibly conflicted, and another account's request/receipt is never rendered.

Delivered

  • Backend EE-22 completion on the existing EE-12/13 tables: owner read with revisions, helpfulness tally endpoint and report endpoint; self-vote/self-report refuse 403, hidden/missing targets refuse 400, replay converges, exact revisions guard corrections and withdrawals. OpenAPI paths added and validated.
  • Android typed client over /v1/charging/observations*: exact session body, no-store, no redirects/retry, bounded response, strict IDs/enums/day/price/tallies, typed denied/conflict/invalid/ unavailable failures and cancellation.
  • Durable account/origin-partitioned pending store (50-operation cap) for submit/correct/withdraw. No GPS/private fields are representable; votes/reports are online-only and never claim success offline.
  • ChargingCommunityUseCase + ChargingCommunityViewModel + Compose screen: price/connector/condition/day/note form, edit/withdraw, public history with tallies, helpful/not-helpful, report reasons, own/pending sections, offline/conflict/signed-out states.
  • Navigation from compatible-charging place detail; 47 strings in all eight locales; headings and button labels are accessible text.

Actual checks

  • Go: go test ./internal/modules/charging/... ./internal/platform/ apicontract/ PASS; go vet and sqlc vet PASS; OpenAPI valid.
  • Real disposable PostGIS: TestObservationCommandsAuthQuotaReplay and TestObservationCommunityVoteReportAndOwnerReads PASS (submit replay, owner-only read, self-vote/report 403, vote/report replay, cross-owner correction refusal, stale 409, withdrawal).
  • Data client: exact body/no private keys, history/owner typing, correction/withdraw/vote/report targets, 403/409/503/corrupt/ oversize, cancellation of an active request → PASS (6 tests).
  • Pending codec: submit/correct/withdraw survive restart, conflict error retained, corrupt/oversized/forged ID fail closed → PASS.
  • Application: lost reply reuses the same operation ID, reopened use case retries persisted work, account switch refuses without misdelivery, stale correction stays pending → PASS (5 tests).
  • ViewModel: offline pending visible, invalid price/day never reaches the network, edit/withdraw, self-vote refusal, signed-out read-only, exact tally update → PASS (6 tests).
  • :app:assembleDebug, :app:lintDebug, :data:lintDebug PASS zero errors; eight-locale key parity for the 47 new strings.
  • git diff --check and secret scan PASS; no PII/GPS/photo/token in source, fixtures or logs.

Limits

  • Community observations carry one observed price and access condition; a full multi-component tariff scenario remains the EE-11/EE-25 surface, not a fabricated observation field.
  • Moderation actions (hide/restore) remain operator-owned; the user report only opens the existing moderation path.
  • Physical TalkBack/font/offline/device execution and signed staging E2E remain OWED under the standing deferral. MockWebServer/PostGIS prove transport/SQL behavior, not a live device.
  • No production data, provider call, deploy or source activation.

Next: EE-25/MEX-31 scenario execution and vehicle context gaps.

Fuel prices wiki

Source: AlexandreZanata/brazil-fuel-prices @ bbd96568180563ced975b96f8f89f7a3c242522e

Clone this wiki locally