diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a88825..2d30248 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,90 @@ +# [1.5.0](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.4.0...v1.5.0) (2025-09-05) + + +### Bug Fixes + +* **email sending:** guidance for use of exchange ([5b727cb](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/5b727cb51c86d7a954c8388c0957f35e4595e33f)) +* **email_sending:** resolve the NameError ([b9bd4f3](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b9bd4f373e19c596efbb47530fd7b60ceba25f4c)) +* **email_sending:** use the template created and stored in mongodb ([b8aa0cf](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b8aa0cf2b9369302b5092a8ed1c6b670e86bf685)) +* **email:** make these changes to Fixed the duplicate email sending bug ([6d7c6af](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/6d7c6af8a1f5c875c8bcc73d106fe77ac54287e0)) +* **notification:** some small changes ([b6f8b70](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b6f8b70f694f011483ffc8a900761d2bf867ed3d)) +* re-submit due to missing some contents ([2d3adb0](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/2d3adb093607a1813fa05ae9792561d1364b6ec4)) +* **services:** correct spelling errors ([9cb29cd](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/9cb29cd4009887aaee3a096ba48cb781e86666bf)) + + +### Features + +* add new apis for Magicleaps product use ([c200e70](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/c200e709704a6f8c3bada0776995268a975ebd2b)) +* **alpha:** make the alpha environment available ([59e8c06](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/59e8c06078ce40c809ede1b50383a46f67cbd61c)) +* **api:** add CRUD interfaces for message templates and email senders ([4f45878](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/4f4587893af49233a7b4728cf4762b43c152bcb2)) +* **api:** re-code the api interfaces for template message and email senders ([58d085a](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/58d085a4c6cd33e64bbae39049acc1a238e36afa)) +* **config:** add MongoDB connection configration ([9449f0e](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/9449f0e99bee3f86f9c616799e357243c175a4a2)) +* **devops:** If ttl_hours < 0, the deployment will take effect permanently ([52f8715](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/52f87152410eb5b223e092d5da4d1d365b73c1af)) +* **email_comsumer:** introduce multi-tenant delivery system ([4187c95](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/4187c95743bee97c2680a2f27af875b6641d6225)) +* **email_sending:** introduce multi-tenant delivery system ([d164b6f](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/d164b6f5673106459aec8456acb5771922d99605)) +* **email:** implement multi-tenant delivery function ([b5c9ab6](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b5c9ab6126cb88e9be63752eb23a21bdc010a01b)) +* **email:** remove rate limit functionality ([8a53431](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/8a5343156c733ca2b2b5bd729436c484585b54c7)) +* **models:** add indexs and models ([c1148a4](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/c1148a44d59318217daf058995c897957dcc94a9)) +* **multi-tenant:** define the send status and bounce type ([cc90c86](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/cc90c862d779ccf54636f4b1e8036efeb8ae2e73)) +* **routes:** add API setup support for route files ([830311f](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/830311fe7e485a13da477814a08a62b24a15bc57)) +* **service:** Add email status update handling for bounce cases ([0a01b1c](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/0a01b1c6c6293b9da456ba84f33bc62e4fa3021a)) +* **template:** define MongoDB schema for message templates and email senders ([f7ad36b](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/f7ad36bef8c17e0a47db29be5e58bdc4aeb072bb)) +* **templates:** add duplicate creation prevention ([58c77ce](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/58c77ce0022dfd33979b16a716fdd01233d8eb73)) +* **templates:** enforce uniqueness and improve safety ([2213fa5](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/2213fa59b5f5f19972624bcc094f0c1e391f692d)) +* **tenant:** enable customization of message templates and email senders ([fec7ac6](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/fec7ac607178cf6cf79334d7517b558653df4733)) +* **websockt:** add websocket ([d20b5ab](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/d20b5abff530f99fdfd18e29f69d1cdb659b37e9)) + +# [1.4.0](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.3.1...v1.4.0) (2025-08-12) + + +### Features + +* **refactor:** remove duplicate get_current_user ([30e6ca7](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/30e6ca72a76840f9f14fbf7682f1de277c5d60af)) +* **role_management:** Add a universal Depends for permission verification. ([b8be656](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b8be65615b451b190de6c06f62a1fe1a76cd2ee4)) +* **role_management:** add api test case for permission api ([beba0f5](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/beba0f5fe55c1e387349eed9da34616428603661)) +* **role_management:** Add apitest for test_assign_roles ([6b6b52a](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/6b6b52a599fa210c9e1668cfb92aa2426225423f)) +* **role_management:** add assign permissions to role api ([795c126](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/795c1262c60255d3110d2696ebffa4e0f74f450b)) +* **role_management:** add assign roles to user api ([ca0bfb1](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/ca0bfb155f01f8a89ef500f82d232945885e87b8)) +* **role_management:** add crud for role and permission ([2382f0b](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/2382f0becef4ecdea0d4ad89f4b127ed60030777)) +* **role_management:** add delete permission api ([4f39f88](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/4f39f888c4f35208141e0200774e7e64bc7cecb5)) +* **role_management:** add delete role api ([419e58d](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/419e58da0c4d93c623b98daa8cf9c3bb2185c7d6)) +* **role_management:** Add logic for creating temporary users to apitest. ([9dcd27b](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/9dcd27bc8a558eeccd8dce663808a47434339d8c)) +* **role_management:** Add pytest for auth services, and add api test case for role management ([6412810](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/641281066cd16c83470379f00e8146a7d42afe86)) +* **role_management:** add test report for role management ([0f7d63f](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/0f7d63f4a2d813de12b0fb46efafb1bb0e2f43b6)) +* **role_management:** update apitest for role management ([55e0beb](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/55e0bebbef1bfe462a554ae0a10478d080051657)) +* **role_management:** update apitest for role management ([5be8403](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/5be8403c751e03b37c19550e823d6e1a8608138c)) +* **role_management:** Update the JWT token generation logic to include new fields user_roles and user_permissions in the payload. ([4109018](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/4109018692dfcf0165e550ac5b7e61248420615a)) +* **role:** update docs ([e2f51d0](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/e2f51d09da75da530b383941a4fb85819e7d5db4)) +* **test:** add unittest for role management, add coverage report for role management ([69d1007](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/69d1007ddf21e71f2e40e05783c6a57e15592f04)) + +## [1.3.1](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.3.0...v1.3.1) (2025-08-11) + + +### Bug Fixes + +* connect to existing named queue instead of creating anonymous queue ([04acd78](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/04acd78d78359d791d6a7187a2eab4bf03cbea23)) +* make startup and shutdown event handlers async in common provider ([4340949](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/4340949f5734f60eac280b0ef524e53039b5d7a3)) +* update devops service to subscribe to correct reconciler heartbeat queue ([b5ca0cf](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/b5ca0cf0f55634e191efdcc51c3c9cf4b864700f)) +* use environment variable for RabbitMQ output queue name ([e4fe939](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/e4fe9394b1a71ae0df946007c78cc29bdabf0e26)) + +# [1.3.0](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.2.1...v1.3.0) (2025-08-07) + + +### Bug Fixes + +* correct deployment TTL calculation in DeploymentService ([879e45e](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/879e45eeb5a4fadce4b9fb61982f6d086106d0c5)) +* correct typo in BASE_RECONCILE_URL in site_settings.py ([e41aa3d](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/e41aa3d983024aadbb5bb05db5640d97768b2c25)) +* correct typo in BASE_RECONCILE_URL parameter in DeploymentService ([5f3368c](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/5f3368cbdcf26b2a4a1588359915e534bbc4e40e)) +* ensure consistent formatting in requirements.txt by removing redundant line ([113bc2b](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/113bc2bc7510a0097bebbabea493c97c44d35f00)) +* refractor the length functions and add comments, and address the issues ([d01468f](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/d01468f89a1ee7e489bf8f005be78d3cf1a0df51)) +* update deployment service to use correct product ID ([6c60a0b](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/6c60a0b6a59184840fdd173121803d52caef8eea)) + + +### Features + +* add RabbitMQ configuration to app settings ([d74967d](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/d74967db55609336e6e0fd9476240a242ae630db)) +* enhance message consumer startup and shutdown logging in message_queue.py ([9283e52](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/commit/9283e52e487d0f842fb81bb5065fbfb85cf6b1fe)) + ## [1.2.1](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.2.0...v1.2.1) (2025-04-30) diff --git a/VERSION b/VERSION index 6085e94..bc80560 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.1 +1.5.0 diff --git a/apps/notification/tests/integration_tests/create_global_templates.py b/apps/notification/tests/integration_tests/create_global_templates.py index c71e73b..3501cd7 100644 --- a/apps/notification/tests/integration_tests/create_global_templates.py +++ b/apps/notification/tests/integration_tests/create_global_templates.py @@ -995,6 +995,93 @@ class GlobalTemplateCreator: return success_cn and success_en + async def create_job_opportunity_template(self): + """create job opportunity notification template""" + print("\n📝 create job opportunity notification template...") + print("🔗 Deep link format: {{job_deep_link_url}}") + # TODO: the deep link should be modified and updated + print(" Example: https://freeleaps-alpha.com/jobs/{{job_id}}?source=email&user={{user_id}}&token={{auth_token}}") + print(" This will redirect to login if needed, then to the specific job posting") + + # Chinese version (region: 1) + template_data_cn = { + "template_id": "job_opportunity_notification", + "region": 1, + "subject": "新的工作机会 - {{candidate_name}}", + "body": """
+
+

