- Add clipboard paste handler for images and files (Ctrl+V / Cmd+V)
- Add drag-and-drop zone with visual feedback
- Update placeholder text to inform users about new features
- Improve file upload UX with drop overlay
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fix DataTypeNotSupportedError by explicitly specifying PostgreSQL column types
for nullable fields that TypeORM was incorrectly inferring as Object type.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add MinIO object storage to docker-compose infrastructure
- Create file-service microservice for upload management with presigned URLs
- Add files table to database schema
- Update nginx and Kong for MinIO proxy routes
- Implement file upload UI in chat InputArea with drag-and-drop
- Add attachment preview in MessageBubble component
- Update conversation-service to handle multimodal messages
- Add Claude Vision API integration for image analysis
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These services were using DB_HOST, DB_USER etc. but docker-compose
sets POSTGRES_HOST, POSTGRES_USER etc.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Payment service was listening on wrong port (3004) because it used
PAYMENT_SERVICE_PORT which wasn't set in docker-compose.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The health check endpoint should be at /health not /api/v1/health
for Docker health checks to work properly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /health endpoints to all NestJS services (user, payment, knowledge, conversation, evolution)
- Fix nginx healthcheck to use 127.0.0.1 instead of localhost (IPv6 issue)
- Add healthcheck configuration to docker-compose for all backend services
- Use start_period to allow services time to initialize before health checks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Frontend:
- Add sidebarOpen state to chatStore with toggle functionality
- Make sidebar collapsible with smooth animation
- Add mobile-friendly drawer behavior with overlay
- Add toggle button for desktop view
- Implement delete conversation functionality with loading state
Backend:
- Add DELETE /conversations/:id endpoint
- Implement deleteConversation service method
- Delete messages before conversation (foreign key constraint)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix streaming JSON parsing for tool inputs by accumulating partial JSON
and parsing only on content_block_stop
- Implement proper tool loop to continue conversation after tool execution
- Send tool results back to Claude to get final response
- Add safety limit of 10 iterations for tool loops
This fixes the issue where AI responses were truncated after using tools
like search_knowledge.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sync scripts/init-db.sql with infrastructure/docker/services/postgres/init.sql
to include all required database columns:
- users: fingerprint, nickname columns for anonymous auth support
- conversations: ended_at column for tracking conversation end time
- messages: type enum column (USER, ASSISTANT, SYSTEM)
This ensures the schema files are consistent and include all columns
needed by the application entities.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When ANTHROPIC_BASE_URL points to an IP address (proxy server),
disable TLS certificate verification to allow connection.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove https-proxy-agent dependency since ANTHROPIC_BASE_URL already
supports pointing to a proxy server directly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add https-proxy-agent dependency
- Configure httpAgent in ClaudeAgentService when ANTHROPIC_PROXY_URL is set
- Add ANTHROPIC_PROXY_URL environment variable to docker-compose.yml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Commands:
- start/stop/restart/status - service lifecycle
- logs - view service logs
- build/pull - build and deploy
- health - health check all services
- kong - Kong routes/services/plugins management
- db - PostgreSQL/Redis/Neo4j access and backup
- clean - cleanup images/volumes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- nginx: preserve full path when proxying to Kong (remove trailing /)
- nginx: increase API timeout to 120s for AI streaming
- kong: use format_version 2.1 for Kong 3.4 compatibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove kong-database, kong-migrations, kong-init services
- Use KONG_DATABASE=off with declarative config file
- Add kong/kong.yml with all services, routes, and plugins
- Remove kong_data volume (no longer needed)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Organize infrastructure configs properly:
- nginx/ for Nginx configuration
- kong/ for Kong configuration
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update init-kong.sh with complete service/route configuration
- Add CORS plugin configuration with all required headers
- Add timeout settings (120s for conversation-service)
- Simplify docker-compose kong-init to use the script
- Add kong-migrations service for database bootstrap
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add $is_args$args to proxy_pass for /socket.io/ and /ws/ locations
to fix "Transport unknown" error caused by missing query parameters.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
TypeORM config reads individual POSTGRES_HOST, POSTGRES_PORT, etc.
environment variables instead of DATABASE_URL. Added these variables
to all backend services in docker-compose.yml.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 移除静态upstream定义,改用Docker DNS resolver动态解析
- 移除Docker nginx的SSL配置(系统nginx已处理SSL)
- 使用set变量方式引用后端服务,避免启动时DNS解析失败
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>