narasiahli-be/plan/implementation-checklist.md

9.9 KiB

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.