4a93bd1c44
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Mobile scaffold status
Created on 2026-04-18.
- Flutter scaffold added under
mobile/ - Android-first app shell uses bottom navigation for core V1 flows
- Theme, asset folders, config placeholders, and lightweight session/network placeholders are ready for follow-up work
- Backend integration, generated Flutter platform folders, and real assets are intentionally not included yet
Auth/session progress
apiBaseUrlis now pointed at local Android emulator backend routing (http://10.0.2.2:8000/api/v1)httpdependency added for real API calls- Mobile login flow now calls
/auth/login - Current-user sync now calls
/auth/me - Session state now hydrates from local storage on app start and writes back through
SharedPreferences - In-memory session state continues to broadcast through
ValueNotifier - App shell now gates the main tabs behind a login screen when no session exists
- Dashboard and profile now reflect real login/session state instead of pure placeholder copy
Review entry progress
review_entry_screen.dartis now a real editable form instead of placeholder blocks- The mobile side now captures:
- contract text
- contract type
- review side (
party_a/party_b) - optional file attachment
- A draft/request model is defined in
features/review/domain/review_draft.dart - A submission controller is defined in
features/review/application/review_submission_controller.dart - Current submit action now goes through
ReviewDraft -> ReviewSubmissionController -> ApiClient.submitReview() /reviewsnow supports text-only, file-only, or text+file submission from the mobile draft/controller structure- File selection UI is present, but still depends on Flutter/file_picker runtime validation in a real mobile environment
Review history progress
ApiClient.fetchReviewHistory()now callsGET /reviewswith the current bearer token- A list-domain model is defined in
features/review_history/domain/review_history_item.dart - A history controller is defined in
features/review_history/application/review_history_controller.dart review_history_screen.dartnow loads and renders real list data for the current signed-in user- The mobile side can now form a basic path of login -> submit review -> view review history
Review detail/result progress
ApiClient.fetchReviewDetail()now callsGET /reviews/{review_id}ApiClient.fetchReviewResult()now callsGET /reviews/{review_id}/resultfeatures/review_history/domain/review_detail.dartandreview_result_summary.dartprovide the detail/result/report modelsreview_detail_controller.dartnow loads task detail first and, forcompleted/partial, also loads result summary and report metadatareview_history_screen.dartcan navigate from a list item into the detail/result screenreview_detail_screen.dartnow renders task information, text preview, result summary, risk distribution, clause/risk counts, review opinion, and report metadata with copy-link action- The detail screen now supports pull-to-refresh and app-bar refresh for status/result/report updates after submit
- Review submit success now auto-navigates into the newly created detail page
Current limitation
- Session persistence is still local-only and not encrypted
- The live backend login path still depends on PostgreSQL/audit write success, so mobile login will fully work only after the backend DB chain is available
- File upload support has been wired into the request path, but still needs Flutter SDK / device validation for real picker behavior
- Report flow currently covers metadata + copy link; true file download/preview remains a next step
- Brand/image assets are still placeholders; asset constants are intentionally nulled until real png/svg resources are added