Merge pull request 'tania_local' (#44) from tania_local into dev

Reviewed-on: freeleaps/freeleaps-service-hub#44
Reviewed-by: jingyao1991 <jingyao1991@noreply.gitea.freeleaps.mathmast.com>
This commit is contained in:
icecheng 2025-09-16 05:21:31 +00:00
commit 3301aec1d5
3 changed files with 179 additions and 3 deletions

View File

@ -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) ## [1.2.1](https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub/compare/v1.2.0...v1.2.1) (2025-04-30)

View File

@ -1 +1 @@
1.2.1 1.5.0

View File

@ -995,6 +995,93 @@ class GlobalTemplateCreator:
return success_cn and success_en 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": """<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
<div style="background-color: #1748f8; color: white; padding: 20px; text-align: center; margin-bottom: 20px;">
<h1 style="margin: 0;">freeleaps</h1>
</div>
<div style="padding: 20px;">
<h2>新的工作机会</h2>
<p>亲爱的 <strong>{{candidate_name}}</strong></p>
<p> {{company_domain}} 上有一个新的职位发布可能符合您的个人资料点击此链接或登录 {{company_domain}} 查看详情</p>
<div style="text-align: center; margin: 30px 0;">
<a href="{{job_deep_link_url}}"
style="background-color: #1748f8; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block;">
查看工作机会
</a>
</div>
<br>
<p>祝好<br>Freeleaps 团队</p>
</div>
<div style="background-color: #f8f9fa; padding: 20px; text-align: center; margin-top: 20px;">
<p style="margin: 0; font-weight: bold;">freeleaps</p>
<p style="margin: 5px 0 0 0; font-style: italic; color: #666;">
We make software development the easiest ever.
</p>
</div>
</div>"""
}
# English version (region: 0)
template_data_en = {
"template_id": "job_opportunity_notification",
"region": 0,
"subject": "New Job Opportunity - {{candidate_name}}",
"body": """<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
<div style="background-color: #1748f8; color: white; padding: 20px; text-align: center; margin-bottom: 20px;">
<h1 style="margin: 0;">freeleaps</h1>
</div>
<div style="padding: 20px;">
<h2>New Job Opportunity Available</h2>
<p>Dear <strong>{{candidate_name}}</strong>,</p>
<p>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.</p>
<div style="text-align: center; margin: 30px 0;">
<a href="{{job_deep_link_url}}"
style="background-color: #1748f8; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block;">
View Job Opportunities
</a>
</div>
<br>
<p>Best regards,<br>Freeleaps Team</p>
</div>
<div style="background-color: #f8f9fa; padding: 20px; text-align: center; margin-top: 20px;">
<p style="margin: 0; font-weight: bold;">freeleaps</p>
<p style="margin: 5px 0 0 0; font-style: italic; color: #666;">
We make software development the easiest ever.
</p>
</div>
</div>"""
}
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): async def create_all_templates(self):
"""create all templates""" """create all templates"""
print("🚀 start creating global templates...") print("🚀 start creating global templates...")
@ -1010,7 +1097,8 @@ class GlobalTemplateCreator:
self.create_interview_status_update_template, self.create_interview_status_update_template,
self.create_welcome_email_template, self.create_welcome_email_template,
self.create_password_reset_template, self.create_password_reset_template,
self.create_account_verification_template self.create_account_verification_template,
self.create_job_opportunity_template
] ]
success_count = 0 success_count = 0
@ -1028,7 +1116,8 @@ class GlobalTemplateCreator:
"interview_status_update - 面试状态更新", "interview_status_update - 面试状态更新",
"welcome_email - 欢迎邮件", "welcome_email - 欢迎邮件",
"password_reset_email - 密码重置邮件", "password_reset_email - 密码重置邮件",
"account_verification_email - 账号验证邮件" "account_verification_email - 账号验证邮件",
"job_opportunity_notification - 工作机会通知"
] ]
for i, name in enumerate(template_names, 1): for i, name in enumerate(template_names, 1):