- Set correct table ID: mx149yctebfwvys (ai_data_Memory) - Updated type column with SingleSelect options - Added all required columns for corrections, preferences, episodes, decisions, validation - Fixed column options for type, severity, status fields
170 lines
4.8 KiB
Markdown
170 lines
4.8 KiB
Markdown
# IT Site Survey AI - Code Structure Analysis
|
|
|
|
## Overview
|
|
The application is a Flask-based web application that provides IT infrastructure site survey functionality with AI-powered analysis and recommendations.
|
|
|
|
## Main Components
|
|
|
|
### 1. Core Application (app.py)
|
|
- **Lines of Code**: 792
|
|
- **Framework**: Flask
|
|
- **Key Dependencies**: requests, reportlab, flask-cors
|
|
- **External Services**: Ollama AI at http://192.168.19.25:11434
|
|
|
|
### 2. Data Model
|
|
- **Template**: concise_template.json (21 questions across 5 categories)
|
|
- **In-Memory Storage**:
|
|
- `surveys_db` - Dictionary of survey definitions
|
|
- `survey_responses_db` - Dictionary of survey responses
|
|
- **Data Structure**:
|
|
- Surveys with metadata and questions
|
|
- Responses with submission data and answers
|
|
|
|
### 3. Key Routes
|
|
|
|
#### Survey Management
|
|
- `GET /api/surveys/template` - Get survey template
|
|
- `GET /api/surveys` - List all surveys
|
|
- `POST /api/surveys` - Create new survey
|
|
- `GET /api/surveys/<survey_id>` - Get specific survey
|
|
|
|
#### Response Handling
|
|
- `POST /api/surveys/<survey_id>/responses` - Submit survey response
|
|
- `GET /api/surveys/responses` - Get all responses (recently added)
|
|
|
|
#### AI Analysis
|
|
- `POST /api/surveys/<survey_id>/analyze` - Generate AI recommendations
|
|
- `POST /api/surveys/<survey_id>/generate-quote` - Generate service quote
|
|
|
|
#### Export Functions
|
|
- `POST /api/surveys/<survey_id>/export/pdf` - Export to PDF
|
|
- `POST /api/surveys/<survey_id>/export/text` - Export to text
|
|
- `POST /api/surveys/<survey_id>/export/email` - Export to email format
|
|
|
|
#### System
|
|
- `GET /` - Main application page
|
|
- `GET /<path:path>` - Static file serving
|
|
- `GET /api/health` - Health check
|
|
- `GET /api/ollama-status` - Ollama connectivity check
|
|
|
|
### 4. Frontend Files
|
|
- `index.html` - Main survey interface (18,263 bytes)
|
|
- `dashboard.html` - Response dashboard (337 bytes)
|
|
|
|
### 5. Template Structure
|
|
**21 Questions Across 5 Categories:**
|
|
1. **Client Information** (2 questions)
|
|
- Company Name (text)
|
|
- Industry/Vertical (select)
|
|
|
|
2. **Site Information** (3 questions)
|
|
- Site Size (select)
|
|
- Building Type (select)
|
|
- Square Footage (select)
|
|
|
|
3. **Existing Infrastructure** (4 questions)
|
|
- Network Topology (select)
|
|
- Network Size (select)
|
|
- Internet Bandwidth (select)
|
|
- ISP Connection Type (multiselect)
|
|
|
|
4. **Wireless Infrastructure** (2 questions)
|
|
- Wireless Standard (select)
|
|
- Wireless Coverage Quality (select)
|
|
|
|
5. **Business Requirements** (10 questions)
|
|
- Critical Applications (multiselect)
|
|
- Device Types (multiselect)
|
|
- User Density (select)
|
|
- Performance Requirements (multiselect)
|
|
- Security Requirements (multiselect)
|
|
- Compliance Requirements (select)
|
|
- Budget Range (select)
|
|
- Project Timeline (select)
|
|
- Additional Notes (textarea)
|
|
|
|
## Current Limitations
|
|
|
|
### 1. Data Persistence
|
|
- **Issue**: All data stored in memory (lost on restart)
|
|
- **Impact**: Critical for production use
|
|
- **Solution Needed**: Database persistence
|
|
|
|
### 2. Security
|
|
- **Issue**: No authentication on dashboard
|
|
- **Impact**: Survey data publicly accessible
|
|
- **Solution Needed**: User authentication
|
|
|
|
### 3. Scalability
|
|
- **Issue**: Single-process Flask application
|
|
- **Impact**: Limited concurrent users
|
|
- **Solution Needed**: Multi-process or async handling
|
|
|
|
## Database Schema Requirements
|
|
|
|
For PostgreSQL implementation, the following tables would be needed:
|
|
|
|
### surveys
|
|
- id (UUID, PK)
|
|
- name (VARCHAR)
|
|
- description (TEXT)
|
|
- client_name (VARCHAR)
|
|
- site_name (VARCHAR)
|
|
- created_at (TIMESTAMP)
|
|
- status (VARCHAR)
|
|
|
|
### survey_questions
|
|
- id (UUID, PK)
|
|
- survey_id (UUID, FK)
|
|
- question_id (VARCHAR)
|
|
- category (VARCHAR)
|
|
- question_text (TEXT)
|
|
- question_type (VARCHAR)
|
|
- options (JSON)
|
|
|
|
### survey_responses
|
|
- id (UUID, PK)
|
|
- survey_id (UUID, FK)
|
|
- submitted_by (VARCHAR)
|
|
- submitted_at (TIMESTAMP)
|
|
|
|
### response_answers
|
|
- id (UUID, PK)
|
|
- response_id (UUID, FK)
|
|
- question_id (VARCHAR)
|
|
- answer_value (TEXT or JSON)
|
|
|
|
## Implementation Considerations
|
|
|
|
### 1. Backward Compatibility
|
|
- All existing API endpoints must continue working
|
|
- No breaking changes to data structure
|
|
- Maintain same JSON response formats
|
|
|
|
### 2. Migration Strategy
|
|
- Seamless transition from memory to database
|
|
- No data loss during migration
|
|
- Fallback to memory if database unavailable
|
|
|
|
### 3. Configuration
|
|
- Database connection via environment variables
|
|
- Default to memory storage if no DB configured
|
|
- Clear setup instructions for PostgreSQL
|
|
|
|
### 4. Error Handling
|
|
- Graceful degradation if database unavailable
|
|
- Clear error messages for connectivity issues
|
|
- Logging for debugging database issues
|
|
|
|
## Dependencies to Add
|
|
- `psycopg2-binary` - PostgreSQL driver
|
|
- `sqlalchemy` - ORM (optional but recommended)
|
|
- Database connection pooling
|
|
|
|
## Estimated Implementation Effort
|
|
- **Schema Design**: 2 hours
|
|
- **Database Integration**: 6 hours
|
|
- **Migration Logic**: 3 hours
|
|
- **Testing**: 3 hours
|
|
- **Documentation**: 2 hours
|
|
- **Total**: 16 hours |