Add a Help workstation to the medical camp workflow and remove the redundant queues shortcut from the medicine dashboard
Issue Summary
Add a Help workstation to the medical camp workflow and remove the redundant queues shortcut from the medicine dashboard.
Current behavior:
- Volunteers cannot be assigned to a Help workstation from attendance deployment.
- The camp map does not show a Help workstation tile.
- The medicine dashboard includes a floating plus shortcut to
/volunteer/queues, which makes queue access feel misplaced inside the medicine-specific dashboard.
Expected behavior:
- Help is available as a workstation during attendance assignment.
- Volunteers assigned to Help can access
/volunteer/queuesfrom the camp map. - Volunteers assigned elsewhere are blocked from entering Help.
- The medicine dashboard focuses only on medicine-related actions.
Problem Statement
The camp workflow is missing a dedicated Help area in the workstation map and assignment flow. This affects volunteers and coordinators who need to route support/help desk work through the same station-based access model used by registration, vitals, consultation, medicine, and counselling.
Without a Help station:
- Help desk volunteers cannot be assigned through the normal attendance deployment flow.
- The map has no visual or navigational entry point for Help.
- Queue access is exposed through the medicine dashboard, which mixes medicine operations with general support navigation.
Impact:
- Volunteers may navigate through the wrong dashboard to access queues.
- Workstation-based access control is inconsistent for Help desk responsibilities.
- The medicine dashboard becomes less focused and harder to reason about.
Proposed Solution
Add help as a supported workstation area in the existing attendance assignment and camp map flows.
Approach:
- Add Help to the
availableAreaslist inAttendanceMarker. - Add Help to the
availableAreaslist inCampMap. - Replace the empty top-right map block with an interactive Help tile.
- Route the Help tile to
/volunteer/queueswhen the current user is assigned tohelp. - Reuse the existing access-denied behavior when the user is assigned elsewhere.
- Remove the floating queues shortcut from
MedicineDashboardPage. - Update existing tests only; do not add new test files.
Dependencies/blockers:
- Backend must accept
helpas a valid station area for end-to-end assignment.
Test-Driven Development
Acceptance Criteria (Given-When-Then)
Scenario 1: Help station appears during attendance assignment
Given a volunteer attendance entry has been marked successfully
And the station assignment panel is displayed
When the available station options are rendered
Then the Help station is shown
And Help appears after Counseling in the station list
Scenario 2: Help station can be assigned
Given a volunteer attendance entry has been marked successfully
And the active camp ID is available
When the Help station is selected
Then the assign area API is called with area "help"
And the selected volunteer user ID is included in the payload
Scenario 3: Assigned Help volunteer can enter Help from camp map
Given the current volunteer is assigned to the Help station
When the volunteer clicks the Help tile on the camp map
Then the volunteer is navigated to "/volunteer/queues"
Scenario 4: Volunteer assigned elsewhere cannot enter Help
Given the current volunteer is assigned to Registration
When the volunteer clicks the Help tile on the camp map
Then an access denied toast is displayed
And the volunteer is not navigated to "/volunteer/queues"
Scenario 5: Medicine dashboard no longer exposes queues shortcut
Given a volunteer opens the medicine dashboard
When the dashboard renders
Then the floating queues shortcut is not displayed
And no dashboard button navigates to "/volunteer/queues"
Test Cases
| Test ID | Test Description | Precondition | Test Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| TC-001 | Verify Help appears in attendance station assignment | Entry attendance succeeds | 1. Render AttendanceMarker in manual mode.2. Submit a volunteer UUID. 3. Inspect station assignment buttons. |
Help is rendered in the station list in the expected order. | High |
| TC-002 | Verify Help station assignment payload | Entry attendance succeeds and camp ID exists | 1. Render AttendanceMarker in manual mode.2. Submit a volunteer UUID. 3. Click Help. |
assignArea is called with camp_id, user_id, and area: "help". |
High |
| TC-003 | Verify assigned Help map navigation | Current area is help
|
1. Render CampMap as volunteer.2. Click Help tile. |
Navigation is called with /volunteer/queues. |
High |
| TC-004 | Verify Help map access denied for other stations | Current area is registration
|
1. Render CampMap as volunteer.2. Click Help tile. |
Access denied toast is shown and Help navigation is not called. | High |
| TC-005 | Verify medicine dashboard queues shortcut is removed | Medicine dashboard is rendered | 1. Render MedicineDashboardPage.2. Click all rendered buttons. 3. Inspect navigation calls. |
No button navigates to /volunteer/queues. |
Medium |
| TC-006 | Verify medicine action cards still navigate correctly | Medicine dashboard is rendered | 1. Click Prescription Queue. 2. Click Medicine Pickup. 3. Click Verify Medicine. 4. Click Medicine List. |
Each card navigates to its existing medicine route. | Medium |
Unit Test Requirements
Components/Functions to Test:
| Module/Component | Function/Hook | Test Cases to Cover |
|---|---|---|
AttendanceMarker.tsx |
Station assignment rendering | TC-001 |
AttendanceMarker.tsx |
handleAreaAssign |
TC-002 |
CampMap.tsx |
Help tile click behavior | TC-003, TC-004 |
MedicineDashboardPage.tsx |
Dashboard navigation buttons | TC-005, TC-006 |
Test Assertions Required:
-
Renders correctly with initial state -
Handles user input correctly -
Validates input and shows errors -
Calls API with correct payload -
Handles loading state -
Handles success response -
Handles error response -
Updates UI state appropriately
Implementation Details
Files to Change
| File Path | Action | Purpose |
|---|---|---|
src/components/AttendanceMarker.tsx |
Modify | Add Help to attendance station assignment and fix hook dependencies. |
src/components/CampMap.tsx |
Modify | Add Help workstation tile and route assigned Help volunteers to queues. |
src/pages/volunteer/MedicineDashboardPage.tsx |
Modify | Remove redundant floating queues shortcut and unused icon import. |
tests/components/AttendanceMarker.exit-mode.test.tsx |
Modify | Cover Help station rendering and assignment payload. |
tests/components/CampMap.test.tsx |
Modify | Cover Help map navigation and access denied behavior. |
tests/volunteers/MedicineDashboardPage.test.tsx |
Modify | Cover removed queues shortcut and existing action card navigation. |
Technical Considerations
- Reuse the existing station assignment array pattern instead of introducing a new station registry.
- Reuse the existing
handleAreaClickguard inCampMap. - Preserve existing workstation styling and active/locked visual states.
- Keep route behavior local to the Help tile:
/volunteer/queues. - No API client changes are required in frontend code.
- Backend must support
helpas a valid station value.
UI/UX Requirements
- Help should appear as a normal workstation tile on the camp map.
- Help should show the same locked state as other unassigned stations.
- Help should show the same active state when assigned.
- Medicine dashboard should show only medicine-related action cards.
- UI should remain responsive using the existing map grid and dashboard layout patterns.
Mockups/Wireframes:
No mockups provided.
Testing Strategy
Manual Testing
Test Environment:
- Browser: Chrome
- Viewport: Desktop
- User Role: volunteer
Manual Test Steps:
- Open the volunteer camp map and confirm the Help station tile is visible.
- Assign or mock the current volunteer area as
help, then click the Help tile. - Confirm navigation goes to
/volunteer/queues. - Assign or mock the current volunteer area as
registration, then click the Help tile. - Confirm access is denied and the user does not navigate to queues.
- Open
/volunteer/medicine-dashboard. - Confirm the floating plus shortcut is not present.
- Confirm medicine dashboard action cards still navigate to the expected medicine routes.
Automated Testing
Unit Tests:
-
Component render tests -
User interaction tests -
API integration tests -
Error handling tests
Integration Tests (if applicable):
-
Multi-component interaction tests -
Route navigation tests
Test Data Requirements
const mockVolunteerCampSignupStatus = {
camp_id: '42',
signup: true,
attendance: true,
};
const mockHelpAreaResponse = {
current_area: 'help',
};
const mockRegistrationAreaResponse = {
current_area: 'registration',
};
Definition of Done
-
Acceptance criteria met (all Given-When-Then scenarios pass) -
All test cases executed and passing -
Unit tests written and passing (minimum coverage: existing project threshold) -
Manual testing completed -
Code reviewed and approved -
UI matches design specifications (if applicable) -
Responsive on all required viewport sizes -
Accessibility checks passed (aria labels, keyboard navigation) -
No console errors or warnings -
TypeScript types defined (no any) -
ESLint/Prettier checks pass -
Documentation updated (if applicable) -
i18n strings externalized (no hardcoded text)