narasiahli-be/plan/implementation-checklist.md

287 lines
9.9 KiB
Markdown
Raw Normal View History

2025-09-19 04:08:42 +00:00
# Narasi Ahli Implementation Checklist
## Database Schema Implementation
### ✅ Phase 1A: Update Users Entity
- [ ] Modify `app/database/entity/users/users.entity.go`
- Add `Degree` field
- Add `WhatsappNumber` field
- Add `LastJobTitle` field
### ✅ Phase 1B: Create New Entities
#### Education History Entity
- [ ] Create `app/database/entity/education_history.entity.go`
- [ ] Fields: ID, UserID, SchoolName, Major, EducationLevel, GraduationYear, CertificateImage
#### Work History Entity
- [ ] Create `app/database/entity/work_history.entity.go`
- [ ] Fields: ID, UserID, JobTitle, CompanyName, StartDate, EndDate
#### Research Journals Entity
- [ ] Create `app/database/entity/research_journals.entity.go`
- [ ] Fields: ID, UserID, JournalTitle, Publisher, JournalURL, PublishedDate
#### Communication Entities
- [ ] Create `app/database/entity/conversations.entity.go`
- [ ] Create `app/database/entity/chat_messages.entity.go`
- [ ] Support for text, image, file, audio message types
#### AI Chat Entities
- [ ] Create `app/database/entity/ai_chat_sessions.entity.go`
- [ ] Create `app/database/entity/ai_chat_messages.entity.go`
- [ ] Create `app/database/entity/ai_chat_logs.entity.go`
## Module Implementation
### ✅ Phase 2A: Education History Module (`app/module/education_history/`)
#### Files to Create:
- [ ] `education_history.module.go` - FX dependency injection setup
- [ ] `controller/controller.go` - Main controller struct
- [ ] `controller/education_history.controller.go` - HTTP handlers
- [ ] `service/education_history.service.go` - Business logic
- [ ] `repository/education_history.repository.go` - Data access
- [ ] `request/education_history.request.go` - Input DTOs
- [ ] `response/education_history.response.go` - Output DTOs
- [ ] `mapper/education_history.mapper.go` - Entity ↔ DTO conversion
#### API Endpoints:
- [ ] `GET /education-history` - List with pagination
- [ ] `GET /education-history/:id` - Get by ID
- [ ] `POST /education-history` - Create new
- [ ] `PUT /education-history/:id` - Update existing
- [ ] `DELETE /education-history/:id` - Delete
- [ ] `POST /education-history/:id/certificate` - Upload certificate
### ✅ Phase 2B: Work History Module (`app/module/work_history/`)
#### Files to Create:
- [ ] `work_history.module.go`
- [ ] `controller/controller.go`
- [ ] `controller/work_history.controller.go`
- [ ] `service/work_history.service.go`
- [ ] `repository/work_history.repository.go`
- [ ] `request/work_history.request.go`
- [ ] `response/work_history.response.go`
- [ ] `mapper/work_history.mapper.go`
#### API Endpoints:
- [ ] `GET /work-history` - List with pagination
- [ ] `GET /work-history/:id` - Get by ID
- [ ] `POST /work-history` - Create new
- [ ] `PUT /work-history/:id` - Update existing
- [ ] `DELETE /work-history/:id` - Delete
### ✅ Phase 2C: Research Journals Module (`app/module/research_journals/`)
#### Files to Create:
- [ ] `research_journals.module.go`
- [ ] `controller/controller.go`
- [ ] `controller/research_journals.controller.go`
- [ ] `service/research_journals.service.go`
- [ ] `repository/research_journals.repository.go`
- [ ] `request/research_journals.request.go`
- [ ] `response/research_journals.response.go`
- [ ] `mapper/research_journals.mapper.go`
#### API Endpoints:
- [ ] `GET /research-journals` - List with pagination
- [ ] `GET /research-journals/:id` - Get by ID
- [ ] `POST /research-journals` - Create new
- [ ] `PUT /research-journals/:id` - Update existing
- [ ] `DELETE /research-journals/:id` - Delete
### ✅ Phase 2D: Communications Module (`app/module/communications/`)
#### Files to Create:
- [ ] `communications.module.go`
- [ ] `controller/controller.go`
- [ ] `controller/conversations.controller.go`
- [ ] `controller/chat_messages.controller.go`
- [ ] `service/conversations.service.go`
- [ ] `service/chat_messages.service.go`
- [ ] `service/file_upload.service.go`
- [ ] `repository/conversations.repository.go`
- [ ] `repository/chat_messages.repository.go`
- [ ] `request/conversations.request.go`
- [ ] `request/chat_messages.request.go`
- [ ] `response/conversations.response.go`
- [ ] `response/chat_messages.response.go`
- [ ] `mapper/conversations.mapper.go`
- [ ] `mapper/chat_messages.mapper.go`
#### API Endpoints:
- [ ] `GET /conversations` - List user conversations
- [ ] `GET /conversations/:id` - Get conversation details
- [ ] `POST /conversations` - Start new conversation
- [ ] `GET /conversations/:id/messages` - Get messages with pagination
- [ ] `POST /conversations/:id/messages` - Send text message
- [ ] `POST /conversations/:id/messages/file` - Send file message
- [ ] `PUT /conversations/:id/messages/:messageId/read` - Mark as read
### ✅ Phase 2E: AI Chat Module (`app/module/ai_chat/`)
#### Files to Create:
- [ ] `ai_chat.module.go`
- [ ] `controller/controller.go`
- [ ] `controller/ai_chat_sessions.controller.go`
- [ ] `controller/ai_chat_messages.controller.go`
- [ ] `service/ai_chat_sessions.service.go`
- [ ] `service/ai_chat_messages.service.go`
- [ ] `service/ai_integration.service.go`
- [ ] `repository/ai_chat_sessions.repository.go`
- [ ] `repository/ai_chat_messages.repository.go`
- [ ] `request/ai_chat_sessions.request.go`
- [ ] `request/ai_chat_messages.request.go`
- [ ] `response/ai_chat_sessions.response.go`
- [ ] `response/ai_chat_messages.response.go`
- [ ] `mapper/ai_chat_sessions.mapper.go`
- [ ] `mapper/ai_chat_messages.mapper.go`
#### API Endpoints:
- [ ] `GET /ai-chat/sessions` - List user sessions
- [ ] `POST /ai-chat/sessions` - Create new session
- [ ] `GET /ai-chat/sessions/:id` - Get session details
- [ ] `PUT /ai-chat/sessions/:id` - Update session (title, status)
- [ ] `DELETE /ai-chat/sessions/:id` - Delete session
- [ ] `GET /ai-chat/sessions/:id/messages` - Get messages
- [ ] `POST /ai-chat/sessions/:id/messages` - Send message to AI
### ✅ Phase 2F: AI Chat Logs Module (`app/module/ai_chat_logs/`)
#### Files to Create:
- [ ] `ai_chat_logs.module.go`
- [ ] `controller/controller.go`
- [ ] `controller/ai_chat_logs.controller.go`
- [ ] `service/ai_chat_logs.service.go`
- [ ] `repository/ai_chat_logs.repository.go`
- [ ] `request/ai_chat_logs.request.go`
- [ ] `response/ai_chat_logs.response.go`
- [ ] `mapper/ai_chat_logs.mapper.go`
#### API Endpoints:
- [ ] `GET /ai-chat-logs` - List logs with filters
- [ ] `GET /ai-chat-logs/:id` - Get specific log
- [ ] `POST /ai-chat-logs` - Create log entry
- [ ] `PUT /ai-chat-logs/:id` - Update log (end session)
## Integration Updates
### ✅ Phase 3A: Database Registration
- [ ] Update `app/database/index.database.go`
- Add all new entities to `Models()` function
- Ensure proper migration order
### ✅ Phase 3B: Router Registration
- [ ] Update `app/router/api.go`
- Add new router structs
- Add constructor parameters
- Add router registrations in `Register()` method
### ✅ Phase 3C: Main Application Updates
- [ ] Update `main.go`
- Add new module imports
- Add module providers to FX
### ✅ Phase 3D: Users Module Enhancement
- [ ] Update `app/module/users/request/users.request.go`
- Add new fields to request DTOs
- [ ] Update `app/module/users/response/users.response.go`
- Add new fields to response DTOs
- [ ] Update `app/module/users/mapper/users.mapper.go`
- Handle new field mappings
## File Upload & Storage
### ✅ Phase 4A: File Upload Service
- [ ] Create `utils/service/file_upload.service.go`
- [ ] Support certificate images (education)
- [ ] Support chat attachments (photos, files, audio)
- [ ] Integration with existing MinIO setup
### ✅ Phase 4B: File Validation
- [ ] Implement file type validation
- [ ] Implement file size limits
- [ ] Implement security scanning
## Real-time Features (Optional)
### ✅ Phase 5A: WebSocket Support
- [ ] Add WebSocket handler for real-time chat
- [ ] Message broadcasting system
- [ ] Connection management
### ✅ Phase 5B: Push Notifications
- [ ] New message notifications
- [ ] AI response notifications
## Testing Implementation
### ✅ Phase 6A: Unit Tests
- [ ] Service layer tests for each module
- [ ] Repository layer tests
- [ ] Mapper tests
### ✅ Phase 6B: Integration Tests
- [ ] API endpoint tests
- [ ] Database integration tests
- [ ] File upload tests
## Documentation
### ✅ Phase 7A: API Documentation
- [ ] Update Swagger documentation for all endpoints
- [ ] Request/response examples
- [ ] Error response documentation
### ✅ Phase 7B: Database Documentation
- [ ] ERD diagram
- [ ] Table relationships
- [ ] Migration scripts
## Deployment Preparation
### ✅ Phase 8A: Configuration
- [ ] Environment variables for AI service
- [ ] MinIO bucket configuration
- [ ] Database migration scripts
### ✅ Phase 8B: Performance Optimization
- [ ] Database indexing
- [ ] Query optimization
- [ ] Caching strategy
## Quality Assurance
### ✅ Phase 9A: Code Review
- [ ] Follow existing code patterns
- [ ] Error handling consistency
- [ ] Security review
### ✅ Phase 9B: Performance Testing
- [ ] Load testing for chat features
- [ ] File upload performance
- [ ] Database query performance
---
## Implementation Notes
1. **Follow Existing Patterns**: Each module should follow the exact same structure as existing modules
2. **Database Constraints**: Add proper foreign key constraints and indexes
3. **Error Handling**: Use consistent error response format
4. **Authentication**: Ensure all endpoints properly validate user tokens
5. **Authorization**: Users can only access their own data
6. **Pagination**: Implement pagination for all list endpoints
7. **File Security**: Validate file uploads and implement virus scanning
8. **API Versioning**: Consider version compatibility for future updates
## Priority Order
1. **High Priority**: Users profile updates, Education History, Work History
2. **Medium Priority**: Research Journals, Basic Communication
3. **Low Priority**: AI Chat, Real-time features, Advanced communication features
This checklist ensures systematic implementation while maintaining code quality and consistency with the existing architecture.