Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
122fbec
Privacy: pseudonymize user_id in audit logs
namann5 May 22, 2026
d924dae
Merge pull request #68 from namann5/fix/ticket-company-id-backfill
ritesh-1918 May 22, 2026
9978402
feat: add realtime ticket dashboard updates via Supabase channels
Achiever199 May 22, 2026
548a815
Merge pull request #80 from Achiever199/feature/realtime-dashboard
Achiever199 May 22, 2026
c9947d7
feat(auth): add clean self-contained cookie auth endpoints
ritesh-1918 May 26, 2026
0bd500d
fix(media): resolve image attachment not showing in ticket details
ritesh-1918 May 27, 2026
e723b92
chore: remove redundant and failing LFS hf_sync.yml workflow
ritesh-1918 May 27, 2026
8c5462d
fix(media,entities): resolve screenshot and extracted entities displa…
ritesh-1918 May 27, 2026
64156c2
refactor(dyn): eliminate hardcoded values and configure dynamic varia…
ritesh-1918 May 27, 2026
72cf900
fix(jsconfig): remove invalid ignoreDeprecations compiler option
ritesh-1918 May 27, 2026
b460068
feat(docs): add premium documentation portal and fix jsconfig compila…
ritesh-1918 May 27, 2026
fbf1dbf
feat(docs): make docs portal a standalone page outside of user layout…
ritesh-1918 May 27, 2026
1522323
feat(showcase): create and route 6 missing public showcase pages and …
ritesh-1918 May 27, 2026
0cecc95
feat(routing): integrate automatic isDocsSubdomain route scanner insi…
ritesh-1918 May 27, 2026
768f030
feat(docs): render article content using high-fidelity ReactMarkdown …
ritesh-1918 May 27, 2026
e2d4727
chore(gssoc): add GSSoC issues triage and PR merge scripts
ritesh-1918 May 27, 2026
5ec2591
chore(gssoc): commit open GSSoC issues remaining triaged scripts
ritesh-1918 May 27, 2026
fb6a950
fix(auth): add client-side password complexity validation to prevent …
ritesh-1918 May 27, 2026
b6e09a5
fix: add size limits, image validation, concurrency limiter, and time…
ionfwsrijan May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 0 additions & 54 deletions .github/workflows/hf_sync.yml

This file was deleted.

