Update Vibe Kanban setup and scripts

- Added new entries to .gitignore for environment files and dynamically generated Docker Compose files.
- Updated documentation to reflect the new path for the Vibe Kanban dev server script.
- Enhanced task composition scripts to extract TASK_SLOT from TASK_ID, ensuring unique Orleans ports and preventing conflicts.
- Removed the old vibe-dev-server script, consolidating functionality into the new structure.
This commit is contained in:
2025-12-31 04:36:20 +07:00
parent 2e0baa45c0
commit ab08e0241b
13 changed files with 1535 additions and 35 deletions

View File

@@ -0,0 +1,122 @@
# API and Workers Processes
This document lists all processes that run when the API and Workers are started.
## Process Hierarchy
### 1. API Process (`dotnet run` for Managing.Api)
**Parent Process:**
- `dotnet run` - The .NET CLI process that starts the API
- PID stored in: `.task-pids/api-${TASK_ID}.pid`
**Child Process:**
- `Managing.Api` executable - The actual API application
- Location: `src/Managing.Api/bin/Debug/net8.0/Managing.Api`
- This is the main ASP.NET Core application
**Background Services (within the API process):**
All of these run as `IHostedService` within the same API process:
1. **GrainInitializer** - Initializes Orleans grains
2. **DiscordService** - Discord bot service
3. **PricesFifteenMinutesWorker** - Updates prices every 15 minutes (if enabled)
4. **PricesOneHourWorker** - Updates prices every hour (if enabled)
5. **PricesFourHoursWorker** - Updates prices every 4 hours (if enabled)
6. **PricesOneDayWorker** - Updates prices every day (if enabled)
7. **PricesFiveMinutesWorker** - Updates prices every 5 minutes (if enabled)
8. **SpotlightWorker** - Spotlight feature worker (if enabled)
9. **TraderWatcher** - Watches traders (if enabled)
10. **LeaderboardWorker** - Updates leaderboard (if enabled)
11. **FundingRatesWatcher** - Watches funding rates (if enabled)
12. **GeneticAlgorithmWorker** - Genetic algorithm worker (if enabled)
13. **NotifyBundleBacktestWorker** - Notifies about bundle backtests (if enabled)
**Orleans Components (within the API process):**
- Orleans Silo - Runs on port `11111 + (TASK_SLOT - 1) * 10`
- Orleans Gateway - Runs on port `30000 + (TASK_SLOT - 1) * 10`
- Orleans Dashboard - Runs on port `9999 + (TASK_SLOT - 1)` (development only)
### 2. Workers Process (`dotnet run` for Managing.Workers)
**Parent Process:**
- `dotnet run` - The .NET CLI process that starts the Workers
- PID stored in: `.task-pids/workers-${TASK_ID}.pid`
**Child Process:**
- `Managing.Workers` executable - The actual Workers application
- Location: `src/Managing.Workers/bin/Debug/net8.0/Managing.Workers`
- This is a .NET Host application
**Background Services (within the Workers process):**
All of these run as `BackgroundService` within the same Workers process:
1. **BacktestComputeWorker** - Processes backtest jobs (if enabled)
2. **GeneticComputeWorker** - Processes genetic algorithm jobs (if enabled)
3. **BundleBacktestHealthCheckWorker** - Health check for bundle backtests (if enabled, only on TASK_SLOT=1)
## Process Management
### Starting Processes
Processes are started by `scripts/start-api-and-workers.sh`:
- API: `cd src/Managing.Api && dotnet run &`
- Workers: `cd src/Managing.Workers && dotnet run &`
### Stopping Processes
Processes are stopped by `scripts/stop-task-docker.sh` or the cleanup script:
1. Read PID from `.task-pids/api-${TASK_ID}.pid`
2. Kill the parent `dotnet run` process
3. Kill any orphaned child processes
4. Read PID from `.task-pids/workers-${TASK_ID}.pid`
5. Kill the parent `dotnet run` process
6. Kill any orphaned child processes
### Finding All Related Processes
To find all processes related to a specific task:
```bash
# Find by PID file
TASK_ID="YOUR_TASK_ID"
API_PID=$(cat .task-pids/api-${TASK_ID}.pid 2>/dev/null)
WORKERS_PID=$(cat .task-pids/workers-${TASK_ID}.pid 2>/dev/null)
# Find child processes
ps -ef | grep $API_PID
ps -ef | grep $WORKERS_PID
# Find by executable name
ps aux | grep "Managing.Api"
ps aux | grep "Managing.Workers"
ps aux | grep "dotnet run"
```
### Finding Processes by Port
```bash
# Find API process by port
lsof -i :5000 # Default API port
lsof -i :$((5000 + PORT_OFFSET)) # With port offset
# Find Orleans processes by port
lsof -i :11111 # Orleans Silo (default)
lsof -i :30000 # Orleans Gateway (default)
```
## Important Notes
1. **Single Process Architecture**: All background services run within the same process as the API or Workers. They are not separate processes.
2. **PID Files**: The PID files store the parent `dotnet run` process PID, not the child executable PID.
3. **Orphaned Processes**: If the parent `dotnet run` process is killed, the child `Managing.Api` or `Managing.Workers` process may become orphaned. The cleanup script should handle this.
4. **Port Conflicts**: Each task uses unique ports based on `PORT_OFFSET`:
- API: `5000 + PORT_OFFSET`
- PostgreSQL: `5432 + PORT_OFFSET`
- Redis: `6379 + PORT_OFFSET`
- Orleans Silo: `11111 + (TASK_SLOT - 1) * 10`
- Orleans Gateway: `30000 + (TASK_SLOT - 1) * 10`
5. **Worker Consolidation**: Most workers have been consolidated into the API process. The separate `Managing.Workers` project now only runs compute-intensive workers (BacktestComputeWorker, GeneticComputeWorker).