Skip to content

feat: entity enrichment, test coverage, email notifications & production Dockerfile#170

Merged
Azfe merged 0 commit into
mainfrom
develop
May 6, 2026
Merged

feat: entity enrichment, test coverage, email notifications & production Dockerfile#170
Azfe merged 0 commit into
mainfrom
develop

Conversation

@Azfe
Copy link
Copy Markdown
Owner

@Azfe Azfe commented May 6, 2026

Summary

This PR consolidates multiple development epics into a production-ready release:

  • New entity fields across Work Experience, Education, Additional Training and Projects
  • Email notification system via Resend (replacing SendGrid/SMTP)
  • Massive test coverage expansion — from ~95% to ~100% unit coverage across all layers
  • Production Dockerfile ready for Railway deployment
  • Bug fixes in repository update methods, optional fields handling, and CV aggregation

Changes by area

Domain

  • WorkExperience: add location, is_current, duration_months fields
  • Education & AdditionalTraining: add optional technologies field
  • Project: add optional image_url field
  • Skill: remove category field across all layers
  • Tool: make category optional

Application / Infrastructure

  • GetCompleteCVUseCase: fix aggregation to include all entities using default_profile
  • CreateContactMessageUseCase: integrate email notification on new message
  • Repository update() methods: fix bug where _id was included in the replacement document
  • SkillUseCase: fix order_index propagation through the full PUT pipeline
  • Email service: replace SendGrid + aiosmtplib with ResendEmailService; add NullEmailService for non-production
    environments
  • IEmailService interface added to shared/interfaces/

API

  • Schemas updated for all enriched entities (WorkExperienceRequest, ProjectRequest, etc.)
  • ToolBase.category made optional
  • SkillSchema: remove category references

Testing

  • 136 files changed, +9 438 lines — new unit tests for every use case, DTO, repository, mapper, value object and
    exception class
  • Integration & E2E fixtures updated to match schema changes

Infrastructure / Deployment

  • Dockerfile (production) created for Railway — python:3.13-slim, no --reload
  • requirements.txt converted from UTF-16 to UTF-8; cleaned up
  • .env.example updated with Resend variables

Testing checklist

  • make test passes with no failures inside the container
  • Unit coverage remains at or above 96%
  • Integration tests pass against a real MongoDB instance
  • E2E test_complete_cv_flow.py passes end-to-end
  • POST /api/v1/contact-messages triggers an email via Resend (staging key)
  • GET /api/v1/cv returns all sections including location, technologies, image_url
  • GET /api/v1/skills returns skills without category field

@Azfe Azfe merged commit c40529a into main May 6, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant