# Mobile Field Data Entry - User Guide ## Overview This guide explains how to use the mobile app screens for field data entry and updates. The mobile flows are module-based and optimized for fast, on-site updates. ## What's Included in This Branch - Added a dedicated **Weld Log Entry** flow that consolidates fit-up, welding, WPS, welder, and NDT fields in one form. - Added new module screens for **Punch**, **Repair**, **NDT Request**, **RFI Create**, **RFI Update**, **Ferrite**, **PMI**, and **Spool/NDT/Paint Release** entry/update. - Implemented consistent **mobile list + bottom sheet edit** pattern across modules. - Refactored photo upload using standard **InspectionDockedFab** for unified photo uploads. - Added **bulk update** support in Weld Log Entry (multi-select joints). - Added **filtering** (status/ISO) in list screens where applicable. - Standardized **API endpoints** to direct table endpoints (`/api/{table}/read|update|create`). - Added **field coverage** for NDT report/test metadata and welding report date. - Standardized **snackbar feedback** for save results and validation errors. ## Navigation Open the left sidebar menu or the Home grid and use the following entries: - Weld Log Entry - Punch Update - Repair Status Entry - NDT Request - RFI Create - RFI Update - Ferrite Entry - PMI Entry - Spool/NDT/Paint Release - Test Pack Base Status Each screen opens a list view. Tap a record to edit it. Some screens use a bottom sheet form. ## Common Behaviors - **List + Tap to Edit:** All modules load a list of records. Tap a row to open the form. - **Filters:** Some screens include filters (status or ISO). - **Bulk Update (Weld Log):** Enable bulk mode, select multiple joints, and update once. - **Save Feedback:** Success and error feedback is shown via bottom snackbars. - **Photo Upload:** Modules like Test Pack and Spool Release use the docked Floating Action Button (`InspectionDockedFab`) for standardized photo uploads directly to `/api/inspection-history`. - **iOS UI:** iOS uses native Cupertino pickers and action sheets for date and dropdowns. ## 1) Weld Log Entry Use this screen to update welding-related fields from a single form. ### Fields Required: - Fit-up Date (`fit_up_date`) - Fit-up Report Number (`fit_up_report_no`) Optional: - Welding Date (`welding_date`) - Welding Report Number (`welding_report_no`) - Welding Report Date (`welding_report_date`) - WPS No (`wps_no`) - WPS Approval Date (`wps_approval_date`) - Welder 1 (`welder_1`) - Welder 2 (`welder_2`) NDT: - RT Result (`rt_result`) - RT Report (`rt_report`) - RT Test Date (`rt_test_date`) - UT Result (`ut_result`) - UT Report (`ut_report`) - UT Test Date (`ut_test_date`) - PT Result (`pt_result`) - PT Report (`pt_report`) - PT Test Date (`pt_test_date`) - MT Result (`mt_result`) - MT Report (`mt_report`) - MT Test Date (`mt_test_date`) - VT Result (`vt_result`) - VT Report (`vt_report`) - VT Test Date (`date_of_vt`) ### Validation - Fit-up Date is required and cannot be in the future. - Welding Date cannot be before Fit-up Date. - WPS Approval Date cannot be before Fit-up Date or Welding Date. - NDT test dates should be on or after welding dates. ### Save Tap Save to update the record in `weld_logs`. ### Bulk Update Use the bulk icon to select multiple joints, then tap **Update Selected**. ## 2) Punch Update Use this screen to close or update punch items. ### Fields - Status (`status`) - Cleared By Name (`items_cleared_by_name`) - Cleared Date (`items_cleared_by_close_date`) ### Save Tap Save to update the record in `punch_lists`. ## 3) Repair Status Entry Use this screen to track repair progress. ### Fields - Repair Status (`repair_status`) - Repair Qty (`repair_qty`) - Repair Completed (`repair_completed`) - Repair Remaining (`repair_remaining`) - Repair Date (`repair_date`) ### Save Tap Save to update the record in `repair_logs`. ## 4) NDT Request Use this screen to update joint-based NDT results. ### Fields - RT Result (`rt_result`) - UT Result (`ut_result`) - PT Result (`pt_result`) - MT Result (`mt_result`) - VT Result (`vt_result`) ### Save Tap Save to update the record in `weld_logs`. ## 5) RFI Create Use this screen to create a new RFI record. ### Fields - Project No (`project_no`) - Discipline (`discipline`) - RFI No (`rfi_no`) - Inspection Date (`inspection_date`) ### Save Tap Create to add a record in `r_f_i_s`. ## 6) RFI Update Use this screen to update existing RFIs. ### Fields - Status (`status`) - Result Date (`result_date`) ### Save Tap Save to update the record in `r_f_i_s`. ## 7) Ferrite Entry Use this screen for ferrite test updates. ### Fields - Ferrite Request Date (`ferrite_request_date`) - Tester Name (`tester_name`) - Ferrite Result (`result_ferrite`) ### Save Tap Save to update the record in `ferrits`. ## 8) PMI Entry Use this screen for PMI test updates. ### Fields - PMI Request Date (`pmi_request_date`) - Tester Name (`tester_name`) - PMI Result (`pmi_result`) ### Save Tap Save to update the record in `p_m_i_tests`. ## 9) Spool/NDT/Paint Release Use this unified screen to manage spool area, NDT, and paint releases from a single view. ### Process - Instead of finding separate menus for each release step, select the target record. - Tapping a record row directly edits the specific release stage data via bottom sheets. - Manage Spool, Paint, and Area Release states respectively. ### Save Tap Save inside the respective step's modal bottom sheet. ## Notes - If you do not see changes, fully restart the mobile app. - Some fields are optional and can be left empty. - If permissions block access, contact your admin to enable the module. ## Backend Endpoints Used - `POST /api/weld_logs/read`, `POST /api/weld_logs/update`, `POST /api/weld_logs/summary` (totalCount + SUM(nps_1) for footer) - `POST /api/punch_lists/read` and `POST /api/punch_lists/update` - `POST /api/repair_logs/read` and `POST /api/repair_logs/update` - `POST /api/r_f_i_s/read`, `POST /api/r_f_i_s/create`, `POST /api/r_f_i_s/update` - `POST /api/ferrits/read` and `POST /api/ferrits/update` - `POST /api/p_m_i_tests/read` and `POST /api/p_m_i_tests/update` - `POST /api/spools/read` and `POST /api/spools/update` - `POST /api/construction_paint_logs/read` and `POST /api/construction_paint_logs/update` - `GET /api/inspection-history/list` and `POST /api/inspection-history/upload`