From aeddedf2a39122ca8a3c597ac28619aff42c4e7d Mon Sep 17 00:00:00 2001 From: Rogee Date: Tue, 7 Jul 2026 14:44:12 +0800 Subject: [PATCH] Reorganize repo: backend/, deploy/, docs/ layout + AGENTS.md Restructure the monorepo into clear top-level directories: - backend/: Go module root (cmd, internal, pkg, configs, migrations, docs/swagger, scripts, tests, go.mod, Makefile, .air.toml) - deploy/: Docker (Dockerfile, docker-compose*), quickstart, fluentd - docs/: project documentation + reports/ (moved from repo root) - AGENTS.md: new AI coding-agent guide at repo root Update all references to the new layout: - Dockerfile: COPY backend/go.mod, COPY backend/ (context = repo root) - docker-compose files: context ../.., dockerfile deploy/docker/Dockerfile, env_file ../../.env, volume mounts ../../backend:/app - deploy/quickstart/compose.yaml: dockerfile deploy/docker/Dockerfile - CI: working-directory: backend for go commands, file deploy/docker/Dockerfile, coverage path backend/coverage.out, health_check backend/scripts/ - backend/Makefile: docker target uses -f ../deploy/docker/Dockerfile ../ - README: architecture tree, quickstart, config paths updated Move root stray scripts (rename_models.*, run_m11_tests.sh, verify_build.sh, gorm_bool_main.go) to backend/scripts/legacy/. All moves via git mv to preserve history. Build, vet, SQLite tests, and docker compose config verified. --- .github/workflows/ci.yml | 19 ++-- AGENTS.md | 101 ++++++++++++++++++ README.md | 65 ++++++----- .air.toml => backend/.air.toml | 0 Makefile => backend/Makefile | 2 +- {cmd => backend/cmd}/dump_routes/main.go | 0 {cmd => backend/cmd}/gochat/main.go | 0 {cmd => backend/cmd}/migrate/main.go | 0 {cmd => backend/cmd}/migrate/migrate_test.go | 0 {cmd => backend/cmd}/reindex_search/main.go | 0 .../cmd}/reindex_search/main_test.go | 0 {cmd => backend/cmd}/route_parity/main.go | 0 {cmd => backend/cmd}/test_debug/main.go | 0 {configs => backend/configs}/config.dev.yaml | 0 {configs => backend/configs}/config.prod.yaml | 0 {configs => backend/configs}/config.yaml | 0 {configs => backend/configs}/fluentd.conf | 0 .../configs}/prometheus_alerts.yml | 0 {configs => backend/configs}/redis.conf | 0 {docs => backend/docs}/docs.go | 0 {docs => backend/docs}/swag_overrides.txt | 0 {docs => backend/docs}/swagger.json | 0 {docs => backend/docs}/swagger.yaml | 0 {docs => backend/docs}/swagger_models.go | 0 go.mod => backend/go.mod | 0 go.sum => backend/go.sum | 0 {internal => backend/internal}/app/app.go | 0 .../internal}/app/bootstrap.go | 0 .../internal}/app/database.go | 0 {internal => backend/internal}/app/redis.go | 0 .../internal}/app/redis_test.go_BAK | 0 .../internal}/app/shutdown.go | 0 .../internal}/auth/benchmark_test.go_BAK | 0 {internal => backend/internal}/auth/jwt.go | 0 .../internal}/auth/jwt_test.go_BAK | 0 {internal => backend/internal}/auth/ldap.go | 0 .../internal}/auth/ldap_test.go | 0 {internal => backend/internal}/auth/mfa.go | 0 {internal => backend/internal}/auth/oauth.go | 0 {internal => backend/internal}/auth/oidc.go | 0 .../internal}/auth/oidc_test.go | 0 .../internal}/auth/permission.go | 0 .../internal}/auth/platform_auth.go | 0 {internal => backend/internal}/auth/policy.go | 0 .../internal}/auth/policy_test.go_BAK | 0 .../internal}/auth/refresh_store.go | 0 .../internal}/auth/refresh_store_test.go_BAK | 0 {internal => backend/internal}/auth/saml.go | 0 .../internal}/auth/saml_test.go | 0 .../internal}/auth/saml_test.go_BAK | 0 .../internal}/auth/session.go | 0 .../internal}/auth/sso_middleware.go | 0 .../internal}/auth/sso_middleware.go_BAK | 0 .../internal}/auth/sso_middleware.go_BAK2 | 0 .../internal}/auth/sso_middleware_test.go | 0 .../internal}/auth/sso_session_store.go | 0 .../internal}/auth/sso_session_store.go_BAK | 0 .../internal}/auth/webhook_registry.go | 0 .../internal}/autoassignment/capacity_test.go | 0 .../internal}/autoassignment/listener.go | 0 .../internal}/autoassignment/lowest_load.go | 0 .../internal}/autoassignment/model.go | 0 .../internal}/autoassignment/rate_limiter.go | 0 .../autoassignment/rate_limiter_test.go | 0 .../internal}/autoassignment/round_robin.go | 0 .../internal}/autoassignment/service.go | 0 .../internal}/automation/action_delivery.go | 0 .../automation/action_delivery_worker.go | 0 .../internal}/automation/action_service.go | 0 .../automation/action_service_test.go | 0 .../automation/agent_bot_rule_listener.go | 0 .../agent_bot_rule_listener_test.go | 0 .../automation/automation_test_helper.go | 0 .../internal}/automation/bot_rule_model.go | 0 .../internal}/automation/bot_rule_service.go | 0 .../automation/bot_rule_service_test.go | 0 .../automation/bot_trigger_config_service.go | 0 .../bot_trigger_config_service_test.go | 0 .../internal}/automation/condition_filter.go | 0 .../automation/condition_filter_test.go | 0 .../automation/condition_validator.go | 0 .../automation/condition_validator_test.go | 0 .../automation/csat_survey_listener.go | 0 .../automation/csat_survey_listener_test.go | 0 .../automation/csat_survey_service.go | 0 .../automation/csat_survey_service_test.go | 0 .../automation/execution_log_service.go | 0 .../internal}/automation/listener.go | 0 .../internal}/automation/listener_test.go | 0 .../internal}/automation/macro_service.go | 0 .../automation/macro_service_test.go | 0 .../internal}/automation/macro_worker.go | 0 .../internal}/automation/model.go | 0 .../internal}/automation/model_test.go | 0 .../internal}/automation/new_features_test.go | 0 .../internal}/automation/service.go | 0 .../internal}/automation/service_test.go | 0 .../internal}/automation/template_variable.go | 0 .../automation/template_variable_test.go | 0 .../internal}/campaign/listener.go | 0 .../internal}/campaign/model.go | 0 .../internal}/campaign/service.go | 0 .../internal}/canned/canned_test_helper.go | 0 .../internal}/canned/model.go | 0 .../internal}/canned/service.go | 0 .../internal}/canned/service_test.go | 0 .../internal}/channel/broker.go | 0 .../internal}/channel/config.go | 0 .../internal}/channel/dispatcher.go | 0 .../channel/dispatcher_worker_test.go | 0 .../internal}/channel/email/imap_listener.go | 0 .../internal}/channel/email/pipeline.go | 0 .../internal}/channel/email/provider.go | 0 .../internal}/channel/email/repository.go | 0 .../internal}/channel/email/service.go | 0 .../internal}/channel/email/smtp_sender.go | 0 .../internal}/channel/email/types.go | 0 .../channel/email/webhook_handler.go | 0 .../internal}/channel/event.go | 0 .../channel/facebook/instagram_provider.go | 0 .../facebook/instagram_provider.go_BAK2 | 0 .../facebook/instagram_provider_test.go | 0 .../internal}/channel/facebook/listener.go | 0 .../channel/facebook/listener.go_BAK2 | 0 .../internal}/channel/facebook/media.go | 0 .../internal}/channel/facebook/pipeline.go | 0 .../channel/facebook/pipeline.go_BAK2 | 0 .../internal}/channel/facebook/provider.go | 0 .../internal}/channel/facebook/repository.go | 0 .../internal}/channel/facebook/service.go | 0 .../internal}/channel/facebook/types.go | 0 .../channel/facebook/user_mapping.go | 0 .../channel/facebook/webhook_handler.go | 0 .../channel/facebook/webhook_handler.go_BAK2 | 0 .../channel/facebook/webhook_handler_test.go | 0 .../internal}/channel/google/provider.go | 0 .../internal}/channel/incoming.go | 0 .../internal}/channel/lifecycle.go | 0 .../internal}/channel/line/pipeline.go | 0 .../internal}/channel/line/provider.go | 0 .../internal}/channel/line/repository.go | 0 .../internal}/channel/line/service.go | 0 .../internal}/channel/line/types.go | 0 .../internal}/channel/line/webhook_handler.go | 0 .../internal}/channel/listener.go | 0 .../internal}/channel/microsoft/provider.go | 0 .../internal}/channel/outgoing.go | 0 .../internal}/channel/patch_test.txt | 0 .../internal}/channel/provider.go | 0 .../internal}/channel/provider/email.go | 0 .../internal}/channel/provider/facebook.go | 0 .../internal}/channel/provider/instagram.go | 0 .../channel/provider/instagram.go_BAK2 | 0 .../internal}/channel/provider/line.go | 0 .../internal}/channel/provider/provider.go | 0 .../channel/provider/provider_mock_test.go | 0 .../internal}/channel/provider/telegram.go | 0 .../channel/provider/telegram_test.go | 0 .../internal}/channel/provider/tiktok.go | 0 .../internal}/channel/provider/twilio.go | 0 .../internal}/channel/provider/web_widget.go | 0 .../internal}/channel/provider/whatsapp.go | 0 .../internal}/channel/registry.go | 0 .../internal}/channel/telegram/pipeline.go | 0 .../internal}/channel/telegram/repository.go | 0 .../internal}/channel/telegram/service.go | 0 .../channel/telegram/webhook_handler.go | 0 .../internal}/channel/test2.txt | 0 .../internal}/channel/test_placeholder.go | 0 .../internal}/channel/test_write_check.txt | 0 .../internal}/channel/tiktok/pipeline.go | 0 .../internal}/channel/tiktok/provider.go | 0 .../internal}/channel/tiktok/repository.go | 0 .../internal}/channel/tiktok/service.go | 0 .../internal}/channel/tiktok/types.go | 0 .../channel/tiktok/webhook_handler.go | 0 .../internal}/channel/twilio/pipeline.go | 0 .../internal}/channel/twilio/provider.go | 0 .../internal}/channel/twilio/repository.go | 0 .../internal}/channel/twilio/service.go | 0 .../internal}/channel/twilio/types.go | 0 .../channel/twilio/webhook_handler.go | 0 .../internal}/channel/twitter/provider.go | 0 .../internal}/channel/webhook.go | 0 .../channel/webhook_listener_test.go | 0 .../internal}/channel/whatsapp/media.go | 0 .../internal}/channel/whatsapp/pipeline.go | 0 .../internal}/channel/whatsapp/provider.go | 0 .../internal}/channel/whatsapp/repository.go | 0 .../internal}/channel/whatsapp/service.go | 0 .../channel/whatsapp/service_test.go | 0 .../internal}/channel/whatsapp/types.go | 0 .../channel/whatsapp/webhook_handler.go | 0 .../channel/whatsapp/webhook_handler_test.go | 0 .../internal}/channel/write_check.go | 0 .../internal}/config/config.go | 0 .../internal}/config/config_test.go | 0 .../internal}/config/reloader_test.go | 0 .../internal}/config/validator.go | 0 .../internal}/csat/listener.go | 0 {internal => backend/internal}/csat/model.go | 0 .../internal}/csat/service.go | 0 .../internal}/database/migrate.go | 0 .../internal}/dispatch/dispatcher.go | 0 .../dispatch/dispatcher_worker_test.go | 0 .../internal}/dispatch/event.go | 0 .../internal}/dispatch/listener_registry.go | 0 .../internal}/goimap_stub/client/client.go | 0 .../internal}/goimap_stub/goimap.go | 0 .../handler/api/v1/account_handler.go | 0 .../handler/api/v1/account_handler_test.go | 0 .../api/v1/account_handler_test.go_BAK | 0 .../api/v1/account_saml_settings_handler.go | 0 .../v1/account_saml_settings_handler_test.go | 0 .../handler/api/v1/agent_bot_handler.go | 0 .../handler/api/v1/agent_bot_handler_test.go | 0 .../handler/api/v1/agent_bot_inbox_handler.go | 0 .../api/v1/agent_bot_inbox_handler_test.go | 0 .../handler/api/v1/agent_bulk_handler.go | 0 .../handler/api/v1/agent_bulk_handler_test.go | 0 .../handler/api/v1/agent_capacity_handler.go | 0 .../api/v1/agent_capacity_handler_test.go | 0 .../internal}/handler/api/v1/agent_handler.go | 0 .../handler/api/v1/agent_handler_test.go | 0 .../handler/api/v1/analytics_handler.go | 0 .../handler/api/v1/analytics_handler_test.go | 0 .../handler/api/v1/article_handler.go | 0 .../handler/api/v1/article_handler_test.go | 0 .../api/v1/article_handler_test.go_BAK | 0 .../api/v1/assignable_agent_handler.go | 0 .../api/v1/assignable_agent_handler_test.go | 0 .../api/v1/assignment_policy_handler.go | 0 .../api/v1/assignment_policy_handler_test.go | 0 .../api/v1/assignment_policy_v2_handler.go | 0 .../v1/assignment_policy_v2_handler_test.go | 0 .../internal}/handler/api/v1/audit_handler.go | 0 .../handler/api/v1/audit_handler_test.go | 0 .../internal}/handler/api/v1/audit_writer.go | 0 .../internal}/handler/api/v1/auth_handler.go | 0 .../handler/api/v1/auth_handler_test.go | 0 .../handler/api/v1/auth_handler_test.go_BAK | 0 .../handler/api/v1/auto_reply_rule_handler.go | 0 .../api/v1/auto_reply_rule_handler_test.go | 0 .../handler/api/v1/automation_rule_handler.go | 0 .../v1/automation_rule_handler_edge_test.go | 0 .../api/v1/automation_rule_handler_test.go | 0 .../handler/api/v1/banner_handler.go | 0 .../handler/api/v1/banner_handler_test.go | 0 .../handler/api/v1/bot_rule_handler.go | 0 .../handler/api/v1/bot_rule_handler_test.go | 0 .../api/v1/bot_trigger_config_handler.go | 0 .../api/v1/bot_trigger_config_handler_test.go | 0 .../handler/api/v1/bulk_action_handler.go | 0 .../api/v1/bulk_action_handler_test.go | 0 .../handler/api/v1/campaign_handler.go | 0 .../handler/api/v1/campaign_handler_test.go | 0 .../handler/api/v1/canned_response_handler.go | 0 .../api/v1/canned_response_handler_test.go | 0 .../v1/canned_response_handler_test.go_BAK | 0 .../api/v1/captain_assistant_handler.go | 0 .../api/v1/captain_assistant_handler_test.go | 0 .../v1/captain_assistant_response_handler.go | 0 ...captain_assistant_response_handler_test.go | 0 .../api/v1/captain_bulk_action_handler.go | 0 .../v1/captain_bulk_action_handler_test.go | 0 .../captain_custom_tool_crud_handler_test.go | 0 .../api/v1/captain_custom_tool_handler.go | 0 .../captain_custom_tool_test_handler_test.go | 0 .../api/v1/captain_document_handler.go | 0 .../api/v1/captain_preference_handler.go | 0 .../api/v1/captain_preference_handler_test.go | 0 .../captain_resource_parity_handler_test.go | 0 .../api/v1/captain_scenario_handler.go | 0 .../api/v1/captain_scenario_handler_test.go | 0 .../api/v1/captain_task_extended_handler.go | 0 .../v1/captain_task_extended_handler_test.go | 0 .../handler/api/v1/captain_task_handler.go | 0 .../api/v1/captain_task_handler.go.bak | 0 .../api/v1/captain_task_handler_test.go | 0 .../handler/api/v1/category_handler.go | 0 .../handler/api/v1/category_handler_test.go | 0 .../api/v1/category_handler_test.go_BAK | 0 .../v1/channel_handler_test_helpers_test.go | 0 .../handler/api/v1/chatwoot_payload.go | 0 .../handler/api/v1/company_handler.go | 0 .../handler/api/v1/company_handler_test.go | 0 .../handler/api/v1/contact_handler.go | 0 .../api/v1/contact_handler_crud_test.go | 0 .../api/v1/contact_handler_edge_test.go | 0 .../handler/api/v1/contact_handler_g3_test.go | 0 .../api/v1/contact_handler_test.go_BAK | 0 .../handler/api/v1/contact_inbox_handler.go | 0 .../api/v1/contact_inbox_handler_test.go | 0 .../handler/api/v1/contact_merge_handler.go | 0 .../api/v1/contact_merge_handler_test.go | 0 .../handler/api/v1/contact_presence.go | 0 .../handler/api/v1/conversation_handler.go | 0 .../api/v1/conversation_handler_crud_test.go | 0 .../api/v1/conversation_handler_edge_test.go | 0 .../api/v1/conversation_handler_test.go | 0 .../api/v1/conversation_handler_test.go.bak | 0 .../api/v1/conversation_insight_handler.go | 0 .../v1/conversation_insight_handler_test.go | 0 .../v1/conversation_participant_handler.go | 0 .../conversation_participant_handler_test.go | 0 .../handler/api/v1/conversation_serializer.go | 0 .../api/v1/conversation_serializer_test.go | 0 .../handler/api/v1/copilot_handler.go | 0 .../api/v1/copilot_suggestion_handler_test.go | 0 .../api/v1/copilot_thread_handler_test.go | 0 .../handler/api/v1/crm_frontend_smoke_test.go | 0 .../handler/api/v1/crm_serializer.go | 0 .../handler/api/v1/csat_metrics_handler.go | 0 .../api/v1/csat_metrics_handler_test.go | 0 .../handler/api/v1/csat_survey_handler.go | 0 .../api/v1/csat_survey_handler_test.go | 0 .../api/v1/csat_survey_handler_test.go_BAK | 0 .../handler/api/v1/csat_survey_update_test.go | 0 .../v1/custom_attribute_definition_handler.go | 0 ...ustom_attribute_definition_handler_test.go | 0 ...m_attribute_definition_handler_test.go_BAK | 0 .../api/v1/custom_attribute_value_handler.go | 0 .../v1/custom_attribute_value_handler_test.go | 0 .../handler/api/v1/custom_filter_handler.go | 0 .../api/v1/custom_filter_handler_test.go | 0 .../api/v1/custom_filter_handler_test.go_BAK | 0 .../handler/api/v1/custom_role_handler.go | 0 .../api/v1/custom_role_handler_test.go | 0 .../handler/api/v1/dashboard_app_handler.go | 0 .../api/v1/dashboard_app_handler_test.go | 0 .../handler/api/v1/delivery_status_handler.go | 0 .../api/v1/delivery_status_handler_test.go | 0 .../handler/api/v1/draft_message_handler.go | 0 .../api/v1/draft_message_handler_test.go | 0 .../api/v1/draft_message_search_count_test.go | 0 .../api/v1/dyte_integration_handler.go | 0 .../api/v1/dyte_integration_handler_test.go | 0 .../handler/api/v1/email_channel_handler.go | 0 .../api/v1/email_channel_handler_test.go | 0 .../api/v1/email_channel_migration_handler.go | 0 .../email_channel_migration_handler_test.go | 0 .../api/v1/email_oauth_authorization.go | 0 .../api/v1/email_oauth_authorization_test.go | 0 .../api/v1/enterprise_account_handler.go | 0 .../api/v1/enterprise_account_handler_test.go | 0 .../api/v1/facebook_callbacks_handler_test.go | 0 .../api/v1/facebook_channel_handler.go | 0 .../api/v1/facebook_channel_handler.go.bak2 | 0 .../api/v1/facebook_channel_handler.go_BAK2 | 0 .../handler/api/v1/folder_handler.go | 0 .../handler/api/v1/folder_handler_test.go | 0 .../handler/api/v1/folder_handler_test.go_BAK | 0 .../handler/api/v1/google_channel_handler.go | 0 .../internal}/handler/api/v1/helpers.go | 0 .../inbox_agentbot_avatar_campaigns_test.go | 0 .../api/v1/inbox_csat_template_handler.go | 0 .../v1/inbox_csat_template_handler_test.go | 0 .../internal}/handler/api/v1/inbox_handler.go | 0 .../handler/api/v1/inbox_handler_edge_test.go | 0 .../api/v1/inbox_handler_parity_test.go | 0 .../handler/api/v1/inbox_handler_test.go | 0 .../handler/api/v1/inbox_handler_test.go_BAK | 0 .../handler/api/v1/inbox_limit_handler.go | 0 .../api/v1/inbox_limit_handler_test.go | 0 .../handler/api/v1/inbox_member_handler.go | 0 .../api/v1/inbox_member_handler_test.go | 0 .../api/v1/inbox_member_handler_test.go_BAK | 0 .../handler/api/v1/inbox_serializer.go | 0 .../api/v1/instagram_channel_handler.go | 0 .../api/v1/instagram_channel_handler.go_BAK2 | 0 .../api/v1/installation_config_handler.go | 0 .../v1/installation_config_handler_test.go | 0 .../api/v1/integration_hook_handler.go | 0 .../v1/integration_hook_handler_suite_test.go | 0 .../api/v1/integration_hook_handler_test.go | 0 .../internal}/handler/api/v1/label_handler.go | 0 .../handler/api/v1/label_handler_test.go | 0 .../internal}/handler/api/v1/ldap_handler.go | 0 .../handler/api/v1/line_channel_handler.go | 0 .../api/v1/line_channel_handler_test.go | 0 .../api/v1/linear_integration_handler.go | 0 .../api/v1/linear_integration_handler_test.go | 0 .../v1/linear_integration_handler_test.go.bak | 0 .../linear_integration_handler_test.go.bak2 | 0 .../handler/api/v1/live_report_handler.go | 0 .../api/v1/live_report_handler_test.go | 0 .../internal}/handler/api/v1/macro_handler.go | 0 .../handler/api/v1/macro_handler_test.go | 0 .../handler/api/v1/message_handler.go | 0 .../api/v1/message_handler_edge_test.go | 0 .../handler/api/v1/message_handler_test.go | 0 .../api/v1/message_handler_test.go_BAK | 0 .../internal}/handler/api/v1/mfa_handler.go | 0 .../handler/api/v1/mfa_handler_test.go | 0 .../api/v1/microsoft_channel_handler.go | 0 .../internal}/handler/api/v1/note_handler.go | 0 .../handler/api/v1/note_handler_test.go | 0 .../handler/api/v1/notification_handler.go | 0 .../api/v1/notification_handler_test.go | 0 .../api/v1/notification_handler_test.go_BAK | 0 .../api/v1/notification_setting_handler.go | 0 .../v1/notification_setting_handler_test.go | 0 .../v1/notification_subscription_handler.go | 0 .../notification_subscription_handler_test.go | 0 .../api/v1/notion_integration_handler.go | 0 .../api/v1/notion_integration_handler_test.go | 0 .../internal}/handler/api/v1/oidc_handler.go | 0 .../api/v1/platform_account_handler.go | 0 .../api/v1/platform_account_user_handler.go | 0 .../api/v1/platform_agent_bot_handler.go | 0 .../api/v1/platform_agent_bot_handler_test.go | 0 .../handler/api/v1/platform_e2e_test.go | 0 .../handler/api/v1/platform_handler.go | 0 .../api/v1/platform_handler_test.go_BAK | 0 .../handler/api/v1/platform_user_handler.go | 0 .../api/v1/platform_user_sso_handler.go | 0 .../api/v1/platform_user_sso_handler_test.go | 0 .../handler/api/v1/portal_handler.go | 0 .../handler/api/v1/portal_handler_test.go | 0 .../handler/api/v1/portal_handler_test.go_BAK | 0 .../handler/api/v1/portal_member_handler.go | 0 .../api/v1/portal_member_handler_test.go | 0 .../api/v1/portal_member_handler_test.go_BAK | 0 .../handler/api/v1/profile_handler.go | 0 .../handler/api/v1/profile_handler_test.go | 0 .../api/v1/push_subscription_handler.go | 0 .../api/v1/push_subscription_handler_test.go | 0 .../internal}/handler/api/v1/rag_handler.go | 0 .../handler/api/v1/rag_handler_test.go | 0 .../handler/api/v1/reporting_event_handler.go | 0 .../api/v1/reporting_event_handler_test.go | 0 .../internal}/handler/api/v1/saml_handler.go | 0 .../handler/api/v1/search_handler.go | 0 .../handler/api/v1/search_handler_test.go | 0 .../api/v1/shopify_integration_handler.go | 0 .../v1/shopify_integration_handler_test.go | 0 .../handler/api/v1/sla_policy_handler.go | 0 .../handler/api/v1/sla_policy_handler_test.go | 0 .../api/v1/slack_integration_handler.go | 0 .../api/v1/slack_integration_handler_test.go | 0 .../handler/api/v1/social_authorization.go | 0 .../api/v1/social_authorization_test.go | 0 .../handler/api/v1/sse_event_handler.go | 0 .../handler/api/v1/sse_event_handler_test.go | 0 .../handler/api/v1/sse_stream_handler.go | 0 .../handler/api/v1/sse_stream_handler.go_BAK3 | 0 .../handler/api/v1/sse_stream_handler_test.go | 0 .../handler/api/v1/sso_session_handler.go | 0 .../handler/api/v1/summary_report_handler.go | 0 .../api/v1/summary_report_handler_test.go | 0 .../internal}/handler/api/v1/team_handler.go | 0 .../handler/api/v1/team_handler_test.go | 0 .../api/v1/team_profile_handler_test.go_BAK | 0 .../handler/api/v1/test_helpers_auth.go | 0 .../handler/api/v1/tiktok_channel_handler.go | 0 .../api/v1/tiktok_channel_handler_test.go | 0 .../handler/api/v1/twilio_channel_handler.go | 0 .../api/v1/twilio_channel_handler.go.bak | 0 .../api/v1/twilio_channel_handler_test.go | 0 .../v1/twitter_authorization_handler_test.go | 0 .../handler/api/v1/twitter_channel_handler.go | 0 .../api/v1/twitter_channel_webhook_test.go | 0 .../handler/api/v1/upload_handler.go | 0 .../handler/api/v1/upload_handler_test.go | 0 .../api/v1/webhook_subscription_handler.go | 0 .../v1/webhook_subscription_handler_test.go | 0 .../handler/api/v1/webwidget_handler.go | 0 .../api/v1/webwidget_handler_test.go_BAK | 0 .../api/v1/webwidget_offline_handler.go | 0 .../api/v1/webwidget_offline_handler_test.go | 0 .../v1/webwidget_offline_handler_test.go_BAK | 0 .../handler/api/v1/webwidget_theme_handler.go | 0 .../v1/webwidget_theme_handler_test.go_BAK | 0 .../handler/api/v1/whatsapp_call_handler.go | 0 .../api/v1/whatsapp_call_handler_test.go | 0 .../handler/api/v1/widget_test_handler.go | 0 .../api/v1/widget_test_handler_test.go | 0 .../handler/api/v1/working_hour_handler.go | 0 .../handler/api/v1/year_in_review_handler.go | 0 .../api/v1/year_in_review_handler_test.go | 0 .../internal}/handler/api_v1/handlers.go | 0 .../internal}/handler/auth/auth.go | 0 .../internal}/handler/health_handler.go | 0 .../internal}/handler/metrics_handler.go | 0 .../handler/webhook/email_webhook.go | 0 .../handler/webhook/facebook_webhook.go | 0 .../handler/webhook/facebook_webhook.go_BAK2 | 0 .../handler/webhook/incoming_persister.go | 0 .../webhook/incoming_persister_jobs.go | 0 .../internal}/handler/webhook/line_webhook.go | 0 .../handler/webhook/shopify_webhook.go | 0 .../handler/webhook/telegram_webhook.go | 0 .../handler/webhook/tiktok_webhook.go | 0 .../handler/webhook/twilio_webhook.go | 0 .../handler/webhook/webhook_handler.go | 0 .../handler/webhook/webhook_lookup_test.go | 0 .../handler/webhook/whatsapp_webhook.go | 0 .../handler/widget/widget_handler.go | 0 .../handler/widget/widget_handler_test.go | 0 .../handler/widget/widget_theme_handler.go | 0 .../widget/widget_theme_handler_test.go | 0 .../internal}/handler/ws/handler.go | 0 .../internal}/handler/ws/hub.go | 0 .../internal}/handler/ws/protocol.go | 0 .../internal}/handler/ws/subscriber.go | 0 .../internal}/llm/llm_test.go | 0 .../internal}/llm/openai_provider.go | 0 .../internal}/llm/provider.go | 0 .../internal}/middleware/account_scope.go | 0 .../middleware/account_scope_test.go | 0 .../internal}/middleware/auth.go | 0 .../internal}/middleware/auth_test.go | 0 .../internal}/middleware/cors.go | 0 .../internal}/middleware/cors_logger.go | 0 .../internal}/middleware/cors_test.go | 0 .../internal}/middleware/csrf.go | 0 .../internal}/middleware/csrf_test.go | 0 .../internal}/middleware/feature_flag.go | 0 .../internal}/middleware/feature_flag_test.go | 0 .../internal}/middleware/logger.go | 0 .../middleware/logger_recovery_test.go | 0 .../internal}/middleware/platform_app_auth.go | 0 .../middleware/platform_app_auth_test.go | 0 .../internal}/middleware/policy.go | 0 .../internal}/middleware/policy_test.go | 0 .../internal}/middleware/rate_limit.go | 0 .../internal}/middleware/rate_limit_test.go | 0 .../internal}/middleware/recovery.go | 0 .../internal}/middleware/role_check.go | 0 .../internal}/middleware/role_check_test.go | 0 .../internal}/middleware/security_headers.go | 0 .../middleware/security_headers_test.go | 0 .../internal}/middleware/session.go | 0 .../internal}/middleware/session_test.go | 0 .../internal}/middleware/super_admin.go | 0 .../internal}/middleware/super_admin_test.go | 0 .../internal}/middleware/upload_security.go | 0 .../middleware/upload_security_zip.go | 0 .../internal}/middleware/webhook_auth.go | 0 .../internal}/middleware/webhook_auth_test.go | 0 .../internal}/middleware/xss_protection.go | 0 .../middleware/xss_protection_test.go | 0 .../internal}/model/access_token.go | 0 .../internal}/model/access_token.go.txt | 0 .../internal}/model/account.go | 0 .../internal}/model/account.go.txt | 0 .../internal}/model/account_email.go | 0 .../internal}/model/account_ldap_settings.go | 0 .../internal}/model/account_oidc_settings.go | 0 .../internal}/model/account_saml_settings.go | 0 .../model/account_saml_settings.go.txt | 0 .../internal}/model/account_user.go | 0 .../internal}/model/account_user.go.txt | 0 .../internal}/model/agent_bot.go | 0 .../internal}/model/agent_bot.go.txt | 0 .../internal}/model/agent_bot_inbox.go | 0 .../internal}/model/agent_bot_inbox.go.txt | 0 .../model/agent_bot_presence_event.go | 0 .../model/agent_bot_presence_event.go.txt | 0 .../internal}/model/agent_capacity_policy.go | 0 .../model/agent_capacity_policy.go.txt | 0 .../internal}/model/applied_sla.go.txt | 0 .../internal}/model/article.go | 0 .../internal}/model/article.go.txt | 0 .../internal}/model/article_embedding.go | 0 .../internal}/model/article_embedding.go.txt | 0 .../internal}/model/assignment_policy.go | 0 .../internal}/model/assignment_policy_v2.go | 0 .../internal}/model/associations_test.go | 0 .../internal}/model/attachment.go | 0 .../internal}/model/attachment.go.txt | 0 {internal => backend/internal}/model/audit.go | 0 .../internal}/model/audit.go.txt | 0 .../internal}/model/auto_reply_rule_models.go | 0 .../internal}/model/automation_action.go | 0 .../internal}/model/automation_action.go.txt | 0 .../internal}/model/automation_rule.go.txt | 0 .../internal}/model/background_job.go | 0 .../internal}/model/banner.go | 0 .../internal}/model/banner.go.txt | 0 {internal => backend/internal}/model/base.go | 0 .../internal}/model/base.go.txt | 0 .../internal}/model/base_test.txt | 0 .../internal}/model/bot_rule.go | 0 {internal => backend/internal}/model/call.go | 0 .../internal}/model/call.go.txt | 0 .../internal}/model/captain_assistant.go.txt | 0 .../model/captain_assistant_inbox.go | 0 .../model/captain_assistant_inbox.go.txt | 0 .../model/captain_assistant_response.go.txt | 0 .../model/captain_custom_tool.go.txt | 0 .../internal}/model/captain_document.go.txt | 0 .../internal}/model/captain_models.go | 0 .../internal}/model/captain_scenario.go.txt | 0 .../internal}/model/category.go | 0 .../internal}/model/category.go.txt | 0 .../internal}/model/channel/api.go | 0 .../internal}/model/channel/api.go.txt | 0 .../internal}/model/channel/channel_base.go | 0 .../internal}/model/channel/email.go | 0 .../internal}/model/channel/email.go.txt | 0 .../internal}/model/channel/facebook.go | 0 .../internal}/model/channel/facebook.go.txt | 0 .../internal}/model/channel/google.go | 0 .../internal}/model/channel/instagram.go | 0 .../internal}/model/channel/instagram.go.txt | 0 .../internal}/model/channel/line.go | 0 .../internal}/model/channel/line.go.txt | 0 .../internal}/model/channel/microsoft.go | 0 .../internal}/model/channel/sms.go.txt | 0 .../internal}/model/channel/telegram.go | 0 .../internal}/model/channel/telegram.go.txt | 0 .../internal}/model/channel/tiktok.go | 0 .../internal}/model/channel/tiktok.go.txt | 0 .../internal}/model/channel/twilio.go | 0 .../internal}/model/channel/twilio_sms.go.txt | 0 .../internal}/model/channel/twitter.go | 0 .../internal}/model/channel/web_widget.go | 0 .../internal}/model/channel/web_widget.go.txt | 0 .../internal}/model/channel/whatsapp.go | 0 .../internal}/model/channel/whatsapp.go.txt | 0 .../internal}/model/channelable.go | 0 .../internal}/model/channelable.go.txt | 0 .../internal}/model/common.go | 0 .../internal}/model/company.go | 0 .../internal}/model/company.go.txt | 0 .../internal}/model/company_note.go | 0 .../internal}/model/constraints_test.go | 0 .../internal}/model/contact.go | 0 .../internal}/model/contact.go.txt | 0 .../internal}/model/contact_export.go | 0 .../internal}/model/contact_inbox.go | 0 .../internal}/model/contact_inbox.go.txt | 0 .../internal}/model/contact_label.go | 0 .../internal}/model/contact_merge.go | 0 .../internal}/model/contact_note.go | 0 .../internal}/model/contact_note.go.txt | 0 .../internal}/model/contactable.go | 0 .../internal}/model/contactable.go.txt | 0 .../internal}/model/conversation.go | 0 .../internal}/model/conversation.go.txt | 0 .../internal}/model/conversation_label.go | 0 .../model/conversation_participant.go | 0 .../internal}/model/copilot_message.go.txt | 0 .../internal}/model/copilot_models.go | 0 .../internal}/model/copilot_thread.go.txt | 0 .../internal}/model/crud_test.go | 0 .../internal}/model/csat_template.go | 0 .../model/custom_attribute_definition.go | 0 .../internal}/model/custom_filter.go | 0 .../internal}/model/custom_role.go | 0 .../internal}/model/custom_role.go.txt | 0 .../internal}/model/dashboard_app.go | 0 .../internal}/model/dashboard_app.go.txt | 0 .../internal}/model/data_import.go | 0 .../internal}/model/data_import.go.txt | 0 .../internal}/model/delivery_status.go | 0 .../internal}/model/direct_upload.go | 0 .../internal}/model/direct_upload_test.go | 0 .../internal}/model/draft_message.go | 0 .../model/email_channel_migration.go | 0 .../internal}/model/email_template.go | 0 .../internal}/model/email_template.go.txt | 0 {internal => backend/internal}/model/enums.go | 0 .../internal}/model/enums.go.txt | 0 .../internal}/model/folder.go | 0 .../internal}/model/folder.go.txt | 0 {internal => backend/internal}/model/inbox.go | 0 .../internal}/model/inbox.go.txt | 0 .../internal}/model/inbox_limit.go | 0 .../internal}/model/inbox_member.go | 0 .../internal}/model/inbox_member.go.txt | 0 .../internal}/model/installation_config.go | 0 .../model/installation_config.go.txt | 0 .../internal}/model/integration_hook.go | 0 .../internal}/model/json_helpers.go | 0 .../internal}/model/mention.go | 0 .../internal}/model/message.go | 0 .../internal}/model/message.go.txt | 0 .../internal}/model/message_reaction.go | 0 .../internal}/model/message_reaction.go.txt | 0 .../internal}/model/methods_test.go | 0 .../internal}/model/model_test.go | 0 {internal => backend/internal}/model/note.go | 0 .../internal}/model/notification.go | 0 .../internal}/model/notification.go.txt | 0 .../model/notification_preference.go | 0 .../model/notification_preference.go.txt | 0 .../internal}/model/notification_setting.go | 0 .../model/notification_subscription.go | 0 .../internal}/model/permissible.go | 0 .../internal}/model/permissible.go.txt | 0 .../internal}/model/platform_app.go | 0 .../internal}/model/platform_app.go.txt | 0 .../internal}/model/portal.go | 0 .../internal}/model/portal.go.txt | 0 .../internal}/model/portal_member.go | 0 .../internal}/model/portal_member.go.txt | 0 .../internal}/model/pre_chat_form.go | 0 .../internal}/model/push_token.go | 0 .../internal}/model/push_token.go.txt | 0 .../internal}/model/related_category.go | 0 .../internal}/model/related_category.go.txt | 0 .../internal}/model/report.go | 0 .../internal}/model/report.go.txt | 0 .../internal}/model/reporting_event.go | 0 .../internal}/model/reporting_event.go.txt | 0 .../internal}/model/saml_idp_config.go | 0 .../internal}/model/sla_event.go.txt | 0 .../internal}/model/sla_policy.go | 0 .../internal}/model/sla_policy.go.txt | 0 .../internal}/model/sso_session.go | 0 .../internal}/model/summary_report.go | 0 {internal => backend/internal}/model/tag.go | 0 {internal => backend/internal}/model/team.go | 0 .../internal}/model/team.go.txt | 0 .../internal}/model/team_member.go | 0 .../internal}/model/team_member.go.txt | 0 .../internal}/model/test_write.go | 0 {internal => backend/internal}/model/user.go | 0 .../internal}/model/user.go.txt | 0 .../internal}/model/webhook_subscription.go | 0 .../internal}/model/whatsapp_call.go | 0 .../internal}/model/widget_file_upload.go | 0 .../internal}/model/widget_offline_message.go | 0 .../internal}/model/widget_test_scenario.go | 0 .../internal}/model/widget_theme_config.go | 0 .../internal}/model/working_hour.go | 0 .../internal}/pgvector_stub/go.mod | 0 .../internal}/pgvector_stub/vector.go | 0 .../internal}/pubsub/event_bus.go | 0 .../internal}/pubsub/event_bus_test.go | 0 .../internal}/pubsub/pubsub.go | 0 .../internal}/pubsub/pubsub_test.go | 0 .../internal}/pubsub/redis_pubsub.go | 0 .../internal}/reporting/data_source.go | 0 .../internal}/reporting/listener.go | 0 .../internal}/reporting/metric_registry.go | 0 .../internal}/reporting/model.go | 0 .../internal}/reporting/service.go | 0 .../internal}/repository/access_token_repo.go | 0 .../repository/access_token_repo_test.go | 0 .../repository/account_ldap_settings_repo.go | 0 .../repository/account_oidc_settings_repo.go | 0 .../internal}/repository/account_repo.go | 0 .../internal}/repository/account_repo_test.go | 0 .../repository/account_saml_settings_repo.go | 0 .../internal}/repository/account_user_repo.go | 0 .../repository/agent_bot_inbox_repo.go | 0 .../repository/agent_bot_inbox_repo_test.go | 0 .../internal}/repository/agent_bot_repo.go | 0 .../repository/agent_bot_repo_test.go | 0 .../repository/agent_capacity_policy_repo.go | 0 .../agent_capacity_policy_repo_test.go | 0 .../internal}/repository/agent_repo.go | 0 .../internal}/repository/article_repo.go | 0 .../internal}/repository/article_repo_test.go | 0 .../repository/assignment_policy_repo.go | 0 .../assignment_policy_repo_test.go.bak | 0 .../repository/assignment_policy_v2_repo.go | 0 .../internal}/repository/attachment_repo.go | 0 .../repository/attachment_repo_test.go | 0 .../internal}/repository/audit_repo.go | 0 .../internal}/repository/audit_repo_test.go | 0 .../repository/auto_reply_rule_repo.go | 0 .../repository/auto_reply_rule_repo_test.go | 0 .../internal}/repository/banner_repo.go | 0 .../internal}/repository/benchmark_test.go | 0 .../internal}/repository/campaign_repo.go | 0 .../repository/captain_assistant_repo.go | 0 .../repository/captain_assistant_repo_test.go | 0 .../captain_assistant_response_repo.go | 0 .../captain_assistant_response_repo_test.go | 0 .../repository/captain_custom_tool_repo.go | 0 .../captain_custom_tool_repo_test.go | 0 .../repository/captain_document_repo.go | 0 .../repository/captain_document_repo_test.go | 0 .../repository/captain_inbox_repo.go | 0 .../repository/captain_inbox_repo_test.go | 0 .../repository/captain_preference_repo.go | 0 .../captain_preference_repo_test.go | 0 .../repository/captain_scenario_repo.go | 0 .../repository/captain_scenario_repo_test.go | 0 .../internal}/repository/category_repo.go | 0 .../repository/category_repo_test.go | 0 .../repository/channel_email_repo.go | 0 .../repository/channel_facebook_repo.go | 0 .../repository/channel_google_repo.go | 0 .../repository/channel_instagram_repo.go | 0 .../internal}/repository/channel_line_repo.go | 0 .../repository/channel_microsoft_repo.go | 0 .../repository/channel_tiktok_repo.go | 0 .../repository/channel_twilio_repo.go | 0 .../repository/channel_twilio_sms_repo.go | 0 .../repository/channel_twitter_repo.go | 0 .../internal}/repository/company_repo.go | 0 .../internal}/repository/company_repo_test.go | 0 .../repository/contact_inbox_repo.go | 0 .../repository/contact_inbox_repo_test.go | 0 .../repository/contact_merge_repo.go | 0 .../internal}/repository/contact_note_repo.go | 0 .../internal}/repository/contact_repo.go | 0 .../internal}/repository/contact_repo_test.go | 0 .../repository/conversation_label_repo.go | 0 .../conversation_label_repo_test.go | 0 .../conversation_participant_repo.go | 0 .../conversation_participant_repo_test.go | 0 .../internal}/repository/conversation_repo.go | 0 .../repository/conversation_repo_pg_test.go | 0 .../repository/conversation_repo_test.go | 0 .../repository/copilot_message_repo.go | 0 .../repository/copilot_message_repo_test.go | 0 .../repository/copilot_suggestion_repo.go | 0 .../repository/copilot_thread_repo.go | 0 .../repository/copilot_thread_repo_test.go | 0 .../repository/csat_template_repo.go | 0 .../custom_attribute_definition_repo.go | 0 .../custom_attribute_definition_repo_test.go | 0 .../repository/custom_filter_repo.go | 0 .../repository/custom_filter_repo_test.go | 0 .../internal}/repository/custom_role_repo.go | 0 .../repository/custom_role_repo_test.go | 0 .../repository/dashboard_app_repo.go | 0 .../repository/dashboard_app_repo_test.go | 0 .../repository/delivery_status_repo.go | 0 .../repository/direct_upload_repo.go | 0 .../repository/direct_upload_repo_test.go | 0 .../repository/draft_message_repo.go | 0 .../repository/draft_message_repo_test.go | 0 .../email_channel_migration_repo.go | 0 .../internal}/repository/folder_repo.go | 0 .../repository/folder_repo_test.go.bak | 0 .../internal}/repository/inbox_limit_repo.go | 0 .../internal}/repository/inbox_member_repo.go | 0 .../repository/inbox_member_repo_test.go | 0 .../internal}/repository/inbox_repo.go | 0 .../internal}/repository/inbox_repo_test.go | 0 .../repository/installation_config_repo.go | 0 .../repository/integration_hook_repo.go | 0 .../repository/integration_hook_repo_test.go | 0 .../internal}/repository/message_repo.go | 0 .../internal}/repository/message_repo_test.go | 0 .../internal}/repository/note_repo.go | 0 .../notification_preference_repo.go | 0 .../notification_preference_repo_test.go | 0 .../internal}/repository/notification_repo.go | 0 .../repository/notification_repo_test.go | 0 .../repository/notification_setting_repo.go | 0 .../notification_subscription_repo.go | 0 .../internal}/repository/permissible_repo.go | 0 .../repository/permissible_repo_test.go | 0 .../internal}/repository/platform_app_repo.go | 0 .../repository/platform_app_repo_test.go | 0 .../repository/portal_member_repo.go | 0 .../repository/portal_member_repo_test.go.bak | 0 .../internal}/repository/portal_repo.go | 0 .../internal}/repository/portal_repo_test.go | 0 .../repository/pre_chat_form_repo.go | 0 .../repository/pre_chat_form_repo_test.go | 0 .../internal}/repository/push_token_repo.go | 0 .../repository/push_token_repo_test.go | 0 .../repository/related_category_repo.go | 0 .../repository/reporting_event_repo.go | 0 .../repository/reporting_event_repo_test.go | 0 .../reporting_events_rollup_repo.go | 0 .../reporting_events_rollup_repo_test.go | 0 .../internal}/repository/repository.go | 0 .../internal}/repository/repository_test.go | 0 .../repository/saml_idp_config_repo.go | 0 .../internal}/repository/search_repo.go | 0 .../internal}/repository/search_repo.go.bak | 0 .../internal}/repository/search_repo_test.go | 0 .../repository/search_repo_test.go_BAK | 0 .../internal}/repository/sla_policy_repo.go | 0 .../internal}/repository/sso_session_repo.go | 0 .../repository/summary_report_repo.go | 0 .../repository/summary_report_repo_test.go | 0 .../internal}/repository/tag_repo.go | 0 .../internal}/repository/tag_repo_test.go | 0 .../internal}/repository/team_member_repo.go | 0 .../internal}/repository/team_repo.go | 0 .../internal}/repository/team_repo_test.go | 0 .../repository/team_repo_test.go.bak | 0 .../internal}/repository/testdb_helper.go | 0 .../internal}/repository/user_repo.go | 0 .../internal}/repository/user_repo_test.go | 0 .../repository/webhook_subscription_repo.go | 0 .../webhook_subscription_repo_test.go.bak | 0 .../repository/whatsapp_call_repo.go | 0 .../repository/widget_file_upload_repo.go | 0 .../widget_file_upload_repo_test.go | 0 .../repository/widget_offline_message_repo.go | 0 .../widget_offline_message_repo_test.go | 0 .../internal}/repository/widget_repo_test.go | 0 .../internal}/repository/widget_test_repo.go | 0 .../repository/widget_theme_config_repo.go | 0 .../internal}/repository/working_hour_repo.go | 0 .../internal}/router/channel_callbacks.go | 0 .../internal}/router/hello.txt | 0 .../internal}/router/integration_callbacks.go | 0 .../internal}/router/router.go | 0 .../internal}/router/router_new.go | 0 .../internal}/router/router_test.go | 0 .../internal}/router/router_test_write.go_BAK | 0 .../internal}/router/test3.txt | 0 .../internal}/search/engine.go | 0 .../internal}/search/engine_db.go | 0 .../internal}/search/engine_meili.go | 0 .../search/engine_meili_live_test.go | 0 .../internal}/search/engine_test.go | 0 .../internal}/search/search_filter.go | 0 .../internal}/search/search_filter_test.go | 0 .../internal}/search/search_repo_interface.go | 0 .../internal}/search/search_result.go | 0 .../internal}/search/search_service.go | 0 .../internal}/search/search_service.go.bak | 0 .../internal}/search/search_service_test.go | 0 .../search_filter.go | 0 .../search_result.go | 0 .../search_service.go | 0 .../internal}/security/encryption.go | 0 .../internal}/security/jwt_security.go | 0 .../internal}/security/sql_safety.go | 0 .../internal}/security/ssrf_protection.go | 0 .../internal}/security/test_write.go | 0 .../internal}/security/webhook_signing.go | 0 .../internal}/service/account_service.go | 0 .../internal}/service/account_service_test.go | 0 .../service/account_service_test.go_BAK | 0 .../internal}/service/account_user_service.go | 0 .../service/agent_bot_inbox_service.go | 0 .../service/agent_bot_inbox_service_test.go | 0 .../internal}/service/agent_bot_listener.go | 0 .../service/agent_bot_listener_test.go | 0 .../internal}/service/agent_bot_service.go | 0 .../service/agent_capacity_policy_service.go | 0 .../agent_capacity_policy_service_test.go | 0 .../internal}/service/agent_service.go | 0 .../internal}/service/analytics_csv.go | 0 .../internal}/service/analytics_p513_test.go | 0 .../service/analytics_query_helpers.go | 0 .../internal}/service/analytics_service.go | 0 .../service/analytics_service_test.go_BAK | 0 .../internal}/service/applied_sla_service.go | 0 .../service/applied_sla_service_test.go | 0 .../internal}/service/article_service.go | 0 .../internal}/service/article_service_test.go | 0 .../service/article_service_test.go_BAK | 0 .../service/assignable_agent_service.go | 0 .../service/assignment_policy_service.go | 0 .../service/assignment_policy_v2_service.go | 0 .../assignment_policy_v2_service_test.go | 0 .../internal}/service/attachment_service.go | 0 .../service/attachment_service_test.go_BAK | 0 .../internal}/service/audit_service.go | 0 .../internal}/service/audit_service_test.go | 0 .../internal}/service/auth_service.go | 0 .../internal}/service/auth_service_test.go | 0 .../service/auth_service_test.go_BAK | 0 .../service/auto_reply_rule_service.go | 0 .../service/auto_reply_rule_service_test.go | 0 .../internal}/service/banner_service.go | 0 .../internal}/service/benchmark_test.go.bak | 0 .../internal}/service/campaign_service.go | 0 .../captain_assistant_response_service.go | 0 ...captain_assistant_response_service_test.go | 0 .../service/captain_assistant_service.go | 0 .../captain_assistant_service_test.go_BAK | 0 .../service/captain_bulk_action_service.go | 0 .../captain_bulk_action_service_test.go | 0 .../service/captain_conversation_service.go | 0 .../captain_conversation_worker_test.go | 0 .../service/captain_custom_tool_service.go | 0 .../captain_custom_tool_service_test.go_BAK | 0 .../service/captain_document_service.go | 0 .../service/captain_document_service_test.go | 0 .../captain_document_service_test.go_BAK | 0 .../service/captain_document_worker.go | 0 .../service/captain_preference_service.go | 0 .../captain_preference_service_test.go | 0 .../service/captain_scenario_service.go | 0 .../captain_scenario_service_test.go_BAK | 0 .../service/captain_task_extended_service.go | 0 .../captain_task_extended_service_test.go | 0 .../internal}/service/captain_task_service.go | 0 .../service/captain_task_service.go.bak | 0 .../service/captain_task_service.go.bak2 | 0 .../captain_task_service_streaming_test.go | 0 .../service/captain_task_service_test.go | 0 .../internal}/service/category_service.go | 0 .../service/category_service_test.go | 0 .../service/category_service_test.go.bak | 0 .../service/channel_email_service.go | 0 .../service/channel_facebook_service.go | 0 .../service/channel_google_service.go | 0 .../service/channel_instagram_service.go | 0 .../service/channel_instagram_service.go_BAK2 | 0 .../internal}/service/channel_line_service.go | 0 .../service/channel_microsoft_service.go | 0 .../service/channel_tiktok_service.go | 0 .../service/channel_twilio_service.go | 0 .../service/channel_twilio_sms_service.go | 0 .../service/channel_twitter_service.go | 0 .../internal}/service/company_service.go | 0 .../internal}/service/company_service_test.go | 0 .../service/contact_export_mailer.go | 0 .../service/contact_export_worker.go | 0 .../service/contact_import_worker.go | 0 .../service/contact_inbox_service.go | 0 .../service/contact_inbox_service_test.go | 0 .../service/contact_inbox_service_test.go_BAK | 0 .../service/contact_merge_service.go | 0 .../service/contact_merge_service_test.go | 0 .../internal}/service/contact_note_service.go | 0 .../internal}/service/contact_service.go | 0 .../service/contact_service_g3_test.go | 0 .../service/contact_service_test.go_BAK | 0 .../service/conversation_assignment_test.go | 0 .../service/conversation_delete_worker.go | 0 .../service/conversation_filter_test.go | 0 .../service/conversation_finder_strategy.go | 0 .../service/conversation_insight_service.go | 0 .../conversation_insight_service_test.go | 0 .../conversation_maintenance_worker.go | 0 .../conversation_maintenance_worker_test.go | 0 .../conversation_participant_service.go | 0 .../conversation_participant_service_test.go | 0 .../internal}/service/conversation_service.go | 0 .../service/conversation_service_test.go | 0 .../service/conversation_service_test.go_BAK | 0 .../service/copilot_context_service.go | 0 .../service/copilot_context_service_test.go | 0 .../service/copilot_response_worker.go | 0 .../service/copilot_response_worker_test.go | 0 .../internal}/service/copilot_service.go | 0 .../service/copilot_service_test.go_BAK | 0 .../internal}/service/csat_metrics_service.go | 0 .../service/csat_template_service.go | 0 .../internal}/service/csat_template_worker.go | 0 .../service/csat_template_worker_test.go | 0 .../custom_attribute_definition_service.go | 0 ...ustom_attribute_definition_service_test.go | 0 .../service/custom_attribute_value_service.go | 0 .../custom_attribute_value_service_test.go | 0 ...custom_attribute_value_service_test.go_BAK | 0 .../service/custom_filter_service.go | 0 .../service/custom_filter_service_test.go | 0 .../internal}/service/custom_role_service.go | 0 .../service/custom_role_service_test.go | 0 .../service/dashboard_app_service.go | 0 .../service/dashboard_app_service_test.go | 0 .../service/dashboard_app_service_test.go_BAK | 0 .../service/delivery_status_service.go | 0 .../service/draft_message_service.go | 0 .../service/draft_message_service_test.go | 0 .../service/dyte_integration_service.go | 0 .../service/dyte_integration_service_test.go | 0 .../email_channel_migration_service.go | 0 .../internal}/service/folder_service.go | 0 .../internal}/service/folder_service_test.go | 0 .../service/folder_service_test.go.bak | 0 .../internal}/service/inbox_limit_service.go | 0 .../internal}/service/inbox_member_service.go | 0 .../service/inbox_member_service_test.go_BAK | 0 .../internal}/service/inbox_service.go | 0 .../internal}/service/inbox_service_test.go | 0 .../service/inbox_service_test.go_BAK | 0 .../service/installation_config_service.go | 0 .../service/integration_hook_service.go | 0 .../service/integration_hook_service_test.go | 0 .../internal}/service/intent_service.go | 0 .../internal}/service/label_service.go | 0 .../service/label_service_test.go_BAK | 0 .../linear_integration_service_test.go | 0 .../linear_notion_integration_service.go | 0 .../linear_notion_integration_service_test.go | 0 .../internal}/service/llm_response_parser.go | 0 .../service/llm_response_parser_test.go | 0 .../service/message_delivery_worker.go | 0 .../service/message_delivery_worker_test.go | 0 .../internal}/service/message_service.go | 0 .../internal}/service/message_service_test.go | 0 .../service/message_service_test.go.bak | 0 .../internal}/service/note_service.go | 0 .../service/notification_delivery_service.go | 0 .../internal}/service/notification_service.go | 0 .../service/notification_service_test.go | 0 .../service/notification_service_test.go_BAK | 0 .../service/notification_setting_service.go | 0 .../notification_setting_service_test.go | 0 .../notification_subscription_service.go | 0 .../internal}/service/platform_app_service.go | 0 .../service/platform_app_service_test.go_BAK | 0 .../service/platform_user_service.go | 0 .../service/platform_user_service_test.go | 0 .../service/portal_member_service.go | 0 .../service/portal_member_service_test.go | 0 .../service/portal_member_service_test.go_BAK | 0 .../internal}/service/portal_service.go | 0 .../internal}/service/portal_service_test.go | 0 .../service/portal_service_test.go_BAK | 0 .../service/profile_confirmation_mailer.go | 0 .../internal}/service/profile_service.go | 0 .../service/push_delivery_service.go | 0 .../service/push_delivery_service_test.go.bak | 0 .../service/push_subscription_service.go | 0 .../push_subscription_service_test.go.bak | 0 .../internal}/service/rag_service.go | 0 .../internal}/service/rag_service_test.go | 0 .../service/rbac_custom_role_test.go | 0 .../internal}/service/rbac_service.go | 0 .../service/rbac_service_test.go_BAK | 0 .../service/reporting_backfill_service.go | 0 .../service/reporting_event_service.go | 0 .../service/reporting_metric_registry.go | 0 .../service/reporting_rollup_helpers.go | 0 .../service/reporting_rollup_service.go | 0 .../service/reporting_rollup_timezone_test.go | 0 .../service/reporting_rollup_worker.go | 0 .../service/rewrite_reply_service.go.bak | 0 .../internal}/service/search_indexer.go | 0 .../service/search_indexer_hooks_test.go | 0 .../service/search_indexer_worker.go | 0 .../service/search_indexer_worker_test.go | 0 .../internal}/service/service.go.bak | 0 .../internal}/service/service_test_helper.go | 0 .../service/service_test_helper.go_BAK | 0 .../service/shopify_integration_service.go | 0 .../shopify_integration_service_test.go | 0 .../internal}/service/sla_event_service.go | 0 .../internal}/service/sla_policy_service.go | 0 .../service/sla_policy_service_test.go | 0 .../internal}/service/sla_worker.go | 0 .../internal}/service/sla_worker_test.go | 0 .../service/slack_integration_service.go | 0 .../service/slack_integration_service_test.go | 0 .../service/summary_report_service.go | 0 .../service/system_prompt_builder.go | 0 .../internal}/service/tag_service.go | 0 .../internal}/service/tag_service_test.go | 0 .../internal}/service/tag_service_test.go_BAK | 0 .../service/team_profile_service_test.go_BAK | 0 .../internal}/service/team_service.go | 0 .../service/team_service_test.go_BAK | 0 .../internal}/service/upload_service.go | 0 .../internal}/service/upload_service_test.go | 0 .../service/upload_service_test.go_BAK | 0 .../service/webhook_event_processor.go | 0 .../service/webhook_event_processor_test.go | 0 .../service/webhook_subscription_service.go | 0 .../webhook_subscription_service_test.go | 0 .../webhook_subscription_service_test.go_BAK | 0 .../service/whatsapp_authorization_service.go | 0 .../whatsapp_authorization_service_test.go | 0 .../service/whatsapp_call_service.go | 0 .../service/whatsapp_call_service_test.go | 0 .../service/widget_offline_message_test.go | 0 .../internal}/service/widget_service.go | 0 .../internal}/service/widget_service_test.go | 0 .../internal}/service/widget_test_service.go | 0 .../internal}/service/widget_theme_service.go | 0 .../internal}/service/working_hour_service.go | 0 .../service/working_hour_service_test.go | 0 .../service/year_in_review_service.go | 0 .../service/year_in_review_service_test.go | 0 .../internal}/webhookutil/timeout.go | 0 .../internal}/worker/worker.go | 0 .../internal}/worker/worker_test.go | 0 {internal => backend/internal}/ws/auth.go | 0 .../internal}/ws/broadcast.go | 0 .../internal}/ws/broadcast_test.go | 0 .../internal}/ws/event_publisher.go | 0 .../internal}/ws/event_publisher_test.go | 0 .../internal}/ws/event_types.go | 0 .../internal}/ws/heartbeat.go | 0 {internal => backend/internal}/ws/presence.go | 0 .../internal}/ws/presence_test.go | 0 .../internal}/ws/sse_registry.go | 0 .../internal}/ws/sse_registry_test.go | 0 {internal => backend/internal}/ws/typing.go | 0 .../internal}/ws/typing_test.go | 0 {internal => backend/internal}/ws/ws_test.go | 0 .../migrations}/000001_init_schema.down.sql | 0 .../migrations}/000001_init_schema.up.sql | 0 .../000002_add_captain_ai_tables.down.sql | 0 .../000002_add_captain_ai_tables.up.sql | 0 .../000003_add_rate_limit_state.down.sql | 0 .../000003_add_rate_limit_state.up.sql | 0 .../000004_add_saml_config_tables.down.sql | 0 .../000004_add_saml_config_tables.up.sql | 0 .../000005_add_dashboard_apps_table.down.sql | 0 .../000005_add_dashboard_apps_table.up.sql | 0 ...00006_add_contact_extended_fields.down.sql | 0 .../000006_add_contact_extended_fields.up.sql | 0 .../000007_add_channel_instagrams.down.sql | 0 .../000007_add_channel_instagrams.up.sql | 0 .../000008_add_search_indexes.down.sql | 0 .../000008_add_search_indexes.up.sql | 0 .../000009_add_permissibles_table.down.sql | 0 .../000009_add_permissibles_table.up.sql | 0 .../000010_add_access_tokens_table.down.sql | 0 .../000010_add_access_tokens_table.up.sql | 0 ...0011_update_platform_apps_columns.down.sql | 0 ...000011_update_platform_apps_columns.up.sql | 0 .../000012_add_knowledge_base_tables.down.sql | 0 .../000012_add_knowledge_base_tables.up.sql | 0 .../000013_add_pg_trgm_search.down.sql | 0 .../000013_add_pg_trgm_search.up.sql | 0 ...014_add_captain_preferences_table.down.sql | 0 ...00014_add_captain_preferences_table.up.sql | 0 ...00015_add_integration_hook_tables.down.sql | 0 .../000015_add_integration_hook_tables.up.sql | 0 ..._channel_twitter_microsoft_google.down.sql | 0 ...dd_channel_twitter_microsoft_google.up.sql | 0 ...017_add_profile_serializer_fields.down.sql | 0 ...00017_add_profile_serializer_fields.up.sql | 0 ...onversation_message_parity_fields.down.sql | 0 ..._conversation_message_parity_fields.up.sql | 0 .../000019_add_contact_labels.down.sql | 0 .../000019_add_contact_labels.up.sql | 0 .../000020_add_data_imports.down.sql | 0 .../000020_add_data_imports.up.sql | 0 .../000021_add_contact_exports.down.sql | 0 .../000021_add_contact_exports.up.sql | 0 ...2_add_agent_capacity_policy_links.down.sql | 0 ...022_add_agent_capacity_policy_links.up.sql | 0 ...023_align_custom_role_permissions.down.sql | 0 ...00023_align_custom_role_permissions.up.sql | 0 .../000024_add_account_inbox_limit.down.sql | 0 .../000024_add_account_inbox_limit.up.sql | 0 ...5_add_account_captain_preferences.down.sql | 0 ...025_add_account_captain_preferences.up.sql | 0 .../000026_add_background_jobs.down.sql | 0 .../000026_add_background_jobs.up.sql | 0 .../000027_add_user_auth_tokens.down.sql | 0 .../000027_add_user_auth_tokens.up.sql | 0 ...8_align_tags_with_chatwoot_labels.down.sql | 0 ...028_align_tags_with_chatwoot_labels.up.sql | 0 ...scriptions_with_chatwoot_webhooks.down.sql | 0 ...ubscriptions_with_chatwoot_webhooks.up.sql | 0 ...egration_hooks_with_chatwoot_apps.down.sql | 0 ...ntegration_hooks_with_chatwoot_apps.up.sql | 0 ...31_align_account_users_inviter_id.down.sql | 0 ...0031_align_account_users_inviter_id.up.sql | 0 ...00032_add_users_unconfirmed_email.down.sql | 0 .../000032_add_users_unconfirmed_email.up.sql | 0 ...33_add_accounts_custom_attributes.down.sql | 0 ...0033_add_accounts_custom_attributes.up.sql | 0 ...00034_align_calls_whatsapp_fields.down.sql | 0 .../000034_align_calls_whatsapp_fields.up.sql | 0 ...35_align_facebook_callback_fields.down.sql | 0 ...0035_align_facebook_callback_fields.up.sql | 0 ...6_add_accounts_reporting_timezone.down.sql | 0 ...036_add_accounts_reporting_timezone.up.sql | 0 .../000037_add_accounts_limits.down.sql | 0 .../000037_add_accounts_limits.up.sql | 0 ...dd_channel_twitter_tweets_enabled.down.sql | 0 ..._add_channel_twitter_tweets_enabled.up.sql | 0 .../000039_add_companies_tables.down.sql | 0 .../000039_add_companies_tables.up.sql | 0 .../000040_add_sla_tables.down.sql | 0 .../migrations}/000040_add_sla_tables.up.sql | 0 .../000041_add_installation_configs.down.sql | 0 .../000041_add_installation_configs.up.sql | 0 ...0042_add_csat_and_bot_rule_tables.down.sql | 0 ...000042_add_csat_and_bot_rule_tables.up.sql | 0 ...00043_add_automation_macro_tables.down.sql | 0 .../000043_add_automation_macro_tables.up.sql | 0 .../000044_add_audits_table.down.sql | 0 .../000044_add_audits_table.up.sql | 0 ...45_add_teams_and_campaigns_tables.down.sql | 0 ...0045_add_teams_and_campaigns_tables.up.sql | 0 ..._add_portal_channel_web_widget_id.down.sql | 0 ...46_add_portal_channel_web_widget_id.up.sql | 0 ...0047_add_help_center_model_fields.down.sql | 0 ...000047_add_help_center_model_fields.up.sql | 0 {pkg => backend/pkg}/crypto/crypto_test.go | 0 {pkg => backend/pkg}/crypto/hash.go | 0 {pkg => backend/pkg}/crypto/jwt.go | 0 {pkg => backend/pkg}/logger/logger.go | 0 {pkg => backend/pkg}/pagination/pagination.go | 0 {pkg => backend/pkg}/response/error.go | 0 {pkg => backend/pkg}/response/response.go | 0 {pkg => backend/pkg}/testutil/fixtures.go | 0 {pkg => backend/pkg}/testutil/helpers.go | 0 {pkg => backend/pkg}/validator/validator.go | 0 .../chatwoot_routes_manifest.cpython-313.pyc | Bin .../generate_gap_report.cpython-313.pyc | Bin .../scripts}/align_error_codes.py | 0 .../scripts}/chatwoot_routes_manifest.py | 0 .../scripts}/compare_routes.py | 0 .../scripts}/compare_routes_v2.py | 0 .../scripts}/coverage/coverage_report.md | 0 .../scripts}/coverage/generate_report.sh | 0 .../scripts}/coverage_report.sh | 0 {scripts => backend/scripts}/db_backup.sh | 0 .../scripts}/extract_chatwoot_routes.py | 0 .../scripts}/extract_routes.py | 0 .../scripts}/fix_all_route_params.py | 0 .../scripts}/fix_remaining_route_params.py | 0 .../scripts}/fix_route_params.py | 0 .../scripts}/fix_test_route_params.py | 0 .../scripts}/generate_gap_report.py | 0 {scripts => backend/scripts}/health_check.sh | 0 .../scripts/legacy/gorm_bool_main.go | 0 .../scripts/legacy/rename_models.py | 0 .../scripts/legacy/rename_models.sh | 0 .../scripts/legacy/rename_models.sh.txt | 0 .../scripts/legacy/run_m11_tests.sh | 0 .../scripts/legacy/verify_build.sh | 0 {scripts => backend/scripts}/migrate.sh | 0 .../parity_frontend_browser_smoke.mjs | 0 .../scripts}/parity_frontend_smoke.sh | 0 .../scripts}/parse_chatwoot_routes.py | 0 .../scripts}/parse_chatwoot_routes.rb | 0 .../scripts}/parse_chatwoot_routes_v2.py | 0 .../scripts}/parse_chatwoot_routes_v3.py | 0 .../scripts}/prometheus_exporter.sh | 0 .../scripts}/route_gap_analysis.py | 0 {scripts => backend/scripts}/scan_params.py | 0 .../scripts}/scan_route_conflicts.py | 0 {scripts => backend/scripts}/seed.sh | 0 {scripts => backend/scripts}/verify_tests.sh | 0 .../tests}/e2e/account_e2e_test.go | 0 {tests => backend/tests}/e2e/auth_e2e_test.go | 0 .../tests}/e2e/channel_incoming_e2e_test.go | 0 .../tests}/e2e/conversation_e2e_test.go | 0 {tests => backend/tests}/e2e/crm_e2e_test.go | 0 {tests => backend/tests}/e2e/csrf_e2e_test.go | 0 .../tests}/e2e/dashboard_app_e2e_test.go | 0 {tests => backend/tests}/e2e/e2e_test.go | 0 .../tests}/e2e/middleware_e2e_test.go | 0 {tests => backend/tests}/e2e/rbac_e2e_test.go | 0 .../tests}/e2e/session_e2e_test.go | 0 {tests => backend/tests}/helpers/pg_helper.go | 0 Dockerfile => deploy/docker/Dockerfile | 6 +- .../docker/Dockerfile.dev | 4 +- .../docker/docker-compose.dev.yml | 16 +-- .../docker/docker-compose.prod.yml | 4 +- .../docker/docker-compose.test.yml | 4 +- .../docker/docker-compose.yml | 8 +- deploy/quickstart/compose.yaml | 4 +- .../reports/ALIGNMENT_PLAN.md | 0 GAP_REPORT.md => docs/reports/GAP_REPORT.md | 0 .../reports/GAP_REPORT_AND_PLAN.md | 0 .../reports/ROUTE_GAP_REPORT.md | 0 .../V4_companies_verification_report.md | 0 ...IFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md | 0 1348 files changed, 176 insertions(+), 57 deletions(-) create mode 100644 AGENTS.md rename .air.toml => backend/.air.toml (100%) rename Makefile => backend/Makefile (96%) rename {cmd => backend/cmd}/dump_routes/main.go (100%) rename {cmd => backend/cmd}/gochat/main.go (100%) rename {cmd => backend/cmd}/migrate/main.go (100%) rename {cmd => backend/cmd}/migrate/migrate_test.go (100%) rename {cmd => backend/cmd}/reindex_search/main.go (100%) rename {cmd => backend/cmd}/reindex_search/main_test.go (100%) rename {cmd => backend/cmd}/route_parity/main.go (100%) rename {cmd => backend/cmd}/test_debug/main.go (100%) rename {configs => backend/configs}/config.dev.yaml (100%) rename {configs => backend/configs}/config.prod.yaml (100%) rename {configs => backend/configs}/config.yaml (100%) rename {configs => backend/configs}/fluentd.conf (100%) rename {configs => backend/configs}/prometheus_alerts.yml (100%) rename {configs => backend/configs}/redis.conf (100%) rename {docs => backend/docs}/docs.go (100%) rename {docs => backend/docs}/swag_overrides.txt (100%) rename {docs => backend/docs}/swagger.json (100%) rename {docs => backend/docs}/swagger.yaml (100%) rename {docs => backend/docs}/swagger_models.go (100%) rename go.mod => backend/go.mod (100%) rename go.sum => backend/go.sum (100%) rename {internal => backend/internal}/app/app.go (100%) rename {internal => backend/internal}/app/bootstrap.go (100%) rename {internal => backend/internal}/app/database.go (100%) rename {internal => backend/internal}/app/redis.go (100%) rename {internal => backend/internal}/app/redis_test.go_BAK (100%) rename {internal => backend/internal}/app/shutdown.go (100%) rename {internal => backend/internal}/auth/benchmark_test.go_BAK (100%) rename {internal => backend/internal}/auth/jwt.go (100%) rename {internal => backend/internal}/auth/jwt_test.go_BAK (100%) rename {internal => backend/internal}/auth/ldap.go (100%) rename {internal => backend/internal}/auth/ldap_test.go (100%) rename {internal => backend/internal}/auth/mfa.go (100%) rename {internal => backend/internal}/auth/oauth.go (100%) rename {internal => backend/internal}/auth/oidc.go (100%) rename {internal => backend/internal}/auth/oidc_test.go (100%) rename {internal => backend/internal}/auth/permission.go (100%) rename {internal => backend/internal}/auth/platform_auth.go (100%) rename {internal => backend/internal}/auth/policy.go (100%) rename {internal => backend/internal}/auth/policy_test.go_BAK (100%) rename {internal => backend/internal}/auth/refresh_store.go (100%) rename {internal => backend/internal}/auth/refresh_store_test.go_BAK (100%) rename {internal => backend/internal}/auth/saml.go (100%) rename {internal => backend/internal}/auth/saml_test.go (100%) rename {internal => backend/internal}/auth/saml_test.go_BAK (100%) rename {internal => backend/internal}/auth/session.go (100%) rename {internal => backend/internal}/auth/sso_middleware.go (100%) rename {internal => backend/internal}/auth/sso_middleware.go_BAK (100%) rename {internal => backend/internal}/auth/sso_middleware.go_BAK2 (100%) rename {internal => backend/internal}/auth/sso_middleware_test.go (100%) rename {internal => backend/internal}/auth/sso_session_store.go (100%) rename {internal => backend/internal}/auth/sso_session_store.go_BAK (100%) rename {internal => backend/internal}/auth/webhook_registry.go (100%) rename {internal => backend/internal}/autoassignment/capacity_test.go (100%) rename {internal => backend/internal}/autoassignment/listener.go (100%) rename {internal => backend/internal}/autoassignment/lowest_load.go (100%) rename {internal => backend/internal}/autoassignment/model.go (100%) rename {internal => backend/internal}/autoassignment/rate_limiter.go (100%) rename {internal => backend/internal}/autoassignment/rate_limiter_test.go (100%) rename {internal => backend/internal}/autoassignment/round_robin.go (100%) rename {internal => backend/internal}/autoassignment/service.go (100%) rename {internal => backend/internal}/automation/action_delivery.go (100%) rename {internal => backend/internal}/automation/action_delivery_worker.go (100%) rename {internal => backend/internal}/automation/action_service.go (100%) rename {internal => backend/internal}/automation/action_service_test.go (100%) rename {internal => backend/internal}/automation/agent_bot_rule_listener.go (100%) rename {internal => backend/internal}/automation/agent_bot_rule_listener_test.go (100%) rename {internal => backend/internal}/automation/automation_test_helper.go (100%) rename {internal => backend/internal}/automation/bot_rule_model.go (100%) rename {internal => backend/internal}/automation/bot_rule_service.go (100%) rename {internal => backend/internal}/automation/bot_rule_service_test.go (100%) rename {internal => backend/internal}/automation/bot_trigger_config_service.go (100%) rename {internal => backend/internal}/automation/bot_trigger_config_service_test.go (100%) rename {internal => backend/internal}/automation/condition_filter.go (100%) rename {internal => backend/internal}/automation/condition_filter_test.go (100%) rename {internal => backend/internal}/automation/condition_validator.go (100%) rename {internal => backend/internal}/automation/condition_validator_test.go (100%) rename {internal => backend/internal}/automation/csat_survey_listener.go (100%) rename {internal => backend/internal}/automation/csat_survey_listener_test.go (100%) rename {internal => backend/internal}/automation/csat_survey_service.go (100%) rename {internal => backend/internal}/automation/csat_survey_service_test.go (100%) rename {internal => backend/internal}/automation/execution_log_service.go (100%) rename {internal => backend/internal}/automation/listener.go (100%) rename {internal => backend/internal}/automation/listener_test.go (100%) rename {internal => backend/internal}/automation/macro_service.go (100%) rename {internal => backend/internal}/automation/macro_service_test.go (100%) rename {internal => backend/internal}/automation/macro_worker.go (100%) rename {internal => backend/internal}/automation/model.go (100%) rename {internal => backend/internal}/automation/model_test.go (100%) rename {internal => backend/internal}/automation/new_features_test.go (100%) rename {internal => backend/internal}/automation/service.go (100%) rename {internal => backend/internal}/automation/service_test.go (100%) rename {internal => backend/internal}/automation/template_variable.go (100%) rename {internal => backend/internal}/automation/template_variable_test.go (100%) rename {internal => backend/internal}/campaign/listener.go (100%) rename {internal => backend/internal}/campaign/model.go (100%) rename {internal => backend/internal}/campaign/service.go (100%) rename {internal => backend/internal}/canned/canned_test_helper.go (100%) rename {internal => backend/internal}/canned/model.go (100%) rename {internal => backend/internal}/canned/service.go (100%) rename {internal => backend/internal}/canned/service_test.go (100%) rename {internal => backend/internal}/channel/broker.go (100%) rename {internal => backend/internal}/channel/config.go (100%) rename {internal => backend/internal}/channel/dispatcher.go (100%) rename {internal => backend/internal}/channel/dispatcher_worker_test.go (100%) rename {internal => backend/internal}/channel/email/imap_listener.go (100%) rename {internal => backend/internal}/channel/email/pipeline.go (100%) rename {internal => backend/internal}/channel/email/provider.go (100%) rename {internal => backend/internal}/channel/email/repository.go (100%) rename {internal => backend/internal}/channel/email/service.go (100%) rename {internal => backend/internal}/channel/email/smtp_sender.go (100%) rename {internal => backend/internal}/channel/email/types.go (100%) rename {internal => backend/internal}/channel/email/webhook_handler.go (100%) rename {internal => backend/internal}/channel/event.go (100%) rename {internal => backend/internal}/channel/facebook/instagram_provider.go (100%) rename {internal => backend/internal}/channel/facebook/instagram_provider.go_BAK2 (100%) rename {internal => backend/internal}/channel/facebook/instagram_provider_test.go (100%) rename {internal => backend/internal}/channel/facebook/listener.go (100%) rename {internal => backend/internal}/channel/facebook/listener.go_BAK2 (100%) rename {internal => backend/internal}/channel/facebook/media.go (100%) rename {internal => backend/internal}/channel/facebook/pipeline.go (100%) rename {internal => backend/internal}/channel/facebook/pipeline.go_BAK2 (100%) rename {internal => backend/internal}/channel/facebook/provider.go (100%) rename {internal => backend/internal}/channel/facebook/repository.go (100%) rename {internal => backend/internal}/channel/facebook/service.go (100%) rename {internal => backend/internal}/channel/facebook/types.go (100%) rename {internal => backend/internal}/channel/facebook/user_mapping.go (100%) rename {internal => backend/internal}/channel/facebook/webhook_handler.go (100%) rename {internal => backend/internal}/channel/facebook/webhook_handler.go_BAK2 (100%) rename {internal => backend/internal}/channel/facebook/webhook_handler_test.go (100%) rename {internal => backend/internal}/channel/google/provider.go (100%) rename {internal => backend/internal}/channel/incoming.go (100%) rename {internal => backend/internal}/channel/lifecycle.go (100%) rename {internal => backend/internal}/channel/line/pipeline.go (100%) rename {internal => backend/internal}/channel/line/provider.go (100%) rename {internal => backend/internal}/channel/line/repository.go (100%) rename {internal => backend/internal}/channel/line/service.go (100%) rename {internal => backend/internal}/channel/line/types.go (100%) rename {internal => backend/internal}/channel/line/webhook_handler.go (100%) rename {internal => backend/internal}/channel/listener.go (100%) rename {internal => backend/internal}/channel/microsoft/provider.go (100%) rename {internal => backend/internal}/channel/outgoing.go (100%) rename {internal => backend/internal}/channel/patch_test.txt (100%) rename {internal => backend/internal}/channel/provider.go (100%) rename {internal => backend/internal}/channel/provider/email.go (100%) rename {internal => backend/internal}/channel/provider/facebook.go (100%) rename {internal => backend/internal}/channel/provider/instagram.go (100%) rename {internal => backend/internal}/channel/provider/instagram.go_BAK2 (100%) rename {internal => backend/internal}/channel/provider/line.go (100%) rename {internal => backend/internal}/channel/provider/provider.go (100%) rename {internal => backend/internal}/channel/provider/provider_mock_test.go (100%) rename {internal => backend/internal}/channel/provider/telegram.go (100%) rename {internal => backend/internal}/channel/provider/telegram_test.go (100%) rename {internal => backend/internal}/channel/provider/tiktok.go (100%) rename {internal => backend/internal}/channel/provider/twilio.go (100%) rename {internal => backend/internal}/channel/provider/web_widget.go (100%) rename {internal => backend/internal}/channel/provider/whatsapp.go (100%) rename {internal => backend/internal}/channel/registry.go (100%) rename {internal => backend/internal}/channel/telegram/pipeline.go (100%) rename {internal => backend/internal}/channel/telegram/repository.go (100%) rename {internal => backend/internal}/channel/telegram/service.go (100%) rename {internal => backend/internal}/channel/telegram/webhook_handler.go (100%) rename {internal => backend/internal}/channel/test2.txt (100%) rename {internal => backend/internal}/channel/test_placeholder.go (100%) rename {internal => backend/internal}/channel/test_write_check.txt (100%) rename {internal => backend/internal}/channel/tiktok/pipeline.go (100%) rename {internal => backend/internal}/channel/tiktok/provider.go (100%) rename {internal => backend/internal}/channel/tiktok/repository.go (100%) rename {internal => backend/internal}/channel/tiktok/service.go (100%) rename {internal => backend/internal}/channel/tiktok/types.go (100%) rename {internal => backend/internal}/channel/tiktok/webhook_handler.go (100%) rename {internal => backend/internal}/channel/twilio/pipeline.go (100%) rename {internal => backend/internal}/channel/twilio/provider.go (100%) rename {internal => backend/internal}/channel/twilio/repository.go (100%) rename {internal => backend/internal}/channel/twilio/service.go (100%) rename {internal => backend/internal}/channel/twilio/types.go (100%) rename {internal => backend/internal}/channel/twilio/webhook_handler.go (100%) rename {internal => backend/internal}/channel/twitter/provider.go (100%) rename {internal => backend/internal}/channel/webhook.go (100%) rename {internal => backend/internal}/channel/webhook_listener_test.go (100%) rename {internal => backend/internal}/channel/whatsapp/media.go (100%) rename {internal => backend/internal}/channel/whatsapp/pipeline.go (100%) rename {internal => backend/internal}/channel/whatsapp/provider.go (100%) rename {internal => backend/internal}/channel/whatsapp/repository.go (100%) rename {internal => backend/internal}/channel/whatsapp/service.go (100%) rename {internal => backend/internal}/channel/whatsapp/service_test.go (100%) rename {internal => backend/internal}/channel/whatsapp/types.go (100%) rename {internal => backend/internal}/channel/whatsapp/webhook_handler.go (100%) rename {internal => backend/internal}/channel/whatsapp/webhook_handler_test.go (100%) rename {internal => backend/internal}/channel/write_check.go (100%) rename {internal => backend/internal}/config/config.go (100%) rename {internal => backend/internal}/config/config_test.go (100%) rename {internal => backend/internal}/config/reloader_test.go (100%) rename {internal => backend/internal}/config/validator.go (100%) rename {internal => backend/internal}/csat/listener.go (100%) rename {internal => backend/internal}/csat/model.go (100%) rename {internal => backend/internal}/csat/service.go (100%) rename {internal => backend/internal}/database/migrate.go (100%) rename {internal => backend/internal}/dispatch/dispatcher.go (100%) rename {internal => backend/internal}/dispatch/dispatcher_worker_test.go (100%) rename {internal => backend/internal}/dispatch/event.go (100%) rename {internal => backend/internal}/dispatch/listener_registry.go (100%) rename {internal => backend/internal}/goimap_stub/client/client.go (100%) rename {internal => backend/internal}/goimap_stub/goimap.go (100%) rename {internal => backend/internal}/handler/api/v1/account_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/account_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/account_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/account_saml_settings_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/account_saml_settings_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bot_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bot_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bot_inbox_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bot_inbox_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bulk_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_bulk_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_capacity_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_capacity_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/agent_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/analytics_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/analytics_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/article_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/article_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/article_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/assignable_agent_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/assignable_agent_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/assignment_policy_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/assignment_policy_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/assignment_policy_v2_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/assignment_policy_v2_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/audit_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/audit_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/audit_writer.go (100%) rename {internal => backend/internal}/handler/api/v1/auth_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/auth_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/auth_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/auto_reply_rule_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/auto_reply_rule_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/automation_rule_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/automation_rule_handler_edge_test.go (100%) rename {internal => backend/internal}/handler/api/v1/automation_rule_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/banner_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/banner_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/bot_rule_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/bot_rule_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/bot_trigger_config_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/bot_trigger_config_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/bulk_action_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/bulk_action_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/campaign_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/campaign_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/canned_response_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/canned_response_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/canned_response_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/captain_assistant_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_assistant_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_assistant_response_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_assistant_response_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_bulk_action_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_bulk_action_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_custom_tool_crud_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_custom_tool_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_custom_tool_test_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_document_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_preference_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_preference_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_resource_parity_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_scenario_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_scenario_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_task_extended_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_task_extended_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_task_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/captain_task_handler.go.bak (100%) rename {internal => backend/internal}/handler/api/v1/captain_task_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/category_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/category_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/category_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/channel_handler_test_helpers_test.go (100%) rename {internal => backend/internal}/handler/api/v1/chatwoot_payload.go (100%) rename {internal => backend/internal}/handler/api/v1/company_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/company_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_handler_crud_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_handler_edge_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_handler_g3_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/contact_inbox_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_inbox_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_merge_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_merge_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/contact_presence.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_handler_crud_test.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_handler_edge_test.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_handler_test.go.bak (100%) rename {internal => backend/internal}/handler/api/v1/conversation_insight_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_insight_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_participant_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_participant_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_serializer.go (100%) rename {internal => backend/internal}/handler/api/v1/conversation_serializer_test.go (100%) rename {internal => backend/internal}/handler/api/v1/copilot_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/copilot_suggestion_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/copilot_thread_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/crm_frontend_smoke_test.go (100%) rename {internal => backend/internal}/handler/api/v1/crm_serializer.go (100%) rename {internal => backend/internal}/handler/api/v1/csat_metrics_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/csat_metrics_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/csat_survey_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/csat_survey_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/csat_survey_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/csat_survey_update_test.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_attribute_definition_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_attribute_definition_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_attribute_definition_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/custom_attribute_value_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_attribute_value_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_filter_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_filter_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_filter_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/custom_role_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/custom_role_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/dashboard_app_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/dashboard_app_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/delivery_status_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/delivery_status_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/draft_message_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/draft_message_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/draft_message_search_count_test.go (100%) rename {internal => backend/internal}/handler/api/v1/dyte_integration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/dyte_integration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/email_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/email_channel_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/email_channel_migration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/email_channel_migration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/email_oauth_authorization.go (100%) rename {internal => backend/internal}/handler/api/v1/email_oauth_authorization_test.go (100%) rename {internal => backend/internal}/handler/api/v1/enterprise_account_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/enterprise_account_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/facebook_callbacks_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/facebook_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/facebook_channel_handler.go.bak2 (100%) rename {internal => backend/internal}/handler/api/v1/facebook_channel_handler.go_BAK2 (100%) rename {internal => backend/internal}/handler/api/v1/folder_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/folder_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/folder_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/google_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/helpers.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_csat_template_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_csat_template_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_handler_edge_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_handler_parity_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/inbox_limit_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_limit_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_member_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_member_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/inbox_member_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/inbox_serializer.go (100%) rename {internal => backend/internal}/handler/api/v1/instagram_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/instagram_channel_handler.go_BAK2 (100%) rename {internal => backend/internal}/handler/api/v1/installation_config_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/installation_config_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/integration_hook_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/integration_hook_handler_suite_test.go (100%) rename {internal => backend/internal}/handler/api/v1/integration_hook_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/label_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/label_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/ldap_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/line_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/line_channel_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/linear_integration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/linear_integration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/linear_integration_handler_test.go.bak (100%) rename {internal => backend/internal}/handler/api/v1/linear_integration_handler_test.go.bak2 (100%) rename {internal => backend/internal}/handler/api/v1/live_report_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/live_report_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/macro_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/macro_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/message_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/message_handler_edge_test.go (100%) rename {internal => backend/internal}/handler/api/v1/message_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/message_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/mfa_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/mfa_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/microsoft_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/note_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/note_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/notification_setting_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_setting_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_subscription_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/notification_subscription_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/notion_integration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/notion_integration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/oidc_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_account_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_account_user_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_agent_bot_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_agent_bot_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_e2e_test.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/platform_user_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_user_sso_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/platform_user_sso_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/portal_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/portal_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/portal_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/portal_member_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/portal_member_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/portal_member_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/profile_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/profile_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/push_subscription_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/push_subscription_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/rag_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/rag_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/reporting_event_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/reporting_event_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/saml_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/search_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/search_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/shopify_integration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/shopify_integration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/sla_policy_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/sla_policy_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/slack_integration_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/slack_integration_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/social_authorization.go (100%) rename {internal => backend/internal}/handler/api/v1/social_authorization_test.go (100%) rename {internal => backend/internal}/handler/api/v1/sse_event_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/sse_event_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/sse_stream_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/sse_stream_handler.go_BAK3 (100%) rename {internal => backend/internal}/handler/api/v1/sse_stream_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/sso_session_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/summary_report_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/summary_report_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/team_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/team_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/team_profile_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/test_helpers_auth.go (100%) rename {internal => backend/internal}/handler/api/v1/tiktok_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/tiktok_channel_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/twilio_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/twilio_channel_handler.go.bak (100%) rename {internal => backend/internal}/handler/api/v1/twilio_channel_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/twitter_authorization_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/twitter_channel_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/twitter_channel_webhook_test.go (100%) rename {internal => backend/internal}/handler/api/v1/upload_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/upload_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/webhook_subscription_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/webhook_subscription_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_offline_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_offline_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_offline_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_theme_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/webwidget_theme_handler_test.go_BAK (100%) rename {internal => backend/internal}/handler/api/v1/whatsapp_call_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/whatsapp_call_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/widget_test_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/widget_test_handler_test.go (100%) rename {internal => backend/internal}/handler/api/v1/working_hour_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/year_in_review_handler.go (100%) rename {internal => backend/internal}/handler/api/v1/year_in_review_handler_test.go (100%) rename {internal => backend/internal}/handler/api_v1/handlers.go (100%) rename {internal => backend/internal}/handler/auth/auth.go (100%) rename {internal => backend/internal}/handler/health_handler.go (100%) rename {internal => backend/internal}/handler/metrics_handler.go (100%) rename {internal => backend/internal}/handler/webhook/email_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/facebook_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/facebook_webhook.go_BAK2 (100%) rename {internal => backend/internal}/handler/webhook/incoming_persister.go (100%) rename {internal => backend/internal}/handler/webhook/incoming_persister_jobs.go (100%) rename {internal => backend/internal}/handler/webhook/line_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/shopify_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/telegram_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/tiktok_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/twilio_webhook.go (100%) rename {internal => backend/internal}/handler/webhook/webhook_handler.go (100%) rename {internal => backend/internal}/handler/webhook/webhook_lookup_test.go (100%) rename {internal => backend/internal}/handler/webhook/whatsapp_webhook.go (100%) rename {internal => backend/internal}/handler/widget/widget_handler.go (100%) rename {internal => backend/internal}/handler/widget/widget_handler_test.go (100%) rename {internal => backend/internal}/handler/widget/widget_theme_handler.go (100%) rename {internal => backend/internal}/handler/widget/widget_theme_handler_test.go (100%) rename {internal => backend/internal}/handler/ws/handler.go (100%) rename {internal => backend/internal}/handler/ws/hub.go (100%) rename {internal => backend/internal}/handler/ws/protocol.go (100%) rename {internal => backend/internal}/handler/ws/subscriber.go (100%) rename {internal => backend/internal}/llm/llm_test.go (100%) rename {internal => backend/internal}/llm/openai_provider.go (100%) rename {internal => backend/internal}/llm/provider.go (100%) rename {internal => backend/internal}/middleware/account_scope.go (100%) rename {internal => backend/internal}/middleware/account_scope_test.go (100%) rename {internal => backend/internal}/middleware/auth.go (100%) rename {internal => backend/internal}/middleware/auth_test.go (100%) rename {internal => backend/internal}/middleware/cors.go (100%) rename {internal => backend/internal}/middleware/cors_logger.go (100%) rename {internal => backend/internal}/middleware/cors_test.go (100%) rename {internal => backend/internal}/middleware/csrf.go (100%) rename {internal => backend/internal}/middleware/csrf_test.go (100%) rename {internal => backend/internal}/middleware/feature_flag.go (100%) rename {internal => backend/internal}/middleware/feature_flag_test.go (100%) rename {internal => backend/internal}/middleware/logger.go (100%) rename {internal => backend/internal}/middleware/logger_recovery_test.go (100%) rename {internal => backend/internal}/middleware/platform_app_auth.go (100%) rename {internal => backend/internal}/middleware/platform_app_auth_test.go (100%) rename {internal => backend/internal}/middleware/policy.go (100%) rename {internal => backend/internal}/middleware/policy_test.go (100%) rename {internal => backend/internal}/middleware/rate_limit.go (100%) rename {internal => backend/internal}/middleware/rate_limit_test.go (100%) rename {internal => backend/internal}/middleware/recovery.go (100%) rename {internal => backend/internal}/middleware/role_check.go (100%) rename {internal => backend/internal}/middleware/role_check_test.go (100%) rename {internal => backend/internal}/middleware/security_headers.go (100%) rename {internal => backend/internal}/middleware/security_headers_test.go (100%) rename {internal => backend/internal}/middleware/session.go (100%) rename {internal => backend/internal}/middleware/session_test.go (100%) rename {internal => backend/internal}/middleware/super_admin.go (100%) rename {internal => backend/internal}/middleware/super_admin_test.go (100%) rename {internal => backend/internal}/middleware/upload_security.go (100%) rename {internal => backend/internal}/middleware/upload_security_zip.go (100%) rename {internal => backend/internal}/middleware/webhook_auth.go (100%) rename {internal => backend/internal}/middleware/webhook_auth_test.go (100%) rename {internal => backend/internal}/middleware/xss_protection.go (100%) rename {internal => backend/internal}/middleware/xss_protection_test.go (100%) rename {internal => backend/internal}/model/access_token.go (100%) rename {internal => backend/internal}/model/access_token.go.txt (100%) rename {internal => backend/internal}/model/account.go (100%) rename {internal => backend/internal}/model/account.go.txt (100%) rename {internal => backend/internal}/model/account_email.go (100%) rename {internal => backend/internal}/model/account_ldap_settings.go (100%) rename {internal => backend/internal}/model/account_oidc_settings.go (100%) rename {internal => backend/internal}/model/account_saml_settings.go (100%) rename {internal => backend/internal}/model/account_saml_settings.go.txt (100%) rename {internal => backend/internal}/model/account_user.go (100%) rename {internal => backend/internal}/model/account_user.go.txt (100%) rename {internal => backend/internal}/model/agent_bot.go (100%) rename {internal => backend/internal}/model/agent_bot.go.txt (100%) rename {internal => backend/internal}/model/agent_bot_inbox.go (100%) rename {internal => backend/internal}/model/agent_bot_inbox.go.txt (100%) rename {internal => backend/internal}/model/agent_bot_presence_event.go (100%) rename {internal => backend/internal}/model/agent_bot_presence_event.go.txt (100%) rename {internal => backend/internal}/model/agent_capacity_policy.go (100%) rename {internal => backend/internal}/model/agent_capacity_policy.go.txt (100%) rename {internal => backend/internal}/model/applied_sla.go.txt (100%) rename {internal => backend/internal}/model/article.go (100%) rename {internal => backend/internal}/model/article.go.txt (100%) rename {internal => backend/internal}/model/article_embedding.go (100%) rename {internal => backend/internal}/model/article_embedding.go.txt (100%) rename {internal => backend/internal}/model/assignment_policy.go (100%) rename {internal => backend/internal}/model/assignment_policy_v2.go (100%) rename {internal => backend/internal}/model/associations_test.go (100%) rename {internal => backend/internal}/model/attachment.go (100%) rename {internal => backend/internal}/model/attachment.go.txt (100%) rename {internal => backend/internal}/model/audit.go (100%) rename {internal => backend/internal}/model/audit.go.txt (100%) rename {internal => backend/internal}/model/auto_reply_rule_models.go (100%) rename {internal => backend/internal}/model/automation_action.go (100%) rename {internal => backend/internal}/model/automation_action.go.txt (100%) rename {internal => backend/internal}/model/automation_rule.go.txt (100%) rename {internal => backend/internal}/model/background_job.go (100%) rename {internal => backend/internal}/model/banner.go (100%) rename {internal => backend/internal}/model/banner.go.txt (100%) rename {internal => backend/internal}/model/base.go (100%) rename {internal => backend/internal}/model/base.go.txt (100%) rename {internal => backend/internal}/model/base_test.txt (100%) rename {internal => backend/internal}/model/bot_rule.go (100%) rename {internal => backend/internal}/model/call.go (100%) rename {internal => backend/internal}/model/call.go.txt (100%) rename {internal => backend/internal}/model/captain_assistant.go.txt (100%) rename {internal => backend/internal}/model/captain_assistant_inbox.go (100%) rename {internal => backend/internal}/model/captain_assistant_inbox.go.txt (100%) rename {internal => backend/internal}/model/captain_assistant_response.go.txt (100%) rename {internal => backend/internal}/model/captain_custom_tool.go.txt (100%) rename {internal => backend/internal}/model/captain_document.go.txt (100%) rename {internal => backend/internal}/model/captain_models.go (100%) rename {internal => backend/internal}/model/captain_scenario.go.txt (100%) rename {internal => backend/internal}/model/category.go (100%) rename {internal => backend/internal}/model/category.go.txt (100%) rename {internal => backend/internal}/model/channel/api.go (100%) rename {internal => backend/internal}/model/channel/api.go.txt (100%) rename {internal => backend/internal}/model/channel/channel_base.go (100%) rename {internal => backend/internal}/model/channel/email.go (100%) rename {internal => backend/internal}/model/channel/email.go.txt (100%) rename {internal => backend/internal}/model/channel/facebook.go (100%) rename {internal => backend/internal}/model/channel/facebook.go.txt (100%) rename {internal => backend/internal}/model/channel/google.go (100%) rename {internal => backend/internal}/model/channel/instagram.go (100%) rename {internal => backend/internal}/model/channel/instagram.go.txt (100%) rename {internal => backend/internal}/model/channel/line.go (100%) rename {internal => backend/internal}/model/channel/line.go.txt (100%) rename {internal => backend/internal}/model/channel/microsoft.go (100%) rename {internal => backend/internal}/model/channel/sms.go.txt (100%) rename {internal => backend/internal}/model/channel/telegram.go (100%) rename {internal => backend/internal}/model/channel/telegram.go.txt (100%) rename {internal => backend/internal}/model/channel/tiktok.go (100%) rename {internal => backend/internal}/model/channel/tiktok.go.txt (100%) rename {internal => backend/internal}/model/channel/twilio.go (100%) rename {internal => backend/internal}/model/channel/twilio_sms.go.txt (100%) rename {internal => backend/internal}/model/channel/twitter.go (100%) rename {internal => backend/internal}/model/channel/web_widget.go (100%) rename {internal => backend/internal}/model/channel/web_widget.go.txt (100%) rename {internal => backend/internal}/model/channel/whatsapp.go (100%) rename {internal => backend/internal}/model/channel/whatsapp.go.txt (100%) rename {internal => backend/internal}/model/channelable.go (100%) rename {internal => backend/internal}/model/channelable.go.txt (100%) rename {internal => backend/internal}/model/common.go (100%) rename {internal => backend/internal}/model/company.go (100%) rename {internal => backend/internal}/model/company.go.txt (100%) rename {internal => backend/internal}/model/company_note.go (100%) rename {internal => backend/internal}/model/constraints_test.go (100%) rename {internal => backend/internal}/model/contact.go (100%) rename {internal => backend/internal}/model/contact.go.txt (100%) rename {internal => backend/internal}/model/contact_export.go (100%) rename {internal => backend/internal}/model/contact_inbox.go (100%) rename {internal => backend/internal}/model/contact_inbox.go.txt (100%) rename {internal => backend/internal}/model/contact_label.go (100%) rename {internal => backend/internal}/model/contact_merge.go (100%) rename {internal => backend/internal}/model/contact_note.go (100%) rename {internal => backend/internal}/model/contact_note.go.txt (100%) rename {internal => backend/internal}/model/contactable.go (100%) rename {internal => backend/internal}/model/contactable.go.txt (100%) rename {internal => backend/internal}/model/conversation.go (100%) rename {internal => backend/internal}/model/conversation.go.txt (100%) rename {internal => backend/internal}/model/conversation_label.go (100%) rename {internal => backend/internal}/model/conversation_participant.go (100%) rename {internal => backend/internal}/model/copilot_message.go.txt (100%) rename {internal => backend/internal}/model/copilot_models.go (100%) rename {internal => backend/internal}/model/copilot_thread.go.txt (100%) rename {internal => backend/internal}/model/crud_test.go (100%) rename {internal => backend/internal}/model/csat_template.go (100%) rename {internal => backend/internal}/model/custom_attribute_definition.go (100%) rename {internal => backend/internal}/model/custom_filter.go (100%) rename {internal => backend/internal}/model/custom_role.go (100%) rename {internal => backend/internal}/model/custom_role.go.txt (100%) rename {internal => backend/internal}/model/dashboard_app.go (100%) rename {internal => backend/internal}/model/dashboard_app.go.txt (100%) rename {internal => backend/internal}/model/data_import.go (100%) rename {internal => backend/internal}/model/data_import.go.txt (100%) rename {internal => backend/internal}/model/delivery_status.go (100%) rename {internal => backend/internal}/model/direct_upload.go (100%) rename {internal => backend/internal}/model/direct_upload_test.go (100%) rename {internal => backend/internal}/model/draft_message.go (100%) rename {internal => backend/internal}/model/email_channel_migration.go (100%) rename {internal => backend/internal}/model/email_template.go (100%) rename {internal => backend/internal}/model/email_template.go.txt (100%) rename {internal => backend/internal}/model/enums.go (100%) rename {internal => backend/internal}/model/enums.go.txt (100%) rename {internal => backend/internal}/model/folder.go (100%) rename {internal => backend/internal}/model/folder.go.txt (100%) rename {internal => backend/internal}/model/inbox.go (100%) rename {internal => backend/internal}/model/inbox.go.txt (100%) rename {internal => backend/internal}/model/inbox_limit.go (100%) rename {internal => backend/internal}/model/inbox_member.go (100%) rename {internal => backend/internal}/model/inbox_member.go.txt (100%) rename {internal => backend/internal}/model/installation_config.go (100%) rename {internal => backend/internal}/model/installation_config.go.txt (100%) rename {internal => backend/internal}/model/integration_hook.go (100%) rename {internal => backend/internal}/model/json_helpers.go (100%) rename {internal => backend/internal}/model/mention.go (100%) rename {internal => backend/internal}/model/message.go (100%) rename {internal => backend/internal}/model/message.go.txt (100%) rename {internal => backend/internal}/model/message_reaction.go (100%) rename {internal => backend/internal}/model/message_reaction.go.txt (100%) rename {internal => backend/internal}/model/methods_test.go (100%) rename {internal => backend/internal}/model/model_test.go (100%) rename {internal => backend/internal}/model/note.go (100%) rename {internal => backend/internal}/model/notification.go (100%) rename {internal => backend/internal}/model/notification.go.txt (100%) rename {internal => backend/internal}/model/notification_preference.go (100%) rename {internal => backend/internal}/model/notification_preference.go.txt (100%) rename {internal => backend/internal}/model/notification_setting.go (100%) rename {internal => backend/internal}/model/notification_subscription.go (100%) rename {internal => backend/internal}/model/permissible.go (100%) rename {internal => backend/internal}/model/permissible.go.txt (100%) rename {internal => backend/internal}/model/platform_app.go (100%) rename {internal => backend/internal}/model/platform_app.go.txt (100%) rename {internal => backend/internal}/model/portal.go (100%) rename {internal => backend/internal}/model/portal.go.txt (100%) rename {internal => backend/internal}/model/portal_member.go (100%) rename {internal => backend/internal}/model/portal_member.go.txt (100%) rename {internal => backend/internal}/model/pre_chat_form.go (100%) rename {internal => backend/internal}/model/push_token.go (100%) rename {internal => backend/internal}/model/push_token.go.txt (100%) rename {internal => backend/internal}/model/related_category.go (100%) rename {internal => backend/internal}/model/related_category.go.txt (100%) rename {internal => backend/internal}/model/report.go (100%) rename {internal => backend/internal}/model/report.go.txt (100%) rename {internal => backend/internal}/model/reporting_event.go (100%) rename {internal => backend/internal}/model/reporting_event.go.txt (100%) rename {internal => backend/internal}/model/saml_idp_config.go (100%) rename {internal => backend/internal}/model/sla_event.go.txt (100%) rename {internal => backend/internal}/model/sla_policy.go (100%) rename {internal => backend/internal}/model/sla_policy.go.txt (100%) rename {internal => backend/internal}/model/sso_session.go (100%) rename {internal => backend/internal}/model/summary_report.go (100%) rename {internal => backend/internal}/model/tag.go (100%) rename {internal => backend/internal}/model/team.go (100%) rename {internal => backend/internal}/model/team.go.txt (100%) rename {internal => backend/internal}/model/team_member.go (100%) rename {internal => backend/internal}/model/team_member.go.txt (100%) rename {internal => backend/internal}/model/test_write.go (100%) rename {internal => backend/internal}/model/user.go (100%) rename {internal => backend/internal}/model/user.go.txt (100%) rename {internal => backend/internal}/model/webhook_subscription.go (100%) rename {internal => backend/internal}/model/whatsapp_call.go (100%) rename {internal => backend/internal}/model/widget_file_upload.go (100%) rename {internal => backend/internal}/model/widget_offline_message.go (100%) rename {internal => backend/internal}/model/widget_test_scenario.go (100%) rename {internal => backend/internal}/model/widget_theme_config.go (100%) rename {internal => backend/internal}/model/working_hour.go (100%) rename {internal => backend/internal}/pgvector_stub/go.mod (100%) rename {internal => backend/internal}/pgvector_stub/vector.go (100%) rename {internal => backend/internal}/pubsub/event_bus.go (100%) rename {internal => backend/internal}/pubsub/event_bus_test.go (100%) rename {internal => backend/internal}/pubsub/pubsub.go (100%) rename {internal => backend/internal}/pubsub/pubsub_test.go (100%) rename {internal => backend/internal}/pubsub/redis_pubsub.go (100%) rename {internal => backend/internal}/reporting/data_source.go (100%) rename {internal => backend/internal}/reporting/listener.go (100%) rename {internal => backend/internal}/reporting/metric_registry.go (100%) rename {internal => backend/internal}/reporting/model.go (100%) rename {internal => backend/internal}/reporting/service.go (100%) rename {internal => backend/internal}/repository/access_token_repo.go (100%) rename {internal => backend/internal}/repository/access_token_repo_test.go (100%) rename {internal => backend/internal}/repository/account_ldap_settings_repo.go (100%) rename {internal => backend/internal}/repository/account_oidc_settings_repo.go (100%) rename {internal => backend/internal}/repository/account_repo.go (100%) rename {internal => backend/internal}/repository/account_repo_test.go (100%) rename {internal => backend/internal}/repository/account_saml_settings_repo.go (100%) rename {internal => backend/internal}/repository/account_user_repo.go (100%) rename {internal => backend/internal}/repository/agent_bot_inbox_repo.go (100%) rename {internal => backend/internal}/repository/agent_bot_inbox_repo_test.go (100%) rename {internal => backend/internal}/repository/agent_bot_repo.go (100%) rename {internal => backend/internal}/repository/agent_bot_repo_test.go (100%) rename {internal => backend/internal}/repository/agent_capacity_policy_repo.go (100%) rename {internal => backend/internal}/repository/agent_capacity_policy_repo_test.go (100%) rename {internal => backend/internal}/repository/agent_repo.go (100%) rename {internal => backend/internal}/repository/article_repo.go (100%) rename {internal => backend/internal}/repository/article_repo_test.go (100%) rename {internal => backend/internal}/repository/assignment_policy_repo.go (100%) rename {internal => backend/internal}/repository/assignment_policy_repo_test.go.bak (100%) rename {internal => backend/internal}/repository/assignment_policy_v2_repo.go (100%) rename {internal => backend/internal}/repository/attachment_repo.go (100%) rename {internal => backend/internal}/repository/attachment_repo_test.go (100%) rename {internal => backend/internal}/repository/audit_repo.go (100%) rename {internal => backend/internal}/repository/audit_repo_test.go (100%) rename {internal => backend/internal}/repository/auto_reply_rule_repo.go (100%) rename {internal => backend/internal}/repository/auto_reply_rule_repo_test.go (100%) rename {internal => backend/internal}/repository/banner_repo.go (100%) rename {internal => backend/internal}/repository/benchmark_test.go (100%) rename {internal => backend/internal}/repository/campaign_repo.go (100%) rename {internal => backend/internal}/repository/captain_assistant_repo.go (100%) rename {internal => backend/internal}/repository/captain_assistant_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_assistant_response_repo.go (100%) rename {internal => backend/internal}/repository/captain_assistant_response_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_custom_tool_repo.go (100%) rename {internal => backend/internal}/repository/captain_custom_tool_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_document_repo.go (100%) rename {internal => backend/internal}/repository/captain_document_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_inbox_repo.go (100%) rename {internal => backend/internal}/repository/captain_inbox_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_preference_repo.go (100%) rename {internal => backend/internal}/repository/captain_preference_repo_test.go (100%) rename {internal => backend/internal}/repository/captain_scenario_repo.go (100%) rename {internal => backend/internal}/repository/captain_scenario_repo_test.go (100%) rename {internal => backend/internal}/repository/category_repo.go (100%) rename {internal => backend/internal}/repository/category_repo_test.go (100%) rename {internal => backend/internal}/repository/channel_email_repo.go (100%) rename {internal => backend/internal}/repository/channel_facebook_repo.go (100%) rename {internal => backend/internal}/repository/channel_google_repo.go (100%) rename {internal => backend/internal}/repository/channel_instagram_repo.go (100%) rename {internal => backend/internal}/repository/channel_line_repo.go (100%) rename {internal => backend/internal}/repository/channel_microsoft_repo.go (100%) rename {internal => backend/internal}/repository/channel_tiktok_repo.go (100%) rename {internal => backend/internal}/repository/channel_twilio_repo.go (100%) rename {internal => backend/internal}/repository/channel_twilio_sms_repo.go (100%) rename {internal => backend/internal}/repository/channel_twitter_repo.go (100%) rename {internal => backend/internal}/repository/company_repo.go (100%) rename {internal => backend/internal}/repository/company_repo_test.go (100%) rename {internal => backend/internal}/repository/contact_inbox_repo.go (100%) rename {internal => backend/internal}/repository/contact_inbox_repo_test.go (100%) rename {internal => backend/internal}/repository/contact_merge_repo.go (100%) rename {internal => backend/internal}/repository/contact_note_repo.go (100%) rename {internal => backend/internal}/repository/contact_repo.go (100%) rename {internal => backend/internal}/repository/contact_repo_test.go (100%) rename {internal => backend/internal}/repository/conversation_label_repo.go (100%) rename {internal => backend/internal}/repository/conversation_label_repo_test.go (100%) rename {internal => backend/internal}/repository/conversation_participant_repo.go (100%) rename {internal => backend/internal}/repository/conversation_participant_repo_test.go (100%) rename {internal => backend/internal}/repository/conversation_repo.go (100%) rename {internal => backend/internal}/repository/conversation_repo_pg_test.go (100%) rename {internal => backend/internal}/repository/conversation_repo_test.go (100%) rename {internal => backend/internal}/repository/copilot_message_repo.go (100%) rename {internal => backend/internal}/repository/copilot_message_repo_test.go (100%) rename {internal => backend/internal}/repository/copilot_suggestion_repo.go (100%) rename {internal => backend/internal}/repository/copilot_thread_repo.go (100%) rename {internal => backend/internal}/repository/copilot_thread_repo_test.go (100%) rename {internal => backend/internal}/repository/csat_template_repo.go (100%) rename {internal => backend/internal}/repository/custom_attribute_definition_repo.go (100%) rename {internal => backend/internal}/repository/custom_attribute_definition_repo_test.go (100%) rename {internal => backend/internal}/repository/custom_filter_repo.go (100%) rename {internal => backend/internal}/repository/custom_filter_repo_test.go (100%) rename {internal => backend/internal}/repository/custom_role_repo.go (100%) rename {internal => backend/internal}/repository/custom_role_repo_test.go (100%) rename {internal => backend/internal}/repository/dashboard_app_repo.go (100%) rename {internal => backend/internal}/repository/dashboard_app_repo_test.go (100%) rename {internal => backend/internal}/repository/delivery_status_repo.go (100%) rename {internal => backend/internal}/repository/direct_upload_repo.go (100%) rename {internal => backend/internal}/repository/direct_upload_repo_test.go (100%) rename {internal => backend/internal}/repository/draft_message_repo.go (100%) rename {internal => backend/internal}/repository/draft_message_repo_test.go (100%) rename {internal => backend/internal}/repository/email_channel_migration_repo.go (100%) rename {internal => backend/internal}/repository/folder_repo.go (100%) rename {internal => backend/internal}/repository/folder_repo_test.go.bak (100%) rename {internal => backend/internal}/repository/inbox_limit_repo.go (100%) rename {internal => backend/internal}/repository/inbox_member_repo.go (100%) rename {internal => backend/internal}/repository/inbox_member_repo_test.go (100%) rename {internal => backend/internal}/repository/inbox_repo.go (100%) rename {internal => backend/internal}/repository/inbox_repo_test.go (100%) rename {internal => backend/internal}/repository/installation_config_repo.go (100%) rename {internal => backend/internal}/repository/integration_hook_repo.go (100%) rename {internal => backend/internal}/repository/integration_hook_repo_test.go (100%) rename {internal => backend/internal}/repository/message_repo.go (100%) rename {internal => backend/internal}/repository/message_repo_test.go (100%) rename {internal => backend/internal}/repository/note_repo.go (100%) rename {internal => backend/internal}/repository/notification_preference_repo.go (100%) rename {internal => backend/internal}/repository/notification_preference_repo_test.go (100%) rename {internal => backend/internal}/repository/notification_repo.go (100%) rename {internal => backend/internal}/repository/notification_repo_test.go (100%) rename {internal => backend/internal}/repository/notification_setting_repo.go (100%) rename {internal => backend/internal}/repository/notification_subscription_repo.go (100%) rename {internal => backend/internal}/repository/permissible_repo.go (100%) rename {internal => backend/internal}/repository/permissible_repo_test.go (100%) rename {internal => backend/internal}/repository/platform_app_repo.go (100%) rename {internal => backend/internal}/repository/platform_app_repo_test.go (100%) rename {internal => backend/internal}/repository/portal_member_repo.go (100%) rename {internal => backend/internal}/repository/portal_member_repo_test.go.bak (100%) rename {internal => backend/internal}/repository/portal_repo.go (100%) rename {internal => backend/internal}/repository/portal_repo_test.go (100%) rename {internal => backend/internal}/repository/pre_chat_form_repo.go (100%) rename {internal => backend/internal}/repository/pre_chat_form_repo_test.go (100%) rename {internal => backend/internal}/repository/push_token_repo.go (100%) rename {internal => backend/internal}/repository/push_token_repo_test.go (100%) rename {internal => backend/internal}/repository/related_category_repo.go (100%) rename {internal => backend/internal}/repository/reporting_event_repo.go (100%) rename {internal => backend/internal}/repository/reporting_event_repo_test.go (100%) rename {internal => backend/internal}/repository/reporting_events_rollup_repo.go (100%) rename {internal => backend/internal}/repository/reporting_events_rollup_repo_test.go (100%) rename {internal => backend/internal}/repository/repository.go (100%) rename {internal => backend/internal}/repository/repository_test.go (100%) rename {internal => backend/internal}/repository/saml_idp_config_repo.go (100%) rename {internal => backend/internal}/repository/search_repo.go (100%) rename {internal => backend/internal}/repository/search_repo.go.bak (100%) rename {internal => backend/internal}/repository/search_repo_test.go (100%) rename {internal => backend/internal}/repository/search_repo_test.go_BAK (100%) rename {internal => backend/internal}/repository/sla_policy_repo.go (100%) rename {internal => backend/internal}/repository/sso_session_repo.go (100%) rename {internal => backend/internal}/repository/summary_report_repo.go (100%) rename {internal => backend/internal}/repository/summary_report_repo_test.go (100%) rename {internal => backend/internal}/repository/tag_repo.go (100%) rename {internal => backend/internal}/repository/tag_repo_test.go (100%) rename {internal => backend/internal}/repository/team_member_repo.go (100%) rename {internal => backend/internal}/repository/team_repo.go (100%) rename {internal => backend/internal}/repository/team_repo_test.go (100%) rename {internal => backend/internal}/repository/team_repo_test.go.bak (100%) rename {internal => backend/internal}/repository/testdb_helper.go (100%) rename {internal => backend/internal}/repository/user_repo.go (100%) rename {internal => backend/internal}/repository/user_repo_test.go (100%) rename {internal => backend/internal}/repository/webhook_subscription_repo.go (100%) rename {internal => backend/internal}/repository/webhook_subscription_repo_test.go.bak (100%) rename {internal => backend/internal}/repository/whatsapp_call_repo.go (100%) rename {internal => backend/internal}/repository/widget_file_upload_repo.go (100%) rename {internal => backend/internal}/repository/widget_file_upload_repo_test.go (100%) rename {internal => backend/internal}/repository/widget_offline_message_repo.go (100%) rename {internal => backend/internal}/repository/widget_offline_message_repo_test.go (100%) rename {internal => backend/internal}/repository/widget_repo_test.go (100%) rename {internal => backend/internal}/repository/widget_test_repo.go (100%) rename {internal => backend/internal}/repository/widget_theme_config_repo.go (100%) rename {internal => backend/internal}/repository/working_hour_repo.go (100%) rename {internal => backend/internal}/router/channel_callbacks.go (100%) rename {internal => backend/internal}/router/hello.txt (100%) rename {internal => backend/internal}/router/integration_callbacks.go (100%) rename {internal => backend/internal}/router/router.go (100%) rename {internal => backend/internal}/router/router_new.go (100%) rename {internal => backend/internal}/router/router_test.go (100%) rename {internal => backend/internal}/router/router_test_write.go_BAK (100%) rename {internal => backend/internal}/router/test3.txt (100%) rename {internal => backend/internal}/search/engine.go (100%) rename {internal => backend/internal}/search/engine_db.go (100%) rename {internal => backend/internal}/search/engine_meili.go (100%) rename {internal => backend/internal}/search/engine_meili_live_test.go (100%) rename {internal => backend/internal}/search/engine_test.go (100%) rename {internal => backend/internal}/search/search_filter.go (100%) rename {internal => backend/internal}/search/search_filter_test.go (100%) rename {internal => backend/internal}/search/search_repo_interface.go (100%) rename {internal => backend/internal}/search/search_result.go (100%) rename {internal => backend/internal}/search/search_service.go (100%) rename {internal => backend/internal}/search/search_service.go.bak (100%) rename {internal => backend/internal}/search/search_service_test.go (100%) rename {internal => backend/internal}/search_search_bak_offline.bak/search_filter.go (100%) rename {internal => backend/internal}/search_search_bak_offline.bak/search_result.go (100%) rename {internal => backend/internal}/search_search_bak_offline.bak/search_service.go (100%) rename {internal => backend/internal}/security/encryption.go (100%) rename {internal => backend/internal}/security/jwt_security.go (100%) rename {internal => backend/internal}/security/sql_safety.go (100%) rename {internal => backend/internal}/security/ssrf_protection.go (100%) rename {internal => backend/internal}/security/test_write.go (100%) rename {internal => backend/internal}/security/webhook_signing.go (100%) rename {internal => backend/internal}/service/account_service.go (100%) rename {internal => backend/internal}/service/account_service_test.go (100%) rename {internal => backend/internal}/service/account_service_test.go_BAK (100%) rename {internal => backend/internal}/service/account_user_service.go (100%) rename {internal => backend/internal}/service/agent_bot_inbox_service.go (100%) rename {internal => backend/internal}/service/agent_bot_inbox_service_test.go (100%) rename {internal => backend/internal}/service/agent_bot_listener.go (100%) rename {internal => backend/internal}/service/agent_bot_listener_test.go (100%) rename {internal => backend/internal}/service/agent_bot_service.go (100%) rename {internal => backend/internal}/service/agent_capacity_policy_service.go (100%) rename {internal => backend/internal}/service/agent_capacity_policy_service_test.go (100%) rename {internal => backend/internal}/service/agent_service.go (100%) rename {internal => backend/internal}/service/analytics_csv.go (100%) rename {internal => backend/internal}/service/analytics_p513_test.go (100%) rename {internal => backend/internal}/service/analytics_query_helpers.go (100%) rename {internal => backend/internal}/service/analytics_service.go (100%) rename {internal => backend/internal}/service/analytics_service_test.go_BAK (100%) rename {internal => backend/internal}/service/applied_sla_service.go (100%) rename {internal => backend/internal}/service/applied_sla_service_test.go (100%) rename {internal => backend/internal}/service/article_service.go (100%) rename {internal => backend/internal}/service/article_service_test.go (100%) rename {internal => backend/internal}/service/article_service_test.go_BAK (100%) rename {internal => backend/internal}/service/assignable_agent_service.go (100%) rename {internal => backend/internal}/service/assignment_policy_service.go (100%) rename {internal => backend/internal}/service/assignment_policy_v2_service.go (100%) rename {internal => backend/internal}/service/assignment_policy_v2_service_test.go (100%) rename {internal => backend/internal}/service/attachment_service.go (100%) rename {internal => backend/internal}/service/attachment_service_test.go_BAK (100%) rename {internal => backend/internal}/service/audit_service.go (100%) rename {internal => backend/internal}/service/audit_service_test.go (100%) rename {internal => backend/internal}/service/auth_service.go (100%) rename {internal => backend/internal}/service/auth_service_test.go (100%) rename {internal => backend/internal}/service/auth_service_test.go_BAK (100%) rename {internal => backend/internal}/service/auto_reply_rule_service.go (100%) rename {internal => backend/internal}/service/auto_reply_rule_service_test.go (100%) rename {internal => backend/internal}/service/banner_service.go (100%) rename {internal => backend/internal}/service/benchmark_test.go.bak (100%) rename {internal => backend/internal}/service/campaign_service.go (100%) rename {internal => backend/internal}/service/captain_assistant_response_service.go (100%) rename {internal => backend/internal}/service/captain_assistant_response_service_test.go (100%) rename {internal => backend/internal}/service/captain_assistant_service.go (100%) rename {internal => backend/internal}/service/captain_assistant_service_test.go_BAK (100%) rename {internal => backend/internal}/service/captain_bulk_action_service.go (100%) rename {internal => backend/internal}/service/captain_bulk_action_service_test.go (100%) rename {internal => backend/internal}/service/captain_conversation_service.go (100%) rename {internal => backend/internal}/service/captain_conversation_worker_test.go (100%) rename {internal => backend/internal}/service/captain_custom_tool_service.go (100%) rename {internal => backend/internal}/service/captain_custom_tool_service_test.go_BAK (100%) rename {internal => backend/internal}/service/captain_document_service.go (100%) rename {internal => backend/internal}/service/captain_document_service_test.go (100%) rename {internal => backend/internal}/service/captain_document_service_test.go_BAK (100%) rename {internal => backend/internal}/service/captain_document_worker.go (100%) rename {internal => backend/internal}/service/captain_preference_service.go (100%) rename {internal => backend/internal}/service/captain_preference_service_test.go (100%) rename {internal => backend/internal}/service/captain_scenario_service.go (100%) rename {internal => backend/internal}/service/captain_scenario_service_test.go_BAK (100%) rename {internal => backend/internal}/service/captain_task_extended_service.go (100%) rename {internal => backend/internal}/service/captain_task_extended_service_test.go (100%) rename {internal => backend/internal}/service/captain_task_service.go (100%) rename {internal => backend/internal}/service/captain_task_service.go.bak (100%) rename {internal => backend/internal}/service/captain_task_service.go.bak2 (100%) rename {internal => backend/internal}/service/captain_task_service_streaming_test.go (100%) rename {internal => backend/internal}/service/captain_task_service_test.go (100%) rename {internal => backend/internal}/service/category_service.go (100%) rename {internal => backend/internal}/service/category_service_test.go (100%) rename {internal => backend/internal}/service/category_service_test.go.bak (100%) rename {internal => backend/internal}/service/channel_email_service.go (100%) rename {internal => backend/internal}/service/channel_facebook_service.go (100%) rename {internal => backend/internal}/service/channel_google_service.go (100%) rename {internal => backend/internal}/service/channel_instagram_service.go (100%) rename {internal => backend/internal}/service/channel_instagram_service.go_BAK2 (100%) rename {internal => backend/internal}/service/channel_line_service.go (100%) rename {internal => backend/internal}/service/channel_microsoft_service.go (100%) rename {internal => backend/internal}/service/channel_tiktok_service.go (100%) rename {internal => backend/internal}/service/channel_twilio_service.go (100%) rename {internal => backend/internal}/service/channel_twilio_sms_service.go (100%) rename {internal => backend/internal}/service/channel_twitter_service.go (100%) rename {internal => backend/internal}/service/company_service.go (100%) rename {internal => backend/internal}/service/company_service_test.go (100%) rename {internal => backend/internal}/service/contact_export_mailer.go (100%) rename {internal => backend/internal}/service/contact_export_worker.go (100%) rename {internal => backend/internal}/service/contact_import_worker.go (100%) rename {internal => backend/internal}/service/contact_inbox_service.go (100%) rename {internal => backend/internal}/service/contact_inbox_service_test.go (100%) rename {internal => backend/internal}/service/contact_inbox_service_test.go_BAK (100%) rename {internal => backend/internal}/service/contact_merge_service.go (100%) rename {internal => backend/internal}/service/contact_merge_service_test.go (100%) rename {internal => backend/internal}/service/contact_note_service.go (100%) rename {internal => backend/internal}/service/contact_service.go (100%) rename {internal => backend/internal}/service/contact_service_g3_test.go (100%) rename {internal => backend/internal}/service/contact_service_test.go_BAK (100%) rename {internal => backend/internal}/service/conversation_assignment_test.go (100%) rename {internal => backend/internal}/service/conversation_delete_worker.go (100%) rename {internal => backend/internal}/service/conversation_filter_test.go (100%) rename {internal => backend/internal}/service/conversation_finder_strategy.go (100%) rename {internal => backend/internal}/service/conversation_insight_service.go (100%) rename {internal => backend/internal}/service/conversation_insight_service_test.go (100%) rename {internal => backend/internal}/service/conversation_maintenance_worker.go (100%) rename {internal => backend/internal}/service/conversation_maintenance_worker_test.go (100%) rename {internal => backend/internal}/service/conversation_participant_service.go (100%) rename {internal => backend/internal}/service/conversation_participant_service_test.go (100%) rename {internal => backend/internal}/service/conversation_service.go (100%) rename {internal => backend/internal}/service/conversation_service_test.go (100%) rename {internal => backend/internal}/service/conversation_service_test.go_BAK (100%) rename {internal => backend/internal}/service/copilot_context_service.go (100%) rename {internal => backend/internal}/service/copilot_context_service_test.go (100%) rename {internal => backend/internal}/service/copilot_response_worker.go (100%) rename {internal => backend/internal}/service/copilot_response_worker_test.go (100%) rename {internal => backend/internal}/service/copilot_service.go (100%) rename {internal => backend/internal}/service/copilot_service_test.go_BAK (100%) rename {internal => backend/internal}/service/csat_metrics_service.go (100%) rename {internal => backend/internal}/service/csat_template_service.go (100%) rename {internal => backend/internal}/service/csat_template_worker.go (100%) rename {internal => backend/internal}/service/csat_template_worker_test.go (100%) rename {internal => backend/internal}/service/custom_attribute_definition_service.go (100%) rename {internal => backend/internal}/service/custom_attribute_definition_service_test.go (100%) rename {internal => backend/internal}/service/custom_attribute_value_service.go (100%) rename {internal => backend/internal}/service/custom_attribute_value_service_test.go (100%) rename {internal => backend/internal}/service/custom_attribute_value_service_test.go_BAK (100%) rename {internal => backend/internal}/service/custom_filter_service.go (100%) rename {internal => backend/internal}/service/custom_filter_service_test.go (100%) rename {internal => backend/internal}/service/custom_role_service.go (100%) rename {internal => backend/internal}/service/custom_role_service_test.go (100%) rename {internal => backend/internal}/service/dashboard_app_service.go (100%) rename {internal => backend/internal}/service/dashboard_app_service_test.go (100%) rename {internal => backend/internal}/service/dashboard_app_service_test.go_BAK (100%) rename {internal => backend/internal}/service/delivery_status_service.go (100%) rename {internal => backend/internal}/service/draft_message_service.go (100%) rename {internal => backend/internal}/service/draft_message_service_test.go (100%) rename {internal => backend/internal}/service/dyte_integration_service.go (100%) rename {internal => backend/internal}/service/dyte_integration_service_test.go (100%) rename {internal => backend/internal}/service/email_channel_migration_service.go (100%) rename {internal => backend/internal}/service/folder_service.go (100%) rename {internal => backend/internal}/service/folder_service_test.go (100%) rename {internal => backend/internal}/service/folder_service_test.go.bak (100%) rename {internal => backend/internal}/service/inbox_limit_service.go (100%) rename {internal => backend/internal}/service/inbox_member_service.go (100%) rename {internal => backend/internal}/service/inbox_member_service_test.go_BAK (100%) rename {internal => backend/internal}/service/inbox_service.go (100%) rename {internal => backend/internal}/service/inbox_service_test.go (100%) rename {internal => backend/internal}/service/inbox_service_test.go_BAK (100%) rename {internal => backend/internal}/service/installation_config_service.go (100%) rename {internal => backend/internal}/service/integration_hook_service.go (100%) rename {internal => backend/internal}/service/integration_hook_service_test.go (100%) rename {internal => backend/internal}/service/intent_service.go (100%) rename {internal => backend/internal}/service/label_service.go (100%) rename {internal => backend/internal}/service/label_service_test.go_BAK (100%) rename {internal => backend/internal}/service/linear_integration_service_test.go (100%) rename {internal => backend/internal}/service/linear_notion_integration_service.go (100%) rename {internal => backend/internal}/service/linear_notion_integration_service_test.go (100%) rename {internal => backend/internal}/service/llm_response_parser.go (100%) rename {internal => backend/internal}/service/llm_response_parser_test.go (100%) rename {internal => backend/internal}/service/message_delivery_worker.go (100%) rename {internal => backend/internal}/service/message_delivery_worker_test.go (100%) rename {internal => backend/internal}/service/message_service.go (100%) rename {internal => backend/internal}/service/message_service_test.go (100%) rename {internal => backend/internal}/service/message_service_test.go.bak (100%) rename {internal => backend/internal}/service/note_service.go (100%) rename {internal => backend/internal}/service/notification_delivery_service.go (100%) rename {internal => backend/internal}/service/notification_service.go (100%) rename {internal => backend/internal}/service/notification_service_test.go (100%) rename {internal => backend/internal}/service/notification_service_test.go_BAK (100%) rename {internal => backend/internal}/service/notification_setting_service.go (100%) rename {internal => backend/internal}/service/notification_setting_service_test.go (100%) rename {internal => backend/internal}/service/notification_subscription_service.go (100%) rename {internal => backend/internal}/service/platform_app_service.go (100%) rename {internal => backend/internal}/service/platform_app_service_test.go_BAK (100%) rename {internal => backend/internal}/service/platform_user_service.go (100%) rename {internal => backend/internal}/service/platform_user_service_test.go (100%) rename {internal => backend/internal}/service/portal_member_service.go (100%) rename {internal => backend/internal}/service/portal_member_service_test.go (100%) rename {internal => backend/internal}/service/portal_member_service_test.go_BAK (100%) rename {internal => backend/internal}/service/portal_service.go (100%) rename {internal => backend/internal}/service/portal_service_test.go (100%) rename {internal => backend/internal}/service/portal_service_test.go_BAK (100%) rename {internal => backend/internal}/service/profile_confirmation_mailer.go (100%) rename {internal => backend/internal}/service/profile_service.go (100%) rename {internal => backend/internal}/service/push_delivery_service.go (100%) rename {internal => backend/internal}/service/push_delivery_service_test.go.bak (100%) rename {internal => backend/internal}/service/push_subscription_service.go (100%) rename {internal => backend/internal}/service/push_subscription_service_test.go.bak (100%) rename {internal => backend/internal}/service/rag_service.go (100%) rename {internal => backend/internal}/service/rag_service_test.go (100%) rename {internal => backend/internal}/service/rbac_custom_role_test.go (100%) rename {internal => backend/internal}/service/rbac_service.go (100%) rename {internal => backend/internal}/service/rbac_service_test.go_BAK (100%) rename {internal => backend/internal}/service/reporting_backfill_service.go (100%) rename {internal => backend/internal}/service/reporting_event_service.go (100%) rename {internal => backend/internal}/service/reporting_metric_registry.go (100%) rename {internal => backend/internal}/service/reporting_rollup_helpers.go (100%) rename {internal => backend/internal}/service/reporting_rollup_service.go (100%) rename {internal => backend/internal}/service/reporting_rollup_timezone_test.go (100%) rename {internal => backend/internal}/service/reporting_rollup_worker.go (100%) rename {internal => backend/internal}/service/rewrite_reply_service.go.bak (100%) rename {internal => backend/internal}/service/search_indexer.go (100%) rename {internal => backend/internal}/service/search_indexer_hooks_test.go (100%) rename {internal => backend/internal}/service/search_indexer_worker.go (100%) rename {internal => backend/internal}/service/search_indexer_worker_test.go (100%) rename {internal => backend/internal}/service/service.go.bak (100%) rename {internal => backend/internal}/service/service_test_helper.go (100%) rename {internal => backend/internal}/service/service_test_helper.go_BAK (100%) rename {internal => backend/internal}/service/shopify_integration_service.go (100%) rename {internal => backend/internal}/service/shopify_integration_service_test.go (100%) rename {internal => backend/internal}/service/sla_event_service.go (100%) rename {internal => backend/internal}/service/sla_policy_service.go (100%) rename {internal => backend/internal}/service/sla_policy_service_test.go (100%) rename {internal => backend/internal}/service/sla_worker.go (100%) rename {internal => backend/internal}/service/sla_worker_test.go (100%) rename {internal => backend/internal}/service/slack_integration_service.go (100%) rename {internal => backend/internal}/service/slack_integration_service_test.go (100%) rename {internal => backend/internal}/service/summary_report_service.go (100%) rename {internal => backend/internal}/service/system_prompt_builder.go (100%) rename {internal => backend/internal}/service/tag_service.go (100%) rename {internal => backend/internal}/service/tag_service_test.go (100%) rename {internal => backend/internal}/service/tag_service_test.go_BAK (100%) rename {internal => backend/internal}/service/team_profile_service_test.go_BAK (100%) rename {internal => backend/internal}/service/team_service.go (100%) rename {internal => backend/internal}/service/team_service_test.go_BAK (100%) rename {internal => backend/internal}/service/upload_service.go (100%) rename {internal => backend/internal}/service/upload_service_test.go (100%) rename {internal => backend/internal}/service/upload_service_test.go_BAK (100%) rename {internal => backend/internal}/service/webhook_event_processor.go (100%) rename {internal => backend/internal}/service/webhook_event_processor_test.go (100%) rename {internal => backend/internal}/service/webhook_subscription_service.go (100%) rename {internal => backend/internal}/service/webhook_subscription_service_test.go (100%) rename {internal => backend/internal}/service/webhook_subscription_service_test.go_BAK (100%) rename {internal => backend/internal}/service/whatsapp_authorization_service.go (100%) rename {internal => backend/internal}/service/whatsapp_authorization_service_test.go (100%) rename {internal => backend/internal}/service/whatsapp_call_service.go (100%) rename {internal => backend/internal}/service/whatsapp_call_service_test.go (100%) rename {internal => backend/internal}/service/widget_offline_message_test.go (100%) rename {internal => backend/internal}/service/widget_service.go (100%) rename {internal => backend/internal}/service/widget_service_test.go (100%) rename {internal => backend/internal}/service/widget_test_service.go (100%) rename {internal => backend/internal}/service/widget_theme_service.go (100%) rename {internal => backend/internal}/service/working_hour_service.go (100%) rename {internal => backend/internal}/service/working_hour_service_test.go (100%) rename {internal => backend/internal}/service/year_in_review_service.go (100%) rename {internal => backend/internal}/service/year_in_review_service_test.go (100%) rename {internal => backend/internal}/webhookutil/timeout.go (100%) rename {internal => backend/internal}/worker/worker.go (100%) rename {internal => backend/internal}/worker/worker_test.go (100%) rename {internal => backend/internal}/ws/auth.go (100%) rename {internal => backend/internal}/ws/broadcast.go (100%) rename {internal => backend/internal}/ws/broadcast_test.go (100%) rename {internal => backend/internal}/ws/event_publisher.go (100%) rename {internal => backend/internal}/ws/event_publisher_test.go (100%) rename {internal => backend/internal}/ws/event_types.go (100%) rename {internal => backend/internal}/ws/heartbeat.go (100%) rename {internal => backend/internal}/ws/presence.go (100%) rename {internal => backend/internal}/ws/presence_test.go (100%) rename {internal => backend/internal}/ws/sse_registry.go (100%) rename {internal => backend/internal}/ws/sse_registry_test.go (100%) rename {internal => backend/internal}/ws/typing.go (100%) rename {internal => backend/internal}/ws/typing_test.go (100%) rename {internal => backend/internal}/ws/ws_test.go (100%) rename {migrations => backend/migrations}/000001_init_schema.down.sql (100%) rename {migrations => backend/migrations}/000001_init_schema.up.sql (100%) rename {migrations => backend/migrations}/000002_add_captain_ai_tables.down.sql (100%) rename {migrations => backend/migrations}/000002_add_captain_ai_tables.up.sql (100%) rename {migrations => backend/migrations}/000003_add_rate_limit_state.down.sql (100%) rename {migrations => backend/migrations}/000003_add_rate_limit_state.up.sql (100%) rename {migrations => backend/migrations}/000004_add_saml_config_tables.down.sql (100%) rename {migrations => backend/migrations}/000004_add_saml_config_tables.up.sql (100%) rename {migrations => backend/migrations}/000005_add_dashboard_apps_table.down.sql (100%) rename {migrations => backend/migrations}/000005_add_dashboard_apps_table.up.sql (100%) rename {migrations => backend/migrations}/000006_add_contact_extended_fields.down.sql (100%) rename {migrations => backend/migrations}/000006_add_contact_extended_fields.up.sql (100%) rename {migrations => backend/migrations}/000007_add_channel_instagrams.down.sql (100%) rename {migrations => backend/migrations}/000007_add_channel_instagrams.up.sql (100%) rename {migrations => backend/migrations}/000008_add_search_indexes.down.sql (100%) rename {migrations => backend/migrations}/000008_add_search_indexes.up.sql (100%) rename {migrations => backend/migrations}/000009_add_permissibles_table.down.sql (100%) rename {migrations => backend/migrations}/000009_add_permissibles_table.up.sql (100%) rename {migrations => backend/migrations}/000010_add_access_tokens_table.down.sql (100%) rename {migrations => backend/migrations}/000010_add_access_tokens_table.up.sql (100%) rename {migrations => backend/migrations}/000011_update_platform_apps_columns.down.sql (100%) rename {migrations => backend/migrations}/000011_update_platform_apps_columns.up.sql (100%) rename {migrations => backend/migrations}/000012_add_knowledge_base_tables.down.sql (100%) rename {migrations => backend/migrations}/000012_add_knowledge_base_tables.up.sql (100%) rename {migrations => backend/migrations}/000013_add_pg_trgm_search.down.sql (100%) rename {migrations => backend/migrations}/000013_add_pg_trgm_search.up.sql (100%) rename {migrations => backend/migrations}/000014_add_captain_preferences_table.down.sql (100%) rename {migrations => backend/migrations}/000014_add_captain_preferences_table.up.sql (100%) rename {migrations => backend/migrations}/000015_add_integration_hook_tables.down.sql (100%) rename {migrations => backend/migrations}/000015_add_integration_hook_tables.up.sql (100%) rename {migrations => backend/migrations}/000016_add_channel_twitter_microsoft_google.down.sql (100%) rename {migrations => backend/migrations}/000016_add_channel_twitter_microsoft_google.up.sql (100%) rename {migrations => backend/migrations}/000017_add_profile_serializer_fields.down.sql (100%) rename {migrations => backend/migrations}/000017_add_profile_serializer_fields.up.sql (100%) rename {migrations => backend/migrations}/000018_add_conversation_message_parity_fields.down.sql (100%) rename {migrations => backend/migrations}/000018_add_conversation_message_parity_fields.up.sql (100%) rename {migrations => backend/migrations}/000019_add_contact_labels.down.sql (100%) rename {migrations => backend/migrations}/000019_add_contact_labels.up.sql (100%) rename {migrations => backend/migrations}/000020_add_data_imports.down.sql (100%) rename {migrations => backend/migrations}/000020_add_data_imports.up.sql (100%) rename {migrations => backend/migrations}/000021_add_contact_exports.down.sql (100%) rename {migrations => backend/migrations}/000021_add_contact_exports.up.sql (100%) rename {migrations => backend/migrations}/000022_add_agent_capacity_policy_links.down.sql (100%) rename {migrations => backend/migrations}/000022_add_agent_capacity_policy_links.up.sql (100%) rename {migrations => backend/migrations}/000023_align_custom_role_permissions.down.sql (100%) rename {migrations => backend/migrations}/000023_align_custom_role_permissions.up.sql (100%) rename {migrations => backend/migrations}/000024_add_account_inbox_limit.down.sql (100%) rename {migrations => backend/migrations}/000024_add_account_inbox_limit.up.sql (100%) rename {migrations => backend/migrations}/000025_add_account_captain_preferences.down.sql (100%) rename {migrations => backend/migrations}/000025_add_account_captain_preferences.up.sql (100%) rename {migrations => backend/migrations}/000026_add_background_jobs.down.sql (100%) rename {migrations => backend/migrations}/000026_add_background_jobs.up.sql (100%) rename {migrations => backend/migrations}/000027_add_user_auth_tokens.down.sql (100%) rename {migrations => backend/migrations}/000027_add_user_auth_tokens.up.sql (100%) rename {migrations => backend/migrations}/000028_align_tags_with_chatwoot_labels.down.sql (100%) rename {migrations => backend/migrations}/000028_align_tags_with_chatwoot_labels.up.sql (100%) rename {migrations => backend/migrations}/000029_align_webhook_subscriptions_with_chatwoot_webhooks.down.sql (100%) rename {migrations => backend/migrations}/000029_align_webhook_subscriptions_with_chatwoot_webhooks.up.sql (100%) rename {migrations => backend/migrations}/000030_align_integration_hooks_with_chatwoot_apps.down.sql (100%) rename {migrations => backend/migrations}/000030_align_integration_hooks_with_chatwoot_apps.up.sql (100%) rename {migrations => backend/migrations}/000031_align_account_users_inviter_id.down.sql (100%) rename {migrations => backend/migrations}/000031_align_account_users_inviter_id.up.sql (100%) rename {migrations => backend/migrations}/000032_add_users_unconfirmed_email.down.sql (100%) rename {migrations => backend/migrations}/000032_add_users_unconfirmed_email.up.sql (100%) rename {migrations => backend/migrations}/000033_add_accounts_custom_attributes.down.sql (100%) rename {migrations => backend/migrations}/000033_add_accounts_custom_attributes.up.sql (100%) rename {migrations => backend/migrations}/000034_align_calls_whatsapp_fields.down.sql (100%) rename {migrations => backend/migrations}/000034_align_calls_whatsapp_fields.up.sql (100%) rename {migrations => backend/migrations}/000035_align_facebook_callback_fields.down.sql (100%) rename {migrations => backend/migrations}/000035_align_facebook_callback_fields.up.sql (100%) rename {migrations => backend/migrations}/000036_add_accounts_reporting_timezone.down.sql (100%) rename {migrations => backend/migrations}/000036_add_accounts_reporting_timezone.up.sql (100%) rename {migrations => backend/migrations}/000037_add_accounts_limits.down.sql (100%) rename {migrations => backend/migrations}/000037_add_accounts_limits.up.sql (100%) rename {migrations => backend/migrations}/000038_add_channel_twitter_tweets_enabled.down.sql (100%) rename {migrations => backend/migrations}/000038_add_channel_twitter_tweets_enabled.up.sql (100%) rename {migrations => backend/migrations}/000039_add_companies_tables.down.sql (100%) rename {migrations => backend/migrations}/000039_add_companies_tables.up.sql (100%) rename {migrations => backend/migrations}/000040_add_sla_tables.down.sql (100%) rename {migrations => backend/migrations}/000040_add_sla_tables.up.sql (100%) rename {migrations => backend/migrations}/000041_add_installation_configs.down.sql (100%) rename {migrations => backend/migrations}/000041_add_installation_configs.up.sql (100%) rename {migrations => backend/migrations}/000042_add_csat_and_bot_rule_tables.down.sql (100%) rename {migrations => backend/migrations}/000042_add_csat_and_bot_rule_tables.up.sql (100%) rename {migrations => backend/migrations}/000043_add_automation_macro_tables.down.sql (100%) rename {migrations => backend/migrations}/000043_add_automation_macro_tables.up.sql (100%) rename {migrations => backend/migrations}/000044_add_audits_table.down.sql (100%) rename {migrations => backend/migrations}/000044_add_audits_table.up.sql (100%) rename {migrations => backend/migrations}/000045_add_teams_and_campaigns_tables.down.sql (100%) rename {migrations => backend/migrations}/000045_add_teams_and_campaigns_tables.up.sql (100%) rename {migrations => backend/migrations}/000046_add_portal_channel_web_widget_id.down.sql (100%) rename {migrations => backend/migrations}/000046_add_portal_channel_web_widget_id.up.sql (100%) rename {migrations => backend/migrations}/000047_add_help_center_model_fields.down.sql (100%) rename {migrations => backend/migrations}/000047_add_help_center_model_fields.up.sql (100%) rename {pkg => backend/pkg}/crypto/crypto_test.go (100%) rename {pkg => backend/pkg}/crypto/hash.go (100%) rename {pkg => backend/pkg}/crypto/jwt.go (100%) rename {pkg => backend/pkg}/logger/logger.go (100%) rename {pkg => backend/pkg}/pagination/pagination.go (100%) rename {pkg => backend/pkg}/response/error.go (100%) rename {pkg => backend/pkg}/response/response.go (100%) rename {pkg => backend/pkg}/testutil/fixtures.go (100%) rename {pkg => backend/pkg}/testutil/helpers.go (100%) rename {pkg => backend/pkg}/validator/validator.go (100%) rename {scripts => backend/scripts}/__pycache__/chatwoot_routes_manifest.cpython-313.pyc (100%) rename {scripts => backend/scripts}/__pycache__/generate_gap_report.cpython-313.pyc (100%) rename {scripts => backend/scripts}/align_error_codes.py (100%) rename {scripts => backend/scripts}/chatwoot_routes_manifest.py (100%) rename {scripts => backend/scripts}/compare_routes.py (100%) rename {scripts => backend/scripts}/compare_routes_v2.py (100%) rename {scripts => backend/scripts}/coverage/coverage_report.md (100%) rename {scripts => backend/scripts}/coverage/generate_report.sh (100%) rename {scripts => backend/scripts}/coverage_report.sh (100%) rename {scripts => backend/scripts}/db_backup.sh (100%) rename {scripts => backend/scripts}/extract_chatwoot_routes.py (100%) rename {scripts => backend/scripts}/extract_routes.py (100%) rename {scripts => backend/scripts}/fix_all_route_params.py (100%) rename {scripts => backend/scripts}/fix_remaining_route_params.py (100%) rename {scripts => backend/scripts}/fix_route_params.py (100%) rename {scripts => backend/scripts}/fix_test_route_params.py (100%) rename {scripts => backend/scripts}/generate_gap_report.py (100%) rename {scripts => backend/scripts}/health_check.sh (100%) rename gorm_bool_main.go => backend/scripts/legacy/gorm_bool_main.go (100%) rename rename_models.py => backend/scripts/legacy/rename_models.py (100%) rename rename_models.sh => backend/scripts/legacy/rename_models.sh (100%) rename rename_models.sh.txt => backend/scripts/legacy/rename_models.sh.txt (100%) rename run_m11_tests.sh => backend/scripts/legacy/run_m11_tests.sh (100%) rename verify_build.sh => backend/scripts/legacy/verify_build.sh (100%) rename {scripts => backend/scripts}/migrate.sh (100%) rename {scripts => backend/scripts}/parity_frontend_browser_smoke.mjs (100%) rename {scripts => backend/scripts}/parity_frontend_smoke.sh (100%) rename {scripts => backend/scripts}/parse_chatwoot_routes.py (100%) rename {scripts => backend/scripts}/parse_chatwoot_routes.rb (100%) rename {scripts => backend/scripts}/parse_chatwoot_routes_v2.py (100%) rename {scripts => backend/scripts}/parse_chatwoot_routes_v3.py (100%) rename {scripts => backend/scripts}/prometheus_exporter.sh (100%) rename {scripts => backend/scripts}/route_gap_analysis.py (100%) rename {scripts => backend/scripts}/scan_params.py (100%) rename {scripts => backend/scripts}/scan_route_conflicts.py (100%) rename {scripts => backend/scripts}/seed.sh (100%) rename {scripts => backend/scripts}/verify_tests.sh (100%) rename {tests => backend/tests}/e2e/account_e2e_test.go (100%) rename {tests => backend/tests}/e2e/auth_e2e_test.go (100%) rename {tests => backend/tests}/e2e/channel_incoming_e2e_test.go (100%) rename {tests => backend/tests}/e2e/conversation_e2e_test.go (100%) rename {tests => backend/tests}/e2e/crm_e2e_test.go (100%) rename {tests => backend/tests}/e2e/csrf_e2e_test.go (100%) rename {tests => backend/tests}/e2e/dashboard_app_e2e_test.go (100%) rename {tests => backend/tests}/e2e/e2e_test.go (100%) rename {tests => backend/tests}/e2e/middleware_e2e_test.go (100%) rename {tests => backend/tests}/e2e/rbac_e2e_test.go (100%) rename {tests => backend/tests}/e2e/session_e2e_test.go (100%) rename {tests => backend/tests}/helpers/pg_helper.go (100%) rename Dockerfile => deploy/docker/Dockerfile (95%) rename Dockerfile.dev => deploy/docker/Dockerfile.dev (80%) rename docker-compose.dev.yml => deploy/docker/docker-compose.dev.yml (88%) rename docker-compose.prod.yml => deploy/docker/docker-compose.prod.yml (98%) rename docker-compose.test.yml => deploy/docker/docker-compose.test.yml (94%) rename docker-compose.yml => deploy/docker/docker-compose.yml (92%) rename ALIGNMENT_PLAN.md => docs/reports/ALIGNMENT_PLAN.md (100%) rename GAP_REPORT.md => docs/reports/GAP_REPORT.md (100%) rename GAP_REPORT_AND_PLAN.md => docs/reports/GAP_REPORT_AND_PLAN.md (100%) rename ROUTE_GAP_REPORT.md => docs/reports/ROUTE_GAP_REPORT.md (100%) rename V4_companies_verification_report.md => docs/reports/V4_companies_verification_report.md (100%) rename VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md => docs/reports/VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 701f1ead..5afe98ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,13 +55,16 @@ jobs: uses: golangci/golangci-lint-action@v6 with: version: v1.64 + working-directory: backend # Vet - name: Run go vet + working-directory: backend run: go vet ./... # Unit + Integration Tests - name: Run unit & integration tests + working-directory: backend env: GOCHAT_ENV: test GOCHAT_TEST_DB: ${{ matrix.db-mode }} @@ -78,6 +81,7 @@ jobs: # E2E Tests (only on postgres matrix) - name: Run e2e tests if: matrix.db-mode == 'postgres' + working-directory: backend env: GOCHAT_ENV: test POSTGRES_HOST: localhost @@ -91,6 +95,7 @@ jobs: # Benchmark (quick sanity check, not full bench) - name: Run benchmarks + working-directory: backend env: GOCHAT_ENV: test GOCHAT_TEST_DB: ${{ matrix.db-mode }} @@ -106,7 +111,7 @@ jobs: if: matrix.db-mode == 'postgres' uses: codecov/codecov-action@v4 with: - files: coverage.out + files: backend/coverage.out # ---- Stage 2: Security Scan ---- security: @@ -124,9 +129,11 @@ jobs: uses: securego/gosec@master with: args: '-no-fail ./...' + working-directory: backend # Dependency vulnerability scan - name: Run govulncheck + working-directory: backend run: go install golang.org/x/vuln/cmd/govulncheck@latest && govulncheck ./... # Trivy filesystem scan @@ -185,7 +192,7 @@ jobs: uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile + file: ./deploy/docker/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} @@ -260,8 +267,8 @@ jobs: # Post-deploy health check - name: Health check run: | - chmod +x scripts/health_check.sh - GOCHAT_HOST=gochat-staging GOCHAT_PORT=3000 ./scripts/health_check.sh --full --timeout 30 + chmod +x backend/scripts/health_check.sh + GOCHAT_HOST=gochat-staging GOCHAT_PORT=3000 ./backend/scripts/health_check.sh --full --timeout 30 # ---- Stage 6: Deploy to Production ---- deploy-production: @@ -290,5 +297,5 @@ jobs: # Post-deploy health check - name: Health check run: | - chmod +x scripts/health_check.sh - GOCHAT_HOST=gochat-production GOCHAT_PORT=3000 ./scripts/health_check.sh --full --timeout 30 \ No newline at end of file + chmod +x backend/scripts/health_check.sh + GOCHAT_HOST=gochat-production GOCHAT_PORT=3000 ./backend/scripts/health_check.sh --full --timeout 30 \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..0022d532 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,101 @@ +# AGENTS.md — GoChat + +Guidance for AI coding agents (and humans pairing with them) working in this repository. + +## Repository Layout + +This is a **monorepo** with a clear separation between backend code, deployment +artifacts, and documentation: + +``` +backend/ # Go backend (the Go module lives here) + cmd/ # Entry points: gochat (server/seed), migrate, route_parity, ... + internal/ # App logic: handler, service, repository, model, config, ws, ... + pkg/ # Reusable packages: crypto, logger, pagination, response, ... + configs/ # Viper config files (config.yaml + config.{env}.yaml) + migrations/ # golang-migrate SQL files (sequential, .up.sql / .down.sql) + docs/ # swaggo-generated Swagger Go package (imported by the router) + scripts/ # migrate.sh, seed.sh, health_check.sh, route-parity tooling + tests/ # e2e tests + test helpers +deploy/ # Deployment artifacts + docker/ # Dockerfile, Dockerfile.dev, docker-compose.{yml,dev,prod,test}.yml + quickstart/ # One-shot local/UAT Compose stack (PG+pgvector+Redis+Meilisearch+Mailhog) + fluentd/ # Log shipping config +docs/ # Project documentation (architecture, requirements, plans, reports) +``` + +The **Go module root is `backend/`** — run all `go` commands from there. +Build context for Docker is the **repository root** (`.`), not `backend/`. + +## Build & Test Commands + +All Go commands run from `backend/`: + +```bash +cd backend + +# Build +go build ./... # compile everything +make build # build ./cmd/gochat → bin/gochat + +# Run +go run cmd/gochat/main.go serve # API server (default subcommand) +go run cmd/gochat/main.go seed # seed demo data + +# Test +go test ./... # all tests +GOCHAT_TEST_DB=sqlite go test ./internal/... ./pkg/... ./cmd/... # no PG needed +go test -v -race ./... # with race detector +go test -v ./tests/e2e/... # e2e + +# Lint +golangci-lint run ./... +go vet ./... +``` + +Docker (build context = repo root, Dockerfile in `deploy/docker/`): + +```bash +# Quickstart stack from repo root +cd deploy/quickstart && cp .env.example .env && docker compose up -d --build + +# Build image manually from backend/ +make docker +``` + +## Go Version & Tooling + +- **Go**: 1.24+ (go.mod declares 1.24.0; CI uses 1.25). Toolchain: go1.24.4. +- **HTTP**: Gin v1.10 +- **ORM**: GORM v2 +- **DB**: PostgreSQL 16 + pgvector (SQLite supported for tests via `GOCHAT_TEST_DB=sqlite`) +- **Config**: Viper (multi-env overlay: `config.yaml` → `config.{env}.yaml` → `.env`) +- **Swagger**: swaggo/swag — generated docs live in `backend/docs/` (a Go package imported by `internal/router`); **do not move them out of the module**. + +## Code Style & Conventions + +- Tabs for Go/Makefile; 2-space for YAML/JSON/TOML (see `.editorconfig`). +- Match existing patterns in the surrounding code — do not reformat unrelated files. +- Layered architecture: `handler → service → repository → model`. Respect layer boundaries; don't call repositories directly from handlers. +- PG-only features (pgvector search, etc.) must guard with `skipIfSQLite` so SQLite test mode stays green. +- New DB schema changes go through numbered SQL migrations in `backend/migrations/` (`NNNNN_name.{up,down}.sql`). + +## Configuration + +- Config files: `backend/configs/config.yaml` (base) + `config.dev.yaml` / `config.prod.yaml` (env overlays). +- Viper search paths: `./configs`, `./`, `/etc/gochat/`. +- Runtime config dir is resolved from the base config's location, so env overlays load from the same dir automatically. +- Secrets/`.env` are gitignored — never commit them. + +## Deployment Notes + +- The production `Dockerfile` (in `deploy/docker/`) uses repo root as build context and `COPY backend/` for sources. When adding files the image needs, place them under `backend/` or update the COPY directives. +- `docker-compose*.yml` files in `deploy/docker/` use `context: ../..` (repo root) and `dockerfile: deploy/docker/Dockerfile`. +- CI (`.github/workflows/ci.yml`) runs Go commands with `working-directory: backend` and builds the Docker image with `file: ./deploy/docker/Dockerfile`. + +## Things to Avoid + +- Do not move `backend/docs/*.go` — they are a compiled Go package imported by the router. +- Do not add Go files to `backend/scripts/legacy/` expecting them to be excluded — `go build ./...` compiles them; keep that directory for one-off scripts only. +- Do not commit `.env`, `coverage.out`, `bin/`, or `tmp/`. +- Do not rewrite git history or force-push without explicit instruction. diff --git a/README.md b/README.md index dd28d445..0241afdd 100644 --- a/README.md +++ b/README.md @@ -18,26 +18,36 @@ GoChat 采用 **分层架构** + **模块化设计**: ``` -cmd/ # 入口(migrate, server) -internal/ - app/ # 应用启动、graceful shutdown - auth/ # JWT认证、Refresh Token、TOTP - autoassignment/ # 智能分配 - channel/provider/ # 渠道抽象层(Telegram/WebWidget/Email) - config/ # Viper多环境热加载配置 - handler/api/v1/ # HTTP Handler(Gin,104+路由) - llm/ # CaptainAI LLM Provider(OpenAI/Ollama/volcengine) - middleware/ # Auth/CORS/RateLimiting/AccountScope/InputValidation - model/ # GORM 数据模型(Base/Account/User/Contact/Inbox等) - pubsub/ # Redis Pub/Sub - repository/ # 数据访问层(21 repo) - service/ # 业务逻辑层 - ws/ # WebSocket Hub(/cable) -pkg/ - crypto/ # bcrypt Hash/Check - validation/ # go-playground/validator/v10 自定义规则 -tests/ - e2e/ # 端到端测试(Auth/AccountCRUD/CRM) +backend/ # Go 后端(单仓库 monorepo 子目录) + cmd/ # 入口(migrate, server) + internal/ + app/ # 应用启动、graceful shutdown + auth/ # JWT认证、Refresh Token、TOTP + autoassignment/ # 智能分配 + channel/provider/ # 渠道抽象层(Telegram/WebWidget/Email) + config/ # Viper多环境热加载配置 + handler/api/v1/ # HTTP Handler(Gin,104+路由) + llm/ # CaptainAI LLM Provider(OpenAI/Ollama/volcengine) + middleware/ # Auth/CORS/RateLimiting/AccountScope/InputValidation + model/ # GORM 数据模型(Base/Account/User/Contact/Inbox等) + pubsub/ # Redis Pub/Sub + repository/ # 数据访问层(21 repo) + service/ # 业务逻辑层 + ws/ # WebSocket Hub(/cable) + pkg/ + crypto/ # bcrypt Hash/Check + validation/ # go-playground/validator/v10 自定义规则 + configs/ # 多环境配置(config.yaml + config.{env}.yaml) + migrations/ # SQL 迁移文件 + docs/ # Swagger/OpenAPI 生成代码 + scripts/ # 迁移、种子、健康检查等脚本 + tests/ + e2e/ # 端到端测试(Auth/AccountCRUD/CRM) +deploy/ # 部署相关 + docker/ # Dockerfile + docker-compose(dev/prod/test) + quickstart/ # 本地/UAT 一键启动 Compose 栈 + fluentd/ # 日志收集配置 +docs/ # 项目文档(架构、需求、计划、报告) ``` ## 快速开始 @@ -56,15 +66,16 @@ tests/ git clone https://github.com/gochat/gochat.git cd gochat -# 安装依赖 +# 安装依赖(在 backend/ 下) +cd backend go mod download -# 配置环境 -cp .env.example .env +# 配置环境(从仓库根目录复制) +cp ../.env.example ../.env # 编辑 .env 配置数据库、Redis、JWT等 # 运行服务 -go run cmd/server/main.go +go run cmd/gochat/main.go serve # 运行测试(SQLite模式,无需PG) GOCHAT_TEST_DB=sqlite go test ./internal/... ./pkg/... ./cmd/... @@ -94,9 +105,9 @@ docker compose --profile seed run --rm seed GoChat 使用 **Viper 多环境叠加**机制: -- `configs/default.yaml` — 默认配置 -- `configs/production.yaml` — 生产覆盖 -- `configs/development.yaml` — 开发覆盖 +- `backend/configs/config.yaml` — 默认配置 +- `backend/configs/config.prod.yaml` — 生产覆盖 +- `backend/configs/config.dev.yaml` — 开发覆盖 - `.env` — 本地覆盖(最高优先级) - 11 个字段支持 **热加载**(无需重启) diff --git a/.air.toml b/backend/.air.toml similarity index 100% rename from .air.toml rename to backend/.air.toml diff --git a/Makefile b/backend/Makefile similarity index 96% rename from Makefile rename to backend/Makefile index cfebe1a2..f3eec021 100644 --- a/Makefile +++ b/backend/Makefile @@ -50,7 +50,7 @@ clean: ## docker: Build Docker image docker: - docker build -t $(APP_NAME) . + docker build -t $(APP_NAME) -f ../deploy/docker/Dockerfile ../ ## db_create: Create database (ref: Chatwoot make db_create) db_create: diff --git a/cmd/dump_routes/main.go b/backend/cmd/dump_routes/main.go similarity index 100% rename from cmd/dump_routes/main.go rename to backend/cmd/dump_routes/main.go diff --git a/cmd/gochat/main.go b/backend/cmd/gochat/main.go similarity index 100% rename from cmd/gochat/main.go rename to backend/cmd/gochat/main.go diff --git a/cmd/migrate/main.go b/backend/cmd/migrate/main.go similarity index 100% rename from cmd/migrate/main.go rename to backend/cmd/migrate/main.go diff --git a/cmd/migrate/migrate_test.go b/backend/cmd/migrate/migrate_test.go similarity index 100% rename from cmd/migrate/migrate_test.go rename to backend/cmd/migrate/migrate_test.go diff --git a/cmd/reindex_search/main.go b/backend/cmd/reindex_search/main.go similarity index 100% rename from cmd/reindex_search/main.go rename to backend/cmd/reindex_search/main.go diff --git a/cmd/reindex_search/main_test.go b/backend/cmd/reindex_search/main_test.go similarity index 100% rename from cmd/reindex_search/main_test.go rename to backend/cmd/reindex_search/main_test.go diff --git a/cmd/route_parity/main.go b/backend/cmd/route_parity/main.go similarity index 100% rename from cmd/route_parity/main.go rename to backend/cmd/route_parity/main.go diff --git a/cmd/test_debug/main.go b/backend/cmd/test_debug/main.go similarity index 100% rename from cmd/test_debug/main.go rename to backend/cmd/test_debug/main.go diff --git a/configs/config.dev.yaml b/backend/configs/config.dev.yaml similarity index 100% rename from configs/config.dev.yaml rename to backend/configs/config.dev.yaml diff --git a/configs/config.prod.yaml b/backend/configs/config.prod.yaml similarity index 100% rename from configs/config.prod.yaml rename to backend/configs/config.prod.yaml diff --git a/configs/config.yaml b/backend/configs/config.yaml similarity index 100% rename from configs/config.yaml rename to backend/configs/config.yaml diff --git a/configs/fluentd.conf b/backend/configs/fluentd.conf similarity index 100% rename from configs/fluentd.conf rename to backend/configs/fluentd.conf diff --git a/configs/prometheus_alerts.yml b/backend/configs/prometheus_alerts.yml similarity index 100% rename from configs/prometheus_alerts.yml rename to backend/configs/prometheus_alerts.yml diff --git a/configs/redis.conf b/backend/configs/redis.conf similarity index 100% rename from configs/redis.conf rename to backend/configs/redis.conf diff --git a/docs/docs.go b/backend/docs/docs.go similarity index 100% rename from docs/docs.go rename to backend/docs/docs.go diff --git a/docs/swag_overrides.txt b/backend/docs/swag_overrides.txt similarity index 100% rename from docs/swag_overrides.txt rename to backend/docs/swag_overrides.txt diff --git a/docs/swagger.json b/backend/docs/swagger.json similarity index 100% rename from docs/swagger.json rename to backend/docs/swagger.json diff --git a/docs/swagger.yaml b/backend/docs/swagger.yaml similarity index 100% rename from docs/swagger.yaml rename to backend/docs/swagger.yaml diff --git a/docs/swagger_models.go b/backend/docs/swagger_models.go similarity index 100% rename from docs/swagger_models.go rename to backend/docs/swagger_models.go diff --git a/go.mod b/backend/go.mod similarity index 100% rename from go.mod rename to backend/go.mod diff --git a/go.sum b/backend/go.sum similarity index 100% rename from go.sum rename to backend/go.sum diff --git a/internal/app/app.go b/backend/internal/app/app.go similarity index 100% rename from internal/app/app.go rename to backend/internal/app/app.go diff --git a/internal/app/bootstrap.go b/backend/internal/app/bootstrap.go similarity index 100% rename from internal/app/bootstrap.go rename to backend/internal/app/bootstrap.go diff --git a/internal/app/database.go b/backend/internal/app/database.go similarity index 100% rename from internal/app/database.go rename to backend/internal/app/database.go diff --git a/internal/app/redis.go b/backend/internal/app/redis.go similarity index 100% rename from internal/app/redis.go rename to backend/internal/app/redis.go diff --git a/internal/app/redis_test.go_BAK b/backend/internal/app/redis_test.go_BAK similarity index 100% rename from internal/app/redis_test.go_BAK rename to backend/internal/app/redis_test.go_BAK diff --git a/internal/app/shutdown.go b/backend/internal/app/shutdown.go similarity index 100% rename from internal/app/shutdown.go rename to backend/internal/app/shutdown.go diff --git a/internal/auth/benchmark_test.go_BAK b/backend/internal/auth/benchmark_test.go_BAK similarity index 100% rename from internal/auth/benchmark_test.go_BAK rename to backend/internal/auth/benchmark_test.go_BAK diff --git a/internal/auth/jwt.go b/backend/internal/auth/jwt.go similarity index 100% rename from internal/auth/jwt.go rename to backend/internal/auth/jwt.go diff --git a/internal/auth/jwt_test.go_BAK b/backend/internal/auth/jwt_test.go_BAK similarity index 100% rename from internal/auth/jwt_test.go_BAK rename to backend/internal/auth/jwt_test.go_BAK diff --git a/internal/auth/ldap.go b/backend/internal/auth/ldap.go similarity index 100% rename from internal/auth/ldap.go rename to backend/internal/auth/ldap.go diff --git a/internal/auth/ldap_test.go b/backend/internal/auth/ldap_test.go similarity index 100% rename from internal/auth/ldap_test.go rename to backend/internal/auth/ldap_test.go diff --git a/internal/auth/mfa.go b/backend/internal/auth/mfa.go similarity index 100% rename from internal/auth/mfa.go rename to backend/internal/auth/mfa.go diff --git a/internal/auth/oauth.go b/backend/internal/auth/oauth.go similarity index 100% rename from internal/auth/oauth.go rename to backend/internal/auth/oauth.go diff --git a/internal/auth/oidc.go b/backend/internal/auth/oidc.go similarity index 100% rename from internal/auth/oidc.go rename to backend/internal/auth/oidc.go diff --git a/internal/auth/oidc_test.go b/backend/internal/auth/oidc_test.go similarity index 100% rename from internal/auth/oidc_test.go rename to backend/internal/auth/oidc_test.go diff --git a/internal/auth/permission.go b/backend/internal/auth/permission.go similarity index 100% rename from internal/auth/permission.go rename to backend/internal/auth/permission.go diff --git a/internal/auth/platform_auth.go b/backend/internal/auth/platform_auth.go similarity index 100% rename from internal/auth/platform_auth.go rename to backend/internal/auth/platform_auth.go diff --git a/internal/auth/policy.go b/backend/internal/auth/policy.go similarity index 100% rename from internal/auth/policy.go rename to backend/internal/auth/policy.go diff --git a/internal/auth/policy_test.go_BAK b/backend/internal/auth/policy_test.go_BAK similarity index 100% rename from internal/auth/policy_test.go_BAK rename to backend/internal/auth/policy_test.go_BAK diff --git a/internal/auth/refresh_store.go b/backend/internal/auth/refresh_store.go similarity index 100% rename from internal/auth/refresh_store.go rename to backend/internal/auth/refresh_store.go diff --git a/internal/auth/refresh_store_test.go_BAK b/backend/internal/auth/refresh_store_test.go_BAK similarity index 100% rename from internal/auth/refresh_store_test.go_BAK rename to backend/internal/auth/refresh_store_test.go_BAK diff --git a/internal/auth/saml.go b/backend/internal/auth/saml.go similarity index 100% rename from internal/auth/saml.go rename to backend/internal/auth/saml.go diff --git a/internal/auth/saml_test.go b/backend/internal/auth/saml_test.go similarity index 100% rename from internal/auth/saml_test.go rename to backend/internal/auth/saml_test.go diff --git a/internal/auth/saml_test.go_BAK b/backend/internal/auth/saml_test.go_BAK similarity index 100% rename from internal/auth/saml_test.go_BAK rename to backend/internal/auth/saml_test.go_BAK diff --git a/internal/auth/session.go b/backend/internal/auth/session.go similarity index 100% rename from internal/auth/session.go rename to backend/internal/auth/session.go diff --git a/internal/auth/sso_middleware.go b/backend/internal/auth/sso_middleware.go similarity index 100% rename from internal/auth/sso_middleware.go rename to backend/internal/auth/sso_middleware.go diff --git a/internal/auth/sso_middleware.go_BAK b/backend/internal/auth/sso_middleware.go_BAK similarity index 100% rename from internal/auth/sso_middleware.go_BAK rename to backend/internal/auth/sso_middleware.go_BAK diff --git a/internal/auth/sso_middleware.go_BAK2 b/backend/internal/auth/sso_middleware.go_BAK2 similarity index 100% rename from internal/auth/sso_middleware.go_BAK2 rename to backend/internal/auth/sso_middleware.go_BAK2 diff --git a/internal/auth/sso_middleware_test.go b/backend/internal/auth/sso_middleware_test.go similarity index 100% rename from internal/auth/sso_middleware_test.go rename to backend/internal/auth/sso_middleware_test.go diff --git a/internal/auth/sso_session_store.go b/backend/internal/auth/sso_session_store.go similarity index 100% rename from internal/auth/sso_session_store.go rename to backend/internal/auth/sso_session_store.go diff --git a/internal/auth/sso_session_store.go_BAK b/backend/internal/auth/sso_session_store.go_BAK similarity index 100% rename from internal/auth/sso_session_store.go_BAK rename to backend/internal/auth/sso_session_store.go_BAK diff --git a/internal/auth/webhook_registry.go b/backend/internal/auth/webhook_registry.go similarity index 100% rename from internal/auth/webhook_registry.go rename to backend/internal/auth/webhook_registry.go diff --git a/internal/autoassignment/capacity_test.go b/backend/internal/autoassignment/capacity_test.go similarity index 100% rename from internal/autoassignment/capacity_test.go rename to backend/internal/autoassignment/capacity_test.go diff --git a/internal/autoassignment/listener.go b/backend/internal/autoassignment/listener.go similarity index 100% rename from internal/autoassignment/listener.go rename to backend/internal/autoassignment/listener.go diff --git a/internal/autoassignment/lowest_load.go b/backend/internal/autoassignment/lowest_load.go similarity index 100% rename from internal/autoassignment/lowest_load.go rename to backend/internal/autoassignment/lowest_load.go diff --git a/internal/autoassignment/model.go b/backend/internal/autoassignment/model.go similarity index 100% rename from internal/autoassignment/model.go rename to backend/internal/autoassignment/model.go diff --git a/internal/autoassignment/rate_limiter.go b/backend/internal/autoassignment/rate_limiter.go similarity index 100% rename from internal/autoassignment/rate_limiter.go rename to backend/internal/autoassignment/rate_limiter.go diff --git a/internal/autoassignment/rate_limiter_test.go b/backend/internal/autoassignment/rate_limiter_test.go similarity index 100% rename from internal/autoassignment/rate_limiter_test.go rename to backend/internal/autoassignment/rate_limiter_test.go diff --git a/internal/autoassignment/round_robin.go b/backend/internal/autoassignment/round_robin.go similarity index 100% rename from internal/autoassignment/round_robin.go rename to backend/internal/autoassignment/round_robin.go diff --git a/internal/autoassignment/service.go b/backend/internal/autoassignment/service.go similarity index 100% rename from internal/autoassignment/service.go rename to backend/internal/autoassignment/service.go diff --git a/internal/automation/action_delivery.go b/backend/internal/automation/action_delivery.go similarity index 100% rename from internal/automation/action_delivery.go rename to backend/internal/automation/action_delivery.go diff --git a/internal/automation/action_delivery_worker.go b/backend/internal/automation/action_delivery_worker.go similarity index 100% rename from internal/automation/action_delivery_worker.go rename to backend/internal/automation/action_delivery_worker.go diff --git a/internal/automation/action_service.go b/backend/internal/automation/action_service.go similarity index 100% rename from internal/automation/action_service.go rename to backend/internal/automation/action_service.go diff --git a/internal/automation/action_service_test.go b/backend/internal/automation/action_service_test.go similarity index 100% rename from internal/automation/action_service_test.go rename to backend/internal/automation/action_service_test.go diff --git a/internal/automation/agent_bot_rule_listener.go b/backend/internal/automation/agent_bot_rule_listener.go similarity index 100% rename from internal/automation/agent_bot_rule_listener.go rename to backend/internal/automation/agent_bot_rule_listener.go diff --git a/internal/automation/agent_bot_rule_listener_test.go b/backend/internal/automation/agent_bot_rule_listener_test.go similarity index 100% rename from internal/automation/agent_bot_rule_listener_test.go rename to backend/internal/automation/agent_bot_rule_listener_test.go diff --git a/internal/automation/automation_test_helper.go b/backend/internal/automation/automation_test_helper.go similarity index 100% rename from internal/automation/automation_test_helper.go rename to backend/internal/automation/automation_test_helper.go diff --git a/internal/automation/bot_rule_model.go b/backend/internal/automation/bot_rule_model.go similarity index 100% rename from internal/automation/bot_rule_model.go rename to backend/internal/automation/bot_rule_model.go diff --git a/internal/automation/bot_rule_service.go b/backend/internal/automation/bot_rule_service.go similarity index 100% rename from internal/automation/bot_rule_service.go rename to backend/internal/automation/bot_rule_service.go diff --git a/internal/automation/bot_rule_service_test.go b/backend/internal/automation/bot_rule_service_test.go similarity index 100% rename from internal/automation/bot_rule_service_test.go rename to backend/internal/automation/bot_rule_service_test.go diff --git a/internal/automation/bot_trigger_config_service.go b/backend/internal/automation/bot_trigger_config_service.go similarity index 100% rename from internal/automation/bot_trigger_config_service.go rename to backend/internal/automation/bot_trigger_config_service.go diff --git a/internal/automation/bot_trigger_config_service_test.go b/backend/internal/automation/bot_trigger_config_service_test.go similarity index 100% rename from internal/automation/bot_trigger_config_service_test.go rename to backend/internal/automation/bot_trigger_config_service_test.go diff --git a/internal/automation/condition_filter.go b/backend/internal/automation/condition_filter.go similarity index 100% rename from internal/automation/condition_filter.go rename to backend/internal/automation/condition_filter.go diff --git a/internal/automation/condition_filter_test.go b/backend/internal/automation/condition_filter_test.go similarity index 100% rename from internal/automation/condition_filter_test.go rename to backend/internal/automation/condition_filter_test.go diff --git a/internal/automation/condition_validator.go b/backend/internal/automation/condition_validator.go similarity index 100% rename from internal/automation/condition_validator.go rename to backend/internal/automation/condition_validator.go diff --git a/internal/automation/condition_validator_test.go b/backend/internal/automation/condition_validator_test.go similarity index 100% rename from internal/automation/condition_validator_test.go rename to backend/internal/automation/condition_validator_test.go diff --git a/internal/automation/csat_survey_listener.go b/backend/internal/automation/csat_survey_listener.go similarity index 100% rename from internal/automation/csat_survey_listener.go rename to backend/internal/automation/csat_survey_listener.go diff --git a/internal/automation/csat_survey_listener_test.go b/backend/internal/automation/csat_survey_listener_test.go similarity index 100% rename from internal/automation/csat_survey_listener_test.go rename to backend/internal/automation/csat_survey_listener_test.go diff --git a/internal/automation/csat_survey_service.go b/backend/internal/automation/csat_survey_service.go similarity index 100% rename from internal/automation/csat_survey_service.go rename to backend/internal/automation/csat_survey_service.go diff --git a/internal/automation/csat_survey_service_test.go b/backend/internal/automation/csat_survey_service_test.go similarity index 100% rename from internal/automation/csat_survey_service_test.go rename to backend/internal/automation/csat_survey_service_test.go diff --git a/internal/automation/execution_log_service.go b/backend/internal/automation/execution_log_service.go similarity index 100% rename from internal/automation/execution_log_service.go rename to backend/internal/automation/execution_log_service.go diff --git a/internal/automation/listener.go b/backend/internal/automation/listener.go similarity index 100% rename from internal/automation/listener.go rename to backend/internal/automation/listener.go diff --git a/internal/automation/listener_test.go b/backend/internal/automation/listener_test.go similarity index 100% rename from internal/automation/listener_test.go rename to backend/internal/automation/listener_test.go diff --git a/internal/automation/macro_service.go b/backend/internal/automation/macro_service.go similarity index 100% rename from internal/automation/macro_service.go rename to backend/internal/automation/macro_service.go diff --git a/internal/automation/macro_service_test.go b/backend/internal/automation/macro_service_test.go similarity index 100% rename from internal/automation/macro_service_test.go rename to backend/internal/automation/macro_service_test.go diff --git a/internal/automation/macro_worker.go b/backend/internal/automation/macro_worker.go similarity index 100% rename from internal/automation/macro_worker.go rename to backend/internal/automation/macro_worker.go diff --git a/internal/automation/model.go b/backend/internal/automation/model.go similarity index 100% rename from internal/automation/model.go rename to backend/internal/automation/model.go diff --git a/internal/automation/model_test.go b/backend/internal/automation/model_test.go similarity index 100% rename from internal/automation/model_test.go rename to backend/internal/automation/model_test.go diff --git a/internal/automation/new_features_test.go b/backend/internal/automation/new_features_test.go similarity index 100% rename from internal/automation/new_features_test.go rename to backend/internal/automation/new_features_test.go diff --git a/internal/automation/service.go b/backend/internal/automation/service.go similarity index 100% rename from internal/automation/service.go rename to backend/internal/automation/service.go diff --git a/internal/automation/service_test.go b/backend/internal/automation/service_test.go similarity index 100% rename from internal/automation/service_test.go rename to backend/internal/automation/service_test.go diff --git a/internal/automation/template_variable.go b/backend/internal/automation/template_variable.go similarity index 100% rename from internal/automation/template_variable.go rename to backend/internal/automation/template_variable.go diff --git a/internal/automation/template_variable_test.go b/backend/internal/automation/template_variable_test.go similarity index 100% rename from internal/automation/template_variable_test.go rename to backend/internal/automation/template_variable_test.go diff --git a/internal/campaign/listener.go b/backend/internal/campaign/listener.go similarity index 100% rename from internal/campaign/listener.go rename to backend/internal/campaign/listener.go diff --git a/internal/campaign/model.go b/backend/internal/campaign/model.go similarity index 100% rename from internal/campaign/model.go rename to backend/internal/campaign/model.go diff --git a/internal/campaign/service.go b/backend/internal/campaign/service.go similarity index 100% rename from internal/campaign/service.go rename to backend/internal/campaign/service.go diff --git a/internal/canned/canned_test_helper.go b/backend/internal/canned/canned_test_helper.go similarity index 100% rename from internal/canned/canned_test_helper.go rename to backend/internal/canned/canned_test_helper.go diff --git a/internal/canned/model.go b/backend/internal/canned/model.go similarity index 100% rename from internal/canned/model.go rename to backend/internal/canned/model.go diff --git a/internal/canned/service.go b/backend/internal/canned/service.go similarity index 100% rename from internal/canned/service.go rename to backend/internal/canned/service.go diff --git a/internal/canned/service_test.go b/backend/internal/canned/service_test.go similarity index 100% rename from internal/canned/service_test.go rename to backend/internal/canned/service_test.go diff --git a/internal/channel/broker.go b/backend/internal/channel/broker.go similarity index 100% rename from internal/channel/broker.go rename to backend/internal/channel/broker.go diff --git a/internal/channel/config.go b/backend/internal/channel/config.go similarity index 100% rename from internal/channel/config.go rename to backend/internal/channel/config.go diff --git a/internal/channel/dispatcher.go b/backend/internal/channel/dispatcher.go similarity index 100% rename from internal/channel/dispatcher.go rename to backend/internal/channel/dispatcher.go diff --git a/internal/channel/dispatcher_worker_test.go b/backend/internal/channel/dispatcher_worker_test.go similarity index 100% rename from internal/channel/dispatcher_worker_test.go rename to backend/internal/channel/dispatcher_worker_test.go diff --git a/internal/channel/email/imap_listener.go b/backend/internal/channel/email/imap_listener.go similarity index 100% rename from internal/channel/email/imap_listener.go rename to backend/internal/channel/email/imap_listener.go diff --git a/internal/channel/email/pipeline.go b/backend/internal/channel/email/pipeline.go similarity index 100% rename from internal/channel/email/pipeline.go rename to backend/internal/channel/email/pipeline.go diff --git a/internal/channel/email/provider.go b/backend/internal/channel/email/provider.go similarity index 100% rename from internal/channel/email/provider.go rename to backend/internal/channel/email/provider.go diff --git a/internal/channel/email/repository.go b/backend/internal/channel/email/repository.go similarity index 100% rename from internal/channel/email/repository.go rename to backend/internal/channel/email/repository.go diff --git a/internal/channel/email/service.go b/backend/internal/channel/email/service.go similarity index 100% rename from internal/channel/email/service.go rename to backend/internal/channel/email/service.go diff --git a/internal/channel/email/smtp_sender.go b/backend/internal/channel/email/smtp_sender.go similarity index 100% rename from internal/channel/email/smtp_sender.go rename to backend/internal/channel/email/smtp_sender.go diff --git a/internal/channel/email/types.go b/backend/internal/channel/email/types.go similarity index 100% rename from internal/channel/email/types.go rename to backend/internal/channel/email/types.go diff --git a/internal/channel/email/webhook_handler.go b/backend/internal/channel/email/webhook_handler.go similarity index 100% rename from internal/channel/email/webhook_handler.go rename to backend/internal/channel/email/webhook_handler.go diff --git a/internal/channel/event.go b/backend/internal/channel/event.go similarity index 100% rename from internal/channel/event.go rename to backend/internal/channel/event.go diff --git a/internal/channel/facebook/instagram_provider.go b/backend/internal/channel/facebook/instagram_provider.go similarity index 100% rename from internal/channel/facebook/instagram_provider.go rename to backend/internal/channel/facebook/instagram_provider.go diff --git a/internal/channel/facebook/instagram_provider.go_BAK2 b/backend/internal/channel/facebook/instagram_provider.go_BAK2 similarity index 100% rename from internal/channel/facebook/instagram_provider.go_BAK2 rename to backend/internal/channel/facebook/instagram_provider.go_BAK2 diff --git a/internal/channel/facebook/instagram_provider_test.go b/backend/internal/channel/facebook/instagram_provider_test.go similarity index 100% rename from internal/channel/facebook/instagram_provider_test.go rename to backend/internal/channel/facebook/instagram_provider_test.go diff --git a/internal/channel/facebook/listener.go b/backend/internal/channel/facebook/listener.go similarity index 100% rename from internal/channel/facebook/listener.go rename to backend/internal/channel/facebook/listener.go diff --git a/internal/channel/facebook/listener.go_BAK2 b/backend/internal/channel/facebook/listener.go_BAK2 similarity index 100% rename from internal/channel/facebook/listener.go_BAK2 rename to backend/internal/channel/facebook/listener.go_BAK2 diff --git a/internal/channel/facebook/media.go b/backend/internal/channel/facebook/media.go similarity index 100% rename from internal/channel/facebook/media.go rename to backend/internal/channel/facebook/media.go diff --git a/internal/channel/facebook/pipeline.go b/backend/internal/channel/facebook/pipeline.go similarity index 100% rename from internal/channel/facebook/pipeline.go rename to backend/internal/channel/facebook/pipeline.go diff --git a/internal/channel/facebook/pipeline.go_BAK2 b/backend/internal/channel/facebook/pipeline.go_BAK2 similarity index 100% rename from internal/channel/facebook/pipeline.go_BAK2 rename to backend/internal/channel/facebook/pipeline.go_BAK2 diff --git a/internal/channel/facebook/provider.go b/backend/internal/channel/facebook/provider.go similarity index 100% rename from internal/channel/facebook/provider.go rename to backend/internal/channel/facebook/provider.go diff --git a/internal/channel/facebook/repository.go b/backend/internal/channel/facebook/repository.go similarity index 100% rename from internal/channel/facebook/repository.go rename to backend/internal/channel/facebook/repository.go diff --git a/internal/channel/facebook/service.go b/backend/internal/channel/facebook/service.go similarity index 100% rename from internal/channel/facebook/service.go rename to backend/internal/channel/facebook/service.go diff --git a/internal/channel/facebook/types.go b/backend/internal/channel/facebook/types.go similarity index 100% rename from internal/channel/facebook/types.go rename to backend/internal/channel/facebook/types.go diff --git a/internal/channel/facebook/user_mapping.go b/backend/internal/channel/facebook/user_mapping.go similarity index 100% rename from internal/channel/facebook/user_mapping.go rename to backend/internal/channel/facebook/user_mapping.go diff --git a/internal/channel/facebook/webhook_handler.go b/backend/internal/channel/facebook/webhook_handler.go similarity index 100% rename from internal/channel/facebook/webhook_handler.go rename to backend/internal/channel/facebook/webhook_handler.go diff --git a/internal/channel/facebook/webhook_handler.go_BAK2 b/backend/internal/channel/facebook/webhook_handler.go_BAK2 similarity index 100% rename from internal/channel/facebook/webhook_handler.go_BAK2 rename to backend/internal/channel/facebook/webhook_handler.go_BAK2 diff --git a/internal/channel/facebook/webhook_handler_test.go b/backend/internal/channel/facebook/webhook_handler_test.go similarity index 100% rename from internal/channel/facebook/webhook_handler_test.go rename to backend/internal/channel/facebook/webhook_handler_test.go diff --git a/internal/channel/google/provider.go b/backend/internal/channel/google/provider.go similarity index 100% rename from internal/channel/google/provider.go rename to backend/internal/channel/google/provider.go diff --git a/internal/channel/incoming.go b/backend/internal/channel/incoming.go similarity index 100% rename from internal/channel/incoming.go rename to backend/internal/channel/incoming.go diff --git a/internal/channel/lifecycle.go b/backend/internal/channel/lifecycle.go similarity index 100% rename from internal/channel/lifecycle.go rename to backend/internal/channel/lifecycle.go diff --git a/internal/channel/line/pipeline.go b/backend/internal/channel/line/pipeline.go similarity index 100% rename from internal/channel/line/pipeline.go rename to backend/internal/channel/line/pipeline.go diff --git a/internal/channel/line/provider.go b/backend/internal/channel/line/provider.go similarity index 100% rename from internal/channel/line/provider.go rename to backend/internal/channel/line/provider.go diff --git a/internal/channel/line/repository.go b/backend/internal/channel/line/repository.go similarity index 100% rename from internal/channel/line/repository.go rename to backend/internal/channel/line/repository.go diff --git a/internal/channel/line/service.go b/backend/internal/channel/line/service.go similarity index 100% rename from internal/channel/line/service.go rename to backend/internal/channel/line/service.go diff --git a/internal/channel/line/types.go b/backend/internal/channel/line/types.go similarity index 100% rename from internal/channel/line/types.go rename to backend/internal/channel/line/types.go diff --git a/internal/channel/line/webhook_handler.go b/backend/internal/channel/line/webhook_handler.go similarity index 100% rename from internal/channel/line/webhook_handler.go rename to backend/internal/channel/line/webhook_handler.go diff --git a/internal/channel/listener.go b/backend/internal/channel/listener.go similarity index 100% rename from internal/channel/listener.go rename to backend/internal/channel/listener.go diff --git a/internal/channel/microsoft/provider.go b/backend/internal/channel/microsoft/provider.go similarity index 100% rename from internal/channel/microsoft/provider.go rename to backend/internal/channel/microsoft/provider.go diff --git a/internal/channel/outgoing.go b/backend/internal/channel/outgoing.go similarity index 100% rename from internal/channel/outgoing.go rename to backend/internal/channel/outgoing.go diff --git a/internal/channel/patch_test.txt b/backend/internal/channel/patch_test.txt similarity index 100% rename from internal/channel/patch_test.txt rename to backend/internal/channel/patch_test.txt diff --git a/internal/channel/provider.go b/backend/internal/channel/provider.go similarity index 100% rename from internal/channel/provider.go rename to backend/internal/channel/provider.go diff --git a/internal/channel/provider/email.go b/backend/internal/channel/provider/email.go similarity index 100% rename from internal/channel/provider/email.go rename to backend/internal/channel/provider/email.go diff --git a/internal/channel/provider/facebook.go b/backend/internal/channel/provider/facebook.go similarity index 100% rename from internal/channel/provider/facebook.go rename to backend/internal/channel/provider/facebook.go diff --git a/internal/channel/provider/instagram.go b/backend/internal/channel/provider/instagram.go similarity index 100% rename from internal/channel/provider/instagram.go rename to backend/internal/channel/provider/instagram.go diff --git a/internal/channel/provider/instagram.go_BAK2 b/backend/internal/channel/provider/instagram.go_BAK2 similarity index 100% rename from internal/channel/provider/instagram.go_BAK2 rename to backend/internal/channel/provider/instagram.go_BAK2 diff --git a/internal/channel/provider/line.go b/backend/internal/channel/provider/line.go similarity index 100% rename from internal/channel/provider/line.go rename to backend/internal/channel/provider/line.go diff --git a/internal/channel/provider/provider.go b/backend/internal/channel/provider/provider.go similarity index 100% rename from internal/channel/provider/provider.go rename to backend/internal/channel/provider/provider.go diff --git a/internal/channel/provider/provider_mock_test.go b/backend/internal/channel/provider/provider_mock_test.go similarity index 100% rename from internal/channel/provider/provider_mock_test.go rename to backend/internal/channel/provider/provider_mock_test.go diff --git a/internal/channel/provider/telegram.go b/backend/internal/channel/provider/telegram.go similarity index 100% rename from internal/channel/provider/telegram.go rename to backend/internal/channel/provider/telegram.go diff --git a/internal/channel/provider/telegram_test.go b/backend/internal/channel/provider/telegram_test.go similarity index 100% rename from internal/channel/provider/telegram_test.go rename to backend/internal/channel/provider/telegram_test.go diff --git a/internal/channel/provider/tiktok.go b/backend/internal/channel/provider/tiktok.go similarity index 100% rename from internal/channel/provider/tiktok.go rename to backend/internal/channel/provider/tiktok.go diff --git a/internal/channel/provider/twilio.go b/backend/internal/channel/provider/twilio.go similarity index 100% rename from internal/channel/provider/twilio.go rename to backend/internal/channel/provider/twilio.go diff --git a/internal/channel/provider/web_widget.go b/backend/internal/channel/provider/web_widget.go similarity index 100% rename from internal/channel/provider/web_widget.go rename to backend/internal/channel/provider/web_widget.go diff --git a/internal/channel/provider/whatsapp.go b/backend/internal/channel/provider/whatsapp.go similarity index 100% rename from internal/channel/provider/whatsapp.go rename to backend/internal/channel/provider/whatsapp.go diff --git a/internal/channel/registry.go b/backend/internal/channel/registry.go similarity index 100% rename from internal/channel/registry.go rename to backend/internal/channel/registry.go diff --git a/internal/channel/telegram/pipeline.go b/backend/internal/channel/telegram/pipeline.go similarity index 100% rename from internal/channel/telegram/pipeline.go rename to backend/internal/channel/telegram/pipeline.go diff --git a/internal/channel/telegram/repository.go b/backend/internal/channel/telegram/repository.go similarity index 100% rename from internal/channel/telegram/repository.go rename to backend/internal/channel/telegram/repository.go diff --git a/internal/channel/telegram/service.go b/backend/internal/channel/telegram/service.go similarity index 100% rename from internal/channel/telegram/service.go rename to backend/internal/channel/telegram/service.go diff --git a/internal/channel/telegram/webhook_handler.go b/backend/internal/channel/telegram/webhook_handler.go similarity index 100% rename from internal/channel/telegram/webhook_handler.go rename to backend/internal/channel/telegram/webhook_handler.go diff --git a/internal/channel/test2.txt b/backend/internal/channel/test2.txt similarity index 100% rename from internal/channel/test2.txt rename to backend/internal/channel/test2.txt diff --git a/internal/channel/test_placeholder.go b/backend/internal/channel/test_placeholder.go similarity index 100% rename from internal/channel/test_placeholder.go rename to backend/internal/channel/test_placeholder.go diff --git a/internal/channel/test_write_check.txt b/backend/internal/channel/test_write_check.txt similarity index 100% rename from internal/channel/test_write_check.txt rename to backend/internal/channel/test_write_check.txt diff --git a/internal/channel/tiktok/pipeline.go b/backend/internal/channel/tiktok/pipeline.go similarity index 100% rename from internal/channel/tiktok/pipeline.go rename to backend/internal/channel/tiktok/pipeline.go diff --git a/internal/channel/tiktok/provider.go b/backend/internal/channel/tiktok/provider.go similarity index 100% rename from internal/channel/tiktok/provider.go rename to backend/internal/channel/tiktok/provider.go diff --git a/internal/channel/tiktok/repository.go b/backend/internal/channel/tiktok/repository.go similarity index 100% rename from internal/channel/tiktok/repository.go rename to backend/internal/channel/tiktok/repository.go diff --git a/internal/channel/tiktok/service.go b/backend/internal/channel/tiktok/service.go similarity index 100% rename from internal/channel/tiktok/service.go rename to backend/internal/channel/tiktok/service.go diff --git a/internal/channel/tiktok/types.go b/backend/internal/channel/tiktok/types.go similarity index 100% rename from internal/channel/tiktok/types.go rename to backend/internal/channel/tiktok/types.go diff --git a/internal/channel/tiktok/webhook_handler.go b/backend/internal/channel/tiktok/webhook_handler.go similarity index 100% rename from internal/channel/tiktok/webhook_handler.go rename to backend/internal/channel/tiktok/webhook_handler.go diff --git a/internal/channel/twilio/pipeline.go b/backend/internal/channel/twilio/pipeline.go similarity index 100% rename from internal/channel/twilio/pipeline.go rename to backend/internal/channel/twilio/pipeline.go diff --git a/internal/channel/twilio/provider.go b/backend/internal/channel/twilio/provider.go similarity index 100% rename from internal/channel/twilio/provider.go rename to backend/internal/channel/twilio/provider.go diff --git a/internal/channel/twilio/repository.go b/backend/internal/channel/twilio/repository.go similarity index 100% rename from internal/channel/twilio/repository.go rename to backend/internal/channel/twilio/repository.go diff --git a/internal/channel/twilio/service.go b/backend/internal/channel/twilio/service.go similarity index 100% rename from internal/channel/twilio/service.go rename to backend/internal/channel/twilio/service.go diff --git a/internal/channel/twilio/types.go b/backend/internal/channel/twilio/types.go similarity index 100% rename from internal/channel/twilio/types.go rename to backend/internal/channel/twilio/types.go diff --git a/internal/channel/twilio/webhook_handler.go b/backend/internal/channel/twilio/webhook_handler.go similarity index 100% rename from internal/channel/twilio/webhook_handler.go rename to backend/internal/channel/twilio/webhook_handler.go diff --git a/internal/channel/twitter/provider.go b/backend/internal/channel/twitter/provider.go similarity index 100% rename from internal/channel/twitter/provider.go rename to backend/internal/channel/twitter/provider.go diff --git a/internal/channel/webhook.go b/backend/internal/channel/webhook.go similarity index 100% rename from internal/channel/webhook.go rename to backend/internal/channel/webhook.go diff --git a/internal/channel/webhook_listener_test.go b/backend/internal/channel/webhook_listener_test.go similarity index 100% rename from internal/channel/webhook_listener_test.go rename to backend/internal/channel/webhook_listener_test.go diff --git a/internal/channel/whatsapp/media.go b/backend/internal/channel/whatsapp/media.go similarity index 100% rename from internal/channel/whatsapp/media.go rename to backend/internal/channel/whatsapp/media.go diff --git a/internal/channel/whatsapp/pipeline.go b/backend/internal/channel/whatsapp/pipeline.go similarity index 100% rename from internal/channel/whatsapp/pipeline.go rename to backend/internal/channel/whatsapp/pipeline.go diff --git a/internal/channel/whatsapp/provider.go b/backend/internal/channel/whatsapp/provider.go similarity index 100% rename from internal/channel/whatsapp/provider.go rename to backend/internal/channel/whatsapp/provider.go diff --git a/internal/channel/whatsapp/repository.go b/backend/internal/channel/whatsapp/repository.go similarity index 100% rename from internal/channel/whatsapp/repository.go rename to backend/internal/channel/whatsapp/repository.go diff --git a/internal/channel/whatsapp/service.go b/backend/internal/channel/whatsapp/service.go similarity index 100% rename from internal/channel/whatsapp/service.go rename to backend/internal/channel/whatsapp/service.go diff --git a/internal/channel/whatsapp/service_test.go b/backend/internal/channel/whatsapp/service_test.go similarity index 100% rename from internal/channel/whatsapp/service_test.go rename to backend/internal/channel/whatsapp/service_test.go diff --git a/internal/channel/whatsapp/types.go b/backend/internal/channel/whatsapp/types.go similarity index 100% rename from internal/channel/whatsapp/types.go rename to backend/internal/channel/whatsapp/types.go diff --git a/internal/channel/whatsapp/webhook_handler.go b/backend/internal/channel/whatsapp/webhook_handler.go similarity index 100% rename from internal/channel/whatsapp/webhook_handler.go rename to backend/internal/channel/whatsapp/webhook_handler.go diff --git a/internal/channel/whatsapp/webhook_handler_test.go b/backend/internal/channel/whatsapp/webhook_handler_test.go similarity index 100% rename from internal/channel/whatsapp/webhook_handler_test.go rename to backend/internal/channel/whatsapp/webhook_handler_test.go diff --git a/internal/channel/write_check.go b/backend/internal/channel/write_check.go similarity index 100% rename from internal/channel/write_check.go rename to backend/internal/channel/write_check.go diff --git a/internal/config/config.go b/backend/internal/config/config.go similarity index 100% rename from internal/config/config.go rename to backend/internal/config/config.go diff --git a/internal/config/config_test.go b/backend/internal/config/config_test.go similarity index 100% rename from internal/config/config_test.go rename to backend/internal/config/config_test.go diff --git a/internal/config/reloader_test.go b/backend/internal/config/reloader_test.go similarity index 100% rename from internal/config/reloader_test.go rename to backend/internal/config/reloader_test.go diff --git a/internal/config/validator.go b/backend/internal/config/validator.go similarity index 100% rename from internal/config/validator.go rename to backend/internal/config/validator.go diff --git a/internal/csat/listener.go b/backend/internal/csat/listener.go similarity index 100% rename from internal/csat/listener.go rename to backend/internal/csat/listener.go diff --git a/internal/csat/model.go b/backend/internal/csat/model.go similarity index 100% rename from internal/csat/model.go rename to backend/internal/csat/model.go diff --git a/internal/csat/service.go b/backend/internal/csat/service.go similarity index 100% rename from internal/csat/service.go rename to backend/internal/csat/service.go diff --git a/internal/database/migrate.go b/backend/internal/database/migrate.go similarity index 100% rename from internal/database/migrate.go rename to backend/internal/database/migrate.go diff --git a/internal/dispatch/dispatcher.go b/backend/internal/dispatch/dispatcher.go similarity index 100% rename from internal/dispatch/dispatcher.go rename to backend/internal/dispatch/dispatcher.go diff --git a/internal/dispatch/dispatcher_worker_test.go b/backend/internal/dispatch/dispatcher_worker_test.go similarity index 100% rename from internal/dispatch/dispatcher_worker_test.go rename to backend/internal/dispatch/dispatcher_worker_test.go diff --git a/internal/dispatch/event.go b/backend/internal/dispatch/event.go similarity index 100% rename from internal/dispatch/event.go rename to backend/internal/dispatch/event.go diff --git a/internal/dispatch/listener_registry.go b/backend/internal/dispatch/listener_registry.go similarity index 100% rename from internal/dispatch/listener_registry.go rename to backend/internal/dispatch/listener_registry.go diff --git a/internal/goimap_stub/client/client.go b/backend/internal/goimap_stub/client/client.go similarity index 100% rename from internal/goimap_stub/client/client.go rename to backend/internal/goimap_stub/client/client.go diff --git a/internal/goimap_stub/goimap.go b/backend/internal/goimap_stub/goimap.go similarity index 100% rename from internal/goimap_stub/goimap.go rename to backend/internal/goimap_stub/goimap.go diff --git a/internal/handler/api/v1/account_handler.go b/backend/internal/handler/api/v1/account_handler.go similarity index 100% rename from internal/handler/api/v1/account_handler.go rename to backend/internal/handler/api/v1/account_handler.go diff --git a/internal/handler/api/v1/account_handler_test.go b/backend/internal/handler/api/v1/account_handler_test.go similarity index 100% rename from internal/handler/api/v1/account_handler_test.go rename to backend/internal/handler/api/v1/account_handler_test.go diff --git a/internal/handler/api/v1/account_handler_test.go_BAK b/backend/internal/handler/api/v1/account_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/account_handler_test.go_BAK rename to backend/internal/handler/api/v1/account_handler_test.go_BAK diff --git a/internal/handler/api/v1/account_saml_settings_handler.go b/backend/internal/handler/api/v1/account_saml_settings_handler.go similarity index 100% rename from internal/handler/api/v1/account_saml_settings_handler.go rename to backend/internal/handler/api/v1/account_saml_settings_handler.go diff --git a/internal/handler/api/v1/account_saml_settings_handler_test.go b/backend/internal/handler/api/v1/account_saml_settings_handler_test.go similarity index 100% rename from internal/handler/api/v1/account_saml_settings_handler_test.go rename to backend/internal/handler/api/v1/account_saml_settings_handler_test.go diff --git a/internal/handler/api/v1/agent_bot_handler.go b/backend/internal/handler/api/v1/agent_bot_handler.go similarity index 100% rename from internal/handler/api/v1/agent_bot_handler.go rename to backend/internal/handler/api/v1/agent_bot_handler.go diff --git a/internal/handler/api/v1/agent_bot_handler_test.go b/backend/internal/handler/api/v1/agent_bot_handler_test.go similarity index 100% rename from internal/handler/api/v1/agent_bot_handler_test.go rename to backend/internal/handler/api/v1/agent_bot_handler_test.go diff --git a/internal/handler/api/v1/agent_bot_inbox_handler.go b/backend/internal/handler/api/v1/agent_bot_inbox_handler.go similarity index 100% rename from internal/handler/api/v1/agent_bot_inbox_handler.go rename to backend/internal/handler/api/v1/agent_bot_inbox_handler.go diff --git a/internal/handler/api/v1/agent_bot_inbox_handler_test.go b/backend/internal/handler/api/v1/agent_bot_inbox_handler_test.go similarity index 100% rename from internal/handler/api/v1/agent_bot_inbox_handler_test.go rename to backend/internal/handler/api/v1/agent_bot_inbox_handler_test.go diff --git a/internal/handler/api/v1/agent_bulk_handler.go b/backend/internal/handler/api/v1/agent_bulk_handler.go similarity index 100% rename from internal/handler/api/v1/agent_bulk_handler.go rename to backend/internal/handler/api/v1/agent_bulk_handler.go diff --git a/internal/handler/api/v1/agent_bulk_handler_test.go b/backend/internal/handler/api/v1/agent_bulk_handler_test.go similarity index 100% rename from internal/handler/api/v1/agent_bulk_handler_test.go rename to backend/internal/handler/api/v1/agent_bulk_handler_test.go diff --git a/internal/handler/api/v1/agent_capacity_handler.go b/backend/internal/handler/api/v1/agent_capacity_handler.go similarity index 100% rename from internal/handler/api/v1/agent_capacity_handler.go rename to backend/internal/handler/api/v1/agent_capacity_handler.go diff --git a/internal/handler/api/v1/agent_capacity_handler_test.go b/backend/internal/handler/api/v1/agent_capacity_handler_test.go similarity index 100% rename from internal/handler/api/v1/agent_capacity_handler_test.go rename to backend/internal/handler/api/v1/agent_capacity_handler_test.go diff --git a/internal/handler/api/v1/agent_handler.go b/backend/internal/handler/api/v1/agent_handler.go similarity index 100% rename from internal/handler/api/v1/agent_handler.go rename to backend/internal/handler/api/v1/agent_handler.go diff --git a/internal/handler/api/v1/agent_handler_test.go b/backend/internal/handler/api/v1/agent_handler_test.go similarity index 100% rename from internal/handler/api/v1/agent_handler_test.go rename to backend/internal/handler/api/v1/agent_handler_test.go diff --git a/internal/handler/api/v1/analytics_handler.go b/backend/internal/handler/api/v1/analytics_handler.go similarity index 100% rename from internal/handler/api/v1/analytics_handler.go rename to backend/internal/handler/api/v1/analytics_handler.go diff --git a/internal/handler/api/v1/analytics_handler_test.go b/backend/internal/handler/api/v1/analytics_handler_test.go similarity index 100% rename from internal/handler/api/v1/analytics_handler_test.go rename to backend/internal/handler/api/v1/analytics_handler_test.go diff --git a/internal/handler/api/v1/article_handler.go b/backend/internal/handler/api/v1/article_handler.go similarity index 100% rename from internal/handler/api/v1/article_handler.go rename to backend/internal/handler/api/v1/article_handler.go diff --git a/internal/handler/api/v1/article_handler_test.go b/backend/internal/handler/api/v1/article_handler_test.go similarity index 100% rename from internal/handler/api/v1/article_handler_test.go rename to backend/internal/handler/api/v1/article_handler_test.go diff --git a/internal/handler/api/v1/article_handler_test.go_BAK b/backend/internal/handler/api/v1/article_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/article_handler_test.go_BAK rename to backend/internal/handler/api/v1/article_handler_test.go_BAK diff --git a/internal/handler/api/v1/assignable_agent_handler.go b/backend/internal/handler/api/v1/assignable_agent_handler.go similarity index 100% rename from internal/handler/api/v1/assignable_agent_handler.go rename to backend/internal/handler/api/v1/assignable_agent_handler.go diff --git a/internal/handler/api/v1/assignable_agent_handler_test.go b/backend/internal/handler/api/v1/assignable_agent_handler_test.go similarity index 100% rename from internal/handler/api/v1/assignable_agent_handler_test.go rename to backend/internal/handler/api/v1/assignable_agent_handler_test.go diff --git a/internal/handler/api/v1/assignment_policy_handler.go b/backend/internal/handler/api/v1/assignment_policy_handler.go similarity index 100% rename from internal/handler/api/v1/assignment_policy_handler.go rename to backend/internal/handler/api/v1/assignment_policy_handler.go diff --git a/internal/handler/api/v1/assignment_policy_handler_test.go b/backend/internal/handler/api/v1/assignment_policy_handler_test.go similarity index 100% rename from internal/handler/api/v1/assignment_policy_handler_test.go rename to backend/internal/handler/api/v1/assignment_policy_handler_test.go diff --git a/internal/handler/api/v1/assignment_policy_v2_handler.go b/backend/internal/handler/api/v1/assignment_policy_v2_handler.go similarity index 100% rename from internal/handler/api/v1/assignment_policy_v2_handler.go rename to backend/internal/handler/api/v1/assignment_policy_v2_handler.go diff --git a/internal/handler/api/v1/assignment_policy_v2_handler_test.go b/backend/internal/handler/api/v1/assignment_policy_v2_handler_test.go similarity index 100% rename from internal/handler/api/v1/assignment_policy_v2_handler_test.go rename to backend/internal/handler/api/v1/assignment_policy_v2_handler_test.go diff --git a/internal/handler/api/v1/audit_handler.go b/backend/internal/handler/api/v1/audit_handler.go similarity index 100% rename from internal/handler/api/v1/audit_handler.go rename to backend/internal/handler/api/v1/audit_handler.go diff --git a/internal/handler/api/v1/audit_handler_test.go b/backend/internal/handler/api/v1/audit_handler_test.go similarity index 100% rename from internal/handler/api/v1/audit_handler_test.go rename to backend/internal/handler/api/v1/audit_handler_test.go diff --git a/internal/handler/api/v1/audit_writer.go b/backend/internal/handler/api/v1/audit_writer.go similarity index 100% rename from internal/handler/api/v1/audit_writer.go rename to backend/internal/handler/api/v1/audit_writer.go diff --git a/internal/handler/api/v1/auth_handler.go b/backend/internal/handler/api/v1/auth_handler.go similarity index 100% rename from internal/handler/api/v1/auth_handler.go rename to backend/internal/handler/api/v1/auth_handler.go diff --git a/internal/handler/api/v1/auth_handler_test.go b/backend/internal/handler/api/v1/auth_handler_test.go similarity index 100% rename from internal/handler/api/v1/auth_handler_test.go rename to backend/internal/handler/api/v1/auth_handler_test.go diff --git a/internal/handler/api/v1/auth_handler_test.go_BAK b/backend/internal/handler/api/v1/auth_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/auth_handler_test.go_BAK rename to backend/internal/handler/api/v1/auth_handler_test.go_BAK diff --git a/internal/handler/api/v1/auto_reply_rule_handler.go b/backend/internal/handler/api/v1/auto_reply_rule_handler.go similarity index 100% rename from internal/handler/api/v1/auto_reply_rule_handler.go rename to backend/internal/handler/api/v1/auto_reply_rule_handler.go diff --git a/internal/handler/api/v1/auto_reply_rule_handler_test.go b/backend/internal/handler/api/v1/auto_reply_rule_handler_test.go similarity index 100% rename from internal/handler/api/v1/auto_reply_rule_handler_test.go rename to backend/internal/handler/api/v1/auto_reply_rule_handler_test.go diff --git a/internal/handler/api/v1/automation_rule_handler.go b/backend/internal/handler/api/v1/automation_rule_handler.go similarity index 100% rename from internal/handler/api/v1/automation_rule_handler.go rename to backend/internal/handler/api/v1/automation_rule_handler.go diff --git a/internal/handler/api/v1/automation_rule_handler_edge_test.go b/backend/internal/handler/api/v1/automation_rule_handler_edge_test.go similarity index 100% rename from internal/handler/api/v1/automation_rule_handler_edge_test.go rename to backend/internal/handler/api/v1/automation_rule_handler_edge_test.go diff --git a/internal/handler/api/v1/automation_rule_handler_test.go b/backend/internal/handler/api/v1/automation_rule_handler_test.go similarity index 100% rename from internal/handler/api/v1/automation_rule_handler_test.go rename to backend/internal/handler/api/v1/automation_rule_handler_test.go diff --git a/internal/handler/api/v1/banner_handler.go b/backend/internal/handler/api/v1/banner_handler.go similarity index 100% rename from internal/handler/api/v1/banner_handler.go rename to backend/internal/handler/api/v1/banner_handler.go diff --git a/internal/handler/api/v1/banner_handler_test.go b/backend/internal/handler/api/v1/banner_handler_test.go similarity index 100% rename from internal/handler/api/v1/banner_handler_test.go rename to backend/internal/handler/api/v1/banner_handler_test.go diff --git a/internal/handler/api/v1/bot_rule_handler.go b/backend/internal/handler/api/v1/bot_rule_handler.go similarity index 100% rename from internal/handler/api/v1/bot_rule_handler.go rename to backend/internal/handler/api/v1/bot_rule_handler.go diff --git a/internal/handler/api/v1/bot_rule_handler_test.go b/backend/internal/handler/api/v1/bot_rule_handler_test.go similarity index 100% rename from internal/handler/api/v1/bot_rule_handler_test.go rename to backend/internal/handler/api/v1/bot_rule_handler_test.go diff --git a/internal/handler/api/v1/bot_trigger_config_handler.go b/backend/internal/handler/api/v1/bot_trigger_config_handler.go similarity index 100% rename from internal/handler/api/v1/bot_trigger_config_handler.go rename to backend/internal/handler/api/v1/bot_trigger_config_handler.go diff --git a/internal/handler/api/v1/bot_trigger_config_handler_test.go b/backend/internal/handler/api/v1/bot_trigger_config_handler_test.go similarity index 100% rename from internal/handler/api/v1/bot_trigger_config_handler_test.go rename to backend/internal/handler/api/v1/bot_trigger_config_handler_test.go diff --git a/internal/handler/api/v1/bulk_action_handler.go b/backend/internal/handler/api/v1/bulk_action_handler.go similarity index 100% rename from internal/handler/api/v1/bulk_action_handler.go rename to backend/internal/handler/api/v1/bulk_action_handler.go diff --git a/internal/handler/api/v1/bulk_action_handler_test.go b/backend/internal/handler/api/v1/bulk_action_handler_test.go similarity index 100% rename from internal/handler/api/v1/bulk_action_handler_test.go rename to backend/internal/handler/api/v1/bulk_action_handler_test.go diff --git a/internal/handler/api/v1/campaign_handler.go b/backend/internal/handler/api/v1/campaign_handler.go similarity index 100% rename from internal/handler/api/v1/campaign_handler.go rename to backend/internal/handler/api/v1/campaign_handler.go diff --git a/internal/handler/api/v1/campaign_handler_test.go b/backend/internal/handler/api/v1/campaign_handler_test.go similarity index 100% rename from internal/handler/api/v1/campaign_handler_test.go rename to backend/internal/handler/api/v1/campaign_handler_test.go diff --git a/internal/handler/api/v1/canned_response_handler.go b/backend/internal/handler/api/v1/canned_response_handler.go similarity index 100% rename from internal/handler/api/v1/canned_response_handler.go rename to backend/internal/handler/api/v1/canned_response_handler.go diff --git a/internal/handler/api/v1/canned_response_handler_test.go b/backend/internal/handler/api/v1/canned_response_handler_test.go similarity index 100% rename from internal/handler/api/v1/canned_response_handler_test.go rename to backend/internal/handler/api/v1/canned_response_handler_test.go diff --git a/internal/handler/api/v1/canned_response_handler_test.go_BAK b/backend/internal/handler/api/v1/canned_response_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/canned_response_handler_test.go_BAK rename to backend/internal/handler/api/v1/canned_response_handler_test.go_BAK diff --git a/internal/handler/api/v1/captain_assistant_handler.go b/backend/internal/handler/api/v1/captain_assistant_handler.go similarity index 100% rename from internal/handler/api/v1/captain_assistant_handler.go rename to backend/internal/handler/api/v1/captain_assistant_handler.go diff --git a/internal/handler/api/v1/captain_assistant_handler_test.go b/backend/internal/handler/api/v1/captain_assistant_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_assistant_handler_test.go rename to backend/internal/handler/api/v1/captain_assistant_handler_test.go diff --git a/internal/handler/api/v1/captain_assistant_response_handler.go b/backend/internal/handler/api/v1/captain_assistant_response_handler.go similarity index 100% rename from internal/handler/api/v1/captain_assistant_response_handler.go rename to backend/internal/handler/api/v1/captain_assistant_response_handler.go diff --git a/internal/handler/api/v1/captain_assistant_response_handler_test.go b/backend/internal/handler/api/v1/captain_assistant_response_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_assistant_response_handler_test.go rename to backend/internal/handler/api/v1/captain_assistant_response_handler_test.go diff --git a/internal/handler/api/v1/captain_bulk_action_handler.go b/backend/internal/handler/api/v1/captain_bulk_action_handler.go similarity index 100% rename from internal/handler/api/v1/captain_bulk_action_handler.go rename to backend/internal/handler/api/v1/captain_bulk_action_handler.go diff --git a/internal/handler/api/v1/captain_bulk_action_handler_test.go b/backend/internal/handler/api/v1/captain_bulk_action_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_bulk_action_handler_test.go rename to backend/internal/handler/api/v1/captain_bulk_action_handler_test.go diff --git a/internal/handler/api/v1/captain_custom_tool_crud_handler_test.go b/backend/internal/handler/api/v1/captain_custom_tool_crud_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_custom_tool_crud_handler_test.go rename to backend/internal/handler/api/v1/captain_custom_tool_crud_handler_test.go diff --git a/internal/handler/api/v1/captain_custom_tool_handler.go b/backend/internal/handler/api/v1/captain_custom_tool_handler.go similarity index 100% rename from internal/handler/api/v1/captain_custom_tool_handler.go rename to backend/internal/handler/api/v1/captain_custom_tool_handler.go diff --git a/internal/handler/api/v1/captain_custom_tool_test_handler_test.go b/backend/internal/handler/api/v1/captain_custom_tool_test_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_custom_tool_test_handler_test.go rename to backend/internal/handler/api/v1/captain_custom_tool_test_handler_test.go diff --git a/internal/handler/api/v1/captain_document_handler.go b/backend/internal/handler/api/v1/captain_document_handler.go similarity index 100% rename from internal/handler/api/v1/captain_document_handler.go rename to backend/internal/handler/api/v1/captain_document_handler.go diff --git a/internal/handler/api/v1/captain_preference_handler.go b/backend/internal/handler/api/v1/captain_preference_handler.go similarity index 100% rename from internal/handler/api/v1/captain_preference_handler.go rename to backend/internal/handler/api/v1/captain_preference_handler.go diff --git a/internal/handler/api/v1/captain_preference_handler_test.go b/backend/internal/handler/api/v1/captain_preference_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_preference_handler_test.go rename to backend/internal/handler/api/v1/captain_preference_handler_test.go diff --git a/internal/handler/api/v1/captain_resource_parity_handler_test.go b/backend/internal/handler/api/v1/captain_resource_parity_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_resource_parity_handler_test.go rename to backend/internal/handler/api/v1/captain_resource_parity_handler_test.go diff --git a/internal/handler/api/v1/captain_scenario_handler.go b/backend/internal/handler/api/v1/captain_scenario_handler.go similarity index 100% rename from internal/handler/api/v1/captain_scenario_handler.go rename to backend/internal/handler/api/v1/captain_scenario_handler.go diff --git a/internal/handler/api/v1/captain_scenario_handler_test.go b/backend/internal/handler/api/v1/captain_scenario_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_scenario_handler_test.go rename to backend/internal/handler/api/v1/captain_scenario_handler_test.go diff --git a/internal/handler/api/v1/captain_task_extended_handler.go b/backend/internal/handler/api/v1/captain_task_extended_handler.go similarity index 100% rename from internal/handler/api/v1/captain_task_extended_handler.go rename to backend/internal/handler/api/v1/captain_task_extended_handler.go diff --git a/internal/handler/api/v1/captain_task_extended_handler_test.go b/backend/internal/handler/api/v1/captain_task_extended_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_task_extended_handler_test.go rename to backend/internal/handler/api/v1/captain_task_extended_handler_test.go diff --git a/internal/handler/api/v1/captain_task_handler.go b/backend/internal/handler/api/v1/captain_task_handler.go similarity index 100% rename from internal/handler/api/v1/captain_task_handler.go rename to backend/internal/handler/api/v1/captain_task_handler.go diff --git a/internal/handler/api/v1/captain_task_handler.go.bak b/backend/internal/handler/api/v1/captain_task_handler.go.bak similarity index 100% rename from internal/handler/api/v1/captain_task_handler.go.bak rename to backend/internal/handler/api/v1/captain_task_handler.go.bak diff --git a/internal/handler/api/v1/captain_task_handler_test.go b/backend/internal/handler/api/v1/captain_task_handler_test.go similarity index 100% rename from internal/handler/api/v1/captain_task_handler_test.go rename to backend/internal/handler/api/v1/captain_task_handler_test.go diff --git a/internal/handler/api/v1/category_handler.go b/backend/internal/handler/api/v1/category_handler.go similarity index 100% rename from internal/handler/api/v1/category_handler.go rename to backend/internal/handler/api/v1/category_handler.go diff --git a/internal/handler/api/v1/category_handler_test.go b/backend/internal/handler/api/v1/category_handler_test.go similarity index 100% rename from internal/handler/api/v1/category_handler_test.go rename to backend/internal/handler/api/v1/category_handler_test.go diff --git a/internal/handler/api/v1/category_handler_test.go_BAK b/backend/internal/handler/api/v1/category_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/category_handler_test.go_BAK rename to backend/internal/handler/api/v1/category_handler_test.go_BAK diff --git a/internal/handler/api/v1/channel_handler_test_helpers_test.go b/backend/internal/handler/api/v1/channel_handler_test_helpers_test.go similarity index 100% rename from internal/handler/api/v1/channel_handler_test_helpers_test.go rename to backend/internal/handler/api/v1/channel_handler_test_helpers_test.go diff --git a/internal/handler/api/v1/chatwoot_payload.go b/backend/internal/handler/api/v1/chatwoot_payload.go similarity index 100% rename from internal/handler/api/v1/chatwoot_payload.go rename to backend/internal/handler/api/v1/chatwoot_payload.go diff --git a/internal/handler/api/v1/company_handler.go b/backend/internal/handler/api/v1/company_handler.go similarity index 100% rename from internal/handler/api/v1/company_handler.go rename to backend/internal/handler/api/v1/company_handler.go diff --git a/internal/handler/api/v1/company_handler_test.go b/backend/internal/handler/api/v1/company_handler_test.go similarity index 100% rename from internal/handler/api/v1/company_handler_test.go rename to backend/internal/handler/api/v1/company_handler_test.go diff --git a/internal/handler/api/v1/contact_handler.go b/backend/internal/handler/api/v1/contact_handler.go similarity index 100% rename from internal/handler/api/v1/contact_handler.go rename to backend/internal/handler/api/v1/contact_handler.go diff --git a/internal/handler/api/v1/contact_handler_crud_test.go b/backend/internal/handler/api/v1/contact_handler_crud_test.go similarity index 100% rename from internal/handler/api/v1/contact_handler_crud_test.go rename to backend/internal/handler/api/v1/contact_handler_crud_test.go diff --git a/internal/handler/api/v1/contact_handler_edge_test.go b/backend/internal/handler/api/v1/contact_handler_edge_test.go similarity index 100% rename from internal/handler/api/v1/contact_handler_edge_test.go rename to backend/internal/handler/api/v1/contact_handler_edge_test.go diff --git a/internal/handler/api/v1/contact_handler_g3_test.go b/backend/internal/handler/api/v1/contact_handler_g3_test.go similarity index 100% rename from internal/handler/api/v1/contact_handler_g3_test.go rename to backend/internal/handler/api/v1/contact_handler_g3_test.go diff --git a/internal/handler/api/v1/contact_handler_test.go_BAK b/backend/internal/handler/api/v1/contact_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/contact_handler_test.go_BAK rename to backend/internal/handler/api/v1/contact_handler_test.go_BAK diff --git a/internal/handler/api/v1/contact_inbox_handler.go b/backend/internal/handler/api/v1/contact_inbox_handler.go similarity index 100% rename from internal/handler/api/v1/contact_inbox_handler.go rename to backend/internal/handler/api/v1/contact_inbox_handler.go diff --git a/internal/handler/api/v1/contact_inbox_handler_test.go b/backend/internal/handler/api/v1/contact_inbox_handler_test.go similarity index 100% rename from internal/handler/api/v1/contact_inbox_handler_test.go rename to backend/internal/handler/api/v1/contact_inbox_handler_test.go diff --git a/internal/handler/api/v1/contact_merge_handler.go b/backend/internal/handler/api/v1/contact_merge_handler.go similarity index 100% rename from internal/handler/api/v1/contact_merge_handler.go rename to backend/internal/handler/api/v1/contact_merge_handler.go diff --git a/internal/handler/api/v1/contact_merge_handler_test.go b/backend/internal/handler/api/v1/contact_merge_handler_test.go similarity index 100% rename from internal/handler/api/v1/contact_merge_handler_test.go rename to backend/internal/handler/api/v1/contact_merge_handler_test.go diff --git a/internal/handler/api/v1/contact_presence.go b/backend/internal/handler/api/v1/contact_presence.go similarity index 100% rename from internal/handler/api/v1/contact_presence.go rename to backend/internal/handler/api/v1/contact_presence.go diff --git a/internal/handler/api/v1/conversation_handler.go b/backend/internal/handler/api/v1/conversation_handler.go similarity index 100% rename from internal/handler/api/v1/conversation_handler.go rename to backend/internal/handler/api/v1/conversation_handler.go diff --git a/internal/handler/api/v1/conversation_handler_crud_test.go b/backend/internal/handler/api/v1/conversation_handler_crud_test.go similarity index 100% rename from internal/handler/api/v1/conversation_handler_crud_test.go rename to backend/internal/handler/api/v1/conversation_handler_crud_test.go diff --git a/internal/handler/api/v1/conversation_handler_edge_test.go b/backend/internal/handler/api/v1/conversation_handler_edge_test.go similarity index 100% rename from internal/handler/api/v1/conversation_handler_edge_test.go rename to backend/internal/handler/api/v1/conversation_handler_edge_test.go diff --git a/internal/handler/api/v1/conversation_handler_test.go b/backend/internal/handler/api/v1/conversation_handler_test.go similarity index 100% rename from internal/handler/api/v1/conversation_handler_test.go rename to backend/internal/handler/api/v1/conversation_handler_test.go diff --git a/internal/handler/api/v1/conversation_handler_test.go.bak b/backend/internal/handler/api/v1/conversation_handler_test.go.bak similarity index 100% rename from internal/handler/api/v1/conversation_handler_test.go.bak rename to backend/internal/handler/api/v1/conversation_handler_test.go.bak diff --git a/internal/handler/api/v1/conversation_insight_handler.go b/backend/internal/handler/api/v1/conversation_insight_handler.go similarity index 100% rename from internal/handler/api/v1/conversation_insight_handler.go rename to backend/internal/handler/api/v1/conversation_insight_handler.go diff --git a/internal/handler/api/v1/conversation_insight_handler_test.go b/backend/internal/handler/api/v1/conversation_insight_handler_test.go similarity index 100% rename from internal/handler/api/v1/conversation_insight_handler_test.go rename to backend/internal/handler/api/v1/conversation_insight_handler_test.go diff --git a/internal/handler/api/v1/conversation_participant_handler.go b/backend/internal/handler/api/v1/conversation_participant_handler.go similarity index 100% rename from internal/handler/api/v1/conversation_participant_handler.go rename to backend/internal/handler/api/v1/conversation_participant_handler.go diff --git a/internal/handler/api/v1/conversation_participant_handler_test.go b/backend/internal/handler/api/v1/conversation_participant_handler_test.go similarity index 100% rename from internal/handler/api/v1/conversation_participant_handler_test.go rename to backend/internal/handler/api/v1/conversation_participant_handler_test.go diff --git a/internal/handler/api/v1/conversation_serializer.go b/backend/internal/handler/api/v1/conversation_serializer.go similarity index 100% rename from internal/handler/api/v1/conversation_serializer.go rename to backend/internal/handler/api/v1/conversation_serializer.go diff --git a/internal/handler/api/v1/conversation_serializer_test.go b/backend/internal/handler/api/v1/conversation_serializer_test.go similarity index 100% rename from internal/handler/api/v1/conversation_serializer_test.go rename to backend/internal/handler/api/v1/conversation_serializer_test.go diff --git a/internal/handler/api/v1/copilot_handler.go b/backend/internal/handler/api/v1/copilot_handler.go similarity index 100% rename from internal/handler/api/v1/copilot_handler.go rename to backend/internal/handler/api/v1/copilot_handler.go diff --git a/internal/handler/api/v1/copilot_suggestion_handler_test.go b/backend/internal/handler/api/v1/copilot_suggestion_handler_test.go similarity index 100% rename from internal/handler/api/v1/copilot_suggestion_handler_test.go rename to backend/internal/handler/api/v1/copilot_suggestion_handler_test.go diff --git a/internal/handler/api/v1/copilot_thread_handler_test.go b/backend/internal/handler/api/v1/copilot_thread_handler_test.go similarity index 100% rename from internal/handler/api/v1/copilot_thread_handler_test.go rename to backend/internal/handler/api/v1/copilot_thread_handler_test.go diff --git a/internal/handler/api/v1/crm_frontend_smoke_test.go b/backend/internal/handler/api/v1/crm_frontend_smoke_test.go similarity index 100% rename from internal/handler/api/v1/crm_frontend_smoke_test.go rename to backend/internal/handler/api/v1/crm_frontend_smoke_test.go diff --git a/internal/handler/api/v1/crm_serializer.go b/backend/internal/handler/api/v1/crm_serializer.go similarity index 100% rename from internal/handler/api/v1/crm_serializer.go rename to backend/internal/handler/api/v1/crm_serializer.go diff --git a/internal/handler/api/v1/csat_metrics_handler.go b/backend/internal/handler/api/v1/csat_metrics_handler.go similarity index 100% rename from internal/handler/api/v1/csat_metrics_handler.go rename to backend/internal/handler/api/v1/csat_metrics_handler.go diff --git a/internal/handler/api/v1/csat_metrics_handler_test.go b/backend/internal/handler/api/v1/csat_metrics_handler_test.go similarity index 100% rename from internal/handler/api/v1/csat_metrics_handler_test.go rename to backend/internal/handler/api/v1/csat_metrics_handler_test.go diff --git a/internal/handler/api/v1/csat_survey_handler.go b/backend/internal/handler/api/v1/csat_survey_handler.go similarity index 100% rename from internal/handler/api/v1/csat_survey_handler.go rename to backend/internal/handler/api/v1/csat_survey_handler.go diff --git a/internal/handler/api/v1/csat_survey_handler_test.go b/backend/internal/handler/api/v1/csat_survey_handler_test.go similarity index 100% rename from internal/handler/api/v1/csat_survey_handler_test.go rename to backend/internal/handler/api/v1/csat_survey_handler_test.go diff --git a/internal/handler/api/v1/csat_survey_handler_test.go_BAK b/backend/internal/handler/api/v1/csat_survey_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/csat_survey_handler_test.go_BAK rename to backend/internal/handler/api/v1/csat_survey_handler_test.go_BAK diff --git a/internal/handler/api/v1/csat_survey_update_test.go b/backend/internal/handler/api/v1/csat_survey_update_test.go similarity index 100% rename from internal/handler/api/v1/csat_survey_update_test.go rename to backend/internal/handler/api/v1/csat_survey_update_test.go diff --git a/internal/handler/api/v1/custom_attribute_definition_handler.go b/backend/internal/handler/api/v1/custom_attribute_definition_handler.go similarity index 100% rename from internal/handler/api/v1/custom_attribute_definition_handler.go rename to backend/internal/handler/api/v1/custom_attribute_definition_handler.go diff --git a/internal/handler/api/v1/custom_attribute_definition_handler_test.go b/backend/internal/handler/api/v1/custom_attribute_definition_handler_test.go similarity index 100% rename from internal/handler/api/v1/custom_attribute_definition_handler_test.go rename to backend/internal/handler/api/v1/custom_attribute_definition_handler_test.go diff --git a/internal/handler/api/v1/custom_attribute_definition_handler_test.go_BAK b/backend/internal/handler/api/v1/custom_attribute_definition_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/custom_attribute_definition_handler_test.go_BAK rename to backend/internal/handler/api/v1/custom_attribute_definition_handler_test.go_BAK diff --git a/internal/handler/api/v1/custom_attribute_value_handler.go b/backend/internal/handler/api/v1/custom_attribute_value_handler.go similarity index 100% rename from internal/handler/api/v1/custom_attribute_value_handler.go rename to backend/internal/handler/api/v1/custom_attribute_value_handler.go diff --git a/internal/handler/api/v1/custom_attribute_value_handler_test.go b/backend/internal/handler/api/v1/custom_attribute_value_handler_test.go similarity index 100% rename from internal/handler/api/v1/custom_attribute_value_handler_test.go rename to backend/internal/handler/api/v1/custom_attribute_value_handler_test.go diff --git a/internal/handler/api/v1/custom_filter_handler.go b/backend/internal/handler/api/v1/custom_filter_handler.go similarity index 100% rename from internal/handler/api/v1/custom_filter_handler.go rename to backend/internal/handler/api/v1/custom_filter_handler.go diff --git a/internal/handler/api/v1/custom_filter_handler_test.go b/backend/internal/handler/api/v1/custom_filter_handler_test.go similarity index 100% rename from internal/handler/api/v1/custom_filter_handler_test.go rename to backend/internal/handler/api/v1/custom_filter_handler_test.go diff --git a/internal/handler/api/v1/custom_filter_handler_test.go_BAK b/backend/internal/handler/api/v1/custom_filter_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/custom_filter_handler_test.go_BAK rename to backend/internal/handler/api/v1/custom_filter_handler_test.go_BAK diff --git a/internal/handler/api/v1/custom_role_handler.go b/backend/internal/handler/api/v1/custom_role_handler.go similarity index 100% rename from internal/handler/api/v1/custom_role_handler.go rename to backend/internal/handler/api/v1/custom_role_handler.go diff --git a/internal/handler/api/v1/custom_role_handler_test.go b/backend/internal/handler/api/v1/custom_role_handler_test.go similarity index 100% rename from internal/handler/api/v1/custom_role_handler_test.go rename to backend/internal/handler/api/v1/custom_role_handler_test.go diff --git a/internal/handler/api/v1/dashboard_app_handler.go b/backend/internal/handler/api/v1/dashboard_app_handler.go similarity index 100% rename from internal/handler/api/v1/dashboard_app_handler.go rename to backend/internal/handler/api/v1/dashboard_app_handler.go diff --git a/internal/handler/api/v1/dashboard_app_handler_test.go b/backend/internal/handler/api/v1/dashboard_app_handler_test.go similarity index 100% rename from internal/handler/api/v1/dashboard_app_handler_test.go rename to backend/internal/handler/api/v1/dashboard_app_handler_test.go diff --git a/internal/handler/api/v1/delivery_status_handler.go b/backend/internal/handler/api/v1/delivery_status_handler.go similarity index 100% rename from internal/handler/api/v1/delivery_status_handler.go rename to backend/internal/handler/api/v1/delivery_status_handler.go diff --git a/internal/handler/api/v1/delivery_status_handler_test.go b/backend/internal/handler/api/v1/delivery_status_handler_test.go similarity index 100% rename from internal/handler/api/v1/delivery_status_handler_test.go rename to backend/internal/handler/api/v1/delivery_status_handler_test.go diff --git a/internal/handler/api/v1/draft_message_handler.go b/backend/internal/handler/api/v1/draft_message_handler.go similarity index 100% rename from internal/handler/api/v1/draft_message_handler.go rename to backend/internal/handler/api/v1/draft_message_handler.go diff --git a/internal/handler/api/v1/draft_message_handler_test.go b/backend/internal/handler/api/v1/draft_message_handler_test.go similarity index 100% rename from internal/handler/api/v1/draft_message_handler_test.go rename to backend/internal/handler/api/v1/draft_message_handler_test.go diff --git a/internal/handler/api/v1/draft_message_search_count_test.go b/backend/internal/handler/api/v1/draft_message_search_count_test.go similarity index 100% rename from internal/handler/api/v1/draft_message_search_count_test.go rename to backend/internal/handler/api/v1/draft_message_search_count_test.go diff --git a/internal/handler/api/v1/dyte_integration_handler.go b/backend/internal/handler/api/v1/dyte_integration_handler.go similarity index 100% rename from internal/handler/api/v1/dyte_integration_handler.go rename to backend/internal/handler/api/v1/dyte_integration_handler.go diff --git a/internal/handler/api/v1/dyte_integration_handler_test.go b/backend/internal/handler/api/v1/dyte_integration_handler_test.go similarity index 100% rename from internal/handler/api/v1/dyte_integration_handler_test.go rename to backend/internal/handler/api/v1/dyte_integration_handler_test.go diff --git a/internal/handler/api/v1/email_channel_handler.go b/backend/internal/handler/api/v1/email_channel_handler.go similarity index 100% rename from internal/handler/api/v1/email_channel_handler.go rename to backend/internal/handler/api/v1/email_channel_handler.go diff --git a/internal/handler/api/v1/email_channel_handler_test.go b/backend/internal/handler/api/v1/email_channel_handler_test.go similarity index 100% rename from internal/handler/api/v1/email_channel_handler_test.go rename to backend/internal/handler/api/v1/email_channel_handler_test.go diff --git a/internal/handler/api/v1/email_channel_migration_handler.go b/backend/internal/handler/api/v1/email_channel_migration_handler.go similarity index 100% rename from internal/handler/api/v1/email_channel_migration_handler.go rename to backend/internal/handler/api/v1/email_channel_migration_handler.go diff --git a/internal/handler/api/v1/email_channel_migration_handler_test.go b/backend/internal/handler/api/v1/email_channel_migration_handler_test.go similarity index 100% rename from internal/handler/api/v1/email_channel_migration_handler_test.go rename to backend/internal/handler/api/v1/email_channel_migration_handler_test.go diff --git a/internal/handler/api/v1/email_oauth_authorization.go b/backend/internal/handler/api/v1/email_oauth_authorization.go similarity index 100% rename from internal/handler/api/v1/email_oauth_authorization.go rename to backend/internal/handler/api/v1/email_oauth_authorization.go diff --git a/internal/handler/api/v1/email_oauth_authorization_test.go b/backend/internal/handler/api/v1/email_oauth_authorization_test.go similarity index 100% rename from internal/handler/api/v1/email_oauth_authorization_test.go rename to backend/internal/handler/api/v1/email_oauth_authorization_test.go diff --git a/internal/handler/api/v1/enterprise_account_handler.go b/backend/internal/handler/api/v1/enterprise_account_handler.go similarity index 100% rename from internal/handler/api/v1/enterprise_account_handler.go rename to backend/internal/handler/api/v1/enterprise_account_handler.go diff --git a/internal/handler/api/v1/enterprise_account_handler_test.go b/backend/internal/handler/api/v1/enterprise_account_handler_test.go similarity index 100% rename from internal/handler/api/v1/enterprise_account_handler_test.go rename to backend/internal/handler/api/v1/enterprise_account_handler_test.go diff --git a/internal/handler/api/v1/facebook_callbacks_handler_test.go b/backend/internal/handler/api/v1/facebook_callbacks_handler_test.go similarity index 100% rename from internal/handler/api/v1/facebook_callbacks_handler_test.go rename to backend/internal/handler/api/v1/facebook_callbacks_handler_test.go diff --git a/internal/handler/api/v1/facebook_channel_handler.go b/backend/internal/handler/api/v1/facebook_channel_handler.go similarity index 100% rename from internal/handler/api/v1/facebook_channel_handler.go rename to backend/internal/handler/api/v1/facebook_channel_handler.go diff --git a/internal/handler/api/v1/facebook_channel_handler.go.bak2 b/backend/internal/handler/api/v1/facebook_channel_handler.go.bak2 similarity index 100% rename from internal/handler/api/v1/facebook_channel_handler.go.bak2 rename to backend/internal/handler/api/v1/facebook_channel_handler.go.bak2 diff --git a/internal/handler/api/v1/facebook_channel_handler.go_BAK2 b/backend/internal/handler/api/v1/facebook_channel_handler.go_BAK2 similarity index 100% rename from internal/handler/api/v1/facebook_channel_handler.go_BAK2 rename to backend/internal/handler/api/v1/facebook_channel_handler.go_BAK2 diff --git a/internal/handler/api/v1/folder_handler.go b/backend/internal/handler/api/v1/folder_handler.go similarity index 100% rename from internal/handler/api/v1/folder_handler.go rename to backend/internal/handler/api/v1/folder_handler.go diff --git a/internal/handler/api/v1/folder_handler_test.go b/backend/internal/handler/api/v1/folder_handler_test.go similarity index 100% rename from internal/handler/api/v1/folder_handler_test.go rename to backend/internal/handler/api/v1/folder_handler_test.go diff --git a/internal/handler/api/v1/folder_handler_test.go_BAK b/backend/internal/handler/api/v1/folder_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/folder_handler_test.go_BAK rename to backend/internal/handler/api/v1/folder_handler_test.go_BAK diff --git a/internal/handler/api/v1/google_channel_handler.go b/backend/internal/handler/api/v1/google_channel_handler.go similarity index 100% rename from internal/handler/api/v1/google_channel_handler.go rename to backend/internal/handler/api/v1/google_channel_handler.go diff --git a/internal/handler/api/v1/helpers.go b/backend/internal/handler/api/v1/helpers.go similarity index 100% rename from internal/handler/api/v1/helpers.go rename to backend/internal/handler/api/v1/helpers.go diff --git a/internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go b/backend/internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go similarity index 100% rename from internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go rename to backend/internal/handler/api/v1/inbox_agentbot_avatar_campaigns_test.go diff --git a/internal/handler/api/v1/inbox_csat_template_handler.go b/backend/internal/handler/api/v1/inbox_csat_template_handler.go similarity index 100% rename from internal/handler/api/v1/inbox_csat_template_handler.go rename to backend/internal/handler/api/v1/inbox_csat_template_handler.go diff --git a/internal/handler/api/v1/inbox_csat_template_handler_test.go b/backend/internal/handler/api/v1/inbox_csat_template_handler_test.go similarity index 100% rename from internal/handler/api/v1/inbox_csat_template_handler_test.go rename to backend/internal/handler/api/v1/inbox_csat_template_handler_test.go diff --git a/internal/handler/api/v1/inbox_handler.go b/backend/internal/handler/api/v1/inbox_handler.go similarity index 100% rename from internal/handler/api/v1/inbox_handler.go rename to backend/internal/handler/api/v1/inbox_handler.go diff --git a/internal/handler/api/v1/inbox_handler_edge_test.go b/backend/internal/handler/api/v1/inbox_handler_edge_test.go similarity index 100% rename from internal/handler/api/v1/inbox_handler_edge_test.go rename to backend/internal/handler/api/v1/inbox_handler_edge_test.go diff --git a/internal/handler/api/v1/inbox_handler_parity_test.go b/backend/internal/handler/api/v1/inbox_handler_parity_test.go similarity index 100% rename from internal/handler/api/v1/inbox_handler_parity_test.go rename to backend/internal/handler/api/v1/inbox_handler_parity_test.go diff --git a/internal/handler/api/v1/inbox_handler_test.go b/backend/internal/handler/api/v1/inbox_handler_test.go similarity index 100% rename from internal/handler/api/v1/inbox_handler_test.go rename to backend/internal/handler/api/v1/inbox_handler_test.go diff --git a/internal/handler/api/v1/inbox_handler_test.go_BAK b/backend/internal/handler/api/v1/inbox_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/inbox_handler_test.go_BAK rename to backend/internal/handler/api/v1/inbox_handler_test.go_BAK diff --git a/internal/handler/api/v1/inbox_limit_handler.go b/backend/internal/handler/api/v1/inbox_limit_handler.go similarity index 100% rename from internal/handler/api/v1/inbox_limit_handler.go rename to backend/internal/handler/api/v1/inbox_limit_handler.go diff --git a/internal/handler/api/v1/inbox_limit_handler_test.go b/backend/internal/handler/api/v1/inbox_limit_handler_test.go similarity index 100% rename from internal/handler/api/v1/inbox_limit_handler_test.go rename to backend/internal/handler/api/v1/inbox_limit_handler_test.go diff --git a/internal/handler/api/v1/inbox_member_handler.go b/backend/internal/handler/api/v1/inbox_member_handler.go similarity index 100% rename from internal/handler/api/v1/inbox_member_handler.go rename to backend/internal/handler/api/v1/inbox_member_handler.go diff --git a/internal/handler/api/v1/inbox_member_handler_test.go b/backend/internal/handler/api/v1/inbox_member_handler_test.go similarity index 100% rename from internal/handler/api/v1/inbox_member_handler_test.go rename to backend/internal/handler/api/v1/inbox_member_handler_test.go diff --git a/internal/handler/api/v1/inbox_member_handler_test.go_BAK b/backend/internal/handler/api/v1/inbox_member_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/inbox_member_handler_test.go_BAK rename to backend/internal/handler/api/v1/inbox_member_handler_test.go_BAK diff --git a/internal/handler/api/v1/inbox_serializer.go b/backend/internal/handler/api/v1/inbox_serializer.go similarity index 100% rename from internal/handler/api/v1/inbox_serializer.go rename to backend/internal/handler/api/v1/inbox_serializer.go diff --git a/internal/handler/api/v1/instagram_channel_handler.go b/backend/internal/handler/api/v1/instagram_channel_handler.go similarity index 100% rename from internal/handler/api/v1/instagram_channel_handler.go rename to backend/internal/handler/api/v1/instagram_channel_handler.go diff --git a/internal/handler/api/v1/instagram_channel_handler.go_BAK2 b/backend/internal/handler/api/v1/instagram_channel_handler.go_BAK2 similarity index 100% rename from internal/handler/api/v1/instagram_channel_handler.go_BAK2 rename to backend/internal/handler/api/v1/instagram_channel_handler.go_BAK2 diff --git a/internal/handler/api/v1/installation_config_handler.go b/backend/internal/handler/api/v1/installation_config_handler.go similarity index 100% rename from internal/handler/api/v1/installation_config_handler.go rename to backend/internal/handler/api/v1/installation_config_handler.go diff --git a/internal/handler/api/v1/installation_config_handler_test.go b/backend/internal/handler/api/v1/installation_config_handler_test.go similarity index 100% rename from internal/handler/api/v1/installation_config_handler_test.go rename to backend/internal/handler/api/v1/installation_config_handler_test.go diff --git a/internal/handler/api/v1/integration_hook_handler.go b/backend/internal/handler/api/v1/integration_hook_handler.go similarity index 100% rename from internal/handler/api/v1/integration_hook_handler.go rename to backend/internal/handler/api/v1/integration_hook_handler.go diff --git a/internal/handler/api/v1/integration_hook_handler_suite_test.go b/backend/internal/handler/api/v1/integration_hook_handler_suite_test.go similarity index 100% rename from internal/handler/api/v1/integration_hook_handler_suite_test.go rename to backend/internal/handler/api/v1/integration_hook_handler_suite_test.go diff --git a/internal/handler/api/v1/integration_hook_handler_test.go b/backend/internal/handler/api/v1/integration_hook_handler_test.go similarity index 100% rename from internal/handler/api/v1/integration_hook_handler_test.go rename to backend/internal/handler/api/v1/integration_hook_handler_test.go diff --git a/internal/handler/api/v1/label_handler.go b/backend/internal/handler/api/v1/label_handler.go similarity index 100% rename from internal/handler/api/v1/label_handler.go rename to backend/internal/handler/api/v1/label_handler.go diff --git a/internal/handler/api/v1/label_handler_test.go b/backend/internal/handler/api/v1/label_handler_test.go similarity index 100% rename from internal/handler/api/v1/label_handler_test.go rename to backend/internal/handler/api/v1/label_handler_test.go diff --git a/internal/handler/api/v1/ldap_handler.go b/backend/internal/handler/api/v1/ldap_handler.go similarity index 100% rename from internal/handler/api/v1/ldap_handler.go rename to backend/internal/handler/api/v1/ldap_handler.go diff --git a/internal/handler/api/v1/line_channel_handler.go b/backend/internal/handler/api/v1/line_channel_handler.go similarity index 100% rename from internal/handler/api/v1/line_channel_handler.go rename to backend/internal/handler/api/v1/line_channel_handler.go diff --git a/internal/handler/api/v1/line_channel_handler_test.go b/backend/internal/handler/api/v1/line_channel_handler_test.go similarity index 100% rename from internal/handler/api/v1/line_channel_handler_test.go rename to backend/internal/handler/api/v1/line_channel_handler_test.go diff --git a/internal/handler/api/v1/linear_integration_handler.go b/backend/internal/handler/api/v1/linear_integration_handler.go similarity index 100% rename from internal/handler/api/v1/linear_integration_handler.go rename to backend/internal/handler/api/v1/linear_integration_handler.go diff --git a/internal/handler/api/v1/linear_integration_handler_test.go b/backend/internal/handler/api/v1/linear_integration_handler_test.go similarity index 100% rename from internal/handler/api/v1/linear_integration_handler_test.go rename to backend/internal/handler/api/v1/linear_integration_handler_test.go diff --git a/internal/handler/api/v1/linear_integration_handler_test.go.bak b/backend/internal/handler/api/v1/linear_integration_handler_test.go.bak similarity index 100% rename from internal/handler/api/v1/linear_integration_handler_test.go.bak rename to backend/internal/handler/api/v1/linear_integration_handler_test.go.bak diff --git a/internal/handler/api/v1/linear_integration_handler_test.go.bak2 b/backend/internal/handler/api/v1/linear_integration_handler_test.go.bak2 similarity index 100% rename from internal/handler/api/v1/linear_integration_handler_test.go.bak2 rename to backend/internal/handler/api/v1/linear_integration_handler_test.go.bak2 diff --git a/internal/handler/api/v1/live_report_handler.go b/backend/internal/handler/api/v1/live_report_handler.go similarity index 100% rename from internal/handler/api/v1/live_report_handler.go rename to backend/internal/handler/api/v1/live_report_handler.go diff --git a/internal/handler/api/v1/live_report_handler_test.go b/backend/internal/handler/api/v1/live_report_handler_test.go similarity index 100% rename from internal/handler/api/v1/live_report_handler_test.go rename to backend/internal/handler/api/v1/live_report_handler_test.go diff --git a/internal/handler/api/v1/macro_handler.go b/backend/internal/handler/api/v1/macro_handler.go similarity index 100% rename from internal/handler/api/v1/macro_handler.go rename to backend/internal/handler/api/v1/macro_handler.go diff --git a/internal/handler/api/v1/macro_handler_test.go b/backend/internal/handler/api/v1/macro_handler_test.go similarity index 100% rename from internal/handler/api/v1/macro_handler_test.go rename to backend/internal/handler/api/v1/macro_handler_test.go diff --git a/internal/handler/api/v1/message_handler.go b/backend/internal/handler/api/v1/message_handler.go similarity index 100% rename from internal/handler/api/v1/message_handler.go rename to backend/internal/handler/api/v1/message_handler.go diff --git a/internal/handler/api/v1/message_handler_edge_test.go b/backend/internal/handler/api/v1/message_handler_edge_test.go similarity index 100% rename from internal/handler/api/v1/message_handler_edge_test.go rename to backend/internal/handler/api/v1/message_handler_edge_test.go diff --git a/internal/handler/api/v1/message_handler_test.go b/backend/internal/handler/api/v1/message_handler_test.go similarity index 100% rename from internal/handler/api/v1/message_handler_test.go rename to backend/internal/handler/api/v1/message_handler_test.go diff --git a/internal/handler/api/v1/message_handler_test.go_BAK b/backend/internal/handler/api/v1/message_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/message_handler_test.go_BAK rename to backend/internal/handler/api/v1/message_handler_test.go_BAK diff --git a/internal/handler/api/v1/mfa_handler.go b/backend/internal/handler/api/v1/mfa_handler.go similarity index 100% rename from internal/handler/api/v1/mfa_handler.go rename to backend/internal/handler/api/v1/mfa_handler.go diff --git a/internal/handler/api/v1/mfa_handler_test.go b/backend/internal/handler/api/v1/mfa_handler_test.go similarity index 100% rename from internal/handler/api/v1/mfa_handler_test.go rename to backend/internal/handler/api/v1/mfa_handler_test.go diff --git a/internal/handler/api/v1/microsoft_channel_handler.go b/backend/internal/handler/api/v1/microsoft_channel_handler.go similarity index 100% rename from internal/handler/api/v1/microsoft_channel_handler.go rename to backend/internal/handler/api/v1/microsoft_channel_handler.go diff --git a/internal/handler/api/v1/note_handler.go b/backend/internal/handler/api/v1/note_handler.go similarity index 100% rename from internal/handler/api/v1/note_handler.go rename to backend/internal/handler/api/v1/note_handler.go diff --git a/internal/handler/api/v1/note_handler_test.go b/backend/internal/handler/api/v1/note_handler_test.go similarity index 100% rename from internal/handler/api/v1/note_handler_test.go rename to backend/internal/handler/api/v1/note_handler_test.go diff --git a/internal/handler/api/v1/notification_handler.go b/backend/internal/handler/api/v1/notification_handler.go similarity index 100% rename from internal/handler/api/v1/notification_handler.go rename to backend/internal/handler/api/v1/notification_handler.go diff --git a/internal/handler/api/v1/notification_handler_test.go b/backend/internal/handler/api/v1/notification_handler_test.go similarity index 100% rename from internal/handler/api/v1/notification_handler_test.go rename to backend/internal/handler/api/v1/notification_handler_test.go diff --git a/internal/handler/api/v1/notification_handler_test.go_BAK b/backend/internal/handler/api/v1/notification_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/notification_handler_test.go_BAK rename to backend/internal/handler/api/v1/notification_handler_test.go_BAK diff --git a/internal/handler/api/v1/notification_setting_handler.go b/backend/internal/handler/api/v1/notification_setting_handler.go similarity index 100% rename from internal/handler/api/v1/notification_setting_handler.go rename to backend/internal/handler/api/v1/notification_setting_handler.go diff --git a/internal/handler/api/v1/notification_setting_handler_test.go b/backend/internal/handler/api/v1/notification_setting_handler_test.go similarity index 100% rename from internal/handler/api/v1/notification_setting_handler_test.go rename to backend/internal/handler/api/v1/notification_setting_handler_test.go diff --git a/internal/handler/api/v1/notification_subscription_handler.go b/backend/internal/handler/api/v1/notification_subscription_handler.go similarity index 100% rename from internal/handler/api/v1/notification_subscription_handler.go rename to backend/internal/handler/api/v1/notification_subscription_handler.go diff --git a/internal/handler/api/v1/notification_subscription_handler_test.go b/backend/internal/handler/api/v1/notification_subscription_handler_test.go similarity index 100% rename from internal/handler/api/v1/notification_subscription_handler_test.go rename to backend/internal/handler/api/v1/notification_subscription_handler_test.go diff --git a/internal/handler/api/v1/notion_integration_handler.go b/backend/internal/handler/api/v1/notion_integration_handler.go similarity index 100% rename from internal/handler/api/v1/notion_integration_handler.go rename to backend/internal/handler/api/v1/notion_integration_handler.go diff --git a/internal/handler/api/v1/notion_integration_handler_test.go b/backend/internal/handler/api/v1/notion_integration_handler_test.go similarity index 100% rename from internal/handler/api/v1/notion_integration_handler_test.go rename to backend/internal/handler/api/v1/notion_integration_handler_test.go diff --git a/internal/handler/api/v1/oidc_handler.go b/backend/internal/handler/api/v1/oidc_handler.go similarity index 100% rename from internal/handler/api/v1/oidc_handler.go rename to backend/internal/handler/api/v1/oidc_handler.go diff --git a/internal/handler/api/v1/platform_account_handler.go b/backend/internal/handler/api/v1/platform_account_handler.go similarity index 100% rename from internal/handler/api/v1/platform_account_handler.go rename to backend/internal/handler/api/v1/platform_account_handler.go diff --git a/internal/handler/api/v1/platform_account_user_handler.go b/backend/internal/handler/api/v1/platform_account_user_handler.go similarity index 100% rename from internal/handler/api/v1/platform_account_user_handler.go rename to backend/internal/handler/api/v1/platform_account_user_handler.go diff --git a/internal/handler/api/v1/platform_agent_bot_handler.go b/backend/internal/handler/api/v1/platform_agent_bot_handler.go similarity index 100% rename from internal/handler/api/v1/platform_agent_bot_handler.go rename to backend/internal/handler/api/v1/platform_agent_bot_handler.go diff --git a/internal/handler/api/v1/platform_agent_bot_handler_test.go b/backend/internal/handler/api/v1/platform_agent_bot_handler_test.go similarity index 100% rename from internal/handler/api/v1/platform_agent_bot_handler_test.go rename to backend/internal/handler/api/v1/platform_agent_bot_handler_test.go diff --git a/internal/handler/api/v1/platform_e2e_test.go b/backend/internal/handler/api/v1/platform_e2e_test.go similarity index 100% rename from internal/handler/api/v1/platform_e2e_test.go rename to backend/internal/handler/api/v1/platform_e2e_test.go diff --git a/internal/handler/api/v1/platform_handler.go b/backend/internal/handler/api/v1/platform_handler.go similarity index 100% rename from internal/handler/api/v1/platform_handler.go rename to backend/internal/handler/api/v1/platform_handler.go diff --git a/internal/handler/api/v1/platform_handler_test.go_BAK b/backend/internal/handler/api/v1/platform_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/platform_handler_test.go_BAK rename to backend/internal/handler/api/v1/platform_handler_test.go_BAK diff --git a/internal/handler/api/v1/platform_user_handler.go b/backend/internal/handler/api/v1/platform_user_handler.go similarity index 100% rename from internal/handler/api/v1/platform_user_handler.go rename to backend/internal/handler/api/v1/platform_user_handler.go diff --git a/internal/handler/api/v1/platform_user_sso_handler.go b/backend/internal/handler/api/v1/platform_user_sso_handler.go similarity index 100% rename from internal/handler/api/v1/platform_user_sso_handler.go rename to backend/internal/handler/api/v1/platform_user_sso_handler.go diff --git a/internal/handler/api/v1/platform_user_sso_handler_test.go b/backend/internal/handler/api/v1/platform_user_sso_handler_test.go similarity index 100% rename from internal/handler/api/v1/platform_user_sso_handler_test.go rename to backend/internal/handler/api/v1/platform_user_sso_handler_test.go diff --git a/internal/handler/api/v1/portal_handler.go b/backend/internal/handler/api/v1/portal_handler.go similarity index 100% rename from internal/handler/api/v1/portal_handler.go rename to backend/internal/handler/api/v1/portal_handler.go diff --git a/internal/handler/api/v1/portal_handler_test.go b/backend/internal/handler/api/v1/portal_handler_test.go similarity index 100% rename from internal/handler/api/v1/portal_handler_test.go rename to backend/internal/handler/api/v1/portal_handler_test.go diff --git a/internal/handler/api/v1/portal_handler_test.go_BAK b/backend/internal/handler/api/v1/portal_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/portal_handler_test.go_BAK rename to backend/internal/handler/api/v1/portal_handler_test.go_BAK diff --git a/internal/handler/api/v1/portal_member_handler.go b/backend/internal/handler/api/v1/portal_member_handler.go similarity index 100% rename from internal/handler/api/v1/portal_member_handler.go rename to backend/internal/handler/api/v1/portal_member_handler.go diff --git a/internal/handler/api/v1/portal_member_handler_test.go b/backend/internal/handler/api/v1/portal_member_handler_test.go similarity index 100% rename from internal/handler/api/v1/portal_member_handler_test.go rename to backend/internal/handler/api/v1/portal_member_handler_test.go diff --git a/internal/handler/api/v1/portal_member_handler_test.go_BAK b/backend/internal/handler/api/v1/portal_member_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/portal_member_handler_test.go_BAK rename to backend/internal/handler/api/v1/portal_member_handler_test.go_BAK diff --git a/internal/handler/api/v1/profile_handler.go b/backend/internal/handler/api/v1/profile_handler.go similarity index 100% rename from internal/handler/api/v1/profile_handler.go rename to backend/internal/handler/api/v1/profile_handler.go diff --git a/internal/handler/api/v1/profile_handler_test.go b/backend/internal/handler/api/v1/profile_handler_test.go similarity index 100% rename from internal/handler/api/v1/profile_handler_test.go rename to backend/internal/handler/api/v1/profile_handler_test.go diff --git a/internal/handler/api/v1/push_subscription_handler.go b/backend/internal/handler/api/v1/push_subscription_handler.go similarity index 100% rename from internal/handler/api/v1/push_subscription_handler.go rename to backend/internal/handler/api/v1/push_subscription_handler.go diff --git a/internal/handler/api/v1/push_subscription_handler_test.go b/backend/internal/handler/api/v1/push_subscription_handler_test.go similarity index 100% rename from internal/handler/api/v1/push_subscription_handler_test.go rename to backend/internal/handler/api/v1/push_subscription_handler_test.go diff --git a/internal/handler/api/v1/rag_handler.go b/backend/internal/handler/api/v1/rag_handler.go similarity index 100% rename from internal/handler/api/v1/rag_handler.go rename to backend/internal/handler/api/v1/rag_handler.go diff --git a/internal/handler/api/v1/rag_handler_test.go b/backend/internal/handler/api/v1/rag_handler_test.go similarity index 100% rename from internal/handler/api/v1/rag_handler_test.go rename to backend/internal/handler/api/v1/rag_handler_test.go diff --git a/internal/handler/api/v1/reporting_event_handler.go b/backend/internal/handler/api/v1/reporting_event_handler.go similarity index 100% rename from internal/handler/api/v1/reporting_event_handler.go rename to backend/internal/handler/api/v1/reporting_event_handler.go diff --git a/internal/handler/api/v1/reporting_event_handler_test.go b/backend/internal/handler/api/v1/reporting_event_handler_test.go similarity index 100% rename from internal/handler/api/v1/reporting_event_handler_test.go rename to backend/internal/handler/api/v1/reporting_event_handler_test.go diff --git a/internal/handler/api/v1/saml_handler.go b/backend/internal/handler/api/v1/saml_handler.go similarity index 100% rename from internal/handler/api/v1/saml_handler.go rename to backend/internal/handler/api/v1/saml_handler.go diff --git a/internal/handler/api/v1/search_handler.go b/backend/internal/handler/api/v1/search_handler.go similarity index 100% rename from internal/handler/api/v1/search_handler.go rename to backend/internal/handler/api/v1/search_handler.go diff --git a/internal/handler/api/v1/search_handler_test.go b/backend/internal/handler/api/v1/search_handler_test.go similarity index 100% rename from internal/handler/api/v1/search_handler_test.go rename to backend/internal/handler/api/v1/search_handler_test.go diff --git a/internal/handler/api/v1/shopify_integration_handler.go b/backend/internal/handler/api/v1/shopify_integration_handler.go similarity index 100% rename from internal/handler/api/v1/shopify_integration_handler.go rename to backend/internal/handler/api/v1/shopify_integration_handler.go diff --git a/internal/handler/api/v1/shopify_integration_handler_test.go b/backend/internal/handler/api/v1/shopify_integration_handler_test.go similarity index 100% rename from internal/handler/api/v1/shopify_integration_handler_test.go rename to backend/internal/handler/api/v1/shopify_integration_handler_test.go diff --git a/internal/handler/api/v1/sla_policy_handler.go b/backend/internal/handler/api/v1/sla_policy_handler.go similarity index 100% rename from internal/handler/api/v1/sla_policy_handler.go rename to backend/internal/handler/api/v1/sla_policy_handler.go diff --git a/internal/handler/api/v1/sla_policy_handler_test.go b/backend/internal/handler/api/v1/sla_policy_handler_test.go similarity index 100% rename from internal/handler/api/v1/sla_policy_handler_test.go rename to backend/internal/handler/api/v1/sla_policy_handler_test.go diff --git a/internal/handler/api/v1/slack_integration_handler.go b/backend/internal/handler/api/v1/slack_integration_handler.go similarity index 100% rename from internal/handler/api/v1/slack_integration_handler.go rename to backend/internal/handler/api/v1/slack_integration_handler.go diff --git a/internal/handler/api/v1/slack_integration_handler_test.go b/backend/internal/handler/api/v1/slack_integration_handler_test.go similarity index 100% rename from internal/handler/api/v1/slack_integration_handler_test.go rename to backend/internal/handler/api/v1/slack_integration_handler_test.go diff --git a/internal/handler/api/v1/social_authorization.go b/backend/internal/handler/api/v1/social_authorization.go similarity index 100% rename from internal/handler/api/v1/social_authorization.go rename to backend/internal/handler/api/v1/social_authorization.go diff --git a/internal/handler/api/v1/social_authorization_test.go b/backend/internal/handler/api/v1/social_authorization_test.go similarity index 100% rename from internal/handler/api/v1/social_authorization_test.go rename to backend/internal/handler/api/v1/social_authorization_test.go diff --git a/internal/handler/api/v1/sse_event_handler.go b/backend/internal/handler/api/v1/sse_event_handler.go similarity index 100% rename from internal/handler/api/v1/sse_event_handler.go rename to backend/internal/handler/api/v1/sse_event_handler.go diff --git a/internal/handler/api/v1/sse_event_handler_test.go b/backend/internal/handler/api/v1/sse_event_handler_test.go similarity index 100% rename from internal/handler/api/v1/sse_event_handler_test.go rename to backend/internal/handler/api/v1/sse_event_handler_test.go diff --git a/internal/handler/api/v1/sse_stream_handler.go b/backend/internal/handler/api/v1/sse_stream_handler.go similarity index 100% rename from internal/handler/api/v1/sse_stream_handler.go rename to backend/internal/handler/api/v1/sse_stream_handler.go diff --git a/internal/handler/api/v1/sse_stream_handler.go_BAK3 b/backend/internal/handler/api/v1/sse_stream_handler.go_BAK3 similarity index 100% rename from internal/handler/api/v1/sse_stream_handler.go_BAK3 rename to backend/internal/handler/api/v1/sse_stream_handler.go_BAK3 diff --git a/internal/handler/api/v1/sse_stream_handler_test.go b/backend/internal/handler/api/v1/sse_stream_handler_test.go similarity index 100% rename from internal/handler/api/v1/sse_stream_handler_test.go rename to backend/internal/handler/api/v1/sse_stream_handler_test.go diff --git a/internal/handler/api/v1/sso_session_handler.go b/backend/internal/handler/api/v1/sso_session_handler.go similarity index 100% rename from internal/handler/api/v1/sso_session_handler.go rename to backend/internal/handler/api/v1/sso_session_handler.go diff --git a/internal/handler/api/v1/summary_report_handler.go b/backend/internal/handler/api/v1/summary_report_handler.go similarity index 100% rename from internal/handler/api/v1/summary_report_handler.go rename to backend/internal/handler/api/v1/summary_report_handler.go diff --git a/internal/handler/api/v1/summary_report_handler_test.go b/backend/internal/handler/api/v1/summary_report_handler_test.go similarity index 100% rename from internal/handler/api/v1/summary_report_handler_test.go rename to backend/internal/handler/api/v1/summary_report_handler_test.go diff --git a/internal/handler/api/v1/team_handler.go b/backend/internal/handler/api/v1/team_handler.go similarity index 100% rename from internal/handler/api/v1/team_handler.go rename to backend/internal/handler/api/v1/team_handler.go diff --git a/internal/handler/api/v1/team_handler_test.go b/backend/internal/handler/api/v1/team_handler_test.go similarity index 100% rename from internal/handler/api/v1/team_handler_test.go rename to backend/internal/handler/api/v1/team_handler_test.go diff --git a/internal/handler/api/v1/team_profile_handler_test.go_BAK b/backend/internal/handler/api/v1/team_profile_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/team_profile_handler_test.go_BAK rename to backend/internal/handler/api/v1/team_profile_handler_test.go_BAK diff --git a/internal/handler/api/v1/test_helpers_auth.go b/backend/internal/handler/api/v1/test_helpers_auth.go similarity index 100% rename from internal/handler/api/v1/test_helpers_auth.go rename to backend/internal/handler/api/v1/test_helpers_auth.go diff --git a/internal/handler/api/v1/tiktok_channel_handler.go b/backend/internal/handler/api/v1/tiktok_channel_handler.go similarity index 100% rename from internal/handler/api/v1/tiktok_channel_handler.go rename to backend/internal/handler/api/v1/tiktok_channel_handler.go diff --git a/internal/handler/api/v1/tiktok_channel_handler_test.go b/backend/internal/handler/api/v1/tiktok_channel_handler_test.go similarity index 100% rename from internal/handler/api/v1/tiktok_channel_handler_test.go rename to backend/internal/handler/api/v1/tiktok_channel_handler_test.go diff --git a/internal/handler/api/v1/twilio_channel_handler.go b/backend/internal/handler/api/v1/twilio_channel_handler.go similarity index 100% rename from internal/handler/api/v1/twilio_channel_handler.go rename to backend/internal/handler/api/v1/twilio_channel_handler.go diff --git a/internal/handler/api/v1/twilio_channel_handler.go.bak b/backend/internal/handler/api/v1/twilio_channel_handler.go.bak similarity index 100% rename from internal/handler/api/v1/twilio_channel_handler.go.bak rename to backend/internal/handler/api/v1/twilio_channel_handler.go.bak diff --git a/internal/handler/api/v1/twilio_channel_handler_test.go b/backend/internal/handler/api/v1/twilio_channel_handler_test.go similarity index 100% rename from internal/handler/api/v1/twilio_channel_handler_test.go rename to backend/internal/handler/api/v1/twilio_channel_handler_test.go diff --git a/internal/handler/api/v1/twitter_authorization_handler_test.go b/backend/internal/handler/api/v1/twitter_authorization_handler_test.go similarity index 100% rename from internal/handler/api/v1/twitter_authorization_handler_test.go rename to backend/internal/handler/api/v1/twitter_authorization_handler_test.go diff --git a/internal/handler/api/v1/twitter_channel_handler.go b/backend/internal/handler/api/v1/twitter_channel_handler.go similarity index 100% rename from internal/handler/api/v1/twitter_channel_handler.go rename to backend/internal/handler/api/v1/twitter_channel_handler.go diff --git a/internal/handler/api/v1/twitter_channel_webhook_test.go b/backend/internal/handler/api/v1/twitter_channel_webhook_test.go similarity index 100% rename from internal/handler/api/v1/twitter_channel_webhook_test.go rename to backend/internal/handler/api/v1/twitter_channel_webhook_test.go diff --git a/internal/handler/api/v1/upload_handler.go b/backend/internal/handler/api/v1/upload_handler.go similarity index 100% rename from internal/handler/api/v1/upload_handler.go rename to backend/internal/handler/api/v1/upload_handler.go diff --git a/internal/handler/api/v1/upload_handler_test.go b/backend/internal/handler/api/v1/upload_handler_test.go similarity index 100% rename from internal/handler/api/v1/upload_handler_test.go rename to backend/internal/handler/api/v1/upload_handler_test.go diff --git a/internal/handler/api/v1/webhook_subscription_handler.go b/backend/internal/handler/api/v1/webhook_subscription_handler.go similarity index 100% rename from internal/handler/api/v1/webhook_subscription_handler.go rename to backend/internal/handler/api/v1/webhook_subscription_handler.go diff --git a/internal/handler/api/v1/webhook_subscription_handler_test.go b/backend/internal/handler/api/v1/webhook_subscription_handler_test.go similarity index 100% rename from internal/handler/api/v1/webhook_subscription_handler_test.go rename to backend/internal/handler/api/v1/webhook_subscription_handler_test.go diff --git a/internal/handler/api/v1/webwidget_handler.go b/backend/internal/handler/api/v1/webwidget_handler.go similarity index 100% rename from internal/handler/api/v1/webwidget_handler.go rename to backend/internal/handler/api/v1/webwidget_handler.go diff --git a/internal/handler/api/v1/webwidget_handler_test.go_BAK b/backend/internal/handler/api/v1/webwidget_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/webwidget_handler_test.go_BAK rename to backend/internal/handler/api/v1/webwidget_handler_test.go_BAK diff --git a/internal/handler/api/v1/webwidget_offline_handler.go b/backend/internal/handler/api/v1/webwidget_offline_handler.go similarity index 100% rename from internal/handler/api/v1/webwidget_offline_handler.go rename to backend/internal/handler/api/v1/webwidget_offline_handler.go diff --git a/internal/handler/api/v1/webwidget_offline_handler_test.go b/backend/internal/handler/api/v1/webwidget_offline_handler_test.go similarity index 100% rename from internal/handler/api/v1/webwidget_offline_handler_test.go rename to backend/internal/handler/api/v1/webwidget_offline_handler_test.go diff --git a/internal/handler/api/v1/webwidget_offline_handler_test.go_BAK b/backend/internal/handler/api/v1/webwidget_offline_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/webwidget_offline_handler_test.go_BAK rename to backend/internal/handler/api/v1/webwidget_offline_handler_test.go_BAK diff --git a/internal/handler/api/v1/webwidget_theme_handler.go b/backend/internal/handler/api/v1/webwidget_theme_handler.go similarity index 100% rename from internal/handler/api/v1/webwidget_theme_handler.go rename to backend/internal/handler/api/v1/webwidget_theme_handler.go diff --git a/internal/handler/api/v1/webwidget_theme_handler_test.go_BAK b/backend/internal/handler/api/v1/webwidget_theme_handler_test.go_BAK similarity index 100% rename from internal/handler/api/v1/webwidget_theme_handler_test.go_BAK rename to backend/internal/handler/api/v1/webwidget_theme_handler_test.go_BAK diff --git a/internal/handler/api/v1/whatsapp_call_handler.go b/backend/internal/handler/api/v1/whatsapp_call_handler.go similarity index 100% rename from internal/handler/api/v1/whatsapp_call_handler.go rename to backend/internal/handler/api/v1/whatsapp_call_handler.go diff --git a/internal/handler/api/v1/whatsapp_call_handler_test.go b/backend/internal/handler/api/v1/whatsapp_call_handler_test.go similarity index 100% rename from internal/handler/api/v1/whatsapp_call_handler_test.go rename to backend/internal/handler/api/v1/whatsapp_call_handler_test.go diff --git a/internal/handler/api/v1/widget_test_handler.go b/backend/internal/handler/api/v1/widget_test_handler.go similarity index 100% rename from internal/handler/api/v1/widget_test_handler.go rename to backend/internal/handler/api/v1/widget_test_handler.go diff --git a/internal/handler/api/v1/widget_test_handler_test.go b/backend/internal/handler/api/v1/widget_test_handler_test.go similarity index 100% rename from internal/handler/api/v1/widget_test_handler_test.go rename to backend/internal/handler/api/v1/widget_test_handler_test.go diff --git a/internal/handler/api/v1/working_hour_handler.go b/backend/internal/handler/api/v1/working_hour_handler.go similarity index 100% rename from internal/handler/api/v1/working_hour_handler.go rename to backend/internal/handler/api/v1/working_hour_handler.go diff --git a/internal/handler/api/v1/year_in_review_handler.go b/backend/internal/handler/api/v1/year_in_review_handler.go similarity index 100% rename from internal/handler/api/v1/year_in_review_handler.go rename to backend/internal/handler/api/v1/year_in_review_handler.go diff --git a/internal/handler/api/v1/year_in_review_handler_test.go b/backend/internal/handler/api/v1/year_in_review_handler_test.go similarity index 100% rename from internal/handler/api/v1/year_in_review_handler_test.go rename to backend/internal/handler/api/v1/year_in_review_handler_test.go diff --git a/internal/handler/api_v1/handlers.go b/backend/internal/handler/api_v1/handlers.go similarity index 100% rename from internal/handler/api_v1/handlers.go rename to backend/internal/handler/api_v1/handlers.go diff --git a/internal/handler/auth/auth.go b/backend/internal/handler/auth/auth.go similarity index 100% rename from internal/handler/auth/auth.go rename to backend/internal/handler/auth/auth.go diff --git a/internal/handler/health_handler.go b/backend/internal/handler/health_handler.go similarity index 100% rename from internal/handler/health_handler.go rename to backend/internal/handler/health_handler.go diff --git a/internal/handler/metrics_handler.go b/backend/internal/handler/metrics_handler.go similarity index 100% rename from internal/handler/metrics_handler.go rename to backend/internal/handler/metrics_handler.go diff --git a/internal/handler/webhook/email_webhook.go b/backend/internal/handler/webhook/email_webhook.go similarity index 100% rename from internal/handler/webhook/email_webhook.go rename to backend/internal/handler/webhook/email_webhook.go diff --git a/internal/handler/webhook/facebook_webhook.go b/backend/internal/handler/webhook/facebook_webhook.go similarity index 100% rename from internal/handler/webhook/facebook_webhook.go rename to backend/internal/handler/webhook/facebook_webhook.go diff --git a/internal/handler/webhook/facebook_webhook.go_BAK2 b/backend/internal/handler/webhook/facebook_webhook.go_BAK2 similarity index 100% rename from internal/handler/webhook/facebook_webhook.go_BAK2 rename to backend/internal/handler/webhook/facebook_webhook.go_BAK2 diff --git a/internal/handler/webhook/incoming_persister.go b/backend/internal/handler/webhook/incoming_persister.go similarity index 100% rename from internal/handler/webhook/incoming_persister.go rename to backend/internal/handler/webhook/incoming_persister.go diff --git a/internal/handler/webhook/incoming_persister_jobs.go b/backend/internal/handler/webhook/incoming_persister_jobs.go similarity index 100% rename from internal/handler/webhook/incoming_persister_jobs.go rename to backend/internal/handler/webhook/incoming_persister_jobs.go diff --git a/internal/handler/webhook/line_webhook.go b/backend/internal/handler/webhook/line_webhook.go similarity index 100% rename from internal/handler/webhook/line_webhook.go rename to backend/internal/handler/webhook/line_webhook.go diff --git a/internal/handler/webhook/shopify_webhook.go b/backend/internal/handler/webhook/shopify_webhook.go similarity index 100% rename from internal/handler/webhook/shopify_webhook.go rename to backend/internal/handler/webhook/shopify_webhook.go diff --git a/internal/handler/webhook/telegram_webhook.go b/backend/internal/handler/webhook/telegram_webhook.go similarity index 100% rename from internal/handler/webhook/telegram_webhook.go rename to backend/internal/handler/webhook/telegram_webhook.go diff --git a/internal/handler/webhook/tiktok_webhook.go b/backend/internal/handler/webhook/tiktok_webhook.go similarity index 100% rename from internal/handler/webhook/tiktok_webhook.go rename to backend/internal/handler/webhook/tiktok_webhook.go diff --git a/internal/handler/webhook/twilio_webhook.go b/backend/internal/handler/webhook/twilio_webhook.go similarity index 100% rename from internal/handler/webhook/twilio_webhook.go rename to backend/internal/handler/webhook/twilio_webhook.go diff --git a/internal/handler/webhook/webhook_handler.go b/backend/internal/handler/webhook/webhook_handler.go similarity index 100% rename from internal/handler/webhook/webhook_handler.go rename to backend/internal/handler/webhook/webhook_handler.go diff --git a/internal/handler/webhook/webhook_lookup_test.go b/backend/internal/handler/webhook/webhook_lookup_test.go similarity index 100% rename from internal/handler/webhook/webhook_lookup_test.go rename to backend/internal/handler/webhook/webhook_lookup_test.go diff --git a/internal/handler/webhook/whatsapp_webhook.go b/backend/internal/handler/webhook/whatsapp_webhook.go similarity index 100% rename from internal/handler/webhook/whatsapp_webhook.go rename to backend/internal/handler/webhook/whatsapp_webhook.go diff --git a/internal/handler/widget/widget_handler.go b/backend/internal/handler/widget/widget_handler.go similarity index 100% rename from internal/handler/widget/widget_handler.go rename to backend/internal/handler/widget/widget_handler.go diff --git a/internal/handler/widget/widget_handler_test.go b/backend/internal/handler/widget/widget_handler_test.go similarity index 100% rename from internal/handler/widget/widget_handler_test.go rename to backend/internal/handler/widget/widget_handler_test.go diff --git a/internal/handler/widget/widget_theme_handler.go b/backend/internal/handler/widget/widget_theme_handler.go similarity index 100% rename from internal/handler/widget/widget_theme_handler.go rename to backend/internal/handler/widget/widget_theme_handler.go diff --git a/internal/handler/widget/widget_theme_handler_test.go b/backend/internal/handler/widget/widget_theme_handler_test.go similarity index 100% rename from internal/handler/widget/widget_theme_handler_test.go rename to backend/internal/handler/widget/widget_theme_handler_test.go diff --git a/internal/handler/ws/handler.go b/backend/internal/handler/ws/handler.go similarity index 100% rename from internal/handler/ws/handler.go rename to backend/internal/handler/ws/handler.go diff --git a/internal/handler/ws/hub.go b/backend/internal/handler/ws/hub.go similarity index 100% rename from internal/handler/ws/hub.go rename to backend/internal/handler/ws/hub.go diff --git a/internal/handler/ws/protocol.go b/backend/internal/handler/ws/protocol.go similarity index 100% rename from internal/handler/ws/protocol.go rename to backend/internal/handler/ws/protocol.go diff --git a/internal/handler/ws/subscriber.go b/backend/internal/handler/ws/subscriber.go similarity index 100% rename from internal/handler/ws/subscriber.go rename to backend/internal/handler/ws/subscriber.go diff --git a/internal/llm/llm_test.go b/backend/internal/llm/llm_test.go similarity index 100% rename from internal/llm/llm_test.go rename to backend/internal/llm/llm_test.go diff --git a/internal/llm/openai_provider.go b/backend/internal/llm/openai_provider.go similarity index 100% rename from internal/llm/openai_provider.go rename to backend/internal/llm/openai_provider.go diff --git a/internal/llm/provider.go b/backend/internal/llm/provider.go similarity index 100% rename from internal/llm/provider.go rename to backend/internal/llm/provider.go diff --git a/internal/middleware/account_scope.go b/backend/internal/middleware/account_scope.go similarity index 100% rename from internal/middleware/account_scope.go rename to backend/internal/middleware/account_scope.go diff --git a/internal/middleware/account_scope_test.go b/backend/internal/middleware/account_scope_test.go similarity index 100% rename from internal/middleware/account_scope_test.go rename to backend/internal/middleware/account_scope_test.go diff --git a/internal/middleware/auth.go b/backend/internal/middleware/auth.go similarity index 100% rename from internal/middleware/auth.go rename to backend/internal/middleware/auth.go diff --git a/internal/middleware/auth_test.go b/backend/internal/middleware/auth_test.go similarity index 100% rename from internal/middleware/auth_test.go rename to backend/internal/middleware/auth_test.go diff --git a/internal/middleware/cors.go b/backend/internal/middleware/cors.go similarity index 100% rename from internal/middleware/cors.go rename to backend/internal/middleware/cors.go diff --git a/internal/middleware/cors_logger.go b/backend/internal/middleware/cors_logger.go similarity index 100% rename from internal/middleware/cors_logger.go rename to backend/internal/middleware/cors_logger.go diff --git a/internal/middleware/cors_test.go b/backend/internal/middleware/cors_test.go similarity index 100% rename from internal/middleware/cors_test.go rename to backend/internal/middleware/cors_test.go diff --git a/internal/middleware/csrf.go b/backend/internal/middleware/csrf.go similarity index 100% rename from internal/middleware/csrf.go rename to backend/internal/middleware/csrf.go diff --git a/internal/middleware/csrf_test.go b/backend/internal/middleware/csrf_test.go similarity index 100% rename from internal/middleware/csrf_test.go rename to backend/internal/middleware/csrf_test.go diff --git a/internal/middleware/feature_flag.go b/backend/internal/middleware/feature_flag.go similarity index 100% rename from internal/middleware/feature_flag.go rename to backend/internal/middleware/feature_flag.go diff --git a/internal/middleware/feature_flag_test.go b/backend/internal/middleware/feature_flag_test.go similarity index 100% rename from internal/middleware/feature_flag_test.go rename to backend/internal/middleware/feature_flag_test.go diff --git a/internal/middleware/logger.go b/backend/internal/middleware/logger.go similarity index 100% rename from internal/middleware/logger.go rename to backend/internal/middleware/logger.go diff --git a/internal/middleware/logger_recovery_test.go b/backend/internal/middleware/logger_recovery_test.go similarity index 100% rename from internal/middleware/logger_recovery_test.go rename to backend/internal/middleware/logger_recovery_test.go diff --git a/internal/middleware/platform_app_auth.go b/backend/internal/middleware/platform_app_auth.go similarity index 100% rename from internal/middleware/platform_app_auth.go rename to backend/internal/middleware/platform_app_auth.go diff --git a/internal/middleware/platform_app_auth_test.go b/backend/internal/middleware/platform_app_auth_test.go similarity index 100% rename from internal/middleware/platform_app_auth_test.go rename to backend/internal/middleware/platform_app_auth_test.go diff --git a/internal/middleware/policy.go b/backend/internal/middleware/policy.go similarity index 100% rename from internal/middleware/policy.go rename to backend/internal/middleware/policy.go diff --git a/internal/middleware/policy_test.go b/backend/internal/middleware/policy_test.go similarity index 100% rename from internal/middleware/policy_test.go rename to backend/internal/middleware/policy_test.go diff --git a/internal/middleware/rate_limit.go b/backend/internal/middleware/rate_limit.go similarity index 100% rename from internal/middleware/rate_limit.go rename to backend/internal/middleware/rate_limit.go diff --git a/internal/middleware/rate_limit_test.go b/backend/internal/middleware/rate_limit_test.go similarity index 100% rename from internal/middleware/rate_limit_test.go rename to backend/internal/middleware/rate_limit_test.go diff --git a/internal/middleware/recovery.go b/backend/internal/middleware/recovery.go similarity index 100% rename from internal/middleware/recovery.go rename to backend/internal/middleware/recovery.go diff --git a/internal/middleware/role_check.go b/backend/internal/middleware/role_check.go similarity index 100% rename from internal/middleware/role_check.go rename to backend/internal/middleware/role_check.go diff --git a/internal/middleware/role_check_test.go b/backend/internal/middleware/role_check_test.go similarity index 100% rename from internal/middleware/role_check_test.go rename to backend/internal/middleware/role_check_test.go diff --git a/internal/middleware/security_headers.go b/backend/internal/middleware/security_headers.go similarity index 100% rename from internal/middleware/security_headers.go rename to backend/internal/middleware/security_headers.go diff --git a/internal/middleware/security_headers_test.go b/backend/internal/middleware/security_headers_test.go similarity index 100% rename from internal/middleware/security_headers_test.go rename to backend/internal/middleware/security_headers_test.go diff --git a/internal/middleware/session.go b/backend/internal/middleware/session.go similarity index 100% rename from internal/middleware/session.go rename to backend/internal/middleware/session.go diff --git a/internal/middleware/session_test.go b/backend/internal/middleware/session_test.go similarity index 100% rename from internal/middleware/session_test.go rename to backend/internal/middleware/session_test.go diff --git a/internal/middleware/super_admin.go b/backend/internal/middleware/super_admin.go similarity index 100% rename from internal/middleware/super_admin.go rename to backend/internal/middleware/super_admin.go diff --git a/internal/middleware/super_admin_test.go b/backend/internal/middleware/super_admin_test.go similarity index 100% rename from internal/middleware/super_admin_test.go rename to backend/internal/middleware/super_admin_test.go diff --git a/internal/middleware/upload_security.go b/backend/internal/middleware/upload_security.go similarity index 100% rename from internal/middleware/upload_security.go rename to backend/internal/middleware/upload_security.go diff --git a/internal/middleware/upload_security_zip.go b/backend/internal/middleware/upload_security_zip.go similarity index 100% rename from internal/middleware/upload_security_zip.go rename to backend/internal/middleware/upload_security_zip.go diff --git a/internal/middleware/webhook_auth.go b/backend/internal/middleware/webhook_auth.go similarity index 100% rename from internal/middleware/webhook_auth.go rename to backend/internal/middleware/webhook_auth.go diff --git a/internal/middleware/webhook_auth_test.go b/backend/internal/middleware/webhook_auth_test.go similarity index 100% rename from internal/middleware/webhook_auth_test.go rename to backend/internal/middleware/webhook_auth_test.go diff --git a/internal/middleware/xss_protection.go b/backend/internal/middleware/xss_protection.go similarity index 100% rename from internal/middleware/xss_protection.go rename to backend/internal/middleware/xss_protection.go diff --git a/internal/middleware/xss_protection_test.go b/backend/internal/middleware/xss_protection_test.go similarity index 100% rename from internal/middleware/xss_protection_test.go rename to backend/internal/middleware/xss_protection_test.go diff --git a/internal/model/access_token.go b/backend/internal/model/access_token.go similarity index 100% rename from internal/model/access_token.go rename to backend/internal/model/access_token.go diff --git a/internal/model/access_token.go.txt b/backend/internal/model/access_token.go.txt similarity index 100% rename from internal/model/access_token.go.txt rename to backend/internal/model/access_token.go.txt diff --git a/internal/model/account.go b/backend/internal/model/account.go similarity index 100% rename from internal/model/account.go rename to backend/internal/model/account.go diff --git a/internal/model/account.go.txt b/backend/internal/model/account.go.txt similarity index 100% rename from internal/model/account.go.txt rename to backend/internal/model/account.go.txt diff --git a/internal/model/account_email.go b/backend/internal/model/account_email.go similarity index 100% rename from internal/model/account_email.go rename to backend/internal/model/account_email.go diff --git a/internal/model/account_ldap_settings.go b/backend/internal/model/account_ldap_settings.go similarity index 100% rename from internal/model/account_ldap_settings.go rename to backend/internal/model/account_ldap_settings.go diff --git a/internal/model/account_oidc_settings.go b/backend/internal/model/account_oidc_settings.go similarity index 100% rename from internal/model/account_oidc_settings.go rename to backend/internal/model/account_oidc_settings.go diff --git a/internal/model/account_saml_settings.go b/backend/internal/model/account_saml_settings.go similarity index 100% rename from internal/model/account_saml_settings.go rename to backend/internal/model/account_saml_settings.go diff --git a/internal/model/account_saml_settings.go.txt b/backend/internal/model/account_saml_settings.go.txt similarity index 100% rename from internal/model/account_saml_settings.go.txt rename to backend/internal/model/account_saml_settings.go.txt diff --git a/internal/model/account_user.go b/backend/internal/model/account_user.go similarity index 100% rename from internal/model/account_user.go rename to backend/internal/model/account_user.go diff --git a/internal/model/account_user.go.txt b/backend/internal/model/account_user.go.txt similarity index 100% rename from internal/model/account_user.go.txt rename to backend/internal/model/account_user.go.txt diff --git a/internal/model/agent_bot.go b/backend/internal/model/agent_bot.go similarity index 100% rename from internal/model/agent_bot.go rename to backend/internal/model/agent_bot.go diff --git a/internal/model/agent_bot.go.txt b/backend/internal/model/agent_bot.go.txt similarity index 100% rename from internal/model/agent_bot.go.txt rename to backend/internal/model/agent_bot.go.txt diff --git a/internal/model/agent_bot_inbox.go b/backend/internal/model/agent_bot_inbox.go similarity index 100% rename from internal/model/agent_bot_inbox.go rename to backend/internal/model/agent_bot_inbox.go diff --git a/internal/model/agent_bot_inbox.go.txt b/backend/internal/model/agent_bot_inbox.go.txt similarity index 100% rename from internal/model/agent_bot_inbox.go.txt rename to backend/internal/model/agent_bot_inbox.go.txt diff --git a/internal/model/agent_bot_presence_event.go b/backend/internal/model/agent_bot_presence_event.go similarity index 100% rename from internal/model/agent_bot_presence_event.go rename to backend/internal/model/agent_bot_presence_event.go diff --git a/internal/model/agent_bot_presence_event.go.txt b/backend/internal/model/agent_bot_presence_event.go.txt similarity index 100% rename from internal/model/agent_bot_presence_event.go.txt rename to backend/internal/model/agent_bot_presence_event.go.txt diff --git a/internal/model/agent_capacity_policy.go b/backend/internal/model/agent_capacity_policy.go similarity index 100% rename from internal/model/agent_capacity_policy.go rename to backend/internal/model/agent_capacity_policy.go diff --git a/internal/model/agent_capacity_policy.go.txt b/backend/internal/model/agent_capacity_policy.go.txt similarity index 100% rename from internal/model/agent_capacity_policy.go.txt rename to backend/internal/model/agent_capacity_policy.go.txt diff --git a/internal/model/applied_sla.go.txt b/backend/internal/model/applied_sla.go.txt similarity index 100% rename from internal/model/applied_sla.go.txt rename to backend/internal/model/applied_sla.go.txt diff --git a/internal/model/article.go b/backend/internal/model/article.go similarity index 100% rename from internal/model/article.go rename to backend/internal/model/article.go diff --git a/internal/model/article.go.txt b/backend/internal/model/article.go.txt similarity index 100% rename from internal/model/article.go.txt rename to backend/internal/model/article.go.txt diff --git a/internal/model/article_embedding.go b/backend/internal/model/article_embedding.go similarity index 100% rename from internal/model/article_embedding.go rename to backend/internal/model/article_embedding.go diff --git a/internal/model/article_embedding.go.txt b/backend/internal/model/article_embedding.go.txt similarity index 100% rename from internal/model/article_embedding.go.txt rename to backend/internal/model/article_embedding.go.txt diff --git a/internal/model/assignment_policy.go b/backend/internal/model/assignment_policy.go similarity index 100% rename from internal/model/assignment_policy.go rename to backend/internal/model/assignment_policy.go diff --git a/internal/model/assignment_policy_v2.go b/backend/internal/model/assignment_policy_v2.go similarity index 100% rename from internal/model/assignment_policy_v2.go rename to backend/internal/model/assignment_policy_v2.go diff --git a/internal/model/associations_test.go b/backend/internal/model/associations_test.go similarity index 100% rename from internal/model/associations_test.go rename to backend/internal/model/associations_test.go diff --git a/internal/model/attachment.go b/backend/internal/model/attachment.go similarity index 100% rename from internal/model/attachment.go rename to backend/internal/model/attachment.go diff --git a/internal/model/attachment.go.txt b/backend/internal/model/attachment.go.txt similarity index 100% rename from internal/model/attachment.go.txt rename to backend/internal/model/attachment.go.txt diff --git a/internal/model/audit.go b/backend/internal/model/audit.go similarity index 100% rename from internal/model/audit.go rename to backend/internal/model/audit.go diff --git a/internal/model/audit.go.txt b/backend/internal/model/audit.go.txt similarity index 100% rename from internal/model/audit.go.txt rename to backend/internal/model/audit.go.txt diff --git a/internal/model/auto_reply_rule_models.go b/backend/internal/model/auto_reply_rule_models.go similarity index 100% rename from internal/model/auto_reply_rule_models.go rename to backend/internal/model/auto_reply_rule_models.go diff --git a/internal/model/automation_action.go b/backend/internal/model/automation_action.go similarity index 100% rename from internal/model/automation_action.go rename to backend/internal/model/automation_action.go diff --git a/internal/model/automation_action.go.txt b/backend/internal/model/automation_action.go.txt similarity index 100% rename from internal/model/automation_action.go.txt rename to backend/internal/model/automation_action.go.txt diff --git a/internal/model/automation_rule.go.txt b/backend/internal/model/automation_rule.go.txt similarity index 100% rename from internal/model/automation_rule.go.txt rename to backend/internal/model/automation_rule.go.txt diff --git a/internal/model/background_job.go b/backend/internal/model/background_job.go similarity index 100% rename from internal/model/background_job.go rename to backend/internal/model/background_job.go diff --git a/internal/model/banner.go b/backend/internal/model/banner.go similarity index 100% rename from internal/model/banner.go rename to backend/internal/model/banner.go diff --git a/internal/model/banner.go.txt b/backend/internal/model/banner.go.txt similarity index 100% rename from internal/model/banner.go.txt rename to backend/internal/model/banner.go.txt diff --git a/internal/model/base.go b/backend/internal/model/base.go similarity index 100% rename from internal/model/base.go rename to backend/internal/model/base.go diff --git a/internal/model/base.go.txt b/backend/internal/model/base.go.txt similarity index 100% rename from internal/model/base.go.txt rename to backend/internal/model/base.go.txt diff --git a/internal/model/base_test.txt b/backend/internal/model/base_test.txt similarity index 100% rename from internal/model/base_test.txt rename to backend/internal/model/base_test.txt diff --git a/internal/model/bot_rule.go b/backend/internal/model/bot_rule.go similarity index 100% rename from internal/model/bot_rule.go rename to backend/internal/model/bot_rule.go diff --git a/internal/model/call.go b/backend/internal/model/call.go similarity index 100% rename from internal/model/call.go rename to backend/internal/model/call.go diff --git a/internal/model/call.go.txt b/backend/internal/model/call.go.txt similarity index 100% rename from internal/model/call.go.txt rename to backend/internal/model/call.go.txt diff --git a/internal/model/captain_assistant.go.txt b/backend/internal/model/captain_assistant.go.txt similarity index 100% rename from internal/model/captain_assistant.go.txt rename to backend/internal/model/captain_assistant.go.txt diff --git a/internal/model/captain_assistant_inbox.go b/backend/internal/model/captain_assistant_inbox.go similarity index 100% rename from internal/model/captain_assistant_inbox.go rename to backend/internal/model/captain_assistant_inbox.go diff --git a/internal/model/captain_assistant_inbox.go.txt b/backend/internal/model/captain_assistant_inbox.go.txt similarity index 100% rename from internal/model/captain_assistant_inbox.go.txt rename to backend/internal/model/captain_assistant_inbox.go.txt diff --git a/internal/model/captain_assistant_response.go.txt b/backend/internal/model/captain_assistant_response.go.txt similarity index 100% rename from internal/model/captain_assistant_response.go.txt rename to backend/internal/model/captain_assistant_response.go.txt diff --git a/internal/model/captain_custom_tool.go.txt b/backend/internal/model/captain_custom_tool.go.txt similarity index 100% rename from internal/model/captain_custom_tool.go.txt rename to backend/internal/model/captain_custom_tool.go.txt diff --git a/internal/model/captain_document.go.txt b/backend/internal/model/captain_document.go.txt similarity index 100% rename from internal/model/captain_document.go.txt rename to backend/internal/model/captain_document.go.txt diff --git a/internal/model/captain_models.go b/backend/internal/model/captain_models.go similarity index 100% rename from internal/model/captain_models.go rename to backend/internal/model/captain_models.go diff --git a/internal/model/captain_scenario.go.txt b/backend/internal/model/captain_scenario.go.txt similarity index 100% rename from internal/model/captain_scenario.go.txt rename to backend/internal/model/captain_scenario.go.txt diff --git a/internal/model/category.go b/backend/internal/model/category.go similarity index 100% rename from internal/model/category.go rename to backend/internal/model/category.go diff --git a/internal/model/category.go.txt b/backend/internal/model/category.go.txt similarity index 100% rename from internal/model/category.go.txt rename to backend/internal/model/category.go.txt diff --git a/internal/model/channel/api.go b/backend/internal/model/channel/api.go similarity index 100% rename from internal/model/channel/api.go rename to backend/internal/model/channel/api.go diff --git a/internal/model/channel/api.go.txt b/backend/internal/model/channel/api.go.txt similarity index 100% rename from internal/model/channel/api.go.txt rename to backend/internal/model/channel/api.go.txt diff --git a/internal/model/channel/channel_base.go b/backend/internal/model/channel/channel_base.go similarity index 100% rename from internal/model/channel/channel_base.go rename to backend/internal/model/channel/channel_base.go diff --git a/internal/model/channel/email.go b/backend/internal/model/channel/email.go similarity index 100% rename from internal/model/channel/email.go rename to backend/internal/model/channel/email.go diff --git a/internal/model/channel/email.go.txt b/backend/internal/model/channel/email.go.txt similarity index 100% rename from internal/model/channel/email.go.txt rename to backend/internal/model/channel/email.go.txt diff --git a/internal/model/channel/facebook.go b/backend/internal/model/channel/facebook.go similarity index 100% rename from internal/model/channel/facebook.go rename to backend/internal/model/channel/facebook.go diff --git a/internal/model/channel/facebook.go.txt b/backend/internal/model/channel/facebook.go.txt similarity index 100% rename from internal/model/channel/facebook.go.txt rename to backend/internal/model/channel/facebook.go.txt diff --git a/internal/model/channel/google.go b/backend/internal/model/channel/google.go similarity index 100% rename from internal/model/channel/google.go rename to backend/internal/model/channel/google.go diff --git a/internal/model/channel/instagram.go b/backend/internal/model/channel/instagram.go similarity index 100% rename from internal/model/channel/instagram.go rename to backend/internal/model/channel/instagram.go diff --git a/internal/model/channel/instagram.go.txt b/backend/internal/model/channel/instagram.go.txt similarity index 100% rename from internal/model/channel/instagram.go.txt rename to backend/internal/model/channel/instagram.go.txt diff --git a/internal/model/channel/line.go b/backend/internal/model/channel/line.go similarity index 100% rename from internal/model/channel/line.go rename to backend/internal/model/channel/line.go diff --git a/internal/model/channel/line.go.txt b/backend/internal/model/channel/line.go.txt similarity index 100% rename from internal/model/channel/line.go.txt rename to backend/internal/model/channel/line.go.txt diff --git a/internal/model/channel/microsoft.go b/backend/internal/model/channel/microsoft.go similarity index 100% rename from internal/model/channel/microsoft.go rename to backend/internal/model/channel/microsoft.go diff --git a/internal/model/channel/sms.go.txt b/backend/internal/model/channel/sms.go.txt similarity index 100% rename from internal/model/channel/sms.go.txt rename to backend/internal/model/channel/sms.go.txt diff --git a/internal/model/channel/telegram.go b/backend/internal/model/channel/telegram.go similarity index 100% rename from internal/model/channel/telegram.go rename to backend/internal/model/channel/telegram.go diff --git a/internal/model/channel/telegram.go.txt b/backend/internal/model/channel/telegram.go.txt similarity index 100% rename from internal/model/channel/telegram.go.txt rename to backend/internal/model/channel/telegram.go.txt diff --git a/internal/model/channel/tiktok.go b/backend/internal/model/channel/tiktok.go similarity index 100% rename from internal/model/channel/tiktok.go rename to backend/internal/model/channel/tiktok.go diff --git a/internal/model/channel/tiktok.go.txt b/backend/internal/model/channel/tiktok.go.txt similarity index 100% rename from internal/model/channel/tiktok.go.txt rename to backend/internal/model/channel/tiktok.go.txt diff --git a/internal/model/channel/twilio.go b/backend/internal/model/channel/twilio.go similarity index 100% rename from internal/model/channel/twilio.go rename to backend/internal/model/channel/twilio.go diff --git a/internal/model/channel/twilio_sms.go.txt b/backend/internal/model/channel/twilio_sms.go.txt similarity index 100% rename from internal/model/channel/twilio_sms.go.txt rename to backend/internal/model/channel/twilio_sms.go.txt diff --git a/internal/model/channel/twitter.go b/backend/internal/model/channel/twitter.go similarity index 100% rename from internal/model/channel/twitter.go rename to backend/internal/model/channel/twitter.go diff --git a/internal/model/channel/web_widget.go b/backend/internal/model/channel/web_widget.go similarity index 100% rename from internal/model/channel/web_widget.go rename to backend/internal/model/channel/web_widget.go diff --git a/internal/model/channel/web_widget.go.txt b/backend/internal/model/channel/web_widget.go.txt similarity index 100% rename from internal/model/channel/web_widget.go.txt rename to backend/internal/model/channel/web_widget.go.txt diff --git a/internal/model/channel/whatsapp.go b/backend/internal/model/channel/whatsapp.go similarity index 100% rename from internal/model/channel/whatsapp.go rename to backend/internal/model/channel/whatsapp.go diff --git a/internal/model/channel/whatsapp.go.txt b/backend/internal/model/channel/whatsapp.go.txt similarity index 100% rename from internal/model/channel/whatsapp.go.txt rename to backend/internal/model/channel/whatsapp.go.txt diff --git a/internal/model/channelable.go b/backend/internal/model/channelable.go similarity index 100% rename from internal/model/channelable.go rename to backend/internal/model/channelable.go diff --git a/internal/model/channelable.go.txt b/backend/internal/model/channelable.go.txt similarity index 100% rename from internal/model/channelable.go.txt rename to backend/internal/model/channelable.go.txt diff --git a/internal/model/common.go b/backend/internal/model/common.go similarity index 100% rename from internal/model/common.go rename to backend/internal/model/common.go diff --git a/internal/model/company.go b/backend/internal/model/company.go similarity index 100% rename from internal/model/company.go rename to backend/internal/model/company.go diff --git a/internal/model/company.go.txt b/backend/internal/model/company.go.txt similarity index 100% rename from internal/model/company.go.txt rename to backend/internal/model/company.go.txt diff --git a/internal/model/company_note.go b/backend/internal/model/company_note.go similarity index 100% rename from internal/model/company_note.go rename to backend/internal/model/company_note.go diff --git a/internal/model/constraints_test.go b/backend/internal/model/constraints_test.go similarity index 100% rename from internal/model/constraints_test.go rename to backend/internal/model/constraints_test.go diff --git a/internal/model/contact.go b/backend/internal/model/contact.go similarity index 100% rename from internal/model/contact.go rename to backend/internal/model/contact.go diff --git a/internal/model/contact.go.txt b/backend/internal/model/contact.go.txt similarity index 100% rename from internal/model/contact.go.txt rename to backend/internal/model/contact.go.txt diff --git a/internal/model/contact_export.go b/backend/internal/model/contact_export.go similarity index 100% rename from internal/model/contact_export.go rename to backend/internal/model/contact_export.go diff --git a/internal/model/contact_inbox.go b/backend/internal/model/contact_inbox.go similarity index 100% rename from internal/model/contact_inbox.go rename to backend/internal/model/contact_inbox.go diff --git a/internal/model/contact_inbox.go.txt b/backend/internal/model/contact_inbox.go.txt similarity index 100% rename from internal/model/contact_inbox.go.txt rename to backend/internal/model/contact_inbox.go.txt diff --git a/internal/model/contact_label.go b/backend/internal/model/contact_label.go similarity index 100% rename from internal/model/contact_label.go rename to backend/internal/model/contact_label.go diff --git a/internal/model/contact_merge.go b/backend/internal/model/contact_merge.go similarity index 100% rename from internal/model/contact_merge.go rename to backend/internal/model/contact_merge.go diff --git a/internal/model/contact_note.go b/backend/internal/model/contact_note.go similarity index 100% rename from internal/model/contact_note.go rename to backend/internal/model/contact_note.go diff --git a/internal/model/contact_note.go.txt b/backend/internal/model/contact_note.go.txt similarity index 100% rename from internal/model/contact_note.go.txt rename to backend/internal/model/contact_note.go.txt diff --git a/internal/model/contactable.go b/backend/internal/model/contactable.go similarity index 100% rename from internal/model/contactable.go rename to backend/internal/model/contactable.go diff --git a/internal/model/contactable.go.txt b/backend/internal/model/contactable.go.txt similarity index 100% rename from internal/model/contactable.go.txt rename to backend/internal/model/contactable.go.txt diff --git a/internal/model/conversation.go b/backend/internal/model/conversation.go similarity index 100% rename from internal/model/conversation.go rename to backend/internal/model/conversation.go diff --git a/internal/model/conversation.go.txt b/backend/internal/model/conversation.go.txt similarity index 100% rename from internal/model/conversation.go.txt rename to backend/internal/model/conversation.go.txt diff --git a/internal/model/conversation_label.go b/backend/internal/model/conversation_label.go similarity index 100% rename from internal/model/conversation_label.go rename to backend/internal/model/conversation_label.go diff --git a/internal/model/conversation_participant.go b/backend/internal/model/conversation_participant.go similarity index 100% rename from internal/model/conversation_participant.go rename to backend/internal/model/conversation_participant.go diff --git a/internal/model/copilot_message.go.txt b/backend/internal/model/copilot_message.go.txt similarity index 100% rename from internal/model/copilot_message.go.txt rename to backend/internal/model/copilot_message.go.txt diff --git a/internal/model/copilot_models.go b/backend/internal/model/copilot_models.go similarity index 100% rename from internal/model/copilot_models.go rename to backend/internal/model/copilot_models.go diff --git a/internal/model/copilot_thread.go.txt b/backend/internal/model/copilot_thread.go.txt similarity index 100% rename from internal/model/copilot_thread.go.txt rename to backend/internal/model/copilot_thread.go.txt diff --git a/internal/model/crud_test.go b/backend/internal/model/crud_test.go similarity index 100% rename from internal/model/crud_test.go rename to backend/internal/model/crud_test.go diff --git a/internal/model/csat_template.go b/backend/internal/model/csat_template.go similarity index 100% rename from internal/model/csat_template.go rename to backend/internal/model/csat_template.go diff --git a/internal/model/custom_attribute_definition.go b/backend/internal/model/custom_attribute_definition.go similarity index 100% rename from internal/model/custom_attribute_definition.go rename to backend/internal/model/custom_attribute_definition.go diff --git a/internal/model/custom_filter.go b/backend/internal/model/custom_filter.go similarity index 100% rename from internal/model/custom_filter.go rename to backend/internal/model/custom_filter.go diff --git a/internal/model/custom_role.go b/backend/internal/model/custom_role.go similarity index 100% rename from internal/model/custom_role.go rename to backend/internal/model/custom_role.go diff --git a/internal/model/custom_role.go.txt b/backend/internal/model/custom_role.go.txt similarity index 100% rename from internal/model/custom_role.go.txt rename to backend/internal/model/custom_role.go.txt diff --git a/internal/model/dashboard_app.go b/backend/internal/model/dashboard_app.go similarity index 100% rename from internal/model/dashboard_app.go rename to backend/internal/model/dashboard_app.go diff --git a/internal/model/dashboard_app.go.txt b/backend/internal/model/dashboard_app.go.txt similarity index 100% rename from internal/model/dashboard_app.go.txt rename to backend/internal/model/dashboard_app.go.txt diff --git a/internal/model/data_import.go b/backend/internal/model/data_import.go similarity index 100% rename from internal/model/data_import.go rename to backend/internal/model/data_import.go diff --git a/internal/model/data_import.go.txt b/backend/internal/model/data_import.go.txt similarity index 100% rename from internal/model/data_import.go.txt rename to backend/internal/model/data_import.go.txt diff --git a/internal/model/delivery_status.go b/backend/internal/model/delivery_status.go similarity index 100% rename from internal/model/delivery_status.go rename to backend/internal/model/delivery_status.go diff --git a/internal/model/direct_upload.go b/backend/internal/model/direct_upload.go similarity index 100% rename from internal/model/direct_upload.go rename to backend/internal/model/direct_upload.go diff --git a/internal/model/direct_upload_test.go b/backend/internal/model/direct_upload_test.go similarity index 100% rename from internal/model/direct_upload_test.go rename to backend/internal/model/direct_upload_test.go diff --git a/internal/model/draft_message.go b/backend/internal/model/draft_message.go similarity index 100% rename from internal/model/draft_message.go rename to backend/internal/model/draft_message.go diff --git a/internal/model/email_channel_migration.go b/backend/internal/model/email_channel_migration.go similarity index 100% rename from internal/model/email_channel_migration.go rename to backend/internal/model/email_channel_migration.go diff --git a/internal/model/email_template.go b/backend/internal/model/email_template.go similarity index 100% rename from internal/model/email_template.go rename to backend/internal/model/email_template.go diff --git a/internal/model/email_template.go.txt b/backend/internal/model/email_template.go.txt similarity index 100% rename from internal/model/email_template.go.txt rename to backend/internal/model/email_template.go.txt diff --git a/internal/model/enums.go b/backend/internal/model/enums.go similarity index 100% rename from internal/model/enums.go rename to backend/internal/model/enums.go diff --git a/internal/model/enums.go.txt b/backend/internal/model/enums.go.txt similarity index 100% rename from internal/model/enums.go.txt rename to backend/internal/model/enums.go.txt diff --git a/internal/model/folder.go b/backend/internal/model/folder.go similarity index 100% rename from internal/model/folder.go rename to backend/internal/model/folder.go diff --git a/internal/model/folder.go.txt b/backend/internal/model/folder.go.txt similarity index 100% rename from internal/model/folder.go.txt rename to backend/internal/model/folder.go.txt diff --git a/internal/model/inbox.go b/backend/internal/model/inbox.go similarity index 100% rename from internal/model/inbox.go rename to backend/internal/model/inbox.go diff --git a/internal/model/inbox.go.txt b/backend/internal/model/inbox.go.txt similarity index 100% rename from internal/model/inbox.go.txt rename to backend/internal/model/inbox.go.txt diff --git a/internal/model/inbox_limit.go b/backend/internal/model/inbox_limit.go similarity index 100% rename from internal/model/inbox_limit.go rename to backend/internal/model/inbox_limit.go diff --git a/internal/model/inbox_member.go b/backend/internal/model/inbox_member.go similarity index 100% rename from internal/model/inbox_member.go rename to backend/internal/model/inbox_member.go diff --git a/internal/model/inbox_member.go.txt b/backend/internal/model/inbox_member.go.txt similarity index 100% rename from internal/model/inbox_member.go.txt rename to backend/internal/model/inbox_member.go.txt diff --git a/internal/model/installation_config.go b/backend/internal/model/installation_config.go similarity index 100% rename from internal/model/installation_config.go rename to backend/internal/model/installation_config.go diff --git a/internal/model/installation_config.go.txt b/backend/internal/model/installation_config.go.txt similarity index 100% rename from internal/model/installation_config.go.txt rename to backend/internal/model/installation_config.go.txt diff --git a/internal/model/integration_hook.go b/backend/internal/model/integration_hook.go similarity index 100% rename from internal/model/integration_hook.go rename to backend/internal/model/integration_hook.go diff --git a/internal/model/json_helpers.go b/backend/internal/model/json_helpers.go similarity index 100% rename from internal/model/json_helpers.go rename to backend/internal/model/json_helpers.go diff --git a/internal/model/mention.go b/backend/internal/model/mention.go similarity index 100% rename from internal/model/mention.go rename to backend/internal/model/mention.go diff --git a/internal/model/message.go b/backend/internal/model/message.go similarity index 100% rename from internal/model/message.go rename to backend/internal/model/message.go diff --git a/internal/model/message.go.txt b/backend/internal/model/message.go.txt similarity index 100% rename from internal/model/message.go.txt rename to backend/internal/model/message.go.txt diff --git a/internal/model/message_reaction.go b/backend/internal/model/message_reaction.go similarity index 100% rename from internal/model/message_reaction.go rename to backend/internal/model/message_reaction.go diff --git a/internal/model/message_reaction.go.txt b/backend/internal/model/message_reaction.go.txt similarity index 100% rename from internal/model/message_reaction.go.txt rename to backend/internal/model/message_reaction.go.txt diff --git a/internal/model/methods_test.go b/backend/internal/model/methods_test.go similarity index 100% rename from internal/model/methods_test.go rename to backend/internal/model/methods_test.go diff --git a/internal/model/model_test.go b/backend/internal/model/model_test.go similarity index 100% rename from internal/model/model_test.go rename to backend/internal/model/model_test.go diff --git a/internal/model/note.go b/backend/internal/model/note.go similarity index 100% rename from internal/model/note.go rename to backend/internal/model/note.go diff --git a/internal/model/notification.go b/backend/internal/model/notification.go similarity index 100% rename from internal/model/notification.go rename to backend/internal/model/notification.go diff --git a/internal/model/notification.go.txt b/backend/internal/model/notification.go.txt similarity index 100% rename from internal/model/notification.go.txt rename to backend/internal/model/notification.go.txt diff --git a/internal/model/notification_preference.go b/backend/internal/model/notification_preference.go similarity index 100% rename from internal/model/notification_preference.go rename to backend/internal/model/notification_preference.go diff --git a/internal/model/notification_preference.go.txt b/backend/internal/model/notification_preference.go.txt similarity index 100% rename from internal/model/notification_preference.go.txt rename to backend/internal/model/notification_preference.go.txt diff --git a/internal/model/notification_setting.go b/backend/internal/model/notification_setting.go similarity index 100% rename from internal/model/notification_setting.go rename to backend/internal/model/notification_setting.go diff --git a/internal/model/notification_subscription.go b/backend/internal/model/notification_subscription.go similarity index 100% rename from internal/model/notification_subscription.go rename to backend/internal/model/notification_subscription.go diff --git a/internal/model/permissible.go b/backend/internal/model/permissible.go similarity index 100% rename from internal/model/permissible.go rename to backend/internal/model/permissible.go diff --git a/internal/model/permissible.go.txt b/backend/internal/model/permissible.go.txt similarity index 100% rename from internal/model/permissible.go.txt rename to backend/internal/model/permissible.go.txt diff --git a/internal/model/platform_app.go b/backend/internal/model/platform_app.go similarity index 100% rename from internal/model/platform_app.go rename to backend/internal/model/platform_app.go diff --git a/internal/model/platform_app.go.txt b/backend/internal/model/platform_app.go.txt similarity index 100% rename from internal/model/platform_app.go.txt rename to backend/internal/model/platform_app.go.txt diff --git a/internal/model/portal.go b/backend/internal/model/portal.go similarity index 100% rename from internal/model/portal.go rename to backend/internal/model/portal.go diff --git a/internal/model/portal.go.txt b/backend/internal/model/portal.go.txt similarity index 100% rename from internal/model/portal.go.txt rename to backend/internal/model/portal.go.txt diff --git a/internal/model/portal_member.go b/backend/internal/model/portal_member.go similarity index 100% rename from internal/model/portal_member.go rename to backend/internal/model/portal_member.go diff --git a/internal/model/portal_member.go.txt b/backend/internal/model/portal_member.go.txt similarity index 100% rename from internal/model/portal_member.go.txt rename to backend/internal/model/portal_member.go.txt diff --git a/internal/model/pre_chat_form.go b/backend/internal/model/pre_chat_form.go similarity index 100% rename from internal/model/pre_chat_form.go rename to backend/internal/model/pre_chat_form.go diff --git a/internal/model/push_token.go b/backend/internal/model/push_token.go similarity index 100% rename from internal/model/push_token.go rename to backend/internal/model/push_token.go diff --git a/internal/model/push_token.go.txt b/backend/internal/model/push_token.go.txt similarity index 100% rename from internal/model/push_token.go.txt rename to backend/internal/model/push_token.go.txt diff --git a/internal/model/related_category.go b/backend/internal/model/related_category.go similarity index 100% rename from internal/model/related_category.go rename to backend/internal/model/related_category.go diff --git a/internal/model/related_category.go.txt b/backend/internal/model/related_category.go.txt similarity index 100% rename from internal/model/related_category.go.txt rename to backend/internal/model/related_category.go.txt diff --git a/internal/model/report.go b/backend/internal/model/report.go similarity index 100% rename from internal/model/report.go rename to backend/internal/model/report.go diff --git a/internal/model/report.go.txt b/backend/internal/model/report.go.txt similarity index 100% rename from internal/model/report.go.txt rename to backend/internal/model/report.go.txt diff --git a/internal/model/reporting_event.go b/backend/internal/model/reporting_event.go similarity index 100% rename from internal/model/reporting_event.go rename to backend/internal/model/reporting_event.go diff --git a/internal/model/reporting_event.go.txt b/backend/internal/model/reporting_event.go.txt similarity index 100% rename from internal/model/reporting_event.go.txt rename to backend/internal/model/reporting_event.go.txt diff --git a/internal/model/saml_idp_config.go b/backend/internal/model/saml_idp_config.go similarity index 100% rename from internal/model/saml_idp_config.go rename to backend/internal/model/saml_idp_config.go diff --git a/internal/model/sla_event.go.txt b/backend/internal/model/sla_event.go.txt similarity index 100% rename from internal/model/sla_event.go.txt rename to backend/internal/model/sla_event.go.txt diff --git a/internal/model/sla_policy.go b/backend/internal/model/sla_policy.go similarity index 100% rename from internal/model/sla_policy.go rename to backend/internal/model/sla_policy.go diff --git a/internal/model/sla_policy.go.txt b/backend/internal/model/sla_policy.go.txt similarity index 100% rename from internal/model/sla_policy.go.txt rename to backend/internal/model/sla_policy.go.txt diff --git a/internal/model/sso_session.go b/backend/internal/model/sso_session.go similarity index 100% rename from internal/model/sso_session.go rename to backend/internal/model/sso_session.go diff --git a/internal/model/summary_report.go b/backend/internal/model/summary_report.go similarity index 100% rename from internal/model/summary_report.go rename to backend/internal/model/summary_report.go diff --git a/internal/model/tag.go b/backend/internal/model/tag.go similarity index 100% rename from internal/model/tag.go rename to backend/internal/model/tag.go diff --git a/internal/model/team.go b/backend/internal/model/team.go similarity index 100% rename from internal/model/team.go rename to backend/internal/model/team.go diff --git a/internal/model/team.go.txt b/backend/internal/model/team.go.txt similarity index 100% rename from internal/model/team.go.txt rename to backend/internal/model/team.go.txt diff --git a/internal/model/team_member.go b/backend/internal/model/team_member.go similarity index 100% rename from internal/model/team_member.go rename to backend/internal/model/team_member.go diff --git a/internal/model/team_member.go.txt b/backend/internal/model/team_member.go.txt similarity index 100% rename from internal/model/team_member.go.txt rename to backend/internal/model/team_member.go.txt diff --git a/internal/model/test_write.go b/backend/internal/model/test_write.go similarity index 100% rename from internal/model/test_write.go rename to backend/internal/model/test_write.go diff --git a/internal/model/user.go b/backend/internal/model/user.go similarity index 100% rename from internal/model/user.go rename to backend/internal/model/user.go diff --git a/internal/model/user.go.txt b/backend/internal/model/user.go.txt similarity index 100% rename from internal/model/user.go.txt rename to backend/internal/model/user.go.txt diff --git a/internal/model/webhook_subscription.go b/backend/internal/model/webhook_subscription.go similarity index 100% rename from internal/model/webhook_subscription.go rename to backend/internal/model/webhook_subscription.go diff --git a/internal/model/whatsapp_call.go b/backend/internal/model/whatsapp_call.go similarity index 100% rename from internal/model/whatsapp_call.go rename to backend/internal/model/whatsapp_call.go diff --git a/internal/model/widget_file_upload.go b/backend/internal/model/widget_file_upload.go similarity index 100% rename from internal/model/widget_file_upload.go rename to backend/internal/model/widget_file_upload.go diff --git a/internal/model/widget_offline_message.go b/backend/internal/model/widget_offline_message.go similarity index 100% rename from internal/model/widget_offline_message.go rename to backend/internal/model/widget_offline_message.go diff --git a/internal/model/widget_test_scenario.go b/backend/internal/model/widget_test_scenario.go similarity index 100% rename from internal/model/widget_test_scenario.go rename to backend/internal/model/widget_test_scenario.go diff --git a/internal/model/widget_theme_config.go b/backend/internal/model/widget_theme_config.go similarity index 100% rename from internal/model/widget_theme_config.go rename to backend/internal/model/widget_theme_config.go diff --git a/internal/model/working_hour.go b/backend/internal/model/working_hour.go similarity index 100% rename from internal/model/working_hour.go rename to backend/internal/model/working_hour.go diff --git a/internal/pgvector_stub/go.mod b/backend/internal/pgvector_stub/go.mod similarity index 100% rename from internal/pgvector_stub/go.mod rename to backend/internal/pgvector_stub/go.mod diff --git a/internal/pgvector_stub/vector.go b/backend/internal/pgvector_stub/vector.go similarity index 100% rename from internal/pgvector_stub/vector.go rename to backend/internal/pgvector_stub/vector.go diff --git a/internal/pubsub/event_bus.go b/backend/internal/pubsub/event_bus.go similarity index 100% rename from internal/pubsub/event_bus.go rename to backend/internal/pubsub/event_bus.go diff --git a/internal/pubsub/event_bus_test.go b/backend/internal/pubsub/event_bus_test.go similarity index 100% rename from internal/pubsub/event_bus_test.go rename to backend/internal/pubsub/event_bus_test.go diff --git a/internal/pubsub/pubsub.go b/backend/internal/pubsub/pubsub.go similarity index 100% rename from internal/pubsub/pubsub.go rename to backend/internal/pubsub/pubsub.go diff --git a/internal/pubsub/pubsub_test.go b/backend/internal/pubsub/pubsub_test.go similarity index 100% rename from internal/pubsub/pubsub_test.go rename to backend/internal/pubsub/pubsub_test.go diff --git a/internal/pubsub/redis_pubsub.go b/backend/internal/pubsub/redis_pubsub.go similarity index 100% rename from internal/pubsub/redis_pubsub.go rename to backend/internal/pubsub/redis_pubsub.go diff --git a/internal/reporting/data_source.go b/backend/internal/reporting/data_source.go similarity index 100% rename from internal/reporting/data_source.go rename to backend/internal/reporting/data_source.go diff --git a/internal/reporting/listener.go b/backend/internal/reporting/listener.go similarity index 100% rename from internal/reporting/listener.go rename to backend/internal/reporting/listener.go diff --git a/internal/reporting/metric_registry.go b/backend/internal/reporting/metric_registry.go similarity index 100% rename from internal/reporting/metric_registry.go rename to backend/internal/reporting/metric_registry.go diff --git a/internal/reporting/model.go b/backend/internal/reporting/model.go similarity index 100% rename from internal/reporting/model.go rename to backend/internal/reporting/model.go diff --git a/internal/reporting/service.go b/backend/internal/reporting/service.go similarity index 100% rename from internal/reporting/service.go rename to backend/internal/reporting/service.go diff --git a/internal/repository/access_token_repo.go b/backend/internal/repository/access_token_repo.go similarity index 100% rename from internal/repository/access_token_repo.go rename to backend/internal/repository/access_token_repo.go diff --git a/internal/repository/access_token_repo_test.go b/backend/internal/repository/access_token_repo_test.go similarity index 100% rename from internal/repository/access_token_repo_test.go rename to backend/internal/repository/access_token_repo_test.go diff --git a/internal/repository/account_ldap_settings_repo.go b/backend/internal/repository/account_ldap_settings_repo.go similarity index 100% rename from internal/repository/account_ldap_settings_repo.go rename to backend/internal/repository/account_ldap_settings_repo.go diff --git a/internal/repository/account_oidc_settings_repo.go b/backend/internal/repository/account_oidc_settings_repo.go similarity index 100% rename from internal/repository/account_oidc_settings_repo.go rename to backend/internal/repository/account_oidc_settings_repo.go diff --git a/internal/repository/account_repo.go b/backend/internal/repository/account_repo.go similarity index 100% rename from internal/repository/account_repo.go rename to backend/internal/repository/account_repo.go diff --git a/internal/repository/account_repo_test.go b/backend/internal/repository/account_repo_test.go similarity index 100% rename from internal/repository/account_repo_test.go rename to backend/internal/repository/account_repo_test.go diff --git a/internal/repository/account_saml_settings_repo.go b/backend/internal/repository/account_saml_settings_repo.go similarity index 100% rename from internal/repository/account_saml_settings_repo.go rename to backend/internal/repository/account_saml_settings_repo.go diff --git a/internal/repository/account_user_repo.go b/backend/internal/repository/account_user_repo.go similarity index 100% rename from internal/repository/account_user_repo.go rename to backend/internal/repository/account_user_repo.go diff --git a/internal/repository/agent_bot_inbox_repo.go b/backend/internal/repository/agent_bot_inbox_repo.go similarity index 100% rename from internal/repository/agent_bot_inbox_repo.go rename to backend/internal/repository/agent_bot_inbox_repo.go diff --git a/internal/repository/agent_bot_inbox_repo_test.go b/backend/internal/repository/agent_bot_inbox_repo_test.go similarity index 100% rename from internal/repository/agent_bot_inbox_repo_test.go rename to backend/internal/repository/agent_bot_inbox_repo_test.go diff --git a/internal/repository/agent_bot_repo.go b/backend/internal/repository/agent_bot_repo.go similarity index 100% rename from internal/repository/agent_bot_repo.go rename to backend/internal/repository/agent_bot_repo.go diff --git a/internal/repository/agent_bot_repo_test.go b/backend/internal/repository/agent_bot_repo_test.go similarity index 100% rename from internal/repository/agent_bot_repo_test.go rename to backend/internal/repository/agent_bot_repo_test.go diff --git a/internal/repository/agent_capacity_policy_repo.go b/backend/internal/repository/agent_capacity_policy_repo.go similarity index 100% rename from internal/repository/agent_capacity_policy_repo.go rename to backend/internal/repository/agent_capacity_policy_repo.go diff --git a/internal/repository/agent_capacity_policy_repo_test.go b/backend/internal/repository/agent_capacity_policy_repo_test.go similarity index 100% rename from internal/repository/agent_capacity_policy_repo_test.go rename to backend/internal/repository/agent_capacity_policy_repo_test.go diff --git a/internal/repository/agent_repo.go b/backend/internal/repository/agent_repo.go similarity index 100% rename from internal/repository/agent_repo.go rename to backend/internal/repository/agent_repo.go diff --git a/internal/repository/article_repo.go b/backend/internal/repository/article_repo.go similarity index 100% rename from internal/repository/article_repo.go rename to backend/internal/repository/article_repo.go diff --git a/internal/repository/article_repo_test.go b/backend/internal/repository/article_repo_test.go similarity index 100% rename from internal/repository/article_repo_test.go rename to backend/internal/repository/article_repo_test.go diff --git a/internal/repository/assignment_policy_repo.go b/backend/internal/repository/assignment_policy_repo.go similarity index 100% rename from internal/repository/assignment_policy_repo.go rename to backend/internal/repository/assignment_policy_repo.go diff --git a/internal/repository/assignment_policy_repo_test.go.bak b/backend/internal/repository/assignment_policy_repo_test.go.bak similarity index 100% rename from internal/repository/assignment_policy_repo_test.go.bak rename to backend/internal/repository/assignment_policy_repo_test.go.bak diff --git a/internal/repository/assignment_policy_v2_repo.go b/backend/internal/repository/assignment_policy_v2_repo.go similarity index 100% rename from internal/repository/assignment_policy_v2_repo.go rename to backend/internal/repository/assignment_policy_v2_repo.go diff --git a/internal/repository/attachment_repo.go b/backend/internal/repository/attachment_repo.go similarity index 100% rename from internal/repository/attachment_repo.go rename to backend/internal/repository/attachment_repo.go diff --git a/internal/repository/attachment_repo_test.go b/backend/internal/repository/attachment_repo_test.go similarity index 100% rename from internal/repository/attachment_repo_test.go rename to backend/internal/repository/attachment_repo_test.go diff --git a/internal/repository/audit_repo.go b/backend/internal/repository/audit_repo.go similarity index 100% rename from internal/repository/audit_repo.go rename to backend/internal/repository/audit_repo.go diff --git a/internal/repository/audit_repo_test.go b/backend/internal/repository/audit_repo_test.go similarity index 100% rename from internal/repository/audit_repo_test.go rename to backend/internal/repository/audit_repo_test.go diff --git a/internal/repository/auto_reply_rule_repo.go b/backend/internal/repository/auto_reply_rule_repo.go similarity index 100% rename from internal/repository/auto_reply_rule_repo.go rename to backend/internal/repository/auto_reply_rule_repo.go diff --git a/internal/repository/auto_reply_rule_repo_test.go b/backend/internal/repository/auto_reply_rule_repo_test.go similarity index 100% rename from internal/repository/auto_reply_rule_repo_test.go rename to backend/internal/repository/auto_reply_rule_repo_test.go diff --git a/internal/repository/banner_repo.go b/backend/internal/repository/banner_repo.go similarity index 100% rename from internal/repository/banner_repo.go rename to backend/internal/repository/banner_repo.go diff --git a/internal/repository/benchmark_test.go b/backend/internal/repository/benchmark_test.go similarity index 100% rename from internal/repository/benchmark_test.go rename to backend/internal/repository/benchmark_test.go diff --git a/internal/repository/campaign_repo.go b/backend/internal/repository/campaign_repo.go similarity index 100% rename from internal/repository/campaign_repo.go rename to backend/internal/repository/campaign_repo.go diff --git a/internal/repository/captain_assistant_repo.go b/backend/internal/repository/captain_assistant_repo.go similarity index 100% rename from internal/repository/captain_assistant_repo.go rename to backend/internal/repository/captain_assistant_repo.go diff --git a/internal/repository/captain_assistant_repo_test.go b/backend/internal/repository/captain_assistant_repo_test.go similarity index 100% rename from internal/repository/captain_assistant_repo_test.go rename to backend/internal/repository/captain_assistant_repo_test.go diff --git a/internal/repository/captain_assistant_response_repo.go b/backend/internal/repository/captain_assistant_response_repo.go similarity index 100% rename from internal/repository/captain_assistant_response_repo.go rename to backend/internal/repository/captain_assistant_response_repo.go diff --git a/internal/repository/captain_assistant_response_repo_test.go b/backend/internal/repository/captain_assistant_response_repo_test.go similarity index 100% rename from internal/repository/captain_assistant_response_repo_test.go rename to backend/internal/repository/captain_assistant_response_repo_test.go diff --git a/internal/repository/captain_custom_tool_repo.go b/backend/internal/repository/captain_custom_tool_repo.go similarity index 100% rename from internal/repository/captain_custom_tool_repo.go rename to backend/internal/repository/captain_custom_tool_repo.go diff --git a/internal/repository/captain_custom_tool_repo_test.go b/backend/internal/repository/captain_custom_tool_repo_test.go similarity index 100% rename from internal/repository/captain_custom_tool_repo_test.go rename to backend/internal/repository/captain_custom_tool_repo_test.go diff --git a/internal/repository/captain_document_repo.go b/backend/internal/repository/captain_document_repo.go similarity index 100% rename from internal/repository/captain_document_repo.go rename to backend/internal/repository/captain_document_repo.go diff --git a/internal/repository/captain_document_repo_test.go b/backend/internal/repository/captain_document_repo_test.go similarity index 100% rename from internal/repository/captain_document_repo_test.go rename to backend/internal/repository/captain_document_repo_test.go diff --git a/internal/repository/captain_inbox_repo.go b/backend/internal/repository/captain_inbox_repo.go similarity index 100% rename from internal/repository/captain_inbox_repo.go rename to backend/internal/repository/captain_inbox_repo.go diff --git a/internal/repository/captain_inbox_repo_test.go b/backend/internal/repository/captain_inbox_repo_test.go similarity index 100% rename from internal/repository/captain_inbox_repo_test.go rename to backend/internal/repository/captain_inbox_repo_test.go diff --git a/internal/repository/captain_preference_repo.go b/backend/internal/repository/captain_preference_repo.go similarity index 100% rename from internal/repository/captain_preference_repo.go rename to backend/internal/repository/captain_preference_repo.go diff --git a/internal/repository/captain_preference_repo_test.go b/backend/internal/repository/captain_preference_repo_test.go similarity index 100% rename from internal/repository/captain_preference_repo_test.go rename to backend/internal/repository/captain_preference_repo_test.go diff --git a/internal/repository/captain_scenario_repo.go b/backend/internal/repository/captain_scenario_repo.go similarity index 100% rename from internal/repository/captain_scenario_repo.go rename to backend/internal/repository/captain_scenario_repo.go diff --git a/internal/repository/captain_scenario_repo_test.go b/backend/internal/repository/captain_scenario_repo_test.go similarity index 100% rename from internal/repository/captain_scenario_repo_test.go rename to backend/internal/repository/captain_scenario_repo_test.go diff --git a/internal/repository/category_repo.go b/backend/internal/repository/category_repo.go similarity index 100% rename from internal/repository/category_repo.go rename to backend/internal/repository/category_repo.go diff --git a/internal/repository/category_repo_test.go b/backend/internal/repository/category_repo_test.go similarity index 100% rename from internal/repository/category_repo_test.go rename to backend/internal/repository/category_repo_test.go diff --git a/internal/repository/channel_email_repo.go b/backend/internal/repository/channel_email_repo.go similarity index 100% rename from internal/repository/channel_email_repo.go rename to backend/internal/repository/channel_email_repo.go diff --git a/internal/repository/channel_facebook_repo.go b/backend/internal/repository/channel_facebook_repo.go similarity index 100% rename from internal/repository/channel_facebook_repo.go rename to backend/internal/repository/channel_facebook_repo.go diff --git a/internal/repository/channel_google_repo.go b/backend/internal/repository/channel_google_repo.go similarity index 100% rename from internal/repository/channel_google_repo.go rename to backend/internal/repository/channel_google_repo.go diff --git a/internal/repository/channel_instagram_repo.go b/backend/internal/repository/channel_instagram_repo.go similarity index 100% rename from internal/repository/channel_instagram_repo.go rename to backend/internal/repository/channel_instagram_repo.go diff --git a/internal/repository/channel_line_repo.go b/backend/internal/repository/channel_line_repo.go similarity index 100% rename from internal/repository/channel_line_repo.go rename to backend/internal/repository/channel_line_repo.go diff --git a/internal/repository/channel_microsoft_repo.go b/backend/internal/repository/channel_microsoft_repo.go similarity index 100% rename from internal/repository/channel_microsoft_repo.go rename to backend/internal/repository/channel_microsoft_repo.go diff --git a/internal/repository/channel_tiktok_repo.go b/backend/internal/repository/channel_tiktok_repo.go similarity index 100% rename from internal/repository/channel_tiktok_repo.go rename to backend/internal/repository/channel_tiktok_repo.go diff --git a/internal/repository/channel_twilio_repo.go b/backend/internal/repository/channel_twilio_repo.go similarity index 100% rename from internal/repository/channel_twilio_repo.go rename to backend/internal/repository/channel_twilio_repo.go diff --git a/internal/repository/channel_twilio_sms_repo.go b/backend/internal/repository/channel_twilio_sms_repo.go similarity index 100% rename from internal/repository/channel_twilio_sms_repo.go rename to backend/internal/repository/channel_twilio_sms_repo.go diff --git a/internal/repository/channel_twitter_repo.go b/backend/internal/repository/channel_twitter_repo.go similarity index 100% rename from internal/repository/channel_twitter_repo.go rename to backend/internal/repository/channel_twitter_repo.go diff --git a/internal/repository/company_repo.go b/backend/internal/repository/company_repo.go similarity index 100% rename from internal/repository/company_repo.go rename to backend/internal/repository/company_repo.go diff --git a/internal/repository/company_repo_test.go b/backend/internal/repository/company_repo_test.go similarity index 100% rename from internal/repository/company_repo_test.go rename to backend/internal/repository/company_repo_test.go diff --git a/internal/repository/contact_inbox_repo.go b/backend/internal/repository/contact_inbox_repo.go similarity index 100% rename from internal/repository/contact_inbox_repo.go rename to backend/internal/repository/contact_inbox_repo.go diff --git a/internal/repository/contact_inbox_repo_test.go b/backend/internal/repository/contact_inbox_repo_test.go similarity index 100% rename from internal/repository/contact_inbox_repo_test.go rename to backend/internal/repository/contact_inbox_repo_test.go diff --git a/internal/repository/contact_merge_repo.go b/backend/internal/repository/contact_merge_repo.go similarity index 100% rename from internal/repository/contact_merge_repo.go rename to backend/internal/repository/contact_merge_repo.go diff --git a/internal/repository/contact_note_repo.go b/backend/internal/repository/contact_note_repo.go similarity index 100% rename from internal/repository/contact_note_repo.go rename to backend/internal/repository/contact_note_repo.go diff --git a/internal/repository/contact_repo.go b/backend/internal/repository/contact_repo.go similarity index 100% rename from internal/repository/contact_repo.go rename to backend/internal/repository/contact_repo.go diff --git a/internal/repository/contact_repo_test.go b/backend/internal/repository/contact_repo_test.go similarity index 100% rename from internal/repository/contact_repo_test.go rename to backend/internal/repository/contact_repo_test.go diff --git a/internal/repository/conversation_label_repo.go b/backend/internal/repository/conversation_label_repo.go similarity index 100% rename from internal/repository/conversation_label_repo.go rename to backend/internal/repository/conversation_label_repo.go diff --git a/internal/repository/conversation_label_repo_test.go b/backend/internal/repository/conversation_label_repo_test.go similarity index 100% rename from internal/repository/conversation_label_repo_test.go rename to backend/internal/repository/conversation_label_repo_test.go diff --git a/internal/repository/conversation_participant_repo.go b/backend/internal/repository/conversation_participant_repo.go similarity index 100% rename from internal/repository/conversation_participant_repo.go rename to backend/internal/repository/conversation_participant_repo.go diff --git a/internal/repository/conversation_participant_repo_test.go b/backend/internal/repository/conversation_participant_repo_test.go similarity index 100% rename from internal/repository/conversation_participant_repo_test.go rename to backend/internal/repository/conversation_participant_repo_test.go diff --git a/internal/repository/conversation_repo.go b/backend/internal/repository/conversation_repo.go similarity index 100% rename from internal/repository/conversation_repo.go rename to backend/internal/repository/conversation_repo.go diff --git a/internal/repository/conversation_repo_pg_test.go b/backend/internal/repository/conversation_repo_pg_test.go similarity index 100% rename from internal/repository/conversation_repo_pg_test.go rename to backend/internal/repository/conversation_repo_pg_test.go diff --git a/internal/repository/conversation_repo_test.go b/backend/internal/repository/conversation_repo_test.go similarity index 100% rename from internal/repository/conversation_repo_test.go rename to backend/internal/repository/conversation_repo_test.go diff --git a/internal/repository/copilot_message_repo.go b/backend/internal/repository/copilot_message_repo.go similarity index 100% rename from internal/repository/copilot_message_repo.go rename to backend/internal/repository/copilot_message_repo.go diff --git a/internal/repository/copilot_message_repo_test.go b/backend/internal/repository/copilot_message_repo_test.go similarity index 100% rename from internal/repository/copilot_message_repo_test.go rename to backend/internal/repository/copilot_message_repo_test.go diff --git a/internal/repository/copilot_suggestion_repo.go b/backend/internal/repository/copilot_suggestion_repo.go similarity index 100% rename from internal/repository/copilot_suggestion_repo.go rename to backend/internal/repository/copilot_suggestion_repo.go diff --git a/internal/repository/copilot_thread_repo.go b/backend/internal/repository/copilot_thread_repo.go similarity index 100% rename from internal/repository/copilot_thread_repo.go rename to backend/internal/repository/copilot_thread_repo.go diff --git a/internal/repository/copilot_thread_repo_test.go b/backend/internal/repository/copilot_thread_repo_test.go similarity index 100% rename from internal/repository/copilot_thread_repo_test.go rename to backend/internal/repository/copilot_thread_repo_test.go diff --git a/internal/repository/csat_template_repo.go b/backend/internal/repository/csat_template_repo.go similarity index 100% rename from internal/repository/csat_template_repo.go rename to backend/internal/repository/csat_template_repo.go diff --git a/internal/repository/custom_attribute_definition_repo.go b/backend/internal/repository/custom_attribute_definition_repo.go similarity index 100% rename from internal/repository/custom_attribute_definition_repo.go rename to backend/internal/repository/custom_attribute_definition_repo.go diff --git a/internal/repository/custom_attribute_definition_repo_test.go b/backend/internal/repository/custom_attribute_definition_repo_test.go similarity index 100% rename from internal/repository/custom_attribute_definition_repo_test.go rename to backend/internal/repository/custom_attribute_definition_repo_test.go diff --git a/internal/repository/custom_filter_repo.go b/backend/internal/repository/custom_filter_repo.go similarity index 100% rename from internal/repository/custom_filter_repo.go rename to backend/internal/repository/custom_filter_repo.go diff --git a/internal/repository/custom_filter_repo_test.go b/backend/internal/repository/custom_filter_repo_test.go similarity index 100% rename from internal/repository/custom_filter_repo_test.go rename to backend/internal/repository/custom_filter_repo_test.go diff --git a/internal/repository/custom_role_repo.go b/backend/internal/repository/custom_role_repo.go similarity index 100% rename from internal/repository/custom_role_repo.go rename to backend/internal/repository/custom_role_repo.go diff --git a/internal/repository/custom_role_repo_test.go b/backend/internal/repository/custom_role_repo_test.go similarity index 100% rename from internal/repository/custom_role_repo_test.go rename to backend/internal/repository/custom_role_repo_test.go diff --git a/internal/repository/dashboard_app_repo.go b/backend/internal/repository/dashboard_app_repo.go similarity index 100% rename from internal/repository/dashboard_app_repo.go rename to backend/internal/repository/dashboard_app_repo.go diff --git a/internal/repository/dashboard_app_repo_test.go b/backend/internal/repository/dashboard_app_repo_test.go similarity index 100% rename from internal/repository/dashboard_app_repo_test.go rename to backend/internal/repository/dashboard_app_repo_test.go diff --git a/internal/repository/delivery_status_repo.go b/backend/internal/repository/delivery_status_repo.go similarity index 100% rename from internal/repository/delivery_status_repo.go rename to backend/internal/repository/delivery_status_repo.go diff --git a/internal/repository/direct_upload_repo.go b/backend/internal/repository/direct_upload_repo.go similarity index 100% rename from internal/repository/direct_upload_repo.go rename to backend/internal/repository/direct_upload_repo.go diff --git a/internal/repository/direct_upload_repo_test.go b/backend/internal/repository/direct_upload_repo_test.go similarity index 100% rename from internal/repository/direct_upload_repo_test.go rename to backend/internal/repository/direct_upload_repo_test.go diff --git a/internal/repository/draft_message_repo.go b/backend/internal/repository/draft_message_repo.go similarity index 100% rename from internal/repository/draft_message_repo.go rename to backend/internal/repository/draft_message_repo.go diff --git a/internal/repository/draft_message_repo_test.go b/backend/internal/repository/draft_message_repo_test.go similarity index 100% rename from internal/repository/draft_message_repo_test.go rename to backend/internal/repository/draft_message_repo_test.go diff --git a/internal/repository/email_channel_migration_repo.go b/backend/internal/repository/email_channel_migration_repo.go similarity index 100% rename from internal/repository/email_channel_migration_repo.go rename to backend/internal/repository/email_channel_migration_repo.go diff --git a/internal/repository/folder_repo.go b/backend/internal/repository/folder_repo.go similarity index 100% rename from internal/repository/folder_repo.go rename to backend/internal/repository/folder_repo.go diff --git a/internal/repository/folder_repo_test.go.bak b/backend/internal/repository/folder_repo_test.go.bak similarity index 100% rename from internal/repository/folder_repo_test.go.bak rename to backend/internal/repository/folder_repo_test.go.bak diff --git a/internal/repository/inbox_limit_repo.go b/backend/internal/repository/inbox_limit_repo.go similarity index 100% rename from internal/repository/inbox_limit_repo.go rename to backend/internal/repository/inbox_limit_repo.go diff --git a/internal/repository/inbox_member_repo.go b/backend/internal/repository/inbox_member_repo.go similarity index 100% rename from internal/repository/inbox_member_repo.go rename to backend/internal/repository/inbox_member_repo.go diff --git a/internal/repository/inbox_member_repo_test.go b/backend/internal/repository/inbox_member_repo_test.go similarity index 100% rename from internal/repository/inbox_member_repo_test.go rename to backend/internal/repository/inbox_member_repo_test.go diff --git a/internal/repository/inbox_repo.go b/backend/internal/repository/inbox_repo.go similarity index 100% rename from internal/repository/inbox_repo.go rename to backend/internal/repository/inbox_repo.go diff --git a/internal/repository/inbox_repo_test.go b/backend/internal/repository/inbox_repo_test.go similarity index 100% rename from internal/repository/inbox_repo_test.go rename to backend/internal/repository/inbox_repo_test.go diff --git a/internal/repository/installation_config_repo.go b/backend/internal/repository/installation_config_repo.go similarity index 100% rename from internal/repository/installation_config_repo.go rename to backend/internal/repository/installation_config_repo.go diff --git a/internal/repository/integration_hook_repo.go b/backend/internal/repository/integration_hook_repo.go similarity index 100% rename from internal/repository/integration_hook_repo.go rename to backend/internal/repository/integration_hook_repo.go diff --git a/internal/repository/integration_hook_repo_test.go b/backend/internal/repository/integration_hook_repo_test.go similarity index 100% rename from internal/repository/integration_hook_repo_test.go rename to backend/internal/repository/integration_hook_repo_test.go diff --git a/internal/repository/message_repo.go b/backend/internal/repository/message_repo.go similarity index 100% rename from internal/repository/message_repo.go rename to backend/internal/repository/message_repo.go diff --git a/internal/repository/message_repo_test.go b/backend/internal/repository/message_repo_test.go similarity index 100% rename from internal/repository/message_repo_test.go rename to backend/internal/repository/message_repo_test.go diff --git a/internal/repository/note_repo.go b/backend/internal/repository/note_repo.go similarity index 100% rename from internal/repository/note_repo.go rename to backend/internal/repository/note_repo.go diff --git a/internal/repository/notification_preference_repo.go b/backend/internal/repository/notification_preference_repo.go similarity index 100% rename from internal/repository/notification_preference_repo.go rename to backend/internal/repository/notification_preference_repo.go diff --git a/internal/repository/notification_preference_repo_test.go b/backend/internal/repository/notification_preference_repo_test.go similarity index 100% rename from internal/repository/notification_preference_repo_test.go rename to backend/internal/repository/notification_preference_repo_test.go diff --git a/internal/repository/notification_repo.go b/backend/internal/repository/notification_repo.go similarity index 100% rename from internal/repository/notification_repo.go rename to backend/internal/repository/notification_repo.go diff --git a/internal/repository/notification_repo_test.go b/backend/internal/repository/notification_repo_test.go similarity index 100% rename from internal/repository/notification_repo_test.go rename to backend/internal/repository/notification_repo_test.go diff --git a/internal/repository/notification_setting_repo.go b/backend/internal/repository/notification_setting_repo.go similarity index 100% rename from internal/repository/notification_setting_repo.go rename to backend/internal/repository/notification_setting_repo.go diff --git a/internal/repository/notification_subscription_repo.go b/backend/internal/repository/notification_subscription_repo.go similarity index 100% rename from internal/repository/notification_subscription_repo.go rename to backend/internal/repository/notification_subscription_repo.go diff --git a/internal/repository/permissible_repo.go b/backend/internal/repository/permissible_repo.go similarity index 100% rename from internal/repository/permissible_repo.go rename to backend/internal/repository/permissible_repo.go diff --git a/internal/repository/permissible_repo_test.go b/backend/internal/repository/permissible_repo_test.go similarity index 100% rename from internal/repository/permissible_repo_test.go rename to backend/internal/repository/permissible_repo_test.go diff --git a/internal/repository/platform_app_repo.go b/backend/internal/repository/platform_app_repo.go similarity index 100% rename from internal/repository/platform_app_repo.go rename to backend/internal/repository/platform_app_repo.go diff --git a/internal/repository/platform_app_repo_test.go b/backend/internal/repository/platform_app_repo_test.go similarity index 100% rename from internal/repository/platform_app_repo_test.go rename to backend/internal/repository/platform_app_repo_test.go diff --git a/internal/repository/portal_member_repo.go b/backend/internal/repository/portal_member_repo.go similarity index 100% rename from internal/repository/portal_member_repo.go rename to backend/internal/repository/portal_member_repo.go diff --git a/internal/repository/portal_member_repo_test.go.bak b/backend/internal/repository/portal_member_repo_test.go.bak similarity index 100% rename from internal/repository/portal_member_repo_test.go.bak rename to backend/internal/repository/portal_member_repo_test.go.bak diff --git a/internal/repository/portal_repo.go b/backend/internal/repository/portal_repo.go similarity index 100% rename from internal/repository/portal_repo.go rename to backend/internal/repository/portal_repo.go diff --git a/internal/repository/portal_repo_test.go b/backend/internal/repository/portal_repo_test.go similarity index 100% rename from internal/repository/portal_repo_test.go rename to backend/internal/repository/portal_repo_test.go diff --git a/internal/repository/pre_chat_form_repo.go b/backend/internal/repository/pre_chat_form_repo.go similarity index 100% rename from internal/repository/pre_chat_form_repo.go rename to backend/internal/repository/pre_chat_form_repo.go diff --git a/internal/repository/pre_chat_form_repo_test.go b/backend/internal/repository/pre_chat_form_repo_test.go similarity index 100% rename from internal/repository/pre_chat_form_repo_test.go rename to backend/internal/repository/pre_chat_form_repo_test.go diff --git a/internal/repository/push_token_repo.go b/backend/internal/repository/push_token_repo.go similarity index 100% rename from internal/repository/push_token_repo.go rename to backend/internal/repository/push_token_repo.go diff --git a/internal/repository/push_token_repo_test.go b/backend/internal/repository/push_token_repo_test.go similarity index 100% rename from internal/repository/push_token_repo_test.go rename to backend/internal/repository/push_token_repo_test.go diff --git a/internal/repository/related_category_repo.go b/backend/internal/repository/related_category_repo.go similarity index 100% rename from internal/repository/related_category_repo.go rename to backend/internal/repository/related_category_repo.go diff --git a/internal/repository/reporting_event_repo.go b/backend/internal/repository/reporting_event_repo.go similarity index 100% rename from internal/repository/reporting_event_repo.go rename to backend/internal/repository/reporting_event_repo.go diff --git a/internal/repository/reporting_event_repo_test.go b/backend/internal/repository/reporting_event_repo_test.go similarity index 100% rename from internal/repository/reporting_event_repo_test.go rename to backend/internal/repository/reporting_event_repo_test.go diff --git a/internal/repository/reporting_events_rollup_repo.go b/backend/internal/repository/reporting_events_rollup_repo.go similarity index 100% rename from internal/repository/reporting_events_rollup_repo.go rename to backend/internal/repository/reporting_events_rollup_repo.go diff --git a/internal/repository/reporting_events_rollup_repo_test.go b/backend/internal/repository/reporting_events_rollup_repo_test.go similarity index 100% rename from internal/repository/reporting_events_rollup_repo_test.go rename to backend/internal/repository/reporting_events_rollup_repo_test.go diff --git a/internal/repository/repository.go b/backend/internal/repository/repository.go similarity index 100% rename from internal/repository/repository.go rename to backend/internal/repository/repository.go diff --git a/internal/repository/repository_test.go b/backend/internal/repository/repository_test.go similarity index 100% rename from internal/repository/repository_test.go rename to backend/internal/repository/repository_test.go diff --git a/internal/repository/saml_idp_config_repo.go b/backend/internal/repository/saml_idp_config_repo.go similarity index 100% rename from internal/repository/saml_idp_config_repo.go rename to backend/internal/repository/saml_idp_config_repo.go diff --git a/internal/repository/search_repo.go b/backend/internal/repository/search_repo.go similarity index 100% rename from internal/repository/search_repo.go rename to backend/internal/repository/search_repo.go diff --git a/internal/repository/search_repo.go.bak b/backend/internal/repository/search_repo.go.bak similarity index 100% rename from internal/repository/search_repo.go.bak rename to backend/internal/repository/search_repo.go.bak diff --git a/internal/repository/search_repo_test.go b/backend/internal/repository/search_repo_test.go similarity index 100% rename from internal/repository/search_repo_test.go rename to backend/internal/repository/search_repo_test.go diff --git a/internal/repository/search_repo_test.go_BAK b/backend/internal/repository/search_repo_test.go_BAK similarity index 100% rename from internal/repository/search_repo_test.go_BAK rename to backend/internal/repository/search_repo_test.go_BAK diff --git a/internal/repository/sla_policy_repo.go b/backend/internal/repository/sla_policy_repo.go similarity index 100% rename from internal/repository/sla_policy_repo.go rename to backend/internal/repository/sla_policy_repo.go diff --git a/internal/repository/sso_session_repo.go b/backend/internal/repository/sso_session_repo.go similarity index 100% rename from internal/repository/sso_session_repo.go rename to backend/internal/repository/sso_session_repo.go diff --git a/internal/repository/summary_report_repo.go b/backend/internal/repository/summary_report_repo.go similarity index 100% rename from internal/repository/summary_report_repo.go rename to backend/internal/repository/summary_report_repo.go diff --git a/internal/repository/summary_report_repo_test.go b/backend/internal/repository/summary_report_repo_test.go similarity index 100% rename from internal/repository/summary_report_repo_test.go rename to backend/internal/repository/summary_report_repo_test.go diff --git a/internal/repository/tag_repo.go b/backend/internal/repository/tag_repo.go similarity index 100% rename from internal/repository/tag_repo.go rename to backend/internal/repository/tag_repo.go diff --git a/internal/repository/tag_repo_test.go b/backend/internal/repository/tag_repo_test.go similarity index 100% rename from internal/repository/tag_repo_test.go rename to backend/internal/repository/tag_repo_test.go diff --git a/internal/repository/team_member_repo.go b/backend/internal/repository/team_member_repo.go similarity index 100% rename from internal/repository/team_member_repo.go rename to backend/internal/repository/team_member_repo.go diff --git a/internal/repository/team_repo.go b/backend/internal/repository/team_repo.go similarity index 100% rename from internal/repository/team_repo.go rename to backend/internal/repository/team_repo.go diff --git a/internal/repository/team_repo_test.go b/backend/internal/repository/team_repo_test.go similarity index 100% rename from internal/repository/team_repo_test.go rename to backend/internal/repository/team_repo_test.go diff --git a/internal/repository/team_repo_test.go.bak b/backend/internal/repository/team_repo_test.go.bak similarity index 100% rename from internal/repository/team_repo_test.go.bak rename to backend/internal/repository/team_repo_test.go.bak diff --git a/internal/repository/testdb_helper.go b/backend/internal/repository/testdb_helper.go similarity index 100% rename from internal/repository/testdb_helper.go rename to backend/internal/repository/testdb_helper.go diff --git a/internal/repository/user_repo.go b/backend/internal/repository/user_repo.go similarity index 100% rename from internal/repository/user_repo.go rename to backend/internal/repository/user_repo.go diff --git a/internal/repository/user_repo_test.go b/backend/internal/repository/user_repo_test.go similarity index 100% rename from internal/repository/user_repo_test.go rename to backend/internal/repository/user_repo_test.go diff --git a/internal/repository/webhook_subscription_repo.go b/backend/internal/repository/webhook_subscription_repo.go similarity index 100% rename from internal/repository/webhook_subscription_repo.go rename to backend/internal/repository/webhook_subscription_repo.go diff --git a/internal/repository/webhook_subscription_repo_test.go.bak b/backend/internal/repository/webhook_subscription_repo_test.go.bak similarity index 100% rename from internal/repository/webhook_subscription_repo_test.go.bak rename to backend/internal/repository/webhook_subscription_repo_test.go.bak diff --git a/internal/repository/whatsapp_call_repo.go b/backend/internal/repository/whatsapp_call_repo.go similarity index 100% rename from internal/repository/whatsapp_call_repo.go rename to backend/internal/repository/whatsapp_call_repo.go diff --git a/internal/repository/widget_file_upload_repo.go b/backend/internal/repository/widget_file_upload_repo.go similarity index 100% rename from internal/repository/widget_file_upload_repo.go rename to backend/internal/repository/widget_file_upload_repo.go diff --git a/internal/repository/widget_file_upload_repo_test.go b/backend/internal/repository/widget_file_upload_repo_test.go similarity index 100% rename from internal/repository/widget_file_upload_repo_test.go rename to backend/internal/repository/widget_file_upload_repo_test.go diff --git a/internal/repository/widget_offline_message_repo.go b/backend/internal/repository/widget_offline_message_repo.go similarity index 100% rename from internal/repository/widget_offline_message_repo.go rename to backend/internal/repository/widget_offline_message_repo.go diff --git a/internal/repository/widget_offline_message_repo_test.go b/backend/internal/repository/widget_offline_message_repo_test.go similarity index 100% rename from internal/repository/widget_offline_message_repo_test.go rename to backend/internal/repository/widget_offline_message_repo_test.go diff --git a/internal/repository/widget_repo_test.go b/backend/internal/repository/widget_repo_test.go similarity index 100% rename from internal/repository/widget_repo_test.go rename to backend/internal/repository/widget_repo_test.go diff --git a/internal/repository/widget_test_repo.go b/backend/internal/repository/widget_test_repo.go similarity index 100% rename from internal/repository/widget_test_repo.go rename to backend/internal/repository/widget_test_repo.go diff --git a/internal/repository/widget_theme_config_repo.go b/backend/internal/repository/widget_theme_config_repo.go similarity index 100% rename from internal/repository/widget_theme_config_repo.go rename to backend/internal/repository/widget_theme_config_repo.go diff --git a/internal/repository/working_hour_repo.go b/backend/internal/repository/working_hour_repo.go similarity index 100% rename from internal/repository/working_hour_repo.go rename to backend/internal/repository/working_hour_repo.go diff --git a/internal/router/channel_callbacks.go b/backend/internal/router/channel_callbacks.go similarity index 100% rename from internal/router/channel_callbacks.go rename to backend/internal/router/channel_callbacks.go diff --git a/internal/router/hello.txt b/backend/internal/router/hello.txt similarity index 100% rename from internal/router/hello.txt rename to backend/internal/router/hello.txt diff --git a/internal/router/integration_callbacks.go b/backend/internal/router/integration_callbacks.go similarity index 100% rename from internal/router/integration_callbacks.go rename to backend/internal/router/integration_callbacks.go diff --git a/internal/router/router.go b/backend/internal/router/router.go similarity index 100% rename from internal/router/router.go rename to backend/internal/router/router.go diff --git a/internal/router/router_new.go b/backend/internal/router/router_new.go similarity index 100% rename from internal/router/router_new.go rename to backend/internal/router/router_new.go diff --git a/internal/router/router_test.go b/backend/internal/router/router_test.go similarity index 100% rename from internal/router/router_test.go rename to backend/internal/router/router_test.go diff --git a/internal/router/router_test_write.go_BAK b/backend/internal/router/router_test_write.go_BAK similarity index 100% rename from internal/router/router_test_write.go_BAK rename to backend/internal/router/router_test_write.go_BAK diff --git a/internal/router/test3.txt b/backend/internal/router/test3.txt similarity index 100% rename from internal/router/test3.txt rename to backend/internal/router/test3.txt diff --git a/internal/search/engine.go b/backend/internal/search/engine.go similarity index 100% rename from internal/search/engine.go rename to backend/internal/search/engine.go diff --git a/internal/search/engine_db.go b/backend/internal/search/engine_db.go similarity index 100% rename from internal/search/engine_db.go rename to backend/internal/search/engine_db.go diff --git a/internal/search/engine_meili.go b/backend/internal/search/engine_meili.go similarity index 100% rename from internal/search/engine_meili.go rename to backend/internal/search/engine_meili.go diff --git a/internal/search/engine_meili_live_test.go b/backend/internal/search/engine_meili_live_test.go similarity index 100% rename from internal/search/engine_meili_live_test.go rename to backend/internal/search/engine_meili_live_test.go diff --git a/internal/search/engine_test.go b/backend/internal/search/engine_test.go similarity index 100% rename from internal/search/engine_test.go rename to backend/internal/search/engine_test.go diff --git a/internal/search/search_filter.go b/backend/internal/search/search_filter.go similarity index 100% rename from internal/search/search_filter.go rename to backend/internal/search/search_filter.go diff --git a/internal/search/search_filter_test.go b/backend/internal/search/search_filter_test.go similarity index 100% rename from internal/search/search_filter_test.go rename to backend/internal/search/search_filter_test.go diff --git a/internal/search/search_repo_interface.go b/backend/internal/search/search_repo_interface.go similarity index 100% rename from internal/search/search_repo_interface.go rename to backend/internal/search/search_repo_interface.go diff --git a/internal/search/search_result.go b/backend/internal/search/search_result.go similarity index 100% rename from internal/search/search_result.go rename to backend/internal/search/search_result.go diff --git a/internal/search/search_service.go b/backend/internal/search/search_service.go similarity index 100% rename from internal/search/search_service.go rename to backend/internal/search/search_service.go diff --git a/internal/search/search_service.go.bak b/backend/internal/search/search_service.go.bak similarity index 100% rename from internal/search/search_service.go.bak rename to backend/internal/search/search_service.go.bak diff --git a/internal/search/search_service_test.go b/backend/internal/search/search_service_test.go similarity index 100% rename from internal/search/search_service_test.go rename to backend/internal/search/search_service_test.go diff --git a/internal/search_search_bak_offline.bak/search_filter.go b/backend/internal/search_search_bak_offline.bak/search_filter.go similarity index 100% rename from internal/search_search_bak_offline.bak/search_filter.go rename to backend/internal/search_search_bak_offline.bak/search_filter.go diff --git a/internal/search_search_bak_offline.bak/search_result.go b/backend/internal/search_search_bak_offline.bak/search_result.go similarity index 100% rename from internal/search_search_bak_offline.bak/search_result.go rename to backend/internal/search_search_bak_offline.bak/search_result.go diff --git a/internal/search_search_bak_offline.bak/search_service.go b/backend/internal/search_search_bak_offline.bak/search_service.go similarity index 100% rename from internal/search_search_bak_offline.bak/search_service.go rename to backend/internal/search_search_bak_offline.bak/search_service.go diff --git a/internal/security/encryption.go b/backend/internal/security/encryption.go similarity index 100% rename from internal/security/encryption.go rename to backend/internal/security/encryption.go diff --git a/internal/security/jwt_security.go b/backend/internal/security/jwt_security.go similarity index 100% rename from internal/security/jwt_security.go rename to backend/internal/security/jwt_security.go diff --git a/internal/security/sql_safety.go b/backend/internal/security/sql_safety.go similarity index 100% rename from internal/security/sql_safety.go rename to backend/internal/security/sql_safety.go diff --git a/internal/security/ssrf_protection.go b/backend/internal/security/ssrf_protection.go similarity index 100% rename from internal/security/ssrf_protection.go rename to backend/internal/security/ssrf_protection.go diff --git a/internal/security/test_write.go b/backend/internal/security/test_write.go similarity index 100% rename from internal/security/test_write.go rename to backend/internal/security/test_write.go diff --git a/internal/security/webhook_signing.go b/backend/internal/security/webhook_signing.go similarity index 100% rename from internal/security/webhook_signing.go rename to backend/internal/security/webhook_signing.go diff --git a/internal/service/account_service.go b/backend/internal/service/account_service.go similarity index 100% rename from internal/service/account_service.go rename to backend/internal/service/account_service.go diff --git a/internal/service/account_service_test.go b/backend/internal/service/account_service_test.go similarity index 100% rename from internal/service/account_service_test.go rename to backend/internal/service/account_service_test.go diff --git a/internal/service/account_service_test.go_BAK b/backend/internal/service/account_service_test.go_BAK similarity index 100% rename from internal/service/account_service_test.go_BAK rename to backend/internal/service/account_service_test.go_BAK diff --git a/internal/service/account_user_service.go b/backend/internal/service/account_user_service.go similarity index 100% rename from internal/service/account_user_service.go rename to backend/internal/service/account_user_service.go diff --git a/internal/service/agent_bot_inbox_service.go b/backend/internal/service/agent_bot_inbox_service.go similarity index 100% rename from internal/service/agent_bot_inbox_service.go rename to backend/internal/service/agent_bot_inbox_service.go diff --git a/internal/service/agent_bot_inbox_service_test.go b/backend/internal/service/agent_bot_inbox_service_test.go similarity index 100% rename from internal/service/agent_bot_inbox_service_test.go rename to backend/internal/service/agent_bot_inbox_service_test.go diff --git a/internal/service/agent_bot_listener.go b/backend/internal/service/agent_bot_listener.go similarity index 100% rename from internal/service/agent_bot_listener.go rename to backend/internal/service/agent_bot_listener.go diff --git a/internal/service/agent_bot_listener_test.go b/backend/internal/service/agent_bot_listener_test.go similarity index 100% rename from internal/service/agent_bot_listener_test.go rename to backend/internal/service/agent_bot_listener_test.go diff --git a/internal/service/agent_bot_service.go b/backend/internal/service/agent_bot_service.go similarity index 100% rename from internal/service/agent_bot_service.go rename to backend/internal/service/agent_bot_service.go diff --git a/internal/service/agent_capacity_policy_service.go b/backend/internal/service/agent_capacity_policy_service.go similarity index 100% rename from internal/service/agent_capacity_policy_service.go rename to backend/internal/service/agent_capacity_policy_service.go diff --git a/internal/service/agent_capacity_policy_service_test.go b/backend/internal/service/agent_capacity_policy_service_test.go similarity index 100% rename from internal/service/agent_capacity_policy_service_test.go rename to backend/internal/service/agent_capacity_policy_service_test.go diff --git a/internal/service/agent_service.go b/backend/internal/service/agent_service.go similarity index 100% rename from internal/service/agent_service.go rename to backend/internal/service/agent_service.go diff --git a/internal/service/analytics_csv.go b/backend/internal/service/analytics_csv.go similarity index 100% rename from internal/service/analytics_csv.go rename to backend/internal/service/analytics_csv.go diff --git a/internal/service/analytics_p513_test.go b/backend/internal/service/analytics_p513_test.go similarity index 100% rename from internal/service/analytics_p513_test.go rename to backend/internal/service/analytics_p513_test.go diff --git a/internal/service/analytics_query_helpers.go b/backend/internal/service/analytics_query_helpers.go similarity index 100% rename from internal/service/analytics_query_helpers.go rename to backend/internal/service/analytics_query_helpers.go diff --git a/internal/service/analytics_service.go b/backend/internal/service/analytics_service.go similarity index 100% rename from internal/service/analytics_service.go rename to backend/internal/service/analytics_service.go diff --git a/internal/service/analytics_service_test.go_BAK b/backend/internal/service/analytics_service_test.go_BAK similarity index 100% rename from internal/service/analytics_service_test.go_BAK rename to backend/internal/service/analytics_service_test.go_BAK diff --git a/internal/service/applied_sla_service.go b/backend/internal/service/applied_sla_service.go similarity index 100% rename from internal/service/applied_sla_service.go rename to backend/internal/service/applied_sla_service.go diff --git a/internal/service/applied_sla_service_test.go b/backend/internal/service/applied_sla_service_test.go similarity index 100% rename from internal/service/applied_sla_service_test.go rename to backend/internal/service/applied_sla_service_test.go diff --git a/internal/service/article_service.go b/backend/internal/service/article_service.go similarity index 100% rename from internal/service/article_service.go rename to backend/internal/service/article_service.go diff --git a/internal/service/article_service_test.go b/backend/internal/service/article_service_test.go similarity index 100% rename from internal/service/article_service_test.go rename to backend/internal/service/article_service_test.go diff --git a/internal/service/article_service_test.go_BAK b/backend/internal/service/article_service_test.go_BAK similarity index 100% rename from internal/service/article_service_test.go_BAK rename to backend/internal/service/article_service_test.go_BAK diff --git a/internal/service/assignable_agent_service.go b/backend/internal/service/assignable_agent_service.go similarity index 100% rename from internal/service/assignable_agent_service.go rename to backend/internal/service/assignable_agent_service.go diff --git a/internal/service/assignment_policy_service.go b/backend/internal/service/assignment_policy_service.go similarity index 100% rename from internal/service/assignment_policy_service.go rename to backend/internal/service/assignment_policy_service.go diff --git a/internal/service/assignment_policy_v2_service.go b/backend/internal/service/assignment_policy_v2_service.go similarity index 100% rename from internal/service/assignment_policy_v2_service.go rename to backend/internal/service/assignment_policy_v2_service.go diff --git a/internal/service/assignment_policy_v2_service_test.go b/backend/internal/service/assignment_policy_v2_service_test.go similarity index 100% rename from internal/service/assignment_policy_v2_service_test.go rename to backend/internal/service/assignment_policy_v2_service_test.go diff --git a/internal/service/attachment_service.go b/backend/internal/service/attachment_service.go similarity index 100% rename from internal/service/attachment_service.go rename to backend/internal/service/attachment_service.go diff --git a/internal/service/attachment_service_test.go_BAK b/backend/internal/service/attachment_service_test.go_BAK similarity index 100% rename from internal/service/attachment_service_test.go_BAK rename to backend/internal/service/attachment_service_test.go_BAK diff --git a/internal/service/audit_service.go b/backend/internal/service/audit_service.go similarity index 100% rename from internal/service/audit_service.go rename to backend/internal/service/audit_service.go diff --git a/internal/service/audit_service_test.go b/backend/internal/service/audit_service_test.go similarity index 100% rename from internal/service/audit_service_test.go rename to backend/internal/service/audit_service_test.go diff --git a/internal/service/auth_service.go b/backend/internal/service/auth_service.go similarity index 100% rename from internal/service/auth_service.go rename to backend/internal/service/auth_service.go diff --git a/internal/service/auth_service_test.go b/backend/internal/service/auth_service_test.go similarity index 100% rename from internal/service/auth_service_test.go rename to backend/internal/service/auth_service_test.go diff --git a/internal/service/auth_service_test.go_BAK b/backend/internal/service/auth_service_test.go_BAK similarity index 100% rename from internal/service/auth_service_test.go_BAK rename to backend/internal/service/auth_service_test.go_BAK diff --git a/internal/service/auto_reply_rule_service.go b/backend/internal/service/auto_reply_rule_service.go similarity index 100% rename from internal/service/auto_reply_rule_service.go rename to backend/internal/service/auto_reply_rule_service.go diff --git a/internal/service/auto_reply_rule_service_test.go b/backend/internal/service/auto_reply_rule_service_test.go similarity index 100% rename from internal/service/auto_reply_rule_service_test.go rename to backend/internal/service/auto_reply_rule_service_test.go diff --git a/internal/service/banner_service.go b/backend/internal/service/banner_service.go similarity index 100% rename from internal/service/banner_service.go rename to backend/internal/service/banner_service.go diff --git a/internal/service/benchmark_test.go.bak b/backend/internal/service/benchmark_test.go.bak similarity index 100% rename from internal/service/benchmark_test.go.bak rename to backend/internal/service/benchmark_test.go.bak diff --git a/internal/service/campaign_service.go b/backend/internal/service/campaign_service.go similarity index 100% rename from internal/service/campaign_service.go rename to backend/internal/service/campaign_service.go diff --git a/internal/service/captain_assistant_response_service.go b/backend/internal/service/captain_assistant_response_service.go similarity index 100% rename from internal/service/captain_assistant_response_service.go rename to backend/internal/service/captain_assistant_response_service.go diff --git a/internal/service/captain_assistant_response_service_test.go b/backend/internal/service/captain_assistant_response_service_test.go similarity index 100% rename from internal/service/captain_assistant_response_service_test.go rename to backend/internal/service/captain_assistant_response_service_test.go diff --git a/internal/service/captain_assistant_service.go b/backend/internal/service/captain_assistant_service.go similarity index 100% rename from internal/service/captain_assistant_service.go rename to backend/internal/service/captain_assistant_service.go diff --git a/internal/service/captain_assistant_service_test.go_BAK b/backend/internal/service/captain_assistant_service_test.go_BAK similarity index 100% rename from internal/service/captain_assistant_service_test.go_BAK rename to backend/internal/service/captain_assistant_service_test.go_BAK diff --git a/internal/service/captain_bulk_action_service.go b/backend/internal/service/captain_bulk_action_service.go similarity index 100% rename from internal/service/captain_bulk_action_service.go rename to backend/internal/service/captain_bulk_action_service.go diff --git a/internal/service/captain_bulk_action_service_test.go b/backend/internal/service/captain_bulk_action_service_test.go similarity index 100% rename from internal/service/captain_bulk_action_service_test.go rename to backend/internal/service/captain_bulk_action_service_test.go diff --git a/internal/service/captain_conversation_service.go b/backend/internal/service/captain_conversation_service.go similarity index 100% rename from internal/service/captain_conversation_service.go rename to backend/internal/service/captain_conversation_service.go diff --git a/internal/service/captain_conversation_worker_test.go b/backend/internal/service/captain_conversation_worker_test.go similarity index 100% rename from internal/service/captain_conversation_worker_test.go rename to backend/internal/service/captain_conversation_worker_test.go diff --git a/internal/service/captain_custom_tool_service.go b/backend/internal/service/captain_custom_tool_service.go similarity index 100% rename from internal/service/captain_custom_tool_service.go rename to backend/internal/service/captain_custom_tool_service.go diff --git a/internal/service/captain_custom_tool_service_test.go_BAK b/backend/internal/service/captain_custom_tool_service_test.go_BAK similarity index 100% rename from internal/service/captain_custom_tool_service_test.go_BAK rename to backend/internal/service/captain_custom_tool_service_test.go_BAK diff --git a/internal/service/captain_document_service.go b/backend/internal/service/captain_document_service.go similarity index 100% rename from internal/service/captain_document_service.go rename to backend/internal/service/captain_document_service.go diff --git a/internal/service/captain_document_service_test.go b/backend/internal/service/captain_document_service_test.go similarity index 100% rename from internal/service/captain_document_service_test.go rename to backend/internal/service/captain_document_service_test.go diff --git a/internal/service/captain_document_service_test.go_BAK b/backend/internal/service/captain_document_service_test.go_BAK similarity index 100% rename from internal/service/captain_document_service_test.go_BAK rename to backend/internal/service/captain_document_service_test.go_BAK diff --git a/internal/service/captain_document_worker.go b/backend/internal/service/captain_document_worker.go similarity index 100% rename from internal/service/captain_document_worker.go rename to backend/internal/service/captain_document_worker.go diff --git a/internal/service/captain_preference_service.go b/backend/internal/service/captain_preference_service.go similarity index 100% rename from internal/service/captain_preference_service.go rename to backend/internal/service/captain_preference_service.go diff --git a/internal/service/captain_preference_service_test.go b/backend/internal/service/captain_preference_service_test.go similarity index 100% rename from internal/service/captain_preference_service_test.go rename to backend/internal/service/captain_preference_service_test.go diff --git a/internal/service/captain_scenario_service.go b/backend/internal/service/captain_scenario_service.go similarity index 100% rename from internal/service/captain_scenario_service.go rename to backend/internal/service/captain_scenario_service.go diff --git a/internal/service/captain_scenario_service_test.go_BAK b/backend/internal/service/captain_scenario_service_test.go_BAK similarity index 100% rename from internal/service/captain_scenario_service_test.go_BAK rename to backend/internal/service/captain_scenario_service_test.go_BAK diff --git a/internal/service/captain_task_extended_service.go b/backend/internal/service/captain_task_extended_service.go similarity index 100% rename from internal/service/captain_task_extended_service.go rename to backend/internal/service/captain_task_extended_service.go diff --git a/internal/service/captain_task_extended_service_test.go b/backend/internal/service/captain_task_extended_service_test.go similarity index 100% rename from internal/service/captain_task_extended_service_test.go rename to backend/internal/service/captain_task_extended_service_test.go diff --git a/internal/service/captain_task_service.go b/backend/internal/service/captain_task_service.go similarity index 100% rename from internal/service/captain_task_service.go rename to backend/internal/service/captain_task_service.go diff --git a/internal/service/captain_task_service.go.bak b/backend/internal/service/captain_task_service.go.bak similarity index 100% rename from internal/service/captain_task_service.go.bak rename to backend/internal/service/captain_task_service.go.bak diff --git a/internal/service/captain_task_service.go.bak2 b/backend/internal/service/captain_task_service.go.bak2 similarity index 100% rename from internal/service/captain_task_service.go.bak2 rename to backend/internal/service/captain_task_service.go.bak2 diff --git a/internal/service/captain_task_service_streaming_test.go b/backend/internal/service/captain_task_service_streaming_test.go similarity index 100% rename from internal/service/captain_task_service_streaming_test.go rename to backend/internal/service/captain_task_service_streaming_test.go diff --git a/internal/service/captain_task_service_test.go b/backend/internal/service/captain_task_service_test.go similarity index 100% rename from internal/service/captain_task_service_test.go rename to backend/internal/service/captain_task_service_test.go diff --git a/internal/service/category_service.go b/backend/internal/service/category_service.go similarity index 100% rename from internal/service/category_service.go rename to backend/internal/service/category_service.go diff --git a/internal/service/category_service_test.go b/backend/internal/service/category_service_test.go similarity index 100% rename from internal/service/category_service_test.go rename to backend/internal/service/category_service_test.go diff --git a/internal/service/category_service_test.go.bak b/backend/internal/service/category_service_test.go.bak similarity index 100% rename from internal/service/category_service_test.go.bak rename to backend/internal/service/category_service_test.go.bak diff --git a/internal/service/channel_email_service.go b/backend/internal/service/channel_email_service.go similarity index 100% rename from internal/service/channel_email_service.go rename to backend/internal/service/channel_email_service.go diff --git a/internal/service/channel_facebook_service.go b/backend/internal/service/channel_facebook_service.go similarity index 100% rename from internal/service/channel_facebook_service.go rename to backend/internal/service/channel_facebook_service.go diff --git a/internal/service/channel_google_service.go b/backend/internal/service/channel_google_service.go similarity index 100% rename from internal/service/channel_google_service.go rename to backend/internal/service/channel_google_service.go diff --git a/internal/service/channel_instagram_service.go b/backend/internal/service/channel_instagram_service.go similarity index 100% rename from internal/service/channel_instagram_service.go rename to backend/internal/service/channel_instagram_service.go diff --git a/internal/service/channel_instagram_service.go_BAK2 b/backend/internal/service/channel_instagram_service.go_BAK2 similarity index 100% rename from internal/service/channel_instagram_service.go_BAK2 rename to backend/internal/service/channel_instagram_service.go_BAK2 diff --git a/internal/service/channel_line_service.go b/backend/internal/service/channel_line_service.go similarity index 100% rename from internal/service/channel_line_service.go rename to backend/internal/service/channel_line_service.go diff --git a/internal/service/channel_microsoft_service.go b/backend/internal/service/channel_microsoft_service.go similarity index 100% rename from internal/service/channel_microsoft_service.go rename to backend/internal/service/channel_microsoft_service.go diff --git a/internal/service/channel_tiktok_service.go b/backend/internal/service/channel_tiktok_service.go similarity index 100% rename from internal/service/channel_tiktok_service.go rename to backend/internal/service/channel_tiktok_service.go diff --git a/internal/service/channel_twilio_service.go b/backend/internal/service/channel_twilio_service.go similarity index 100% rename from internal/service/channel_twilio_service.go rename to backend/internal/service/channel_twilio_service.go diff --git a/internal/service/channel_twilio_sms_service.go b/backend/internal/service/channel_twilio_sms_service.go similarity index 100% rename from internal/service/channel_twilio_sms_service.go rename to backend/internal/service/channel_twilio_sms_service.go diff --git a/internal/service/channel_twitter_service.go b/backend/internal/service/channel_twitter_service.go similarity index 100% rename from internal/service/channel_twitter_service.go rename to backend/internal/service/channel_twitter_service.go diff --git a/internal/service/company_service.go b/backend/internal/service/company_service.go similarity index 100% rename from internal/service/company_service.go rename to backend/internal/service/company_service.go diff --git a/internal/service/company_service_test.go b/backend/internal/service/company_service_test.go similarity index 100% rename from internal/service/company_service_test.go rename to backend/internal/service/company_service_test.go diff --git a/internal/service/contact_export_mailer.go b/backend/internal/service/contact_export_mailer.go similarity index 100% rename from internal/service/contact_export_mailer.go rename to backend/internal/service/contact_export_mailer.go diff --git a/internal/service/contact_export_worker.go b/backend/internal/service/contact_export_worker.go similarity index 100% rename from internal/service/contact_export_worker.go rename to backend/internal/service/contact_export_worker.go diff --git a/internal/service/contact_import_worker.go b/backend/internal/service/contact_import_worker.go similarity index 100% rename from internal/service/contact_import_worker.go rename to backend/internal/service/contact_import_worker.go diff --git a/internal/service/contact_inbox_service.go b/backend/internal/service/contact_inbox_service.go similarity index 100% rename from internal/service/contact_inbox_service.go rename to backend/internal/service/contact_inbox_service.go diff --git a/internal/service/contact_inbox_service_test.go b/backend/internal/service/contact_inbox_service_test.go similarity index 100% rename from internal/service/contact_inbox_service_test.go rename to backend/internal/service/contact_inbox_service_test.go diff --git a/internal/service/contact_inbox_service_test.go_BAK b/backend/internal/service/contact_inbox_service_test.go_BAK similarity index 100% rename from internal/service/contact_inbox_service_test.go_BAK rename to backend/internal/service/contact_inbox_service_test.go_BAK diff --git a/internal/service/contact_merge_service.go b/backend/internal/service/contact_merge_service.go similarity index 100% rename from internal/service/contact_merge_service.go rename to backend/internal/service/contact_merge_service.go diff --git a/internal/service/contact_merge_service_test.go b/backend/internal/service/contact_merge_service_test.go similarity index 100% rename from internal/service/contact_merge_service_test.go rename to backend/internal/service/contact_merge_service_test.go diff --git a/internal/service/contact_note_service.go b/backend/internal/service/contact_note_service.go similarity index 100% rename from internal/service/contact_note_service.go rename to backend/internal/service/contact_note_service.go diff --git a/internal/service/contact_service.go b/backend/internal/service/contact_service.go similarity index 100% rename from internal/service/contact_service.go rename to backend/internal/service/contact_service.go diff --git a/internal/service/contact_service_g3_test.go b/backend/internal/service/contact_service_g3_test.go similarity index 100% rename from internal/service/contact_service_g3_test.go rename to backend/internal/service/contact_service_g3_test.go diff --git a/internal/service/contact_service_test.go_BAK b/backend/internal/service/contact_service_test.go_BAK similarity index 100% rename from internal/service/contact_service_test.go_BAK rename to backend/internal/service/contact_service_test.go_BAK diff --git a/internal/service/conversation_assignment_test.go b/backend/internal/service/conversation_assignment_test.go similarity index 100% rename from internal/service/conversation_assignment_test.go rename to backend/internal/service/conversation_assignment_test.go diff --git a/internal/service/conversation_delete_worker.go b/backend/internal/service/conversation_delete_worker.go similarity index 100% rename from internal/service/conversation_delete_worker.go rename to backend/internal/service/conversation_delete_worker.go diff --git a/internal/service/conversation_filter_test.go b/backend/internal/service/conversation_filter_test.go similarity index 100% rename from internal/service/conversation_filter_test.go rename to backend/internal/service/conversation_filter_test.go diff --git a/internal/service/conversation_finder_strategy.go b/backend/internal/service/conversation_finder_strategy.go similarity index 100% rename from internal/service/conversation_finder_strategy.go rename to backend/internal/service/conversation_finder_strategy.go diff --git a/internal/service/conversation_insight_service.go b/backend/internal/service/conversation_insight_service.go similarity index 100% rename from internal/service/conversation_insight_service.go rename to backend/internal/service/conversation_insight_service.go diff --git a/internal/service/conversation_insight_service_test.go b/backend/internal/service/conversation_insight_service_test.go similarity index 100% rename from internal/service/conversation_insight_service_test.go rename to backend/internal/service/conversation_insight_service_test.go diff --git a/internal/service/conversation_maintenance_worker.go b/backend/internal/service/conversation_maintenance_worker.go similarity index 100% rename from internal/service/conversation_maintenance_worker.go rename to backend/internal/service/conversation_maintenance_worker.go diff --git a/internal/service/conversation_maintenance_worker_test.go b/backend/internal/service/conversation_maintenance_worker_test.go similarity index 100% rename from internal/service/conversation_maintenance_worker_test.go rename to backend/internal/service/conversation_maintenance_worker_test.go diff --git a/internal/service/conversation_participant_service.go b/backend/internal/service/conversation_participant_service.go similarity index 100% rename from internal/service/conversation_participant_service.go rename to backend/internal/service/conversation_participant_service.go diff --git a/internal/service/conversation_participant_service_test.go b/backend/internal/service/conversation_participant_service_test.go similarity index 100% rename from internal/service/conversation_participant_service_test.go rename to backend/internal/service/conversation_participant_service_test.go diff --git a/internal/service/conversation_service.go b/backend/internal/service/conversation_service.go similarity index 100% rename from internal/service/conversation_service.go rename to backend/internal/service/conversation_service.go diff --git a/internal/service/conversation_service_test.go b/backend/internal/service/conversation_service_test.go similarity index 100% rename from internal/service/conversation_service_test.go rename to backend/internal/service/conversation_service_test.go diff --git a/internal/service/conversation_service_test.go_BAK b/backend/internal/service/conversation_service_test.go_BAK similarity index 100% rename from internal/service/conversation_service_test.go_BAK rename to backend/internal/service/conversation_service_test.go_BAK diff --git a/internal/service/copilot_context_service.go b/backend/internal/service/copilot_context_service.go similarity index 100% rename from internal/service/copilot_context_service.go rename to backend/internal/service/copilot_context_service.go diff --git a/internal/service/copilot_context_service_test.go b/backend/internal/service/copilot_context_service_test.go similarity index 100% rename from internal/service/copilot_context_service_test.go rename to backend/internal/service/copilot_context_service_test.go diff --git a/internal/service/copilot_response_worker.go b/backend/internal/service/copilot_response_worker.go similarity index 100% rename from internal/service/copilot_response_worker.go rename to backend/internal/service/copilot_response_worker.go diff --git a/internal/service/copilot_response_worker_test.go b/backend/internal/service/copilot_response_worker_test.go similarity index 100% rename from internal/service/copilot_response_worker_test.go rename to backend/internal/service/copilot_response_worker_test.go diff --git a/internal/service/copilot_service.go b/backend/internal/service/copilot_service.go similarity index 100% rename from internal/service/copilot_service.go rename to backend/internal/service/copilot_service.go diff --git a/internal/service/copilot_service_test.go_BAK b/backend/internal/service/copilot_service_test.go_BAK similarity index 100% rename from internal/service/copilot_service_test.go_BAK rename to backend/internal/service/copilot_service_test.go_BAK diff --git a/internal/service/csat_metrics_service.go b/backend/internal/service/csat_metrics_service.go similarity index 100% rename from internal/service/csat_metrics_service.go rename to backend/internal/service/csat_metrics_service.go diff --git a/internal/service/csat_template_service.go b/backend/internal/service/csat_template_service.go similarity index 100% rename from internal/service/csat_template_service.go rename to backend/internal/service/csat_template_service.go diff --git a/internal/service/csat_template_worker.go b/backend/internal/service/csat_template_worker.go similarity index 100% rename from internal/service/csat_template_worker.go rename to backend/internal/service/csat_template_worker.go diff --git a/internal/service/csat_template_worker_test.go b/backend/internal/service/csat_template_worker_test.go similarity index 100% rename from internal/service/csat_template_worker_test.go rename to backend/internal/service/csat_template_worker_test.go diff --git a/internal/service/custom_attribute_definition_service.go b/backend/internal/service/custom_attribute_definition_service.go similarity index 100% rename from internal/service/custom_attribute_definition_service.go rename to backend/internal/service/custom_attribute_definition_service.go diff --git a/internal/service/custom_attribute_definition_service_test.go b/backend/internal/service/custom_attribute_definition_service_test.go similarity index 100% rename from internal/service/custom_attribute_definition_service_test.go rename to backend/internal/service/custom_attribute_definition_service_test.go diff --git a/internal/service/custom_attribute_value_service.go b/backend/internal/service/custom_attribute_value_service.go similarity index 100% rename from internal/service/custom_attribute_value_service.go rename to backend/internal/service/custom_attribute_value_service.go diff --git a/internal/service/custom_attribute_value_service_test.go b/backend/internal/service/custom_attribute_value_service_test.go similarity index 100% rename from internal/service/custom_attribute_value_service_test.go rename to backend/internal/service/custom_attribute_value_service_test.go diff --git a/internal/service/custom_attribute_value_service_test.go_BAK b/backend/internal/service/custom_attribute_value_service_test.go_BAK similarity index 100% rename from internal/service/custom_attribute_value_service_test.go_BAK rename to backend/internal/service/custom_attribute_value_service_test.go_BAK diff --git a/internal/service/custom_filter_service.go b/backend/internal/service/custom_filter_service.go similarity index 100% rename from internal/service/custom_filter_service.go rename to backend/internal/service/custom_filter_service.go diff --git a/internal/service/custom_filter_service_test.go b/backend/internal/service/custom_filter_service_test.go similarity index 100% rename from internal/service/custom_filter_service_test.go rename to backend/internal/service/custom_filter_service_test.go diff --git a/internal/service/custom_role_service.go b/backend/internal/service/custom_role_service.go similarity index 100% rename from internal/service/custom_role_service.go rename to backend/internal/service/custom_role_service.go diff --git a/internal/service/custom_role_service_test.go b/backend/internal/service/custom_role_service_test.go similarity index 100% rename from internal/service/custom_role_service_test.go rename to backend/internal/service/custom_role_service_test.go diff --git a/internal/service/dashboard_app_service.go b/backend/internal/service/dashboard_app_service.go similarity index 100% rename from internal/service/dashboard_app_service.go rename to backend/internal/service/dashboard_app_service.go diff --git a/internal/service/dashboard_app_service_test.go b/backend/internal/service/dashboard_app_service_test.go similarity index 100% rename from internal/service/dashboard_app_service_test.go rename to backend/internal/service/dashboard_app_service_test.go diff --git a/internal/service/dashboard_app_service_test.go_BAK b/backend/internal/service/dashboard_app_service_test.go_BAK similarity index 100% rename from internal/service/dashboard_app_service_test.go_BAK rename to backend/internal/service/dashboard_app_service_test.go_BAK diff --git a/internal/service/delivery_status_service.go b/backend/internal/service/delivery_status_service.go similarity index 100% rename from internal/service/delivery_status_service.go rename to backend/internal/service/delivery_status_service.go diff --git a/internal/service/draft_message_service.go b/backend/internal/service/draft_message_service.go similarity index 100% rename from internal/service/draft_message_service.go rename to backend/internal/service/draft_message_service.go diff --git a/internal/service/draft_message_service_test.go b/backend/internal/service/draft_message_service_test.go similarity index 100% rename from internal/service/draft_message_service_test.go rename to backend/internal/service/draft_message_service_test.go diff --git a/internal/service/dyte_integration_service.go b/backend/internal/service/dyte_integration_service.go similarity index 100% rename from internal/service/dyte_integration_service.go rename to backend/internal/service/dyte_integration_service.go diff --git a/internal/service/dyte_integration_service_test.go b/backend/internal/service/dyte_integration_service_test.go similarity index 100% rename from internal/service/dyte_integration_service_test.go rename to backend/internal/service/dyte_integration_service_test.go diff --git a/internal/service/email_channel_migration_service.go b/backend/internal/service/email_channel_migration_service.go similarity index 100% rename from internal/service/email_channel_migration_service.go rename to backend/internal/service/email_channel_migration_service.go diff --git a/internal/service/folder_service.go b/backend/internal/service/folder_service.go similarity index 100% rename from internal/service/folder_service.go rename to backend/internal/service/folder_service.go diff --git a/internal/service/folder_service_test.go b/backend/internal/service/folder_service_test.go similarity index 100% rename from internal/service/folder_service_test.go rename to backend/internal/service/folder_service_test.go diff --git a/internal/service/folder_service_test.go.bak b/backend/internal/service/folder_service_test.go.bak similarity index 100% rename from internal/service/folder_service_test.go.bak rename to backend/internal/service/folder_service_test.go.bak diff --git a/internal/service/inbox_limit_service.go b/backend/internal/service/inbox_limit_service.go similarity index 100% rename from internal/service/inbox_limit_service.go rename to backend/internal/service/inbox_limit_service.go diff --git a/internal/service/inbox_member_service.go b/backend/internal/service/inbox_member_service.go similarity index 100% rename from internal/service/inbox_member_service.go rename to backend/internal/service/inbox_member_service.go diff --git a/internal/service/inbox_member_service_test.go_BAK b/backend/internal/service/inbox_member_service_test.go_BAK similarity index 100% rename from internal/service/inbox_member_service_test.go_BAK rename to backend/internal/service/inbox_member_service_test.go_BAK diff --git a/internal/service/inbox_service.go b/backend/internal/service/inbox_service.go similarity index 100% rename from internal/service/inbox_service.go rename to backend/internal/service/inbox_service.go diff --git a/internal/service/inbox_service_test.go b/backend/internal/service/inbox_service_test.go similarity index 100% rename from internal/service/inbox_service_test.go rename to backend/internal/service/inbox_service_test.go diff --git a/internal/service/inbox_service_test.go_BAK b/backend/internal/service/inbox_service_test.go_BAK similarity index 100% rename from internal/service/inbox_service_test.go_BAK rename to backend/internal/service/inbox_service_test.go_BAK diff --git a/internal/service/installation_config_service.go b/backend/internal/service/installation_config_service.go similarity index 100% rename from internal/service/installation_config_service.go rename to backend/internal/service/installation_config_service.go diff --git a/internal/service/integration_hook_service.go b/backend/internal/service/integration_hook_service.go similarity index 100% rename from internal/service/integration_hook_service.go rename to backend/internal/service/integration_hook_service.go diff --git a/internal/service/integration_hook_service_test.go b/backend/internal/service/integration_hook_service_test.go similarity index 100% rename from internal/service/integration_hook_service_test.go rename to backend/internal/service/integration_hook_service_test.go diff --git a/internal/service/intent_service.go b/backend/internal/service/intent_service.go similarity index 100% rename from internal/service/intent_service.go rename to backend/internal/service/intent_service.go diff --git a/internal/service/label_service.go b/backend/internal/service/label_service.go similarity index 100% rename from internal/service/label_service.go rename to backend/internal/service/label_service.go diff --git a/internal/service/label_service_test.go_BAK b/backend/internal/service/label_service_test.go_BAK similarity index 100% rename from internal/service/label_service_test.go_BAK rename to backend/internal/service/label_service_test.go_BAK diff --git a/internal/service/linear_integration_service_test.go b/backend/internal/service/linear_integration_service_test.go similarity index 100% rename from internal/service/linear_integration_service_test.go rename to backend/internal/service/linear_integration_service_test.go diff --git a/internal/service/linear_notion_integration_service.go b/backend/internal/service/linear_notion_integration_service.go similarity index 100% rename from internal/service/linear_notion_integration_service.go rename to backend/internal/service/linear_notion_integration_service.go diff --git a/internal/service/linear_notion_integration_service_test.go b/backend/internal/service/linear_notion_integration_service_test.go similarity index 100% rename from internal/service/linear_notion_integration_service_test.go rename to backend/internal/service/linear_notion_integration_service_test.go diff --git a/internal/service/llm_response_parser.go b/backend/internal/service/llm_response_parser.go similarity index 100% rename from internal/service/llm_response_parser.go rename to backend/internal/service/llm_response_parser.go diff --git a/internal/service/llm_response_parser_test.go b/backend/internal/service/llm_response_parser_test.go similarity index 100% rename from internal/service/llm_response_parser_test.go rename to backend/internal/service/llm_response_parser_test.go diff --git a/internal/service/message_delivery_worker.go b/backend/internal/service/message_delivery_worker.go similarity index 100% rename from internal/service/message_delivery_worker.go rename to backend/internal/service/message_delivery_worker.go diff --git a/internal/service/message_delivery_worker_test.go b/backend/internal/service/message_delivery_worker_test.go similarity index 100% rename from internal/service/message_delivery_worker_test.go rename to backend/internal/service/message_delivery_worker_test.go diff --git a/internal/service/message_service.go b/backend/internal/service/message_service.go similarity index 100% rename from internal/service/message_service.go rename to backend/internal/service/message_service.go diff --git a/internal/service/message_service_test.go b/backend/internal/service/message_service_test.go similarity index 100% rename from internal/service/message_service_test.go rename to backend/internal/service/message_service_test.go diff --git a/internal/service/message_service_test.go.bak b/backend/internal/service/message_service_test.go.bak similarity index 100% rename from internal/service/message_service_test.go.bak rename to backend/internal/service/message_service_test.go.bak diff --git a/internal/service/note_service.go b/backend/internal/service/note_service.go similarity index 100% rename from internal/service/note_service.go rename to backend/internal/service/note_service.go diff --git a/internal/service/notification_delivery_service.go b/backend/internal/service/notification_delivery_service.go similarity index 100% rename from internal/service/notification_delivery_service.go rename to backend/internal/service/notification_delivery_service.go diff --git a/internal/service/notification_service.go b/backend/internal/service/notification_service.go similarity index 100% rename from internal/service/notification_service.go rename to backend/internal/service/notification_service.go diff --git a/internal/service/notification_service_test.go b/backend/internal/service/notification_service_test.go similarity index 100% rename from internal/service/notification_service_test.go rename to backend/internal/service/notification_service_test.go diff --git a/internal/service/notification_service_test.go_BAK b/backend/internal/service/notification_service_test.go_BAK similarity index 100% rename from internal/service/notification_service_test.go_BAK rename to backend/internal/service/notification_service_test.go_BAK diff --git a/internal/service/notification_setting_service.go b/backend/internal/service/notification_setting_service.go similarity index 100% rename from internal/service/notification_setting_service.go rename to backend/internal/service/notification_setting_service.go diff --git a/internal/service/notification_setting_service_test.go b/backend/internal/service/notification_setting_service_test.go similarity index 100% rename from internal/service/notification_setting_service_test.go rename to backend/internal/service/notification_setting_service_test.go diff --git a/internal/service/notification_subscription_service.go b/backend/internal/service/notification_subscription_service.go similarity index 100% rename from internal/service/notification_subscription_service.go rename to backend/internal/service/notification_subscription_service.go diff --git a/internal/service/platform_app_service.go b/backend/internal/service/platform_app_service.go similarity index 100% rename from internal/service/platform_app_service.go rename to backend/internal/service/platform_app_service.go diff --git a/internal/service/platform_app_service_test.go_BAK b/backend/internal/service/platform_app_service_test.go_BAK similarity index 100% rename from internal/service/platform_app_service_test.go_BAK rename to backend/internal/service/platform_app_service_test.go_BAK diff --git a/internal/service/platform_user_service.go b/backend/internal/service/platform_user_service.go similarity index 100% rename from internal/service/platform_user_service.go rename to backend/internal/service/platform_user_service.go diff --git a/internal/service/platform_user_service_test.go b/backend/internal/service/platform_user_service_test.go similarity index 100% rename from internal/service/platform_user_service_test.go rename to backend/internal/service/platform_user_service_test.go diff --git a/internal/service/portal_member_service.go b/backend/internal/service/portal_member_service.go similarity index 100% rename from internal/service/portal_member_service.go rename to backend/internal/service/portal_member_service.go diff --git a/internal/service/portal_member_service_test.go b/backend/internal/service/portal_member_service_test.go similarity index 100% rename from internal/service/portal_member_service_test.go rename to backend/internal/service/portal_member_service_test.go diff --git a/internal/service/portal_member_service_test.go_BAK b/backend/internal/service/portal_member_service_test.go_BAK similarity index 100% rename from internal/service/portal_member_service_test.go_BAK rename to backend/internal/service/portal_member_service_test.go_BAK diff --git a/internal/service/portal_service.go b/backend/internal/service/portal_service.go similarity index 100% rename from internal/service/portal_service.go rename to backend/internal/service/portal_service.go diff --git a/internal/service/portal_service_test.go b/backend/internal/service/portal_service_test.go similarity index 100% rename from internal/service/portal_service_test.go rename to backend/internal/service/portal_service_test.go diff --git a/internal/service/portal_service_test.go_BAK b/backend/internal/service/portal_service_test.go_BAK similarity index 100% rename from internal/service/portal_service_test.go_BAK rename to backend/internal/service/portal_service_test.go_BAK diff --git a/internal/service/profile_confirmation_mailer.go b/backend/internal/service/profile_confirmation_mailer.go similarity index 100% rename from internal/service/profile_confirmation_mailer.go rename to backend/internal/service/profile_confirmation_mailer.go diff --git a/internal/service/profile_service.go b/backend/internal/service/profile_service.go similarity index 100% rename from internal/service/profile_service.go rename to backend/internal/service/profile_service.go diff --git a/internal/service/push_delivery_service.go b/backend/internal/service/push_delivery_service.go similarity index 100% rename from internal/service/push_delivery_service.go rename to backend/internal/service/push_delivery_service.go diff --git a/internal/service/push_delivery_service_test.go.bak b/backend/internal/service/push_delivery_service_test.go.bak similarity index 100% rename from internal/service/push_delivery_service_test.go.bak rename to backend/internal/service/push_delivery_service_test.go.bak diff --git a/internal/service/push_subscription_service.go b/backend/internal/service/push_subscription_service.go similarity index 100% rename from internal/service/push_subscription_service.go rename to backend/internal/service/push_subscription_service.go diff --git a/internal/service/push_subscription_service_test.go.bak b/backend/internal/service/push_subscription_service_test.go.bak similarity index 100% rename from internal/service/push_subscription_service_test.go.bak rename to backend/internal/service/push_subscription_service_test.go.bak diff --git a/internal/service/rag_service.go b/backend/internal/service/rag_service.go similarity index 100% rename from internal/service/rag_service.go rename to backend/internal/service/rag_service.go diff --git a/internal/service/rag_service_test.go b/backend/internal/service/rag_service_test.go similarity index 100% rename from internal/service/rag_service_test.go rename to backend/internal/service/rag_service_test.go diff --git a/internal/service/rbac_custom_role_test.go b/backend/internal/service/rbac_custom_role_test.go similarity index 100% rename from internal/service/rbac_custom_role_test.go rename to backend/internal/service/rbac_custom_role_test.go diff --git a/internal/service/rbac_service.go b/backend/internal/service/rbac_service.go similarity index 100% rename from internal/service/rbac_service.go rename to backend/internal/service/rbac_service.go diff --git a/internal/service/rbac_service_test.go_BAK b/backend/internal/service/rbac_service_test.go_BAK similarity index 100% rename from internal/service/rbac_service_test.go_BAK rename to backend/internal/service/rbac_service_test.go_BAK diff --git a/internal/service/reporting_backfill_service.go b/backend/internal/service/reporting_backfill_service.go similarity index 100% rename from internal/service/reporting_backfill_service.go rename to backend/internal/service/reporting_backfill_service.go diff --git a/internal/service/reporting_event_service.go b/backend/internal/service/reporting_event_service.go similarity index 100% rename from internal/service/reporting_event_service.go rename to backend/internal/service/reporting_event_service.go diff --git a/internal/service/reporting_metric_registry.go b/backend/internal/service/reporting_metric_registry.go similarity index 100% rename from internal/service/reporting_metric_registry.go rename to backend/internal/service/reporting_metric_registry.go diff --git a/internal/service/reporting_rollup_helpers.go b/backend/internal/service/reporting_rollup_helpers.go similarity index 100% rename from internal/service/reporting_rollup_helpers.go rename to backend/internal/service/reporting_rollup_helpers.go diff --git a/internal/service/reporting_rollup_service.go b/backend/internal/service/reporting_rollup_service.go similarity index 100% rename from internal/service/reporting_rollup_service.go rename to backend/internal/service/reporting_rollup_service.go diff --git a/internal/service/reporting_rollup_timezone_test.go b/backend/internal/service/reporting_rollup_timezone_test.go similarity index 100% rename from internal/service/reporting_rollup_timezone_test.go rename to backend/internal/service/reporting_rollup_timezone_test.go diff --git a/internal/service/reporting_rollup_worker.go b/backend/internal/service/reporting_rollup_worker.go similarity index 100% rename from internal/service/reporting_rollup_worker.go rename to backend/internal/service/reporting_rollup_worker.go diff --git a/internal/service/rewrite_reply_service.go.bak b/backend/internal/service/rewrite_reply_service.go.bak similarity index 100% rename from internal/service/rewrite_reply_service.go.bak rename to backend/internal/service/rewrite_reply_service.go.bak diff --git a/internal/service/search_indexer.go b/backend/internal/service/search_indexer.go similarity index 100% rename from internal/service/search_indexer.go rename to backend/internal/service/search_indexer.go diff --git a/internal/service/search_indexer_hooks_test.go b/backend/internal/service/search_indexer_hooks_test.go similarity index 100% rename from internal/service/search_indexer_hooks_test.go rename to backend/internal/service/search_indexer_hooks_test.go diff --git a/internal/service/search_indexer_worker.go b/backend/internal/service/search_indexer_worker.go similarity index 100% rename from internal/service/search_indexer_worker.go rename to backend/internal/service/search_indexer_worker.go diff --git a/internal/service/search_indexer_worker_test.go b/backend/internal/service/search_indexer_worker_test.go similarity index 100% rename from internal/service/search_indexer_worker_test.go rename to backend/internal/service/search_indexer_worker_test.go diff --git a/internal/service/service.go.bak b/backend/internal/service/service.go.bak similarity index 100% rename from internal/service/service.go.bak rename to backend/internal/service/service.go.bak diff --git a/internal/service/service_test_helper.go b/backend/internal/service/service_test_helper.go similarity index 100% rename from internal/service/service_test_helper.go rename to backend/internal/service/service_test_helper.go diff --git a/internal/service/service_test_helper.go_BAK b/backend/internal/service/service_test_helper.go_BAK similarity index 100% rename from internal/service/service_test_helper.go_BAK rename to backend/internal/service/service_test_helper.go_BAK diff --git a/internal/service/shopify_integration_service.go b/backend/internal/service/shopify_integration_service.go similarity index 100% rename from internal/service/shopify_integration_service.go rename to backend/internal/service/shopify_integration_service.go diff --git a/internal/service/shopify_integration_service_test.go b/backend/internal/service/shopify_integration_service_test.go similarity index 100% rename from internal/service/shopify_integration_service_test.go rename to backend/internal/service/shopify_integration_service_test.go diff --git a/internal/service/sla_event_service.go b/backend/internal/service/sla_event_service.go similarity index 100% rename from internal/service/sla_event_service.go rename to backend/internal/service/sla_event_service.go diff --git a/internal/service/sla_policy_service.go b/backend/internal/service/sla_policy_service.go similarity index 100% rename from internal/service/sla_policy_service.go rename to backend/internal/service/sla_policy_service.go diff --git a/internal/service/sla_policy_service_test.go b/backend/internal/service/sla_policy_service_test.go similarity index 100% rename from internal/service/sla_policy_service_test.go rename to backend/internal/service/sla_policy_service_test.go diff --git a/internal/service/sla_worker.go b/backend/internal/service/sla_worker.go similarity index 100% rename from internal/service/sla_worker.go rename to backend/internal/service/sla_worker.go diff --git a/internal/service/sla_worker_test.go b/backend/internal/service/sla_worker_test.go similarity index 100% rename from internal/service/sla_worker_test.go rename to backend/internal/service/sla_worker_test.go diff --git a/internal/service/slack_integration_service.go b/backend/internal/service/slack_integration_service.go similarity index 100% rename from internal/service/slack_integration_service.go rename to backend/internal/service/slack_integration_service.go diff --git a/internal/service/slack_integration_service_test.go b/backend/internal/service/slack_integration_service_test.go similarity index 100% rename from internal/service/slack_integration_service_test.go rename to backend/internal/service/slack_integration_service_test.go diff --git a/internal/service/summary_report_service.go b/backend/internal/service/summary_report_service.go similarity index 100% rename from internal/service/summary_report_service.go rename to backend/internal/service/summary_report_service.go diff --git a/internal/service/system_prompt_builder.go b/backend/internal/service/system_prompt_builder.go similarity index 100% rename from internal/service/system_prompt_builder.go rename to backend/internal/service/system_prompt_builder.go diff --git a/internal/service/tag_service.go b/backend/internal/service/tag_service.go similarity index 100% rename from internal/service/tag_service.go rename to backend/internal/service/tag_service.go diff --git a/internal/service/tag_service_test.go b/backend/internal/service/tag_service_test.go similarity index 100% rename from internal/service/tag_service_test.go rename to backend/internal/service/tag_service_test.go diff --git a/internal/service/tag_service_test.go_BAK b/backend/internal/service/tag_service_test.go_BAK similarity index 100% rename from internal/service/tag_service_test.go_BAK rename to backend/internal/service/tag_service_test.go_BAK diff --git a/internal/service/team_profile_service_test.go_BAK b/backend/internal/service/team_profile_service_test.go_BAK similarity index 100% rename from internal/service/team_profile_service_test.go_BAK rename to backend/internal/service/team_profile_service_test.go_BAK diff --git a/internal/service/team_service.go b/backend/internal/service/team_service.go similarity index 100% rename from internal/service/team_service.go rename to backend/internal/service/team_service.go diff --git a/internal/service/team_service_test.go_BAK b/backend/internal/service/team_service_test.go_BAK similarity index 100% rename from internal/service/team_service_test.go_BAK rename to backend/internal/service/team_service_test.go_BAK diff --git a/internal/service/upload_service.go b/backend/internal/service/upload_service.go similarity index 100% rename from internal/service/upload_service.go rename to backend/internal/service/upload_service.go diff --git a/internal/service/upload_service_test.go b/backend/internal/service/upload_service_test.go similarity index 100% rename from internal/service/upload_service_test.go rename to backend/internal/service/upload_service_test.go diff --git a/internal/service/upload_service_test.go_BAK b/backend/internal/service/upload_service_test.go_BAK similarity index 100% rename from internal/service/upload_service_test.go_BAK rename to backend/internal/service/upload_service_test.go_BAK diff --git a/internal/service/webhook_event_processor.go b/backend/internal/service/webhook_event_processor.go similarity index 100% rename from internal/service/webhook_event_processor.go rename to backend/internal/service/webhook_event_processor.go diff --git a/internal/service/webhook_event_processor_test.go b/backend/internal/service/webhook_event_processor_test.go similarity index 100% rename from internal/service/webhook_event_processor_test.go rename to backend/internal/service/webhook_event_processor_test.go diff --git a/internal/service/webhook_subscription_service.go b/backend/internal/service/webhook_subscription_service.go similarity index 100% rename from internal/service/webhook_subscription_service.go rename to backend/internal/service/webhook_subscription_service.go diff --git a/internal/service/webhook_subscription_service_test.go b/backend/internal/service/webhook_subscription_service_test.go similarity index 100% rename from internal/service/webhook_subscription_service_test.go rename to backend/internal/service/webhook_subscription_service_test.go diff --git a/internal/service/webhook_subscription_service_test.go_BAK b/backend/internal/service/webhook_subscription_service_test.go_BAK similarity index 100% rename from internal/service/webhook_subscription_service_test.go_BAK rename to backend/internal/service/webhook_subscription_service_test.go_BAK diff --git a/internal/service/whatsapp_authorization_service.go b/backend/internal/service/whatsapp_authorization_service.go similarity index 100% rename from internal/service/whatsapp_authorization_service.go rename to backend/internal/service/whatsapp_authorization_service.go diff --git a/internal/service/whatsapp_authorization_service_test.go b/backend/internal/service/whatsapp_authorization_service_test.go similarity index 100% rename from internal/service/whatsapp_authorization_service_test.go rename to backend/internal/service/whatsapp_authorization_service_test.go diff --git a/internal/service/whatsapp_call_service.go b/backend/internal/service/whatsapp_call_service.go similarity index 100% rename from internal/service/whatsapp_call_service.go rename to backend/internal/service/whatsapp_call_service.go diff --git a/internal/service/whatsapp_call_service_test.go b/backend/internal/service/whatsapp_call_service_test.go similarity index 100% rename from internal/service/whatsapp_call_service_test.go rename to backend/internal/service/whatsapp_call_service_test.go diff --git a/internal/service/widget_offline_message_test.go b/backend/internal/service/widget_offline_message_test.go similarity index 100% rename from internal/service/widget_offline_message_test.go rename to backend/internal/service/widget_offline_message_test.go diff --git a/internal/service/widget_service.go b/backend/internal/service/widget_service.go similarity index 100% rename from internal/service/widget_service.go rename to backend/internal/service/widget_service.go diff --git a/internal/service/widget_service_test.go b/backend/internal/service/widget_service_test.go similarity index 100% rename from internal/service/widget_service_test.go rename to backend/internal/service/widget_service_test.go diff --git a/internal/service/widget_test_service.go b/backend/internal/service/widget_test_service.go similarity index 100% rename from internal/service/widget_test_service.go rename to backend/internal/service/widget_test_service.go diff --git a/internal/service/widget_theme_service.go b/backend/internal/service/widget_theme_service.go similarity index 100% rename from internal/service/widget_theme_service.go rename to backend/internal/service/widget_theme_service.go diff --git a/internal/service/working_hour_service.go b/backend/internal/service/working_hour_service.go similarity index 100% rename from internal/service/working_hour_service.go rename to backend/internal/service/working_hour_service.go diff --git a/internal/service/working_hour_service_test.go b/backend/internal/service/working_hour_service_test.go similarity index 100% rename from internal/service/working_hour_service_test.go rename to backend/internal/service/working_hour_service_test.go diff --git a/internal/service/year_in_review_service.go b/backend/internal/service/year_in_review_service.go similarity index 100% rename from internal/service/year_in_review_service.go rename to backend/internal/service/year_in_review_service.go diff --git a/internal/service/year_in_review_service_test.go b/backend/internal/service/year_in_review_service_test.go similarity index 100% rename from internal/service/year_in_review_service_test.go rename to backend/internal/service/year_in_review_service_test.go diff --git a/internal/webhookutil/timeout.go b/backend/internal/webhookutil/timeout.go similarity index 100% rename from internal/webhookutil/timeout.go rename to backend/internal/webhookutil/timeout.go diff --git a/internal/worker/worker.go b/backend/internal/worker/worker.go similarity index 100% rename from internal/worker/worker.go rename to backend/internal/worker/worker.go diff --git a/internal/worker/worker_test.go b/backend/internal/worker/worker_test.go similarity index 100% rename from internal/worker/worker_test.go rename to backend/internal/worker/worker_test.go diff --git a/internal/ws/auth.go b/backend/internal/ws/auth.go similarity index 100% rename from internal/ws/auth.go rename to backend/internal/ws/auth.go diff --git a/internal/ws/broadcast.go b/backend/internal/ws/broadcast.go similarity index 100% rename from internal/ws/broadcast.go rename to backend/internal/ws/broadcast.go diff --git a/internal/ws/broadcast_test.go b/backend/internal/ws/broadcast_test.go similarity index 100% rename from internal/ws/broadcast_test.go rename to backend/internal/ws/broadcast_test.go diff --git a/internal/ws/event_publisher.go b/backend/internal/ws/event_publisher.go similarity index 100% rename from internal/ws/event_publisher.go rename to backend/internal/ws/event_publisher.go diff --git a/internal/ws/event_publisher_test.go b/backend/internal/ws/event_publisher_test.go similarity index 100% rename from internal/ws/event_publisher_test.go rename to backend/internal/ws/event_publisher_test.go diff --git a/internal/ws/event_types.go b/backend/internal/ws/event_types.go similarity index 100% rename from internal/ws/event_types.go rename to backend/internal/ws/event_types.go diff --git a/internal/ws/heartbeat.go b/backend/internal/ws/heartbeat.go similarity index 100% rename from internal/ws/heartbeat.go rename to backend/internal/ws/heartbeat.go diff --git a/internal/ws/presence.go b/backend/internal/ws/presence.go similarity index 100% rename from internal/ws/presence.go rename to backend/internal/ws/presence.go diff --git a/internal/ws/presence_test.go b/backend/internal/ws/presence_test.go similarity index 100% rename from internal/ws/presence_test.go rename to backend/internal/ws/presence_test.go diff --git a/internal/ws/sse_registry.go b/backend/internal/ws/sse_registry.go similarity index 100% rename from internal/ws/sse_registry.go rename to backend/internal/ws/sse_registry.go diff --git a/internal/ws/sse_registry_test.go b/backend/internal/ws/sse_registry_test.go similarity index 100% rename from internal/ws/sse_registry_test.go rename to backend/internal/ws/sse_registry_test.go diff --git a/internal/ws/typing.go b/backend/internal/ws/typing.go similarity index 100% rename from internal/ws/typing.go rename to backend/internal/ws/typing.go diff --git a/internal/ws/typing_test.go b/backend/internal/ws/typing_test.go similarity index 100% rename from internal/ws/typing_test.go rename to backend/internal/ws/typing_test.go diff --git a/internal/ws/ws_test.go b/backend/internal/ws/ws_test.go similarity index 100% rename from internal/ws/ws_test.go rename to backend/internal/ws/ws_test.go diff --git a/migrations/000001_init_schema.down.sql b/backend/migrations/000001_init_schema.down.sql similarity index 100% rename from migrations/000001_init_schema.down.sql rename to backend/migrations/000001_init_schema.down.sql diff --git a/migrations/000001_init_schema.up.sql b/backend/migrations/000001_init_schema.up.sql similarity index 100% rename from migrations/000001_init_schema.up.sql rename to backend/migrations/000001_init_schema.up.sql diff --git a/migrations/000002_add_captain_ai_tables.down.sql b/backend/migrations/000002_add_captain_ai_tables.down.sql similarity index 100% rename from migrations/000002_add_captain_ai_tables.down.sql rename to backend/migrations/000002_add_captain_ai_tables.down.sql diff --git a/migrations/000002_add_captain_ai_tables.up.sql b/backend/migrations/000002_add_captain_ai_tables.up.sql similarity index 100% rename from migrations/000002_add_captain_ai_tables.up.sql rename to backend/migrations/000002_add_captain_ai_tables.up.sql diff --git a/migrations/000003_add_rate_limit_state.down.sql b/backend/migrations/000003_add_rate_limit_state.down.sql similarity index 100% rename from migrations/000003_add_rate_limit_state.down.sql rename to backend/migrations/000003_add_rate_limit_state.down.sql diff --git a/migrations/000003_add_rate_limit_state.up.sql b/backend/migrations/000003_add_rate_limit_state.up.sql similarity index 100% rename from migrations/000003_add_rate_limit_state.up.sql rename to backend/migrations/000003_add_rate_limit_state.up.sql diff --git a/migrations/000004_add_saml_config_tables.down.sql b/backend/migrations/000004_add_saml_config_tables.down.sql similarity index 100% rename from migrations/000004_add_saml_config_tables.down.sql rename to backend/migrations/000004_add_saml_config_tables.down.sql diff --git a/migrations/000004_add_saml_config_tables.up.sql b/backend/migrations/000004_add_saml_config_tables.up.sql similarity index 100% rename from migrations/000004_add_saml_config_tables.up.sql rename to backend/migrations/000004_add_saml_config_tables.up.sql diff --git a/migrations/000005_add_dashboard_apps_table.down.sql b/backend/migrations/000005_add_dashboard_apps_table.down.sql similarity index 100% rename from migrations/000005_add_dashboard_apps_table.down.sql rename to backend/migrations/000005_add_dashboard_apps_table.down.sql diff --git a/migrations/000005_add_dashboard_apps_table.up.sql b/backend/migrations/000005_add_dashboard_apps_table.up.sql similarity index 100% rename from migrations/000005_add_dashboard_apps_table.up.sql rename to backend/migrations/000005_add_dashboard_apps_table.up.sql diff --git a/migrations/000006_add_contact_extended_fields.down.sql b/backend/migrations/000006_add_contact_extended_fields.down.sql similarity index 100% rename from migrations/000006_add_contact_extended_fields.down.sql rename to backend/migrations/000006_add_contact_extended_fields.down.sql diff --git a/migrations/000006_add_contact_extended_fields.up.sql b/backend/migrations/000006_add_contact_extended_fields.up.sql similarity index 100% rename from migrations/000006_add_contact_extended_fields.up.sql rename to backend/migrations/000006_add_contact_extended_fields.up.sql diff --git a/migrations/000007_add_channel_instagrams.down.sql b/backend/migrations/000007_add_channel_instagrams.down.sql similarity index 100% rename from migrations/000007_add_channel_instagrams.down.sql rename to backend/migrations/000007_add_channel_instagrams.down.sql diff --git a/migrations/000007_add_channel_instagrams.up.sql b/backend/migrations/000007_add_channel_instagrams.up.sql similarity index 100% rename from migrations/000007_add_channel_instagrams.up.sql rename to backend/migrations/000007_add_channel_instagrams.up.sql diff --git a/migrations/000008_add_search_indexes.down.sql b/backend/migrations/000008_add_search_indexes.down.sql similarity index 100% rename from migrations/000008_add_search_indexes.down.sql rename to backend/migrations/000008_add_search_indexes.down.sql diff --git a/migrations/000008_add_search_indexes.up.sql b/backend/migrations/000008_add_search_indexes.up.sql similarity index 100% rename from migrations/000008_add_search_indexes.up.sql rename to backend/migrations/000008_add_search_indexes.up.sql diff --git a/migrations/000009_add_permissibles_table.down.sql b/backend/migrations/000009_add_permissibles_table.down.sql similarity index 100% rename from migrations/000009_add_permissibles_table.down.sql rename to backend/migrations/000009_add_permissibles_table.down.sql diff --git a/migrations/000009_add_permissibles_table.up.sql b/backend/migrations/000009_add_permissibles_table.up.sql similarity index 100% rename from migrations/000009_add_permissibles_table.up.sql rename to backend/migrations/000009_add_permissibles_table.up.sql diff --git a/migrations/000010_add_access_tokens_table.down.sql b/backend/migrations/000010_add_access_tokens_table.down.sql similarity index 100% rename from migrations/000010_add_access_tokens_table.down.sql rename to backend/migrations/000010_add_access_tokens_table.down.sql diff --git a/migrations/000010_add_access_tokens_table.up.sql b/backend/migrations/000010_add_access_tokens_table.up.sql similarity index 100% rename from migrations/000010_add_access_tokens_table.up.sql rename to backend/migrations/000010_add_access_tokens_table.up.sql diff --git a/migrations/000011_update_platform_apps_columns.down.sql b/backend/migrations/000011_update_platform_apps_columns.down.sql similarity index 100% rename from migrations/000011_update_platform_apps_columns.down.sql rename to backend/migrations/000011_update_platform_apps_columns.down.sql diff --git a/migrations/000011_update_platform_apps_columns.up.sql b/backend/migrations/000011_update_platform_apps_columns.up.sql similarity index 100% rename from migrations/000011_update_platform_apps_columns.up.sql rename to backend/migrations/000011_update_platform_apps_columns.up.sql diff --git a/migrations/000012_add_knowledge_base_tables.down.sql b/backend/migrations/000012_add_knowledge_base_tables.down.sql similarity index 100% rename from migrations/000012_add_knowledge_base_tables.down.sql rename to backend/migrations/000012_add_knowledge_base_tables.down.sql diff --git a/migrations/000012_add_knowledge_base_tables.up.sql b/backend/migrations/000012_add_knowledge_base_tables.up.sql similarity index 100% rename from migrations/000012_add_knowledge_base_tables.up.sql rename to backend/migrations/000012_add_knowledge_base_tables.up.sql diff --git a/migrations/000013_add_pg_trgm_search.down.sql b/backend/migrations/000013_add_pg_trgm_search.down.sql similarity index 100% rename from migrations/000013_add_pg_trgm_search.down.sql rename to backend/migrations/000013_add_pg_trgm_search.down.sql diff --git a/migrations/000013_add_pg_trgm_search.up.sql b/backend/migrations/000013_add_pg_trgm_search.up.sql similarity index 100% rename from migrations/000013_add_pg_trgm_search.up.sql rename to backend/migrations/000013_add_pg_trgm_search.up.sql diff --git a/migrations/000014_add_captain_preferences_table.down.sql b/backend/migrations/000014_add_captain_preferences_table.down.sql similarity index 100% rename from migrations/000014_add_captain_preferences_table.down.sql rename to backend/migrations/000014_add_captain_preferences_table.down.sql diff --git a/migrations/000014_add_captain_preferences_table.up.sql b/backend/migrations/000014_add_captain_preferences_table.up.sql similarity index 100% rename from migrations/000014_add_captain_preferences_table.up.sql rename to backend/migrations/000014_add_captain_preferences_table.up.sql diff --git a/migrations/000015_add_integration_hook_tables.down.sql b/backend/migrations/000015_add_integration_hook_tables.down.sql similarity index 100% rename from migrations/000015_add_integration_hook_tables.down.sql rename to backend/migrations/000015_add_integration_hook_tables.down.sql diff --git a/migrations/000015_add_integration_hook_tables.up.sql b/backend/migrations/000015_add_integration_hook_tables.up.sql similarity index 100% rename from migrations/000015_add_integration_hook_tables.up.sql rename to backend/migrations/000015_add_integration_hook_tables.up.sql diff --git a/migrations/000016_add_channel_twitter_microsoft_google.down.sql b/backend/migrations/000016_add_channel_twitter_microsoft_google.down.sql similarity index 100% rename from migrations/000016_add_channel_twitter_microsoft_google.down.sql rename to backend/migrations/000016_add_channel_twitter_microsoft_google.down.sql diff --git a/migrations/000016_add_channel_twitter_microsoft_google.up.sql b/backend/migrations/000016_add_channel_twitter_microsoft_google.up.sql similarity index 100% rename from migrations/000016_add_channel_twitter_microsoft_google.up.sql rename to backend/migrations/000016_add_channel_twitter_microsoft_google.up.sql diff --git a/migrations/000017_add_profile_serializer_fields.down.sql b/backend/migrations/000017_add_profile_serializer_fields.down.sql similarity index 100% rename from migrations/000017_add_profile_serializer_fields.down.sql rename to backend/migrations/000017_add_profile_serializer_fields.down.sql diff --git a/migrations/000017_add_profile_serializer_fields.up.sql b/backend/migrations/000017_add_profile_serializer_fields.up.sql similarity index 100% rename from migrations/000017_add_profile_serializer_fields.up.sql rename to backend/migrations/000017_add_profile_serializer_fields.up.sql diff --git a/migrations/000018_add_conversation_message_parity_fields.down.sql b/backend/migrations/000018_add_conversation_message_parity_fields.down.sql similarity index 100% rename from migrations/000018_add_conversation_message_parity_fields.down.sql rename to backend/migrations/000018_add_conversation_message_parity_fields.down.sql diff --git a/migrations/000018_add_conversation_message_parity_fields.up.sql b/backend/migrations/000018_add_conversation_message_parity_fields.up.sql similarity index 100% rename from migrations/000018_add_conversation_message_parity_fields.up.sql rename to backend/migrations/000018_add_conversation_message_parity_fields.up.sql diff --git a/migrations/000019_add_contact_labels.down.sql b/backend/migrations/000019_add_contact_labels.down.sql similarity index 100% rename from migrations/000019_add_contact_labels.down.sql rename to backend/migrations/000019_add_contact_labels.down.sql diff --git a/migrations/000019_add_contact_labels.up.sql b/backend/migrations/000019_add_contact_labels.up.sql similarity index 100% rename from migrations/000019_add_contact_labels.up.sql rename to backend/migrations/000019_add_contact_labels.up.sql diff --git a/migrations/000020_add_data_imports.down.sql b/backend/migrations/000020_add_data_imports.down.sql similarity index 100% rename from migrations/000020_add_data_imports.down.sql rename to backend/migrations/000020_add_data_imports.down.sql diff --git a/migrations/000020_add_data_imports.up.sql b/backend/migrations/000020_add_data_imports.up.sql similarity index 100% rename from migrations/000020_add_data_imports.up.sql rename to backend/migrations/000020_add_data_imports.up.sql diff --git a/migrations/000021_add_contact_exports.down.sql b/backend/migrations/000021_add_contact_exports.down.sql similarity index 100% rename from migrations/000021_add_contact_exports.down.sql rename to backend/migrations/000021_add_contact_exports.down.sql diff --git a/migrations/000021_add_contact_exports.up.sql b/backend/migrations/000021_add_contact_exports.up.sql similarity index 100% rename from migrations/000021_add_contact_exports.up.sql rename to backend/migrations/000021_add_contact_exports.up.sql diff --git a/migrations/000022_add_agent_capacity_policy_links.down.sql b/backend/migrations/000022_add_agent_capacity_policy_links.down.sql similarity index 100% rename from migrations/000022_add_agent_capacity_policy_links.down.sql rename to backend/migrations/000022_add_agent_capacity_policy_links.down.sql diff --git a/migrations/000022_add_agent_capacity_policy_links.up.sql b/backend/migrations/000022_add_agent_capacity_policy_links.up.sql similarity index 100% rename from migrations/000022_add_agent_capacity_policy_links.up.sql rename to backend/migrations/000022_add_agent_capacity_policy_links.up.sql diff --git a/migrations/000023_align_custom_role_permissions.down.sql b/backend/migrations/000023_align_custom_role_permissions.down.sql similarity index 100% rename from migrations/000023_align_custom_role_permissions.down.sql rename to backend/migrations/000023_align_custom_role_permissions.down.sql diff --git a/migrations/000023_align_custom_role_permissions.up.sql b/backend/migrations/000023_align_custom_role_permissions.up.sql similarity index 100% rename from migrations/000023_align_custom_role_permissions.up.sql rename to backend/migrations/000023_align_custom_role_permissions.up.sql diff --git a/migrations/000024_add_account_inbox_limit.down.sql b/backend/migrations/000024_add_account_inbox_limit.down.sql similarity index 100% rename from migrations/000024_add_account_inbox_limit.down.sql rename to backend/migrations/000024_add_account_inbox_limit.down.sql diff --git a/migrations/000024_add_account_inbox_limit.up.sql b/backend/migrations/000024_add_account_inbox_limit.up.sql similarity index 100% rename from migrations/000024_add_account_inbox_limit.up.sql rename to backend/migrations/000024_add_account_inbox_limit.up.sql diff --git a/migrations/000025_add_account_captain_preferences.down.sql b/backend/migrations/000025_add_account_captain_preferences.down.sql similarity index 100% rename from migrations/000025_add_account_captain_preferences.down.sql rename to backend/migrations/000025_add_account_captain_preferences.down.sql diff --git a/migrations/000025_add_account_captain_preferences.up.sql b/backend/migrations/000025_add_account_captain_preferences.up.sql similarity index 100% rename from migrations/000025_add_account_captain_preferences.up.sql rename to backend/migrations/000025_add_account_captain_preferences.up.sql diff --git a/migrations/000026_add_background_jobs.down.sql b/backend/migrations/000026_add_background_jobs.down.sql similarity index 100% rename from migrations/000026_add_background_jobs.down.sql rename to backend/migrations/000026_add_background_jobs.down.sql diff --git a/migrations/000026_add_background_jobs.up.sql b/backend/migrations/000026_add_background_jobs.up.sql similarity index 100% rename from migrations/000026_add_background_jobs.up.sql rename to backend/migrations/000026_add_background_jobs.up.sql diff --git a/migrations/000027_add_user_auth_tokens.down.sql b/backend/migrations/000027_add_user_auth_tokens.down.sql similarity index 100% rename from migrations/000027_add_user_auth_tokens.down.sql rename to backend/migrations/000027_add_user_auth_tokens.down.sql diff --git a/migrations/000027_add_user_auth_tokens.up.sql b/backend/migrations/000027_add_user_auth_tokens.up.sql similarity index 100% rename from migrations/000027_add_user_auth_tokens.up.sql rename to backend/migrations/000027_add_user_auth_tokens.up.sql diff --git a/migrations/000028_align_tags_with_chatwoot_labels.down.sql b/backend/migrations/000028_align_tags_with_chatwoot_labels.down.sql similarity index 100% rename from migrations/000028_align_tags_with_chatwoot_labels.down.sql rename to backend/migrations/000028_align_tags_with_chatwoot_labels.down.sql diff --git a/migrations/000028_align_tags_with_chatwoot_labels.up.sql b/backend/migrations/000028_align_tags_with_chatwoot_labels.up.sql similarity index 100% rename from migrations/000028_align_tags_with_chatwoot_labels.up.sql rename to backend/migrations/000028_align_tags_with_chatwoot_labels.up.sql diff --git a/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.down.sql b/backend/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.down.sql similarity index 100% rename from migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.down.sql rename to backend/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.down.sql diff --git a/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.up.sql b/backend/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.up.sql similarity index 100% rename from migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.up.sql rename to backend/migrations/000029_align_webhook_subscriptions_with_chatwoot_webhooks.up.sql diff --git a/migrations/000030_align_integration_hooks_with_chatwoot_apps.down.sql b/backend/migrations/000030_align_integration_hooks_with_chatwoot_apps.down.sql similarity index 100% rename from migrations/000030_align_integration_hooks_with_chatwoot_apps.down.sql rename to backend/migrations/000030_align_integration_hooks_with_chatwoot_apps.down.sql diff --git a/migrations/000030_align_integration_hooks_with_chatwoot_apps.up.sql b/backend/migrations/000030_align_integration_hooks_with_chatwoot_apps.up.sql similarity index 100% rename from migrations/000030_align_integration_hooks_with_chatwoot_apps.up.sql rename to backend/migrations/000030_align_integration_hooks_with_chatwoot_apps.up.sql diff --git a/migrations/000031_align_account_users_inviter_id.down.sql b/backend/migrations/000031_align_account_users_inviter_id.down.sql similarity index 100% rename from migrations/000031_align_account_users_inviter_id.down.sql rename to backend/migrations/000031_align_account_users_inviter_id.down.sql diff --git a/migrations/000031_align_account_users_inviter_id.up.sql b/backend/migrations/000031_align_account_users_inviter_id.up.sql similarity index 100% rename from migrations/000031_align_account_users_inviter_id.up.sql rename to backend/migrations/000031_align_account_users_inviter_id.up.sql diff --git a/migrations/000032_add_users_unconfirmed_email.down.sql b/backend/migrations/000032_add_users_unconfirmed_email.down.sql similarity index 100% rename from migrations/000032_add_users_unconfirmed_email.down.sql rename to backend/migrations/000032_add_users_unconfirmed_email.down.sql diff --git a/migrations/000032_add_users_unconfirmed_email.up.sql b/backend/migrations/000032_add_users_unconfirmed_email.up.sql similarity index 100% rename from migrations/000032_add_users_unconfirmed_email.up.sql rename to backend/migrations/000032_add_users_unconfirmed_email.up.sql diff --git a/migrations/000033_add_accounts_custom_attributes.down.sql b/backend/migrations/000033_add_accounts_custom_attributes.down.sql similarity index 100% rename from migrations/000033_add_accounts_custom_attributes.down.sql rename to backend/migrations/000033_add_accounts_custom_attributes.down.sql diff --git a/migrations/000033_add_accounts_custom_attributes.up.sql b/backend/migrations/000033_add_accounts_custom_attributes.up.sql similarity index 100% rename from migrations/000033_add_accounts_custom_attributes.up.sql rename to backend/migrations/000033_add_accounts_custom_attributes.up.sql diff --git a/migrations/000034_align_calls_whatsapp_fields.down.sql b/backend/migrations/000034_align_calls_whatsapp_fields.down.sql similarity index 100% rename from migrations/000034_align_calls_whatsapp_fields.down.sql rename to backend/migrations/000034_align_calls_whatsapp_fields.down.sql diff --git a/migrations/000034_align_calls_whatsapp_fields.up.sql b/backend/migrations/000034_align_calls_whatsapp_fields.up.sql similarity index 100% rename from migrations/000034_align_calls_whatsapp_fields.up.sql rename to backend/migrations/000034_align_calls_whatsapp_fields.up.sql diff --git a/migrations/000035_align_facebook_callback_fields.down.sql b/backend/migrations/000035_align_facebook_callback_fields.down.sql similarity index 100% rename from migrations/000035_align_facebook_callback_fields.down.sql rename to backend/migrations/000035_align_facebook_callback_fields.down.sql diff --git a/migrations/000035_align_facebook_callback_fields.up.sql b/backend/migrations/000035_align_facebook_callback_fields.up.sql similarity index 100% rename from migrations/000035_align_facebook_callback_fields.up.sql rename to backend/migrations/000035_align_facebook_callback_fields.up.sql diff --git a/migrations/000036_add_accounts_reporting_timezone.down.sql b/backend/migrations/000036_add_accounts_reporting_timezone.down.sql similarity index 100% rename from migrations/000036_add_accounts_reporting_timezone.down.sql rename to backend/migrations/000036_add_accounts_reporting_timezone.down.sql diff --git a/migrations/000036_add_accounts_reporting_timezone.up.sql b/backend/migrations/000036_add_accounts_reporting_timezone.up.sql similarity index 100% rename from migrations/000036_add_accounts_reporting_timezone.up.sql rename to backend/migrations/000036_add_accounts_reporting_timezone.up.sql diff --git a/migrations/000037_add_accounts_limits.down.sql b/backend/migrations/000037_add_accounts_limits.down.sql similarity index 100% rename from migrations/000037_add_accounts_limits.down.sql rename to backend/migrations/000037_add_accounts_limits.down.sql diff --git a/migrations/000037_add_accounts_limits.up.sql b/backend/migrations/000037_add_accounts_limits.up.sql similarity index 100% rename from migrations/000037_add_accounts_limits.up.sql rename to backend/migrations/000037_add_accounts_limits.up.sql diff --git a/migrations/000038_add_channel_twitter_tweets_enabled.down.sql b/backend/migrations/000038_add_channel_twitter_tweets_enabled.down.sql similarity index 100% rename from migrations/000038_add_channel_twitter_tweets_enabled.down.sql rename to backend/migrations/000038_add_channel_twitter_tweets_enabled.down.sql diff --git a/migrations/000038_add_channel_twitter_tweets_enabled.up.sql b/backend/migrations/000038_add_channel_twitter_tweets_enabled.up.sql similarity index 100% rename from migrations/000038_add_channel_twitter_tweets_enabled.up.sql rename to backend/migrations/000038_add_channel_twitter_tweets_enabled.up.sql diff --git a/migrations/000039_add_companies_tables.down.sql b/backend/migrations/000039_add_companies_tables.down.sql similarity index 100% rename from migrations/000039_add_companies_tables.down.sql rename to backend/migrations/000039_add_companies_tables.down.sql diff --git a/migrations/000039_add_companies_tables.up.sql b/backend/migrations/000039_add_companies_tables.up.sql similarity index 100% rename from migrations/000039_add_companies_tables.up.sql rename to backend/migrations/000039_add_companies_tables.up.sql diff --git a/migrations/000040_add_sla_tables.down.sql b/backend/migrations/000040_add_sla_tables.down.sql similarity index 100% rename from migrations/000040_add_sla_tables.down.sql rename to backend/migrations/000040_add_sla_tables.down.sql diff --git a/migrations/000040_add_sla_tables.up.sql b/backend/migrations/000040_add_sla_tables.up.sql similarity index 100% rename from migrations/000040_add_sla_tables.up.sql rename to backend/migrations/000040_add_sla_tables.up.sql diff --git a/migrations/000041_add_installation_configs.down.sql b/backend/migrations/000041_add_installation_configs.down.sql similarity index 100% rename from migrations/000041_add_installation_configs.down.sql rename to backend/migrations/000041_add_installation_configs.down.sql diff --git a/migrations/000041_add_installation_configs.up.sql b/backend/migrations/000041_add_installation_configs.up.sql similarity index 100% rename from migrations/000041_add_installation_configs.up.sql rename to backend/migrations/000041_add_installation_configs.up.sql diff --git a/migrations/000042_add_csat_and_bot_rule_tables.down.sql b/backend/migrations/000042_add_csat_and_bot_rule_tables.down.sql similarity index 100% rename from migrations/000042_add_csat_and_bot_rule_tables.down.sql rename to backend/migrations/000042_add_csat_and_bot_rule_tables.down.sql diff --git a/migrations/000042_add_csat_and_bot_rule_tables.up.sql b/backend/migrations/000042_add_csat_and_bot_rule_tables.up.sql similarity index 100% rename from migrations/000042_add_csat_and_bot_rule_tables.up.sql rename to backend/migrations/000042_add_csat_and_bot_rule_tables.up.sql diff --git a/migrations/000043_add_automation_macro_tables.down.sql b/backend/migrations/000043_add_automation_macro_tables.down.sql similarity index 100% rename from migrations/000043_add_automation_macro_tables.down.sql rename to backend/migrations/000043_add_automation_macro_tables.down.sql diff --git a/migrations/000043_add_automation_macro_tables.up.sql b/backend/migrations/000043_add_automation_macro_tables.up.sql similarity index 100% rename from migrations/000043_add_automation_macro_tables.up.sql rename to backend/migrations/000043_add_automation_macro_tables.up.sql diff --git a/migrations/000044_add_audits_table.down.sql b/backend/migrations/000044_add_audits_table.down.sql similarity index 100% rename from migrations/000044_add_audits_table.down.sql rename to backend/migrations/000044_add_audits_table.down.sql diff --git a/migrations/000044_add_audits_table.up.sql b/backend/migrations/000044_add_audits_table.up.sql similarity index 100% rename from migrations/000044_add_audits_table.up.sql rename to backend/migrations/000044_add_audits_table.up.sql diff --git a/migrations/000045_add_teams_and_campaigns_tables.down.sql b/backend/migrations/000045_add_teams_and_campaigns_tables.down.sql similarity index 100% rename from migrations/000045_add_teams_and_campaigns_tables.down.sql rename to backend/migrations/000045_add_teams_and_campaigns_tables.down.sql diff --git a/migrations/000045_add_teams_and_campaigns_tables.up.sql b/backend/migrations/000045_add_teams_and_campaigns_tables.up.sql similarity index 100% rename from migrations/000045_add_teams_and_campaigns_tables.up.sql rename to backend/migrations/000045_add_teams_and_campaigns_tables.up.sql diff --git a/migrations/000046_add_portal_channel_web_widget_id.down.sql b/backend/migrations/000046_add_portal_channel_web_widget_id.down.sql similarity index 100% rename from migrations/000046_add_portal_channel_web_widget_id.down.sql rename to backend/migrations/000046_add_portal_channel_web_widget_id.down.sql diff --git a/migrations/000046_add_portal_channel_web_widget_id.up.sql b/backend/migrations/000046_add_portal_channel_web_widget_id.up.sql similarity index 100% rename from migrations/000046_add_portal_channel_web_widget_id.up.sql rename to backend/migrations/000046_add_portal_channel_web_widget_id.up.sql diff --git a/migrations/000047_add_help_center_model_fields.down.sql b/backend/migrations/000047_add_help_center_model_fields.down.sql similarity index 100% rename from migrations/000047_add_help_center_model_fields.down.sql rename to backend/migrations/000047_add_help_center_model_fields.down.sql diff --git a/migrations/000047_add_help_center_model_fields.up.sql b/backend/migrations/000047_add_help_center_model_fields.up.sql similarity index 100% rename from migrations/000047_add_help_center_model_fields.up.sql rename to backend/migrations/000047_add_help_center_model_fields.up.sql diff --git a/pkg/crypto/crypto_test.go b/backend/pkg/crypto/crypto_test.go similarity index 100% rename from pkg/crypto/crypto_test.go rename to backend/pkg/crypto/crypto_test.go diff --git a/pkg/crypto/hash.go b/backend/pkg/crypto/hash.go similarity index 100% rename from pkg/crypto/hash.go rename to backend/pkg/crypto/hash.go diff --git a/pkg/crypto/jwt.go b/backend/pkg/crypto/jwt.go similarity index 100% rename from pkg/crypto/jwt.go rename to backend/pkg/crypto/jwt.go diff --git a/pkg/logger/logger.go b/backend/pkg/logger/logger.go similarity index 100% rename from pkg/logger/logger.go rename to backend/pkg/logger/logger.go diff --git a/pkg/pagination/pagination.go b/backend/pkg/pagination/pagination.go similarity index 100% rename from pkg/pagination/pagination.go rename to backend/pkg/pagination/pagination.go diff --git a/pkg/response/error.go b/backend/pkg/response/error.go similarity index 100% rename from pkg/response/error.go rename to backend/pkg/response/error.go diff --git a/pkg/response/response.go b/backend/pkg/response/response.go similarity index 100% rename from pkg/response/response.go rename to backend/pkg/response/response.go diff --git a/pkg/testutil/fixtures.go b/backend/pkg/testutil/fixtures.go similarity index 100% rename from pkg/testutil/fixtures.go rename to backend/pkg/testutil/fixtures.go diff --git a/pkg/testutil/helpers.go b/backend/pkg/testutil/helpers.go similarity index 100% rename from pkg/testutil/helpers.go rename to backend/pkg/testutil/helpers.go diff --git a/pkg/validator/validator.go b/backend/pkg/validator/validator.go similarity index 100% rename from pkg/validator/validator.go rename to backend/pkg/validator/validator.go diff --git a/scripts/__pycache__/chatwoot_routes_manifest.cpython-313.pyc b/backend/scripts/__pycache__/chatwoot_routes_manifest.cpython-313.pyc similarity index 100% rename from scripts/__pycache__/chatwoot_routes_manifest.cpython-313.pyc rename to backend/scripts/__pycache__/chatwoot_routes_manifest.cpython-313.pyc diff --git a/scripts/__pycache__/generate_gap_report.cpython-313.pyc b/backend/scripts/__pycache__/generate_gap_report.cpython-313.pyc similarity index 100% rename from scripts/__pycache__/generate_gap_report.cpython-313.pyc rename to backend/scripts/__pycache__/generate_gap_report.cpython-313.pyc diff --git a/scripts/align_error_codes.py b/backend/scripts/align_error_codes.py similarity index 100% rename from scripts/align_error_codes.py rename to backend/scripts/align_error_codes.py diff --git a/scripts/chatwoot_routes_manifest.py b/backend/scripts/chatwoot_routes_manifest.py similarity index 100% rename from scripts/chatwoot_routes_manifest.py rename to backend/scripts/chatwoot_routes_manifest.py diff --git a/scripts/compare_routes.py b/backend/scripts/compare_routes.py similarity index 100% rename from scripts/compare_routes.py rename to backend/scripts/compare_routes.py diff --git a/scripts/compare_routes_v2.py b/backend/scripts/compare_routes_v2.py similarity index 100% rename from scripts/compare_routes_v2.py rename to backend/scripts/compare_routes_v2.py diff --git a/scripts/coverage/coverage_report.md b/backend/scripts/coverage/coverage_report.md similarity index 100% rename from scripts/coverage/coverage_report.md rename to backend/scripts/coverage/coverage_report.md diff --git a/scripts/coverage/generate_report.sh b/backend/scripts/coverage/generate_report.sh similarity index 100% rename from scripts/coverage/generate_report.sh rename to backend/scripts/coverage/generate_report.sh diff --git a/scripts/coverage_report.sh b/backend/scripts/coverage_report.sh similarity index 100% rename from scripts/coverage_report.sh rename to backend/scripts/coverage_report.sh diff --git a/scripts/db_backup.sh b/backend/scripts/db_backup.sh similarity index 100% rename from scripts/db_backup.sh rename to backend/scripts/db_backup.sh diff --git a/scripts/extract_chatwoot_routes.py b/backend/scripts/extract_chatwoot_routes.py similarity index 100% rename from scripts/extract_chatwoot_routes.py rename to backend/scripts/extract_chatwoot_routes.py diff --git a/scripts/extract_routes.py b/backend/scripts/extract_routes.py similarity index 100% rename from scripts/extract_routes.py rename to backend/scripts/extract_routes.py diff --git a/scripts/fix_all_route_params.py b/backend/scripts/fix_all_route_params.py similarity index 100% rename from scripts/fix_all_route_params.py rename to backend/scripts/fix_all_route_params.py diff --git a/scripts/fix_remaining_route_params.py b/backend/scripts/fix_remaining_route_params.py similarity index 100% rename from scripts/fix_remaining_route_params.py rename to backend/scripts/fix_remaining_route_params.py diff --git a/scripts/fix_route_params.py b/backend/scripts/fix_route_params.py similarity index 100% rename from scripts/fix_route_params.py rename to backend/scripts/fix_route_params.py diff --git a/scripts/fix_test_route_params.py b/backend/scripts/fix_test_route_params.py similarity index 100% rename from scripts/fix_test_route_params.py rename to backend/scripts/fix_test_route_params.py diff --git a/scripts/generate_gap_report.py b/backend/scripts/generate_gap_report.py similarity index 100% rename from scripts/generate_gap_report.py rename to backend/scripts/generate_gap_report.py diff --git a/scripts/health_check.sh b/backend/scripts/health_check.sh similarity index 100% rename from scripts/health_check.sh rename to backend/scripts/health_check.sh diff --git a/gorm_bool_main.go b/backend/scripts/legacy/gorm_bool_main.go similarity index 100% rename from gorm_bool_main.go rename to backend/scripts/legacy/gorm_bool_main.go diff --git a/rename_models.py b/backend/scripts/legacy/rename_models.py similarity index 100% rename from rename_models.py rename to backend/scripts/legacy/rename_models.py diff --git a/rename_models.sh b/backend/scripts/legacy/rename_models.sh similarity index 100% rename from rename_models.sh rename to backend/scripts/legacy/rename_models.sh diff --git a/rename_models.sh.txt b/backend/scripts/legacy/rename_models.sh.txt similarity index 100% rename from rename_models.sh.txt rename to backend/scripts/legacy/rename_models.sh.txt diff --git a/run_m11_tests.sh b/backend/scripts/legacy/run_m11_tests.sh similarity index 100% rename from run_m11_tests.sh rename to backend/scripts/legacy/run_m11_tests.sh diff --git a/verify_build.sh b/backend/scripts/legacy/verify_build.sh similarity index 100% rename from verify_build.sh rename to backend/scripts/legacy/verify_build.sh diff --git a/scripts/migrate.sh b/backend/scripts/migrate.sh similarity index 100% rename from scripts/migrate.sh rename to backend/scripts/migrate.sh diff --git a/scripts/parity_frontend_browser_smoke.mjs b/backend/scripts/parity_frontend_browser_smoke.mjs similarity index 100% rename from scripts/parity_frontend_browser_smoke.mjs rename to backend/scripts/parity_frontend_browser_smoke.mjs diff --git a/scripts/parity_frontend_smoke.sh b/backend/scripts/parity_frontend_smoke.sh similarity index 100% rename from scripts/parity_frontend_smoke.sh rename to backend/scripts/parity_frontend_smoke.sh diff --git a/scripts/parse_chatwoot_routes.py b/backend/scripts/parse_chatwoot_routes.py similarity index 100% rename from scripts/parse_chatwoot_routes.py rename to backend/scripts/parse_chatwoot_routes.py diff --git a/scripts/parse_chatwoot_routes.rb b/backend/scripts/parse_chatwoot_routes.rb similarity index 100% rename from scripts/parse_chatwoot_routes.rb rename to backend/scripts/parse_chatwoot_routes.rb diff --git a/scripts/parse_chatwoot_routes_v2.py b/backend/scripts/parse_chatwoot_routes_v2.py similarity index 100% rename from scripts/parse_chatwoot_routes_v2.py rename to backend/scripts/parse_chatwoot_routes_v2.py diff --git a/scripts/parse_chatwoot_routes_v3.py b/backend/scripts/parse_chatwoot_routes_v3.py similarity index 100% rename from scripts/parse_chatwoot_routes_v3.py rename to backend/scripts/parse_chatwoot_routes_v3.py diff --git a/scripts/prometheus_exporter.sh b/backend/scripts/prometheus_exporter.sh similarity index 100% rename from scripts/prometheus_exporter.sh rename to backend/scripts/prometheus_exporter.sh diff --git a/scripts/route_gap_analysis.py b/backend/scripts/route_gap_analysis.py similarity index 100% rename from scripts/route_gap_analysis.py rename to backend/scripts/route_gap_analysis.py diff --git a/scripts/scan_params.py b/backend/scripts/scan_params.py similarity index 100% rename from scripts/scan_params.py rename to backend/scripts/scan_params.py diff --git a/scripts/scan_route_conflicts.py b/backend/scripts/scan_route_conflicts.py similarity index 100% rename from scripts/scan_route_conflicts.py rename to backend/scripts/scan_route_conflicts.py diff --git a/scripts/seed.sh b/backend/scripts/seed.sh similarity index 100% rename from scripts/seed.sh rename to backend/scripts/seed.sh diff --git a/scripts/verify_tests.sh b/backend/scripts/verify_tests.sh similarity index 100% rename from scripts/verify_tests.sh rename to backend/scripts/verify_tests.sh diff --git a/tests/e2e/account_e2e_test.go b/backend/tests/e2e/account_e2e_test.go similarity index 100% rename from tests/e2e/account_e2e_test.go rename to backend/tests/e2e/account_e2e_test.go diff --git a/tests/e2e/auth_e2e_test.go b/backend/tests/e2e/auth_e2e_test.go similarity index 100% rename from tests/e2e/auth_e2e_test.go rename to backend/tests/e2e/auth_e2e_test.go diff --git a/tests/e2e/channel_incoming_e2e_test.go b/backend/tests/e2e/channel_incoming_e2e_test.go similarity index 100% rename from tests/e2e/channel_incoming_e2e_test.go rename to backend/tests/e2e/channel_incoming_e2e_test.go diff --git a/tests/e2e/conversation_e2e_test.go b/backend/tests/e2e/conversation_e2e_test.go similarity index 100% rename from tests/e2e/conversation_e2e_test.go rename to backend/tests/e2e/conversation_e2e_test.go diff --git a/tests/e2e/crm_e2e_test.go b/backend/tests/e2e/crm_e2e_test.go similarity index 100% rename from tests/e2e/crm_e2e_test.go rename to backend/tests/e2e/crm_e2e_test.go diff --git a/tests/e2e/csrf_e2e_test.go b/backend/tests/e2e/csrf_e2e_test.go similarity index 100% rename from tests/e2e/csrf_e2e_test.go rename to backend/tests/e2e/csrf_e2e_test.go diff --git a/tests/e2e/dashboard_app_e2e_test.go b/backend/tests/e2e/dashboard_app_e2e_test.go similarity index 100% rename from tests/e2e/dashboard_app_e2e_test.go rename to backend/tests/e2e/dashboard_app_e2e_test.go diff --git a/tests/e2e/e2e_test.go b/backend/tests/e2e/e2e_test.go similarity index 100% rename from tests/e2e/e2e_test.go rename to backend/tests/e2e/e2e_test.go diff --git a/tests/e2e/middleware_e2e_test.go b/backend/tests/e2e/middleware_e2e_test.go similarity index 100% rename from tests/e2e/middleware_e2e_test.go rename to backend/tests/e2e/middleware_e2e_test.go diff --git a/tests/e2e/rbac_e2e_test.go b/backend/tests/e2e/rbac_e2e_test.go similarity index 100% rename from tests/e2e/rbac_e2e_test.go rename to backend/tests/e2e/rbac_e2e_test.go diff --git a/tests/e2e/session_e2e_test.go b/backend/tests/e2e/session_e2e_test.go similarity index 100% rename from tests/e2e/session_e2e_test.go rename to backend/tests/e2e/session_e2e_test.go diff --git a/tests/helpers/pg_helper.go b/backend/tests/helpers/pg_helper.go similarity index 100% rename from tests/helpers/pg_helper.go rename to backend/tests/helpers/pg_helper.go diff --git a/Dockerfile b/deploy/docker/Dockerfile similarity index 95% rename from Dockerfile rename to deploy/docker/Dockerfile index 95286f84..812ef5ce 100644 --- a/Dockerfile +++ b/deploy/docker/Dockerfile @@ -15,11 +15,11 @@ WORKDIR /app RUN apk add --no-cache git # Dependency layer — cached unless go.mod/go.sum change -COPY go.mod go.sum ./ +COPY backend/go.mod backend/go.sum ./ RUN go mod download -# Copy source code -COPY . . +# Copy source code (build context = repo root) +COPY backend/ . # Build with version info injected via ldflags RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ diff --git a/Dockerfile.dev b/deploy/docker/Dockerfile.dev similarity index 80% rename from Dockerfile.dev rename to deploy/docker/Dockerfile.dev index f51166b3..15a4825d 100644 --- a/Dockerfile.dev +++ b/deploy/docker/Dockerfile.dev @@ -9,11 +9,11 @@ RUN go install github.com/air-verse/air@latest && apk add --no-cache git WORKDIR /app # Pre-download dependencies for faster rebuilds -COPY go.mod go.sum ./ +COPY backend/go.mod backend/go.sum ./ RUN go mod download # Full source mount via volume in compose — no COPY needed here -# air.toml config must exist in project root +# air.toml config must exist in backend/ (project root for the Go module) EXPOSE 3000 CMD ["air", "-c", ".air.toml"] diff --git a/docker-compose.dev.yml b/deploy/docker/docker-compose.dev.yml similarity index 88% rename from docker-compose.dev.yml rename to deploy/docker/docker-compose.dev.yml index 5b40f9b1..b0c5f397 100644 --- a/docker-compose.dev.yml +++ b/deploy/docker/docker-compose.dev.yml @@ -45,8 +45,8 @@ services: gochat: build: - context: . - dockerfile: Dockerfile.dev + context: ../.. + dockerfile: deploy/docker/Dockerfile.dev container_name: gochat-app depends_on: postgres: @@ -56,8 +56,8 @@ services: ports: - "3000:3000" volumes: - - .:/app # Hot reload: mount source code - env_file: .env + - ../../backend:/app # Hot reload: mount source code + env_file: ../../.env environment: - GOCHAT_ENV=development - POSTGRES_HOST=postgres @@ -72,8 +72,8 @@ services: worker: build: - context: . - dockerfile: Dockerfile.dev + context: ../.. + dockerfile: deploy/docker/Dockerfile.dev container_name: gochat-worker depends_on: postgres: @@ -82,8 +82,8 @@ services: condition: service_healthy command: ["serve", "--worker-only"] volumes: - - .:/app - env_file: .env + - ../../backend:/app + env_file: ../../.env environment: - GOCHAT_ENV=development - POSTGRES_HOST=postgres diff --git a/docker-compose.prod.yml b/deploy/docker/docker-compose.prod.yml similarity index 98% rename from docker-compose.prod.yml rename to deploy/docker/docker-compose.prod.yml index 0894a9b4..3bab98cf 100644 --- a/docker-compose.prod.yml +++ b/deploy/docker/docker-compose.prod.yml @@ -57,7 +57,7 @@ services: condition: service_healthy ports: - "127.0.0.1:3000:3000" # Reverse proxy should handle external access - env_file: .env + env_file: ../../.env environment: - GOCHAT_ENV=production - POSTGRES_HOST=postgres @@ -89,7 +89,7 @@ services: redis: condition: service_healthy command: ["serve", "--worker-only"] - env_file: .env + env_file: ../../.env environment: - GOCHAT_ENV=production - POSTGRES_HOST=postgres diff --git a/docker-compose.test.yml b/deploy/docker/docker-compose.test.yml similarity index 94% rename from docker-compose.test.yml rename to deploy/docker/docker-compose.test.yml index 6bad8d74..ecf2f7e1 100644 --- a/docker-compose.test.yml +++ b/deploy/docker/docker-compose.test.yml @@ -31,8 +31,8 @@ services: test: build: - context: . - dockerfile: Dockerfile + context: ../.. + dockerfile: deploy/docker/Dockerfile depends_on: postgres: condition: service_healthy diff --git a/docker-compose.yml b/deploy/docker/docker-compose.yml similarity index 92% rename from docker-compose.yml rename to deploy/docker/docker-compose.yml index 1fc1d8b7..2f1dfd4f 100644 --- a/docker-compose.yml +++ b/deploy/docker/docker-compose.yml @@ -45,8 +45,8 @@ services: gochat: build: - context: . - dockerfile: Dockerfile + context: ../.. + dockerfile: deploy/docker/Dockerfile container_name: gochat-app depends_on: postgres: @@ -55,7 +55,7 @@ services: condition: service_healthy ports: - "3000:3000" - env_file: .env + env_file: ../../.env environment: - GOCHAT_ENV=development - POSTGRES_HOST=postgres @@ -65,7 +65,7 @@ services: - POSTGRES_PASSWORD=postgres - REDIS_URL=redis://redis:6379 volumes: - - ./:/app:delegated + - ../../backend:/app:delegated volumes: postgres_data: diff --git a/deploy/quickstart/compose.yaml b/deploy/quickstart/compose.yaml index 12de5544..c3015b72 100644 --- a/deploy/quickstart/compose.yaml +++ b/deploy/quickstart/compose.yaml @@ -66,7 +66,7 @@ services: gochat: build: context: ../.. - dockerfile: Dockerfile + dockerfile: deploy/docker/Dockerfile restart: unless-stopped depends_on: postgres: @@ -116,7 +116,7 @@ services: seed: build: context: ../.. - dockerfile: Dockerfile + dockerfile: deploy/docker/Dockerfile profiles: ["seed"] depends_on: gochat: diff --git a/ALIGNMENT_PLAN.md b/docs/reports/ALIGNMENT_PLAN.md similarity index 100% rename from ALIGNMENT_PLAN.md rename to docs/reports/ALIGNMENT_PLAN.md diff --git a/GAP_REPORT.md b/docs/reports/GAP_REPORT.md similarity index 100% rename from GAP_REPORT.md rename to docs/reports/GAP_REPORT.md diff --git a/GAP_REPORT_AND_PLAN.md b/docs/reports/GAP_REPORT_AND_PLAN.md similarity index 100% rename from GAP_REPORT_AND_PLAN.md rename to docs/reports/GAP_REPORT_AND_PLAN.md diff --git a/ROUTE_GAP_REPORT.md b/docs/reports/ROUTE_GAP_REPORT.md similarity index 100% rename from ROUTE_GAP_REPORT.md rename to docs/reports/ROUTE_GAP_REPORT.md diff --git a/V4_companies_verification_report.md b/docs/reports/V4_companies_verification_report.md similarity index 100% rename from V4_companies_verification_report.md rename to docs/reports/V4_companies_verification_report.md diff --git a/VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md b/docs/reports/VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md similarity index 100% rename from VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md rename to docs/reports/VERIFICATION_REPORT_G7_SLA_APPLIEDSLA_APV2.md