v0.2.0 transitioned to api-only, extended and improved features, docs and tests added
This commit is contained in:
89
doc/development.md
Normal file
89
doc/development.md
Normal file
@ -0,0 +1,89 @@
|
||||
# Development Guide
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Go 1.24+
|
||||
- Stockfish in PATH
|
||||
- Git
|
||||
- curl, jq (for testing)
|
||||
|
||||
## Building
|
||||
|
||||
```bash
|
||||
git clone https://git.lixen.com/lixen/chess
|
||||
cd chess
|
||||
go build ./cmd/chessd
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
### Flags
|
||||
- `-host`: Server host (default: localhost)
|
||||
- `-port`: Server port (default: 8080)
|
||||
- `-dev`: Development mode with relaxed rate limits
|
||||
|
||||
### Modes
|
||||
```bash
|
||||
# Production (1 req/s rate limit)
|
||||
./chessd
|
||||
|
||||
# Development (10 req/s rate limit)
|
||||
./chessd -dev
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
chess/
|
||||
├── cmd/chessd/ # Entry point
|
||||
├── internal/
|
||||
│ ├── board/ # FEN/ASCII operations
|
||||
│ ├── core/ # Shared types
|
||||
│ ├── engine/ # Stockfish UCI wrapper
|
||||
│ ├── game/ # Game state
|
||||
│ ├── http/ # Fiber handlers
|
||||
│ ├── processor/ # Command processing
|
||||
│ └── service/ # State management
|
||||
└── test/ # Test scripts
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
# Unit tests
|
||||
go test ./...
|
||||
|
||||
# API tests (requires dev mode)
|
||||
./chessd -dev &
|
||||
./test/test-api.sh
|
||||
```
|
||||
|
||||
Test script validates:
|
||||
- Basic CRUD operations
|
||||
- Computer move triggering ("cccc" mechanism)
|
||||
- Pending state protection
|
||||
- Rate limiting
|
||||
- Input validation
|
||||
- Error handling
|
||||
|
||||
## Configuration
|
||||
|
||||
### Fixed Values
|
||||
- Engine path: `"stockfish"` (internal/engine/engine.go)
|
||||
- Worker count: 2 (internal/processor/processor.go)
|
||||
- Queue capacity: 100 (internal/processor/queue.go)
|
||||
- Min search time: 100ms (internal/processor/processor.go)
|
||||
|
||||
### Validation Rules
|
||||
- Player type: 1 (human) or 2 (computer)
|
||||
- Skill level: 0-20
|
||||
- Search time: 100-10000ms
|
||||
- UCI moves: 4-5 characters ([a-h][1-8][a-h][1-8][qrbn]?)
|
||||
- Undo count: 1-300
|
||||
|
||||
## Limitations
|
||||
|
||||
- No persistence (memory only)
|
||||
- Hardcoded Stockfish path
|
||||
- Fixed worker pool size
|
||||
- No game history beyond current session
|
||||
Reference in New Issue
Block a user