Feat: Intern Search (Corpus Service + InternSearch Component)
✨ Feature: Intern Search (Corpus Service + InternSearch Component)
Description
Add name-based intern search support to the corpus service and create a standalone InternSearch React component that allows users to search interns and add them to a local list.
This feature is fully frontend-driven, supports mock and live modes, and does not rely on routing or global state.
Proposed Changes
Corpus Service — Add Name Search
[MODIFY] corpusService.ts
- Add
searchInternsByName(query: string): Promise<InternSummary[]> - Live mode:
- Calls
GET /api/v1/users/search?query={query} - Parses response into
InternSummary[]
- Calls
- Mock mode:
- Filters
mockInternByIdby case-insensitive name substring
- Filters
- Returns
[]for empty query - Add mock data (6 interns total) to improve search coverage
[MODIFY] index.ts
- Export
searchInternsByName
InternSearch Component
[NEW] InternSearch.tsx
| Feature | Detail |
|---|---|
| Search input | Text input with 300ms debounce |
| Loading state | Displays Searching… while request is in flight |
| Results list | Shows intern name, ID, and Add / Added button |
| Local state | Prevents duplicates using intern ID |
| Empty query | Clears results, no API call |
| No results | Displays No users found
|
Local State Shape
searchQuery: string
searchResults: InternSummary[]
internsList: InternSummary[]
isLoading: boolean