138 lines
3.4 KiB
Markdown
138 lines
3.4 KiB
Markdown
# Silo Development Status
|
|
|
|
**Date:** 2026-01-23
|
|
**Last Updated By:** Claude Code Session
|
|
|
|
---
|
|
|
|
## Current State: MinIO File Upload Implementation
|
|
|
|
### Completed Work
|
|
|
|
#### 1. Docker Compose - MinIO Service Added
|
|
- File: `deployments/docker-compose.yaml`
|
|
- Added MinIO service with versioning enabled
|
|
- Configured healthcheck and environment variables
|
|
- Note: Using `minio/minio:RELEASE.2024-01-16T16-07-38Z` for CPU compatibility
|
|
|
|
#### 2. API Endpoints - File Upload/Download
|
|
- File: `internal/api/handlers.go`
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/api/items/{partNumber}/file` | POST | Upload file and create revision |
|
|
| `/api/items/{partNumber}/file` | GET | Download latest revision file |
|
|
| `/api/items/{partNumber}/file/{revision}` | GET | Download specific revision file |
|
|
| `/api/items/{partNumber}/revisions` | POST | Create revision without file |
|
|
|
|
#### 3. Routes Added
|
|
- File: `internal/api/routes.go`
|
|
- All new endpoints wired up
|
|
|
|
#### 4. FreeCAD Client Updated
|
|
- File: `pkg/freecad/silo_commands.py`
|
|
- Added `_upload_file()` method for multipart form upload
|
|
- Updated `create_revision()` to optionally upload files
|
|
- Updated `Silo_Commit` command to save document and upload to MinIO
|
|
|
|
#### 5. Build Status
|
|
- **Go code compiles successfully** - `go build ./...` passes
|
|
|
|
---
|
|
|
|
## Where We Left Off
|
|
|
|
### Problem
|
|
MinIO container failing to start due to CPU architecture:
|
|
```
|
|
Fatal glibc error: CPU does not support x86-64-v2
|
|
```
|
|
|
|
### Solution in Progress
|
|
- VM being rebooted to newer architecture
|
|
- Already configured older MinIO image as fallback
|
|
|
|
---
|
|
|
|
## Next Steps After VM Reboot
|
|
|
|
### 1. Start Services
|
|
```bash
|
|
cd /home/forbes/projects/silo-0062/deployments
|
|
sudo docker compose up -d
|
|
```
|
|
|
|
### 2. Verify Services
|
|
```bash
|
|
# Check all services
|
|
sudo docker compose ps
|
|
|
|
# Check MinIO health
|
|
curl http://localhost:9000/minio/health/live
|
|
|
|
# Check Silo API with storage
|
|
curl http://localhost:8080/ready
|
|
```
|
|
|
|
### 3. Test File Upload
|
|
```bash
|
|
# Create test file
|
|
echo "Test content" > /tmp/test.FCStd
|
|
|
|
# Upload to existing item
|
|
curl -X POST \
|
|
-F "file=@/tmp/test.FCStd" \
|
|
-F "comment=Test upload" \
|
|
-F 'properties={"test": true}' \
|
|
http://localhost:8080/api/items/3DX15-A01-0002/file
|
|
```
|
|
|
|
### 4. Test File Download
|
|
```bash
|
|
# Download latest revision
|
|
curl http://localhost:8080/api/items/3DX15-A01-0002/file -o downloaded.FCStd
|
|
|
|
# Download specific revision
|
|
curl http://localhost:8080/api/items/3DX15-A01-0002/file/2 -o rev2.FCStd
|
|
```
|
|
|
|
### 5. Test from FreeCAD
|
|
1. Open FreeCAD with Silo workbench
|
|
2. Open an existing item: `Silo_Open` command
|
|
3. Make changes
|
|
4. Commit with file upload: `Silo_Commit` command
|
|
5. Verify file appears in MinIO console at http://localhost:9001
|
|
|
|
---
|
|
|
|
## Remaining MVP Tasks
|
|
|
|
| Task | Status | Priority |
|
|
|------|--------|----------|
|
|
| Start docker-compose with MinIO | Pending | **Next** |
|
|
| Test full upload/download flow | Pending | High |
|
|
| Implement date segment support | Pending | Medium |
|
|
| Implement part number validation | Pending | Medium |
|
|
| Add unit tests | Pending | Medium |
|
|
|
|
---
|
|
|
|
## File Changes This Session
|
|
|
|
```
|
|
modified: deployments/docker-compose.yaml (added MinIO service)
|
|
modified: internal/api/handlers.go (added file handlers)
|
|
modified: internal/api/routes.go (added file routes)
|
|
modified: pkg/freecad/silo_commands.py (added file upload)
|
|
```
|
|
|
|
---
|
|
|
|
## MinIO Console Access
|
|
|
|
Once running:
|
|
- **URL:** http://localhost:9001
|
|
- **Username:** silominio
|
|
- **Password:** silominiosecret
|
|
- **Bucket:** silo-files
|