freeleaps

+
+ +
+

新的工作机会

+ +

亲爱的 {{candidate_name}}

+ +

在 {{company_domain}} 上有一个新的职位发布,可能符合您的个人资料。点击此链接或登录 {{company_domain}} 查看详情。

+ +
+ + 查看工作机会 + +
+ +
+

祝好!
Freeleaps 团队

+
+ +
+

freeleaps

+

+ We make software development the easiest ever. +

+
+
""" + } + + # English version (region: 0) + template_data_en = { + "template_id": "job_opportunity_notification", + "region": 0, + "subject": "New Job Opportunity - {{candidate_name}}", + "body": """
+
+

freeleaps

+
+ +
+

New Job Opportunity Available

+ +

Dear {{candidate_name}},

+ +

There is a new job posting on {{company_domain}}. It could be something matching your profile. Click this link or log in to {{company_domain}} to check it out.

+ +
+ + View Job Opportunities + +
+ +
+

Best regards,
Freeleaps Team

+
+ +
+

freeleaps

+

+ We make software development the easiest ever. +

+
+
""" + } + + success_cn = await self.create_template(template_data_cn) + success_en = await self.create_template(template_data_en) + + return success_cn and success_en + async def create_all_templates(self): """create all templates""" print("🚀 start creating global templates...") @@ -1010,7 +1097,8 @@ class GlobalTemplateCreator: self.create_interview_status_update_template, self.create_welcome_email_template, self.create_password_reset_template, - self.create_account_verification_template + self.create_account_verification_template, + self.create_job_opportunity_template ] success_count = 0 @@ -1028,7 +1116,8 @@ class GlobalTemplateCreator: "interview_status_update - 面试状态更新", "welcome_email - 欢迎邮件", "password_reset_email - 密码重置邮件", - "account_verification_email - 账号验证邮件" + "account_verification_email - 账号验证邮件", + "job_opportunity_notification - 工作机会通知" ] for i, name in enumerate(template_names, 1):