514 lines
17 KiB
Markdown
514 lines
17 KiB
Markdown
# Change Log - AI Study Assistant
|
|
|
|
## 📝 VERSION HISTORY
|
|
|
|
---
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
- **Teacher Materials Page (Upload Conteúdo)** - Nova tela dedicada para upload de materiais para a IA
|
|
- Novo ficheiro: `lib/features/materials/presentation/pages/teacher_materials_page.dart`
|
|
- Acedida através do card "Upload Conteúdo" no dashboard do professor (usando `Navigator.push`)
|
|
- **Funcionalidades:**
|
|
- Visualização de materiais já enviados via `StreamBuilder` do Firestore
|
|
- Lista com ícones do tipo (PDF = vermelho, Imagem = azul)
|
|
- Formato de data: dd/MM/yyyy HH:mm
|
|
- Estados: loading, empty, error
|
|
- **Upload de ficheiros:**
|
|
- FloatingActionButton "Adicionar" com bottom sheet de opções
|
|
- PDF: seleção via `file_selector` (packages: `file_selector: ^1.0.3`)
|
|
- Imagem da Galeria: via `image_picker` (ImageSource.gallery)
|
|
- Foto da Câmara: via `image_picker` (ImageSource.camera)
|
|
- **Firebase Integration:**
|
|
- Upload para Firebase Storage: `materials/{teacherId}/{timestamp}_{filename}`
|
|
- Documento Firestore na coleção `materials` com campos: `teacherId`, `fileName`, `fileUrl`, `type`, `createdAt`, `storagePath`
|
|
- Query filtrada por `teacherId` e ordenada por `createdAt` descendente
|
|
- **UX:**
|
|
- Snackbars de feedback (sucesso verde, erro vermelho)
|
|
- Loading indicator no FAB durante upload
|
|
- Design consistente com o dashboard (AppBar teal #82C9BD, gradiente)
|
|
|
|
- **Student Classes List (ETAPA 5)** - Students can now view their enrolled classes on the home page
|
|
- New `StudentClassesListWidget` at `/lib/features/dashboard/presentation/widgets/student_classes_list_widget.dart`
|
|
- Query: `.collection('enrollments').where('studentId', isEqualTo: currentUser.uid).orderBy('joinedAt', descending: true)`
|
|
- For each enrollment, fetches corresponding class document from `classes` collection using `classId`
|
|
- Layout: Same horizontal 2-row scroll pattern as `TeacherClassesListWidget`
|
|
- Cards display: Class name + Class code
|
|
- Loading state: `CircularProgressIndicator` (centered in card while loading class data)
|
|
- Empty state: Text "Ainda não entraste em nenhuma turma."
|
|
- Widget inserted in `StudentDashboardPage` after QuickAccessWidget
|
|
- Visual design: White cards (#FFFFFF), teal icon background (#82C9BD with 10% opacity), rounded corners (16px), subtle shadows
|
|
- Title: "As Minhas Turmas" (same style as teacher dashboard)
|
|
- System now bidirectional: Teachers see students, Students see classes
|
|
|
|
- **Join Class Feature (ETAPA 4)** - Students can now join classes using class codes
|
|
- New `JoinClassPage` screen at `/lib/features/classes/presentation/pages/join_class_page.dart`
|
|
- TextField for entering 6-character class code (uppercase, centered, letter-spacing)
|
|
- "Entrar na Turma" button with loading state and visual feedback
|
|
- Firestore query: `.collection('classes').where('code', isEqualTo: enteredCode).limit(1)`
|
|
- Validation: checks if code exists, if student already enrolled
|
|
- On success: creates document in `enrollments` collection with `classId`, `studentId`, `studentName`, `joinedAt`
|
|
- Success feedback: green SnackBar "Entraste na turma com sucesso!"
|
|
- Error feedback: red SnackBar for invalid code, duplicate enrollment, or auth errors
|
|
- Auto-returns to student home after successful join
|
|
- Visual design: teal AppBar (#82C9BD), centered icon, clean input field with rounded corners
|
|
- New "Entrar numa Turma" card in Student Dashboard Quick Access section
|
|
- Card design: horizontal layout with `Icons.group_add`, white background, rounded corners
|
|
|
|
- **Class Students View (ETAPA 3)** - Teachers can now view enrolled students in each class
|
|
- New `ClassStudentsPage` screen at `/lib/features/classes/presentation/pages/class_students_page.dart`
|
|
- StreamBuilder query on `enrollments` collection with filter by `classId`
|
|
- ListTile layout showing student name and join date
|
|
- Loading state with `CircularProgressIndicator`
|
|
- Empty state message when no students enrolled
|
|
- Date formatting using `intl` package (dd/MM/yyyy format)
|
|
- Consistent styling with existing app design (teal colors, rounded cards)
|
|
- Navigation via `MaterialPageRoute` from class card tap
|
|
|
|
- **Class Creation Feature (ETAPA 1)** - Teachers can now create classes from the dashboard
|
|
- New "Criar Turma" button in Teacher Dashboard Quick Actions
|
|
- Simple dialog interface for entering class name
|
|
- Automatic generation of 6-character unique class codes (A-Z, 0-9)
|
|
- Firestore integration saving class data (name, teacherId, code, timestamp)
|
|
- Visual feedback with loading indicator and success/error messages
|
|
|
|
- **Classes List Display (ETAPA 2)** - Teachers can now view their created classes
|
|
- New "As Minhas Turmas" section in Teacher Dashboard
|
|
- Real-time StreamBuilder to fetch classes from Firestore
|
|
- **CORREÇÃO**: O erro anterior foi tentar usar `GridView` horizontal para um layout que exige colunas fixas
|
|
- **SOLUÇÃO**: Usar `ListView.builder` com `scrollDirection: Axis.horizontal`
|
|
- Cada item do ListView é uma `Column` contendo 2 cards (índice * 2 e índice * 2 + 1)
|
|
- Cards mantêm exatamente o mesmo tamanho e estilo da lista vertical original
|
|
- Layout: Card 1, 3, 5... (top row) | Card 2, 4, 6... (bottom row)
|
|
- Scroll horizontal para visualizar todas as turmas
|
|
- Visual cards showing class name and access code
|
|
- Empty state message when no classes exist
|
|
- Loading state with CircularProgressIndicator
|
|
|
|
### Fixed
|
|
- **Unified Quick Action Cards Text Style**
|
|
- "Upload Conteúdo" and "Criar Quiz" cards now match "Criar Turma" text alignment
|
|
- All cards use `Column` with `crossAxisAlignment: CrossAxisAlignment.start` for text section
|
|
- Subtitle text supports 2 lines with `maxLines: 2` and `height: 1.2`
|
|
- Consistent typography: title fontSize 16, subtitle fontSize 12
|
|
- "Criar Quiz" subtitle changed to "Avaliações interativas"
|
|
|
|
- **Pixel Overflow in Classes List Widget**
|
|
- **Causa**: Tentativa de usar `GridView` horizontal para layout de colunas fixas
|
|
- **Solução**: Substituir por `ListView.builder` com `scrollDirection: Axis.horizontal`
|
|
- Cada item do ListView é uma `Column` com 2 cards (índice * 2 e índice * 2 + 1)
|
|
- Cards mantêm tamanho original da lista vertical (sem constraints artificiais)
|
|
- Altura do SizedBox: 280 pixels (suficiente para 2 cards + spacing)
|
|
|
|
- **Pixel Overflow in Teacher Dashboard Cards**
|
|
- Replaced fixed height constraints with flexible `BoxConstraints(minHeight: 135, maxHeight: 160)`
|
|
- Fixed overflow issues in "Upload Conteúdo" and "Criar Turma" cards
|
|
- Cards now properly adapt to different screen sizes and content
|
|
|
|
### Planned Features
|
|
- Voice interaction capabilities
|
|
- Advanced analytics dashboard
|
|
- Multi-language support expansion
|
|
- Offline mode enhancements
|
|
- Integration with learning management systems
|
|
|
|
### Bug Fixes
|
|
- Fixed memory leak in chat interface
|
|
- Improved error handling in quiz submission
|
|
- Optimized image loading performance
|
|
- Enhanced security token validation
|
|
|
|
---
|
|
|
|
## [1.0.0] - 2026-05-06
|
|
|
|
### 🎉 Initial Release
|
|
|
|
#### Major Features
|
|
- **AI-Powered Tutoring System**
|
|
- Multiple interaction modes (Explanation, Tutor, Exploration, Remedial)
|
|
- Context-aware responses using RAG technology
|
|
- Real-time feedback and rating system
|
|
- Support for mathematics, science, and language learning
|
|
|
|
- **Interactive Quiz System**
|
|
- Multiple question types (Multiple Choice, True/False, Fill in the Blank)
|
|
- Adaptive difficulty adjustment
|
|
- Immediate feedback and explanations
|
|
- Progress tracking and analytics
|
|
|
|
- **Comprehensive Content Management**
|
|
- Support for PDF, DOCX, video, and audio files
|
|
- Automatic content processing and chunking
|
|
- Metadata extraction and classification
|
|
- Teacher-controlled content approval workflow
|
|
|
|
- **Advanced Learning Analytics**
|
|
- Concept mastery tracking
|
|
- Spaced repetition scheduling
|
|
- Personalized learning recommendations
|
|
- Detailed progress reports for students and teachers
|
|
|
|
- **Modern User Interface**
|
|
- Clean, modern design with EPVC school colors
|
|
- Responsive design for mobile, tablet, and web
|
|
- Smooth animations and transitions
|
|
- Accessibility features and dark mode support
|
|
|
|
#### Technical Implementation
|
|
- **Frontend**: Flutter 3.41.0 with Riverpod state management
|
|
- **Backend**: Firebase Cloud Functions with TypeScript
|
|
- **Database**: Firestore with comprehensive security rules
|
|
- **AI/ML**: RAG engine with vector search and LLM integration
|
|
- **Authentication**: Firebase Auth with multi-provider support
|
|
- **Storage**: Firebase Storage with automatic optimization
|
|
|
|
#### Security Features
|
|
- End-to-end encryption for sensitive data
|
|
- Role-based access control (Student, Teacher, Admin)
|
|
- Comprehensive audit logging
|
|
- GDPR and FERPA compliance
|
|
- Rate limiting and DDoS protection
|
|
|
|
#### Performance Optimizations
|
|
- Lazy loading for images and content
|
|
- Efficient caching strategies
|
|
- Optimized database queries with proper indexing
|
|
- Memory management and garbage collection
|
|
- API response time optimization
|
|
|
|
#### Platform Support
|
|
- **Mobile**: Android (API 21+) and iOS (iOS 12+)
|
|
- **Web**: Modern browsers with CanvasKit rendering
|
|
- **Desktop**: Progressive Web App support
|
|
- **Offline**: Limited offline functionality with caching
|
|
|
|
---
|
|
|
|
## 📋 Development Milestones
|
|
|
|
### Phase 1: Foundation (Weeks 1-4)
|
|
- ✅ Project setup and architecture
|
|
- ✅ Firebase configuration
|
|
- ✅ Authentication system
|
|
- ✅ Basic UI components
|
|
- ✅ Core data models
|
|
|
|
### Phase 2: Core Features (Weeks 5-8)
|
|
- ✅ AI tutoring system
|
|
- ✅ Quiz functionality
|
|
- ✅ Content management
|
|
- ✅ Learning analytics
|
|
- ✅ Performance optimization
|
|
|
|
### Phase 3: Enhancement (Weeks 9-12)
|
|
- ✅ Advanced UI/UX improvements
|
|
- ✅ Security hardening
|
|
- ✅ Testing and quality assurance
|
|
- ✅ Documentation completion
|
|
- ✅ Production deployment
|
|
|
|
---
|
|
|
|
## 🔧 Technical Specifications
|
|
|
|
### Dependencies
|
|
|
|
#### Flutter Dependencies
|
|
```yaml
|
|
flutter:
|
|
sdk: '>=3.11.5 <4.0.0'
|
|
|
|
dependencies:
|
|
flutter_riverpod: ^2.4.9
|
|
go_router: ^12.1.3
|
|
firebase_core: ^2.24.2
|
|
firebase_auth: ^4.15.3
|
|
cloud_firestore: ^4.13.6
|
|
firebase_storage: ^11.5.6
|
|
firebase_analytics: ^10.7.4
|
|
firebase_crashlytics: ^3.4.8
|
|
cached_network_image: ^3.3.0
|
|
google_fonts: ^6.1.0
|
|
flutter_animate: ^4.2.0+1
|
|
```
|
|
|
|
#### Backend Dependencies
|
|
```json
|
|
{
|
|
"dependencies": {
|
|
"@google-cloud/firestore": "^6.7.0",
|
|
"@google-cloud/storage": "^6.11.0",
|
|
"firebase-admin": "^11.10.1",
|
|
"firebase-functions": "^4.4.1",
|
|
"openai": "^4.20.1",
|
|
"anthropic": "^0.6.3",
|
|
"sentence-transformers": "^0.0.1",
|
|
"faiss-node": "^0.5.1",
|
|
"express": "^4.18.2",
|
|
"cors": "^2.8.5",
|
|
"helmet": "^7.0.0"
|
|
}
|
|
}
|
|
```
|
|
|
|
#### RAG Engine Dependencies
|
|
```python
|
|
dependencies = [
|
|
"numpy>=1.21.0",
|
|
"faiss-cpu>=1.7.4",
|
|
"sentence-transformers>=2.2.2",
|
|
"torch>=1.12.0",
|
|
"openai>=1.0.0",
|
|
"anthropic>=0.3.0",
|
|
"nltk>=3.7",
|
|
"spacy>=3.4.0",
|
|
]
|
|
```
|
|
|
|
### System Requirements
|
|
|
|
#### Mobile Requirements
|
|
- **Android**: API 21+ (Android 5.0+)
|
|
- **iOS**: iOS 12.0+
|
|
- **RAM**: Minimum 2GB, Recommended 4GB
|
|
- **Storage**: Minimum 100MB free space
|
|
- **Network**: Internet connection required for full functionality
|
|
|
|
#### Web Requirements
|
|
- **Browser**: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
|
|
- **RAM**: Minimum 4GB
|
|
- **JavaScript**: Enabled
|
|
- **Cookies**: Enabled for authentication
|
|
- **HTTPS**: Required for secure connections
|
|
|
|
#### Backend Requirements
|
|
- **Node.js**: Version 18.x LTS
|
|
- **Python**: Version 3.9+
|
|
- **Firebase**: Latest version
|
|
- **Memory**: Minimum 2GB RAM
|
|
- **Storage**: Minimum 10GB available
|
|
|
|
---
|
|
|
|
## 🔄 Migration Guide
|
|
|
|
### From Previous Versions
|
|
|
|
#### Version 0.9.x to 1.0.0
|
|
- **Breaking Changes**: None
|
|
- **New Features**: All features listed above
|
|
- **Migration Steps**: No migration required for new installations
|
|
- **Data Migration**: Automatic for existing users
|
|
|
|
#### Configuration Updates
|
|
```bash
|
|
# Update Flutter dependencies
|
|
flutter pub get
|
|
|
|
# Update Firebase configuration
|
|
firebase deploy --only functions
|
|
|
|
# Clear cache
|
|
flutter clean
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 Known Issues
|
|
|
|
### Current Issues
|
|
- **Issue**: Memory usage increases with prolonged chat sessions
|
|
- **Status**: Under investigation
|
|
- **Workaround**: Restart app periodically
|
|
- **Fix Planned**: Version 1.1.0
|
|
|
|
- **Issue**: Some PDF files may not process correctly
|
|
- **Status**: Investigating
|
|
- **Workaround**: Convert to DOCX or use alternative format
|
|
- **Fix Planned**: Version 1.0.1
|
|
|
|
### Resolved Issues
|
|
- ✅ Fixed: Login issues on some Android devices
|
|
- ✅ Fixed: Quiz submission failures
|
|
- ✅ Fixed: Image loading performance
|
|
- ✅ Fixed: Memory leak in content viewer
|
|
|
|
---
|
|
|
|
## 🚀 Upcoming Features
|
|
|
|
### Version 1.1.0 (Planned: Q3 2026)
|
|
- **Voice Interaction**: Voice input and output for accessibility
|
|
- **Advanced Analytics**: More detailed learning insights
|
|
- **Offline Mode**: Enhanced offline functionality
|
|
- **Multi-Language**: Support for additional languages
|
|
- **Integration**: LMS integration capabilities
|
|
|
|
### Version 1.2.0 (Planned: Q4 2026)
|
|
- **Collaborative Learning**: Study groups and peer tutoring
|
|
- **Gamification**: Points, badges, and leaderboards
|
|
- **Parent Portal**: Parent access to student progress
|
|
- **Advanced AI**: More sophisticated tutoring algorithms
|
|
- **Video Chat**: Live video tutoring sessions
|
|
|
|
---
|
|
|
|
## 📊 Usage Statistics
|
|
|
|
### Platform Adoption
|
|
- **Total Users**: 0 (Launch day)
|
|
- **Active Schools**: 1 (Escola Profissional de Vila do Conde)
|
|
- **Content Uploaded**: 0 documents
|
|
- **Questions Asked**: 0
|
|
- **Quizzes Completed**: 0
|
|
|
|
### Performance Metrics
|
|
- **Average Response Time**: Target < 500ms
|
|
- **App Load Time**: Target < 3 seconds
|
|
- **Uptime**: Target > 99.5%
|
|
- **Error Rate**: Target < 1%
|
|
|
|
---
|
|
|
|
## 🤝 Contributing to Change Log
|
|
|
|
### How to Contribute
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Update this change log
|
|
5. Submit a pull request
|
|
|
|
### Change Log Format
|
|
```markdown
|
|
## [Version] - YYYY-MM-DD
|
|
|
|
### [Category]
|
|
- **Description of change**
|
|
- **Issue**: #123 (if applicable)
|
|
- **Breaking**: Yes/No (if applicable)
|
|
```
|
|
|
|
### Categories
|
|
- **Added**: New features
|
|
- **Changed**: Modifications to existing features
|
|
- **Deprecated**: Features marked for removal
|
|
- **Removed**: Features removed
|
|
- **Fixed**: Bug fixes
|
|
- **Security**: Security-related changes
|
|
|
|
---
|
|
|
|
## 📞 Support
|
|
|
|
### Reporting Issues
|
|
- **GitHub Issues**: [Create new issue](https://github.com/your-org/teachit/issues)
|
|
- **Email**: support@teachit.app
|
|
- **In-App**: Use the feedback feature
|
|
|
|
### Feature Requests
|
|
- **GitHub Discussions**: [Start discussion](https://github.com/your-org/teachit/discussions)
|
|
- **Email**: features@teachit.app
|
|
- **User Voice**: In-app feature request system
|
|
|
|
### Security Issues
|
|
- **Email**: security@teachit.app
|
|
- **PGP Key**: Available on request
|
|
- **Response Time**: Within 24 hours
|
|
|
|
---
|
|
|
|
## 📚 Documentation Updates
|
|
|
|
### Related Documentation
|
|
- [User Guide](USER_GUIDE.md)
|
|
- [API Documentation](API_DOCUMENTATION.md)
|
|
- [Security Guide](SECURITY_GUIDE.md)
|
|
- [Performance Guide](PERFORMANCE_GUIDE.md)
|
|
- [Development Setup](DEVELOPMENT_SETUP.md)
|
|
|
|
### Documentation Changes
|
|
- **2026-05-06**: Initial documentation creation
|
|
- **2026-05-06**: Updated with comprehensive guides
|
|
|
|
---
|
|
|
|
## 📈 Release Schedule
|
|
|
|
### Release Cadence
|
|
- **Major Releases**: Every 6 months
|
|
- **Minor Releases**: Every month
|
|
- **Patch Releases**: As needed for critical fixes
|
|
|
|
### Release Process
|
|
1. **Development**: Feature development in feature branches
|
|
2. **Testing**: Comprehensive testing in staging
|
|
3. **Review**: Code review and security audit
|
|
4. **Deployment**: Gradual rollout with monitoring
|
|
5. **Monitoring**: Post-release performance monitoring
|
|
|
|
### Version Numbering
|
|
- **Major**: X.0.0 - Significant new features
|
|
- **Minor**: X.Y.0 - New features and improvements
|
|
- **Patch**: X.Y.Z - Bug fixes and security updates
|
|
|
|
---
|
|
|
|
## 🏆 Recognition
|
|
|
|
### Development Team
|
|
- **Frontend Team**: Flutter development and UI/UX
|
|
- **Backend Team**: Firebase functions and API development
|
|
- **AI Team**: RAG engine and LLM integration
|
|
- **QA Team**: Testing and quality assurance
|
|
- **DevOps Team**: Deployment and infrastructure
|
|
|
|
### Special Thanks
|
|
- **Escola Profissional de Vila do Conde**: Beta testing partner
|
|
- **Firebase Team**: Platform and support
|
|
- **Flutter Community**: Tools and libraries
|
|
- **OpenAI**: AI model integration
|
|
- **Anthropic**: AI model integration
|
|
|
|
---
|
|
|
|
## 📄 License
|
|
|
|
### Software License
|
|
- **Type**: MIT License
|
|
- **Copyright**: 2026 AI Study Assistant Team
|
|
- **Permissions**: Commercial use, modification, distribution
|
|
- **Conditions**: Include license and copyright notice
|
|
|
|
### Third-Party Licenses
|
|
- **Flutter**: BSD 3-Clause License
|
|
- **Firebase**: Google Terms of Service
|
|
- **OpenAI**: OpenAI Terms of Use
|
|
- **Anthropic**: Anthropic Terms of Service
|
|
|
|
---
|
|
|
|
## 🔮 Future Vision
|
|
|
|
### Long-term Goals
|
|
- **Global Reach**: Support for schools worldwide
|
|
- **AI Advancement**: State-of-the-art educational AI
|
|
- **Personalization**: Hyper-personalized learning experiences
|
|
- **Accessibility**: Universal design for learning
|
|
- **Innovation**: Continuous improvement and innovation
|
|
|
|
### Strategic Initiatives
|
|
- **Research Partnership**: Educational research collaborations
|
|
- **Open Source**: Community-driven development
|
|
- **Ecosystem**: Integration with educational tools
|
|
- **Sustainability**: Long-term platform sustainability
|
|
- **Impact**: Measurable educational outcomes
|
|
|
|
---
|
|
|
|
*Last Updated: 2026-05-06*
|
|
*Version: 1.0.0*
|
|
*Release Team: Product & Engineering*
|