1 change: 0 additions & 1 deletion Frontend/jsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"compilerOptions": {
"baseUrl": ".",
"ignoreDeprecations": "6.0",
"paths": {
"@/*": [
"./src/*"
Expand Down
44 changes: 44 additions & 0 deletions Frontend/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ import AIProcessing from "./user/pages/AIProcessing";
import AIUnderstanding from "./user/pages/AIUnderstanding";
import Notifications from "./user/pages/Notifications";
import Help from "./user/pages/Help";
import DocsPortal from "./docs/pages/DocsPortal";

// New Showcase Pages
import ApiReference from "./pages/ApiReference";
import Changelog from "./pages/Changelog";
import StatusPage from "./pages/StatusPage";
import AboutUs from "./pages/AboutUs";
import Careers from "./pages/Careers";
import CookiePolicy from "./pages/legal/CookiePolicy";

// NEW Admin Pages (Refactored)
import AdminDashboard from "./admin/pages/AdminDashboard";
Expand Down Expand Up @@ -110,6 +119,13 @@ function TitleUpdater() {
else if (path === '/my-tickets') title = 'My Tickets';
else if (path === '/profile') title = 'User Profile';
else if (path === '/notifications') title = 'Notifications';
else if (path === '/docs') title = 'Documentation';
else if (path === '/api-reference') title = 'API Reference';
else if (path === '/changelog') title = 'Changelog';
else if (path === '/status') title = 'Status';
else if (path === '/about') title = 'About Us';
else if (path === '/careers') title = 'Careers';
else if (path === '/cookie-policy') title = 'Cookie Policy';
// Public / Lobby Routes
else if (path === '/login') title = 'Login';
else if (path === '/signup') title = 'Create Account';
Expand Down Expand Up @@ -207,6 +223,27 @@ function App() {
initialize();
}, [initialize]);

const isDocsSubdomain = window.location.hostname.startsWith('docs.');

if (isDocsSubdomain) {
return (
<BrowserRouter>
<TitleUpdater />
<ScrollToTop />
<Toaster />
<BugReportWidget />
<Routes>
<Route path="/" element={<DocsPortal />} />
<Route path="/docs" element={<Navigate to="/" replace />} />
<Route path="/api-reference" element={<ApiReference />} />
<Route path="/changelog" element={<Changelog />} />
<Route path="/status" element={<StatusPage />} />
<Route path="*" element={<DocsPortal />} />
</Routes>
</BrowserRouter>
);
}

return (
<BrowserRouter>
<TitleUpdater />
Expand All @@ -225,6 +262,13 @@ function App() {
<Route path="/user-lobby" element={<UserLobby />} />
<Route path="/not-approved" element={<NotApproved />} />
<Route path="/contact-sales" element={<ContactSales />} />
<Route path="/docs" element={<DocsPortal />} />
<Route path="/api-reference" element={<ApiReference />} />
<Route path="/changelog" element={<Changelog />} />
<Route path="/status" element={<StatusPage />} />
<Route path="/about" element={<AboutUs />} />
<Route path="/careers" element={<Careers />} />
<Route path="/cookie-policy" element={<CookiePolicy />} />

{/* Feature Pages */}
<Route path="/features/categorization" element={<AutoCategorizationFeature />} />
Expand Down
6 changes: 5 additions & 1 deletion Frontend/src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ const getBackendUrl = () => {
const envUrl = import.meta.env.VITE_BACKEND_URL;
if (envUrl) return envUrl.trim().replace(/\/$/, '');

// Default to the live Hugging Face Space for stability
// Dynamically deduce backend URL if running locally or on custom domain
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
return 'http://localhost:8000';
}
// Default to the live Hugging Face Space for stability in production deployment
return 'https://ritesh19180-ai-helpdesk-api.hf.space';
};

Expand Down
110 changes: 110 additions & 0 deletions Frontend/src/docs/data/docsArticles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
export const DOCS_CATEGORIES = [
{ id: 'getting-started', title: 'Getting Started', icon: 'Rocket' },
{ id: 'ticket-flow', title: 'Ticket Flow & AI', icon: 'Cpu' },
{ id: 'admin-guide', title: 'Admin & Settings', icon: 'Sliders' },
{ id: 'troubleshooting', title: 'Troubleshooting', icon: 'AlertTriangle' }
];

export const DOCS_ARTICLES = [
{
id: 'intro',
categoryId: 'getting-started',
title: 'Platform Introduction',
description: 'Overview of the AI-powered IT helpdesk ticket automation system.',
tags: ['overview', 'architecture'],
content: `
# Platform Introduction
Welcome to **HELPDESK.AI**—a next-generation automated IT Support Platform powered by custom local machine learning models and robust LLM failover pipelines.

HELPDESK.AI classifies, prioritizes, and routes incoming IT queries instantly without human intervention. If the AI determines that an issue matches a verified fix from our knowledge base, it auto-resolves the ticket dynamically!

### ⚡ Main Pillars of the Platform:
1. **AI Ingestion**: Captures text and screenshot telemetry from user inputs.
2. **NER (Named Entity Recognition)**: Extracts system hostnames, IP addresses, error codes, and library names.
3. **Automated Triage**: Predicts the ticket category, subcategory, priority level, and routes it to the optimal engineering unit.
4. **Auto-Resolution (RAG)**: Scans historically solved cases and knowledge articles, prompting users with step-by-step resolution playbooks.
`
},
{
id: 'access-roles',
categoryId: 'getting-started',
title: 'User Roles & Access Levels',
description: 'Understand differences between End Users, Support Agents, and Admins.',
tags: ['auth', 'roles'],
content: `
# User Roles & Access Levels
HELPDESK.AI enforces tenant-scoped access mapping across three core authorization levels:

### 👥 1. End User
* **Dashboard Access**: Report new issues via voice or text.
* **Timeline Tracking**: Monitor real-time progress of submitted tickets.
* **Interactive Chat**: Directly correspond with assigned agents and support teams.

### 🛠️ 2. Support Agent
* **Divert Protocol**: Forward tickets to other units or claim them to move to an "In Progress" status.
* **Override Labels**: Manually edit categories, subcategories, or priority levels to retrain and log AI corrections.
* **Resolution Action**: Resolve active support incidents cleanly.

### 👑 3. Master Admin
* **System Operations**: Complete company registration directories, clearance directories, and system audit logs.
`
},
{
id: 'ticket-creation',
categoryId: 'ticket-flow',
title: 'Ingestion & Speech-to-Text',
description: 'How to file tickets, capture details using voice, and extract text from attachments.',
tags: ['voice', 'ocr', 'tickets'],
content: `
# Ingestion & Speech-to-Text
Creating a ticket is fully optimized for speed and completeness through advanced frontend features.

### 🎙️ 1. Dictation & Voice Assistant
Click the **Microphone** icon in the **Voice Assistant** panel to dictate your issue.
- The web app dynamically invokes the browser's \`webkitSpeechRecognition\` framework.
- It displays a Siri-style audio visualizer showing live voice amplitude on-screen.
- Clicking **Done** appends the transcribed speech directly to the description textarea.

### 📸 2. Image Upload & OCR
Drag and drop or click to upload a JPEG/PNG screenshot of the system error.
- The frontend triggers **Tesseract.js** to run optical character recognition locally inside the browser.
- All extracted text is captured under \`ocr_text\` and sent to the LLM to understand technical signals.
`
},
{
id: 'system-settings',
categoryId: 'admin-guide',
title: 'Managing System Settings',
description: 'Configure confidence limits and duplicate sensitivities dynamically.',
tags: ['settings', 'admin'],
content: `
# Managing System Settings
Support agents can tweak active settings on the **System Settings** page to align the automated routing behavior with operational guidelines.

### ⚙️ Adjusting AI Thresholds:
* **AI Confidence Threshold**: Controls whether a ticket can be automatically resolved or must be reviewed by a human. If the AI's confidence is below this limit, the ticket defaults to a \`pending_human\` review.
* **Duplicate Sensitivity**: Calibrates the semantic search limits when checking incoming tickets against previous issues. Higher sensitivity matches tickets only with extremely high textual similarity.
* **Auto-Resolve Toggle**: Enables or completely disables automated closing.
`
},
{
id: 'troubleshooting-connections',
categoryId: 'troubleshooting',
title: 'API & Connection Failures',
description: 'How to troubleshoot Supabase or backend timeout errors.',
tags: ['database', 'network', 'timeout'],
content: `
# API & Connection Failures
If you encounter timeout issues or connection alerts, review the diagnostic guide below.

### 🔴 1. Supabase Initialization Failures
**Symptom**: Console logs show \\\`[Supabase] Client is disabled. Set valid VITE_SUPABASE_URL...\\\`
- **Resolution**: Verify that the \\\`.env\\\` file in the \\\`Frontend/\\\` folder contains your valid project URL and anon keys.
- **Vite Cache**: Run \\\`npm run dev\\\` again to make sure the environment changes are rehydrated in your web browser.

### 🔴 2. Backend Model degraded startup
**Symptom**: The AI Ingestion pipeline displays an warning about SentenceTransformer load errors.
- **Resolution**: The backend includes **self-healing fallback modules** that automatically bypass local ML loading on low-RAM servers, utilizing the API Failover module to ensure 100% platform availability.
`
}
];
Loading