36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# OpenCode.md
|
|
|
|
## Build/Test Commands
|
|
```bash
|
|
# Backend setup and run (from project root)
|
|
pip install -r backend/requirements.txt
|
|
uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000
|
|
|
|
# Frontend tests
|
|
npm test # Run all Jest tests
|
|
npm test -- --testNamePattern="getSpeakers" # Run single test
|
|
|
|
# Backend API test
|
|
python backend/run_api_test.py
|
|
|
|
# Alternative interface
|
|
python gradio_app.py
|
|
```
|
|
|
|
## Code Style Guidelines
|
|
|
|
### Python (Backend)
|
|
- **Imports**: Standard library first, third-party, then local imports with blank lines between groups
|
|
- **Types**: Use type hints extensively (`List[Speaker]`, `Optional[str]`, `Dict[str, Any]`)
|
|
- **Classes**: PascalCase (`SpeakerManagementService`, `DialogRequest`)
|
|
- **Functions/Variables**: snake_case (`get_speakers`, `speaker_id`, `audio_url`)
|
|
- **Error Handling**: Use FastAPI `HTTPException` with descriptive messages
|
|
- **Models**: Pydantic models with Field descriptions and validators
|
|
|
|
### JavaScript (Frontend)
|
|
- **Modules**: ES6 modules with explicit imports/exports
|
|
- **Functions**: camelCase with JSDoc comments (`getSpeakers`, `addSpeaker`)
|
|
- **Constants**: UPPER_SNAKE_CASE (`API_BASE_URL`)
|
|
- **Error Handling**: Comprehensive try/catch with detailed error messages
|
|
- **Async**: Use async/await consistently, handle response.ok checks
|
|
- **Testing**: Jest with descriptive test names and comprehensive mocking |