Skip to main content

enterprise-user-management-system-ai-analytics

Full-stack user management system with AI-powered analytics for risk detection, burnout analysis, and predictive insights

الانتقال إلى التثبيت

معلومات المصدر

المستودع
reason-machines/data-skills
آخر نشاط في المصدر
١٣ يوليو ٢٠٢٦ في ٠٤:٤٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
enterprise-user-management-system-ai-analytics
description
Full-stack user management system with AI-powered analytics for risk detection, burnout analysis, and predictive insights
triggers
["set up enterprise user management system","integrate AI analytics into user management","implement JWT authentication for user management","create admin dashboard with user analytics","add AI-based ticket classification system","build kanban board for task management","detect user burnout with ML models","implement role-based access control with AI"]
# Enterprise User Management System with AI Analytics > Skill by [ara.so](https://ara.so) — Data Skills collection. ## Overview Enterprise User Management System with AI Analytics is a full-stack application that combines user management, task tracking, and support ticket systems with AI-powered insights. It provides risk detection, anomaly detection, burnout analysis, and predictive project insights using machine learning models built with FastAPI, scikit-learn, and River. The system consists of three main components: - **Frontend**: React.js application with user/admin dashboards - **Backend**: Node.js REST API with MongoDB and JWT authentication - **ML Service**: FastAPI service for AI/ML predictions and analytics ## Installation ### Clone and Setup ```bash git clone https://github.com/Nareshkumar2583/Enterprise-User-Management-System-with-AI-Analytics.git cd Enterprise-User-Management-System-with-AI-Analytics ``` ### Backend Setup ```bash cd backend npm install # Create .env file cat > .env << EOF PORT=5000 MONGODB_URI=${MONGODB_URI} JWT_SECRET=${JWT_SECRET} JWT_EXPIRE=7d ML_SERVICE_URL=http://localhost:8000 EOF npm start ``` ### ML Service Setup ```bash cd ml-service pip install -r requirements.txt # Create .env file cat > .env << EOF MONGODB_URI=${MONGODB_URI} MODEL_PATH=./models LOG_LEVEL=INFO EOF uvicorn main:app --reload --port 8000 ``` ### Frontend Setup ```bash cd frontend npm install # Create .env file cat > .env << EOF REACT_APP_API_URL=http://localhost:5000 REACT_APP_ML_API_URL=http://localhost:8000 EOF npm start ``` ## Core Architecture ### Backend API Structure (Node.js) ```javascript // server.js - Main entry point const express = require('express'); const mongoose = require('mongoose'); const cors = require('cors'); const jwt = require('jsonwebtoken'); require('dotenv').config(); const app = express(); app.use(cors()); app.use(express.json()); // Connect to MongoDB mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log('MongoDB Connected')) .catch(err => console.error('MongoDB connection error:', err)); // Routes app.use('/api/auth', require('./routes/auth')); app.use('/api/users', require('./routes/users')); app.use('/api/tasks', require('./routes/tasks')); app.use('/api/tickets', require('./routes/tickets')); app.use('/api/analytics', require('./routes/analytics')); const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log(`Server running on port ${PORT}`)); ``` ### Authentication Middleware ```javascript // middleware/auth.js const jwt = require('jsonwebtoken'); module.exports = function(req, res, next) { const token = req.header('x-auth-token'); if (!token) { return res.status(401).json({ msg: 'No token, authorization denied' }); } try { const decoded = jwt.verify(token, process.env.JWT_SECRET); req.user = decoded.user; next(); } catch (err) { res.status(401).json({ msg: 'Token is not valid' }); } }; // middleware/admin.js module.exports = function(req, res, next) { if (req.user.role !== 'admin') { return res.status(403).json({ msg: 'Access denied. Admin only.' }); } next(); }; ``` ### User Model ```javascript // models/User.js const mongoose = require('mongoose'); const UserSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, role: { type: String, enum: ['user', 'admin', 'manager'], default: 'user' }, department: String, status: { type: String, enum: ['active', 'inactive', 'suspended'], default: 'active' }, tasksAssigned: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Task' }], workloadScore: { type: Number, default: 0 }, createdAt: { type: Date, default: Date.now } }); module.exports = mongoose.model('User', UserSchema); ``` ### Task Model ```javascript // models/Task.js const mongoose = require('mongoose'); const TaskSchema = new mongoose.Schema({ title: { type: String, required: true }, description: String, assignedTo: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, status: { type: String, enum: ['todo', 'in-progress', 'done'], default: 'todo' }, priority: { type: String, enum: ['low', 'medium', 'high', 'critical'], default: 'medium' }, dueDate: Date, timeTracked: { type: Number, default: 0 }, createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, createdAt: { type: Date, default: Date.now }, completedAt: Date }); module.exports = mongoose.model('Task', TaskSchema); ``` ### Ticket Model ```javascript // models/Ticket.js const mongoose = require('mongoose'); const TicketSchema = new mongoose.Schema({ title: { type: String, required: true }, description: { type: String, required: true }, category: { type: String, enum: ['technical', 'administrative', 'hr', 'other'] }, priority: { type: String, enum: ['low', 'medium', 'high', 'critical'] }, status: { type: String, enum: ['open', 'in-progress', 'resolved', 'closed'], default: 'open' }, createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, assignedTo: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, aiClassified: { type: Boolean, default: false }, createdAt: { type: Date, default: Date.now } }); module.exports = mongoose.model('Ticket', TicketSchema); ``` ## ML Service API ### FastAPI Main Application ```python # ml-service/main.py from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel from typing import List, Optional import numpy as np from sklearn.ensemble import RandomForestClassifier, IsolationForest from river import linear_model, metrics import joblib import os app = FastAPI(title="Enterprise AI Analytics Service") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Load or initialize models MODEL_PATH = os.getenv('MODEL_PATH', './models') os.makedirs(MODEL_PATH, exist_ok=True) # Risk detection model risk_model = RandomForestClassifier(n_estimators=100, random_state=42) # Anomaly detection model anomaly_model = IsolationForest(contamination=0.1, random_state=42) # Online learning model for burnout detection burnout_model = linear_model.LogisticRegression() class UserBehavior(BaseModel): user_id: str login_frequency: float task_completion_rate: float average_task_time: float missed_deadlines: int workload_score: float overtime_hours: float class TicketData(BaseModel): title: str description: str class PredictionResponse(BaseModel): prediction: str confidence: float risk_score: Optional[float] = None @app.get("/") def read_root(): return {"status": "AI Analytics Service Running"} @app.post("/api/ml/risk-detection", response_model=PredictionResponse) async def detect_risk(data: UserBehavior): """Predict user risk level based on behavior patterns""" try: features = np.array([[ data.login_frequency, data.task_completion_rate, data.average_task_time, data.missed_deadlines, data.workload_score, data.overtime_hours ]]) # Simple rule-based risk scoring risk_score = ( (1 - data.task_completion_rate) * 30 + data.missed_deadlines * 15 + (data.workload_score / 10) * 25 + (data.overtime_hours / 40) * 30 ) if risk_score > 70: prediction = "high" elif risk_score > 40: prediction = "medium" else: prediction = "low" confidence = min(abs(risk_score - 50) / 50, 1.0) return PredictionResponse( prediction=prediction, confidence=confidence, risk_score=risk_score ) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.post("/api/ml/anomaly-detection") async def detect_anomaly(data: UserBehavior): """Detect anomalous user behavior""" try: features = np.array([[ data.login_frequency, data.task_completion_rate, data.average_task_time, data.missed_deadlines, data.workload_score, data.overtime_hours ]]) # Check for anomalies is_anomaly = ( data.login_frequency > 50 or data.login_frequency < 1 or data.task_completion_rate < 0.3 or data.overtime_hours > 60 or data.missed_deadlines > 5 ) return { "is_anomaly": is_anomaly, "anomaly_score": float(data.workload_score) if is_anomaly else 0.0, "factors": { "unusual_login": data.login_frequency > 50, "low_completion": data.task_completion_rate < 0.3, "excessive_overtime": data.overtime_hours > 60, "many_missed_deadlines": data.missed_deadlines > 5 } } except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.post("/api/ml/burnout-detection", response_model=PredictionResponse) async def detect_burnout(data: UserBehavior): """Detect employee burnout risk""" try: burnout_score = ( (data.workload_score / 10) * 35 + (data.overtime_hours / 40) * 30 + (1 - data.task_completion_rate) * 20 + (data.missed_deadlines / 10) * 15 ) if burnout_score > 70: prediction = "high_risk" recommendation = "Immediate workload reduction recommended" elif burnout_score > 45: prediction = "moderate_risk" recommendation = "Monitor closely and consider workload adjustment" else: prediction = "low_risk" recommendation = "Normal workload management" return PredictionResponse( prediction=prediction, confidence=min(burnout_score / 100, 1.0), risk_score=burnout_score ) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.post("/api/ml/classify-ticket") async def classify_ticket(ticket: TicketData): """Classify and route support tickets using AI""" try: text = f"{ticket.title} {ticket.description}".lower() # Simple keyword-based classification if any(word in text for word in ['bug', 'error', 'crash', 'not working']): category = 'technical' priority = 'high'
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub