committtttt

This commit is contained in:
Dev
2025-09-13 06:48:55 +03:00
commit 2d49f69be6
32 changed files with 6478 additions and 0 deletions

288
README.md Normal file
View File

@@ -0,0 +1,288 @@
# AI-Powered Support System
A hybrid AI-powered customer support system that combines OpenAI's GPT-4 for complex queries with local LLM (Ollama) for simple queries. The system includes sentiment analysis, real-time chat, and a knowledge base for efficient customer support.
## Features
- **Hybrid AI System**: Combines OpenAI's GPT-4 for complex queries with local LLM (Ollama) for simple queries
- **Intelligent Routing**: Automatically routes queries to the appropriate AI model based on complexity
- **Sentiment Analysis**: Analyzes customer sentiment and escalates to human agents when needed
- **Real-time Chat**: WebSocket-based real-time communication with typing indicators and read receipts
- **Knowledge Base**: FAQ system with automatic suggestions based on conversation context
- **User Authentication**: JWT-based authentication with role-based access control
- **Admin Dashboard**: Analytics and management interface for administrators
- **Conversation History**: Search and review past conversations
- **Scalable Architecture**: Built with Go, PostgreSQL, and Redis for high performance
## Technology Stack
### Backend
- **Go**: Programming language
- **Gin**: Web framework
- **PostgreSQL**: Primary database
- **Redis**: Caching and session management
- **JWT**: Authentication
- **GORM**: ORM for database operations
- **Logrus**: Structured logging
- **Viper**: Configuration management
### AI Integration
- **OpenAI API**: For complex queries
- **Ollama**: For local LLM integration
- **Sentiment Analysis**: For analyzing customer sentiment
### Frontend (To be implemented)
- **React/Vue.js**: Frontend framework
- **WebSocket**: Real-time communication
- **Material-UI/Ant Design**: UI components
### Deployment
- **Docker**: Containerization
- **Docker Compose**: Local development
- **Kubernetes**: Production deployment
- **CI/CD**: Automated testing and deployment
## Project Structure
```
support/
├── backend/ # Backend Go application
│ ├── cmd/ # Application entry point
│ │ └── main.go # Main application file
│ ├── internal/ # Internal application packages
│ │ ├── ai/ # AI service
│ │ ├── auth/ # Authentication service
│ │ ├── conversation/ # Conversation service
│ │ ├── database/ # Database connection and migrations
│ │ ├── handlers/ # HTTP handlers
│ │ ├── knowledge/ # Knowledge base service
│ │ ├── models/ # Data models
│ │ └── routes/ # Route definitions
│ ├── pkg/ # Public library packages
│ │ ├── config/ # Configuration management
│ │ └── logger/ # Logging utilities
│ ├── go.mod # Go module file
│ ├── go.sum # Go module checksums
│ └── Dockerfile # Docker configuration for backend
├── frontend/ # Frontend React/Vue.js application (to be implemented)
├── docs/ # Documentation
├── deployment/ # Kubernetes deployment configurations (to be implemented)
├── docker-compose.yml # Docker Compose configuration
├── .gitignore # Git ignore file
└── README.md # This file
```
## Getting Started
### Prerequisites
- Go 1.21 or higher
- Docker and Docker Compose
- PostgreSQL (if not using Docker)
- Redis (if not using Docker)
- OpenAI API key (for GPT-4 integration)
### Installation
1. Clone the repository:
```bash
git clone https://github.com/yourusername/support.git
cd support
```
2. Set up environment variables:
```bash
cp backend/.env.example backend/.env
```
Edit the `.env` file with your configuration, including your OpenAI API key.
3. Start the services using Docker Compose:
```bash
docker-compose up -d
```
4. Wait for all services to start up. You can check the logs with:
```bash
docker-compose logs -f
```
### Development
#### Backend Development
1. Navigate to the backend directory:
```bash
cd backend
```
2. Install dependencies:
```bash
go mod download
```
3. Run the application:
```bash
go run cmd/main.go
```
The backend API will be available at `http://localhost:8080`.
#### Frontend Development (To be implemented)
1. Navigate to the frontend directory:
```bash
cd frontend
```
2. Install dependencies:
```bash
npm install
```
3. Run the development server:
```bash
npm run dev
```
The frontend will be available at `http://localhost:3000`.
## API Documentation
### Authentication Endpoints
- `POST /api/v1/public/login` - User login
- `POST /api/v1/public/register` - User registration
### User Endpoints
- `GET /api/v1/user/profile` - Get user profile
- `PUT /api/v1/user/profile` - Update user profile
- `PUT /api/v1/user/change-password` - Change password
### Admin Endpoints
- `GET /api/v1/admin/users` - List all users
- `GET /api/v1/admin/users/:id` - Get user by ID
- `PUT /api/v1/admin/users/:id` - Update user
- `DELETE /api/v1/admin/users/:id` - Delete user
### Conversation Endpoints
- `GET /api/v1/conversations` - List conversations
- `POST /api/v1/conversations` - Create new conversation
- `GET /api/v1/conversations/:id` - Get conversation by ID
- `PUT /api/v1/conversations/:id` - Update conversation
- `DELETE /api/v1/conversations/:id` - Delete conversation
- `GET /api/v1/conversations/:id/stats` - Get conversation statistics
### Message Endpoints
- `GET /api/v1/conversations/:id/messages` - Get messages in a conversation
- `POST /api/v1/conversations/:id/messages` - Send a message
- `PUT /api/v1/conversations/:id/messages/:messageId` - Update a message
- `DELETE /api/v1/conversations/:id/messages/:messageId` - Delete a message
- `POST /api/v1/conversations/:id/ai` - Send message with AI response
### Knowledge Base Endpoints
- `GET /api/v1/knowledge` - Get knowledge base entries
- `GET /api/v1/knowledge/search` - Search knowledge base
- `GET /api/v1/knowledge/categories` - Get knowledge categories
- `GET /api/v1/knowledge/tags` - Get knowledge tags
- `GET /api/v1/knowledge/popular` - Get popular knowledge entries
- `GET /api/v1/knowledge/recent` - Get recent knowledge entries
- `GET /api/v1/knowledge/best-match` - Find best match for a query
- `GET /api/v1/knowledge/stats` - Get knowledge base statistics
- `GET /api/v1/knowledge/:id` - Get knowledge base entry by ID
- `POST /api/v1/knowledge/:id/rate` - Rate knowledge base entry
#### Admin Knowledge Base Endpoints
- `POST /api/v1/admin/knowledge` - Create knowledge base entry
- `PUT /api/v1/admin/knowledge/:id` - Update knowledge base entry
- `DELETE /api/v1/admin/knowledge/:id` - Delete knowledge base entry
### AI Endpoints
- `POST /api/v1/ai/query` - Query AI service
- `POST /api/v1/ai/analyze-complexity` - Analyze complexity of a prompt
- `GET /api/v1/ai/models` - Get available AI models
- `POST /api/v1/ai/openai` - Query OpenAI directly
- `POST /api/v1/ai/ollama` - Query Ollama directly
## Testing
### Backend Testing
1. Navigate to the backend directory:
```bash
cd backend
```
2. Run tests:
```bash
go test ./...
```
### Frontend Testing (To be implemented)
1. Navigate to the frontend directory:
```bash
cd frontend
```
2. Run tests:
```bash
npm test
```
## Deployment
### Docker Deployment
1. Build the Docker image:
```bash
docker build -t support-backend ./backend
```
2. Run the container:
```bash
docker run -p 8080:8080 support-backend
```
### Docker Compose Deployment
1. Start all services:
```bash
docker-compose up -d
```
2. Stop all services:
```bash
docker-compose down
```
### Kubernetes Deployment (To be implemented)
1. Apply the Kubernetes configurations:
```bash
kubectl apply -f deployment/
```
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Contact
Your Name - [@yourusername](https://twitter.com/yourusername) - email@example.com
Project Link: [https://github.com/yourusername/support](https://github.com/yourusername/support)