Commit Graph

280 Commits

Author SHA1 Message Date
YuehuCao
4187c95743 feat(email_comsumer): introduce multi-tenant delivery system 2025-08-09 11:27:17 +08:00
YuehuCao
d164b6f567 feat(email_sending): introduce multi-tenant delivery system 2025-08-09 11:25:47 +08:00
Nicolas
04acd78d78 fix: connect to existing named queue instead of creating anonymous queue
- Change AsyncMQClient to connect to existing persistent queue by name
- Fix issue where DevOps Service created temporary anonymous queues instead of consuming from the correct named queue
- This allows consuming the 42 backlogged messages in freeleaps.devops.reconciler.output queue
- Change queue properties: exclusive=False, auto_delete=False, durable=True
- Resolves the core issue where messages were split between persistent and temporary queues
2025-08-08 12:45:21 +08:00
Nicolas
4340949f57 fix: make startup and shutdown event handlers async in common provider
- Fix TypeError: object NoneType can't be used in 'await' expression
- FastAPI requires event handlers to be async functions
- This was blocking the entire application startup sequence
- Fixes the issue where message queue consumers were not starting properly
2025-08-08 12:33:14 +08:00
Nicolas
e4fe9394b1 fix: use environment variable for RabbitMQ output queue name
- Add RABBITMQ_OUTPUT_QUEUE_NAME environment variable support
- Fix hardcoded queue name 'reconciler.output' to use configurable queue name
- Default to 'freeleaps.devops.reconciler.output' if env var not set
- Add debug logging to show which queue name is being used
- This fixes the issue where 42 messages were stuck in the output queue due to queue name mismatch
2025-08-08 12:01:47 +08:00
Nicolas
b5ca0cf0f5 fix: update devops service to subscribe to correct reconciler heartbeat queue 2025-08-07 18:29:59 +08:00
YuehuCao
2f10275493 refactor(architecture): implement 5-layer separation
for both template message and email senders, their workflow will follow:
api->application->business->service->infra
2025-08-07 12:58:19 +08:00
YuehuCao
58d085a4c6 feat(api): re-code the api interfaces for template message and email senders 2025-08-07 12:49:12 +08:00
YuehuCao
c1148a44d5 feat(models): add indexs and models
add high-frequent indexes for TemplateMessageDoc and EmailSenderDoc
add some models that will be used in sending email
2025-08-07 12:44:46 +08:00
dongli
d680b9e015 Fix check_deployment_status 2025-08-03 21:39:39 -07:00
zhenyus
879e45eeb5 fix: correct deployment TTL calculation in DeploymentService
Updated the TTL calculation in the DeploymentService to multiply by 3600 instead of 60, ensuring accurate time-to-live settings for deployments.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 12:22:24 +08:00
zhenyus
6c60a0b6a5 fix: update deployment service to use correct product ID
Changed the parameter name from deployment_project_id to deployment_product_id in the DevOpsReconcileRequest to ensure accurate referencing of the product associated with the deployment.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 04:04:19 +08:00
zhenyus
5f3368cbdc fix: correct typo in BASE_RECONCILE_URL parameter in DeploymentService
Updated the parameter name in the _start_deployment method to match the corrected constant in site_settings.py, ensuring consistency across the codebase.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 03:51:15 +08:00
zhenyus
e41aa3d983 fix: correct typo in BASE_RECONCILE_URL in site_settings.py
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 03:41:26 +08:00
zhenyus
6ebac252b0 refactor: change DevOpsReconcileOperationType to inherit from str and Enum
Updated the DevOpsReconcileOperationType class to inherit from both str and Enum, enhancing its usability as a string enumeration in the application.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 03:28:06 +08:00
zhenyus
2dd73c0734 refactor: enhance lazy initialization and error handling in message consumer startup
Updated the message consumer initialization to occur lazily during the startup event, improving application startup performance. Added detailed logging for service initialization, registration, and error handling to enhance traceability and robustness during startup and shutdown processes.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 03:01:11 +08:00
zhenyus
95b6560ffd refactor: improve clarity of subscriber startup process in message_queue.py
Updated comment to specify that the subscriber starts in the background, enhancing code readability and understanding of the asynchronous behavior.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 02:48:55 +08:00
zhenyus
9283e52e48 feat: enhance message consumer startup and shutdown logging in message_queue.py
Added print statements to log the status of message consumers during startup and shutdown processes, improving traceability and debugging capabilities.

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-03 02:38:33 +08:00
zhenyus
113bc2bc75 fix: ensure consistent formatting in requirements.txt by removing redundant line
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-01 09:12:19 +08:00
zhenyus
ebc37bbd0d refactor: streamline DevOpsReconcileRequest by removing redundant code
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-01 09:06:42 +08:00
zhenyus
14eb5abda6 refactor: remove unnecessary @dataclass decorator from DevOpsReconcileRequest
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-01 09:03:39 +08:00
zhenyus
d74967db55 feat: add RabbitMQ configuration to app settings
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-08-01 00:15:06 +08:00
6ea40142ac Merge pull request 'Add template fastapi app, this can be used for future extension' (#11) from feature/dax/devops-svc into dev
Reviewed-on: freeleaps/freeleaps-service-hub#11
2025-07-31 16:11:36 +00:00
zhenyus
d0aa2ba14b Add message queue registration in application bootstrap and update dependencies
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-07-30 10:50:22 +08:00
YuehuCao
e46c81c993 docs(tests): add guide for generating coverage reports 2025-07-28 11:09:46 +08:00
YuehuCao
b849e5f11b test: add integration test between template_message and email_sender services layer and data layer
- Achieve 90%+ coverage
2025-07-28 11:06:57 +08:00
YuehuCao
def50f709f test: add unit tests for template_message and email_sender services
- Achieve 100% coverage for both services
2025-07-28 11:03:01 +08:00
YuehuCao
9cb29cd400 fix(services): correct spelling errors 2025-07-28 10:55:41 +08:00
YuehuCao
bb493700f0 refactor(services): remove unreachable code
- Delete redundant logic after line 22's early return
2025-07-28 10:53:07 +08:00
YuehuCao
2d3adb0936 fix: re-submit due to missing some contents 2025-07-25 19:16:40 +08:00
YuehuCao
4f4587893a feat(api): add CRUD interfaces for message templates and email senders 2025-07-25 19:05:29 +08:00
YuehuCao
fec7ac6071 feat(tenant): enable customization of message templates and email senders 2025-07-25 19:04:06 +08:00
YuehuCao
2637ee864a chore(template): seed initial global message templates 2025-07-25 19:01:57 +08:00
YuehuCao
f7ad36bef8 feat(template): define MongoDB schema for message templates and email senders 2025-07-25 18:57:53 +08:00
icecheng
69d1007ddf feat(test): add unittest for role management, add coverage report for role management 2025-07-25 16:20:50 +08:00
icecheng
30e6ca72a7 feat(refactor): remove duplicate get_current_user 2025-07-25 10:26:09 +08:00
icecheng
0f7d63f4a2 feat(role_management): add test report for role management 2025-07-22 17:14:30 +08:00
sunhaolou
d01468f89a fix: refractor the length functions and add comments, and address the issues 2025-07-22 13:16:14 +08:00
icecheng
55e0bebbef feat(role_management): update apitest for role management 2025-07-22 12:27:26 +08:00
icecheng
5be8403c75 feat(role_management): update apitest for role management 2025-07-22 12:14:58 +08:00
icecheng
6b6b52a599 feat(role_management): Add apitest for test_assign_roles 2025-07-22 11:52:41 +08:00
icecheng
9dcd27bc8a feat(role_management): Add logic for creating temporary users to apitest. 2025-07-22 11:30:16 +08:00
icecheng
beba0f5fe5 feat(role_management): add api test case for permission api 2025-07-22 10:28:05 +08:00
icecheng
641281066c feat(role_management): Add pytest for auth services, and add api test case for role management 2025-07-21 17:51:08 +08:00
fca4216043 Merge branch 'dev' into haolou_local 2025-07-21 07:37:02 +00:00
sunhaolou
a8f0a714ae refractor: clean up the codes for online services 2025-07-21 15:23:19 +08:00
icecheng
b8be65615b feat(role_management): Add a universal Depends for permission verification. 2025-07-21 15:10:27 +08:00
icecheng
4109018692 feat(role_management): Update the JWT token generation logic to include new fields user_roles and user_permissions in the payload. 2025-07-21 13:09:59 +08:00
sunhaolou
ccc995f599 refractor: a current working version before cleaning up. 2025-07-21 12:50:51 +08:00
icecheng
419e58da0c feat(role_management): add delete role api 2025-07-21 10:53:37 +08:00
icecheng
4f39f888c4 feat(role_management): add delete permission api 2025-07-21 10:33:21 +08:00
icecheng
ca0bfb155f feat(role_management): add assign roles to user api 2025-07-21 10:20:46 +08:00
icecheng
795c1262c6 feat(role_management): add assign permissions to role api 2025-07-21 09:31:37 +08:00
icecheng
2382f0bece feat(role_management): add crud for role and permission 2025-07-18 18:05:57 +08:00
3ce7a7ec76 Merge branch 'dev' into feature/dax/devops-svc 2025-07-15 03:34:15 +00:00
dongli
921633dc04 Implement get_latest_deployment 2025-07-13 11:38:57 -07:00
zhenyus
dd642994d4 Merge branch 'feature/dax/devops-svc' of https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub into feature/dax/devops-svc 2025-06-23 16:46:49 +08:00
zhenyus
979fcd298c Add DevOps reconciliation models and integrate into deployment service
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-06-23 16:46:06 +08:00
dongli
2934c647c6 make sha256 optional 2025-06-20 15:09:27 -07:00
dongli
aff12753da Add deployment_app_url 2025-06-19 21:08:08 -07:00
dongli
d660002076 minor 2025-06-16 23:19:09 -07:00
dongli
92b2aba960 Add check_application_logs 2025-06-16 23:18:26 -07:00
dongli
c09ad7f5c9 minor 2025-06-12 17:44:13 -07:00
dongli
6254d13098 Clean up 2025-06-07 13:17:37 -07:00
dongli
7955b5884a Fix some bugs 2025-06-07 13:11:22 -07:00
dongli
b83f5fd606 Depends only works with fastApi methods, so don't use Depends for other methods 2025-06-07 12:34:34 -07:00
dongli
ab7e6728b5 More impl for devops 2025-06-07 11:32:53 -07:00
dongli
308f82740d More impl for devops 2025-06-07 11:32:48 -07:00
dongli
217f33fc17 fix check deployment status bug 2025-05-19 14:55:56 -07:00
dongli
43ec8ec01e Clean up 2025-05-18 23:09:39 -07:00
dongli
bcf13b48f2 Add implementation of devops service 2025-05-18 22:23:44 -07:00
dongli
dd8926b2ec Add template fastapi app, test, README.md, this can be used for future extension 2025-05-11 21:01:11 -07:00
dongli
bf96f8b301 Add template fastapi app, test, README.md, this can be used for future extension 2025-05-11 19:16:00 -07:00
dongli
c4c34e6cd7 Add template fastapi app, test, README.md, this can be used for future extension 2025-05-11 19:15:41 -07:00
dongli
50087c95be Add template fastapi app, this can be used for future extension 2025-05-11 18:44:05 -07:00
dd96819709 fix(cleaner): update document cleaner job 2025-04-26 19:53:44 -07:00
91a893a433 chore(hover_image): adding new hover images in the response body 2025-04-24 00:06:58 -07:00
ecad36ac5c Merge pull request 'feat(log): ensure parent directory exists before opening log file' (#5) from refactor/logging into dev
Reviewed-on: freeleaps/freeleaps-service-hub#5
2025-04-21 05:25:41 +00:00
zhenyus
bb90b26883 feat(log): ensure parent directory exists before opening log file
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-04-21 13:25:05 +08:00
fcc6d22e4d Merge branch 'dev' into refactor/logging 2025-04-21 02:58:52 +00:00
zhenyus
b8f7307a86 refactor(log): refactoring logging for each service for loki
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-04-21 10:55:26 +08:00
b95a818e30 Update payment redirect and scheduler job for deleting document id 2025-04-20 00:05:00 -07:00
Zhenyu Sun
9361f4c545 Merged PR 44: fix: invalid import path for app config
fix: invalid import path for app config

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 13:54:57 +00:00
zhenyus
4dfbab4d4d fix: invalid import path for app config
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 21:52:07 +08:00
Zhenyu Sun
8e409aea20 Merged PR 43: build(pip): bump fastapi version to 0.114.0
build(pip): bump fastapi version to 0.114.0

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 10:17:09 +00:00
zhenyus
a45698c184 build(pip): bump fastapi version to 0.114.0
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 18:16:41 +08:00
Zhenyu Sun
0f6e4731e3 Merged PR 42: build(pip): freeze missing deps for metrics supports
build(pip): freeze missing deps for metrics supports

Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 09:58:23 +00:00
zhenyus
13c883966e build(pip): freeze missing deps for metrics supports
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 17:57:13 +08:00
Zhenyu Sun
9c4cfbff0b Merged PR 41: Implements probes and metrics APIs 2025-03-17 08:17:31 +00:00
zhenyus
d5e42d31a4 feat(observability): add configuration options and implement metrics/probes APIs
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-17 10:46:02 +08:00
dongli
5e66fa806b Log urls at create_account_link 2025-03-16 13:13:43 -07:00
b12f8cc965 Fix the concatenation issue with message 2025-03-13 23:46:49 -07:00
zhenyus
962292cfe0 chore: enabled orm initialization when startup
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-12 16:10:47 +08:00
zhenyus
9754576d28 feat(probes): add metrics and probes APIs for application health checks
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-03-12 15:59:06 +08:00
Zhenyu Sun
ea9dcb22cb build(pip): bump content deps fastapi to 0.114.0 2025-03-06 17:52:29 +00:00
Zhenyu Sun
13bd2396c4 Merged PR 28: Merge to master to trigger production ci 2025-03-05 18:27:17 +00:00
dongli
0f02181e33 Expose prometheus metrics for all apps 2025-03-02 17:08:08 -08:00
zhenyus
78c72179ec fix(rabbitmq): correct syntax for port and virtual host parameters in AsyncMQClient
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-02-24 02:20:01 +08:00
zhenyus
853d817933 feat(notification): add rabbitmq credentials relates notification services configs
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-02-24 02:05:25 +08:00
zhenyus
da584b8ffa build(docker): update CMD to use shell for environment variable expansion in Dockerfiles
Signed-off-by: zhenyus <zhenyus@mathmast.com>
2025-02-22 22:30:37 +08:00
Zhenyu Sun
9b42dbfa7f build(dockerfile): update entrypoint for authentication 2025-02-22 13:37:47 +00:00
Zhenyu Sun
b0acad860e build(docker): update Dockerfile for notification 2025-02-22 13:00:05 +00:00
Zhenyu Sun
8f799c60ff build(docker): update Dockerfile for payment 2025-02-22 12:34:30 +00:00
Zhenyu Sun
3769af6e93 build(docker): update Dockerfile for notification 2025-02-22 12:34:08 +00:00
Zhenyu Sun
0a7c7429c3 Updated Dockerfile 2025-02-22 11:55:44 +00:00
Zhenyu Sun
f22a2eedf2 build(docker): remove useless scripts in Dockerfile 2025-02-22 11:55:16 +00:00
Zhenyu Sun
be910d4c95 build(docker): remove useless scripts in Dockerfile 2025-02-22 11:54:59 +00:00
Zhenyu Sun
de37fcddba build(docker): remove additional scripts 2025-02-22 11:40:23 +00:00
Jet Li
6028b0a6f0 Create one-off photo_id backfill job 2025-02-07 08:13:59 +00:00
Jet Li
da369dc61b Remove useless variable 2025-02-03 09:13:20 +00:00
Jet Li
81f734c19a Add delete-file endpoint, add remove old documents logic in refresh sharepoint logic 2025-02-03 09:11:48 +00:00
Jet Li
8ab64be6a1 Fix the typo used in the authentication log 2025-02-01 10:24:19 +00:00
Jet Li
43671d684d Fix the last missing piece of extra_filed typo 2025-02-01 07:11:32 +00:00
Jet Li
13171f16b7 Fix authentication log config 2025-02-01 07:02:11 +00:00
Jet Li
59e3c27b3f Fix notification log config 2025-02-01 06:27:51 +00:00
Jet Li
be0725a955 Update payment log config 2025-02-01 06:22:46 +00:00
Jet Li
a33869b7fe Update central storage log config 2025-02-01 05:59:00 +00:00
Jet Li
8cae70a21f Comment out the cleanup_document_job 2025-02-01 05:42:02 +00:00
Jet Li
55e19f3f11 Commt on the change, file clean-up process needed. 2025-01-31 09:14:49 +00:00
Jet Li
20919277d2 Fix the duplicated logging issue 2025-01-31 08:47:58 +00:00
Jet Li
669a5303cd Add one-time document clean-up job 2025-01-31 07:03:27 +00:00
Jet Li
c49ae956f1 Fix bug in refresh_selected 2025-01-31 06:34:32 +00:00
Jet Li
af71b67f04 Fix the bug for OTHER region 2025-01-31 06:21:17 +00:00
Jet Li
5ea86301d9 Hack solution to update selected 2025-01-31 03:52:09 +00:00
Jet Li
fd8514b207 Fix the cache loading for static content 2025-01-30 16:57:57 +00:00
Jet Li
71dc20ae4d Fix the scheduler bug and APIs under content 2025-01-30 07:26:53 +00:00
Jet Li
8b3d22344e Remove webhook secrets as it only handles the forwarded events 2025-01-28 09:06:37 +00:00
Jet Li
4f159221d3 minor fix - removing useless input 2025-01-28 08:13:02 +00:00
Jet Li
0b4a4a6173 Fix account signup webhook 2025-01-28 08:08:56 +00:00
Jet Li
f96ec74176 Fix payment webhook 2025-01-28 07:48:53 +00:00
Jet Li
f05e663a10 Add webhook secret and fix some setting for payment 2025-01-27 08:11:14 +00:00
10d87d4889 Remove noisy logging for mongo 2025-01-22 00:28:26 -08:00
9f5e0d1706 Update payment micro-service to handle status update 2025-01-22 00:21:54 -08:00
d47823124f Update payment micro-service 2025-01-22 00:09:47 -08:00
Jet Li
45df1e97fd Merge branch 'master' of https://dev.azure.com/freeleaps/freeleaps-service-hub/_git/freeleaps-service-hub 2025-01-21 01:44:59 +00:00
Jet Li
db90cf7e46 Fix payment micro-service webhook not set bug 2025-01-21 01:44:23 +00:00
dongli
dcae87d3e0 Expose prometheus metrics for payment 2025-01-19 16:24:15 -08:00
Jet Li
a94dcca6c4 Fix payment micro-service in freeleaps2-frontend connection 2025-01-17 06:03:12 +00:00
55746445bb Remove useless on_behalf_of 2025-01-16 05:01:57 +00:00
a7a1263c73 Add on_behalf_of in payment micro-service 2025-01-16 04:28:35 +00:00
c6d08c562d Merge branch 'master' of https://dev.azure.com/freeleaps/freeleaps-service-hub/_git/freeleaps-service-hub 2025-01-16 02:54:10 +00:00
d0c0e0ca28 Fix payment micro-service issues 2025-01-16 02:54:04 +00:00
dongli
885a9ffc0b Refine Dockerfile for payment isolation 2025-01-12 13:35:53 -08:00
dongli
1d8bbb2427 Refine Dockerfile for payment isolation 2024-12-27 17:48:41 -08:00
dongli
763935569d Refine Dockerfile for payment isolation 2024-12-26 11:05:51 -08:00
1888ebb433 Force regenerating new documents, refactor when migrating to blob storage 2024-12-26 10:00:06 +00:00
08680351e4 Remove additional log, add content_html 2024-12-26 09:00:20 +00:00
04b1d688d5 clean up cache usage 2024-12-26 08:48:34 +00:00
550c49f3ec Removing cache, need further tuning 2024-12-26 08:40:12 +00:00
1972a5758b Update authentication pymongo logger level 2024-12-26 04:09:13 +00:00