From bad198ce2975d157efe6c9cc475d732725444173 Mon Sep 17 00:00:00 2001 From: poignatov-home Date: Sun, 8 Feb 2026 17:01:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .DS_Store | Bin 0 -> 8196 bytes .cursor/commands.json | 33 + ...локированных_желаний_по_времени_разблокировки_4987d56a.plan.md | 260 + ...расчета_и_форматирования_срока_разблокировки_8a3f4b2c.plan.md | 392 + .cursor/rules/migrations.mdc | 8 + .cursor/rules/restart_on_changes.mdc | 16 + .cursor/rules/version_bump_and_push.mdc | 71 + .dockerignore | 9 + .env.test | 85 + .gitea/workflows/build-and-push.yml | 215 + .gitignore | 16 + .vscode/launch.json | 4 + .vscode/tasks.json | 82 + BUILD_INSTRUCTIONS.md | 80 + Dockerfile | 71 + ENV_SETUP.md | 298 + IMPACT_ANALYSIS.md | 184 + TODOIST_REFACTOR_PLAN.md | 727 + VERSION | 1 + build-and-save.ps1 | 25 + build-and-save.sh | 26 + check-repo-fs.sh | 75 + database-dumps/.gitkeep | 0 database-dumps/README.md | 59 + docker-compose.prod.yml | 27 + docker-compose.yml | 83 + dump-db.sh | 138 + env.example | 104 + init.sh | 160 + list-dumps.sh | 35 + nginx-unified.conf | 127 + nginx.conf | 29 + package.json | 9 + play-life-backend/.gitignore | 34 + play-life-backend/Dockerfile | 66 + play-life-backend/ENV_SETUP.md | 75 + play-life-backend/MIGRATION_BASELINE.md | 120 + .../MIGRATION_RISKS_AND_SOLUTIONS.md | 458 + play-life-backend/admin.html | 394 + play-life-backend/apply_baseline.sh | 168 + play-life-backend/docker-compose.yml | 41 + play-life-backend/go.mod | 27 + play-life-backend/go.sum | 98 + play-life-backend/main.go | 16617 ++++++++++++++++ .../migrations/000001_baseline.down.sql | 3 + .../migrations/000001_baseline.up.sql | 497 + .../000002_fix_weekly_goals_user_id.down.sql | 4 + .../000002_fix_weekly_goals_user_id.up.sql | 9 + ...add_reward_configs_covering_index.down.sql | 3 + ...3_add_reward_configs_covering_index.up.sql | 14 + .../000004_optimize_weekly_report_mv.down.sql | 67 + .../000004_optimize_weekly_report_mv.up.sql | 94 + .../000005_add_task_drafts.down.sql | 7 + .../migrations/000005_add_task_drafts.up.sql | 45 + ...0006_fix_wishlist_id_unique_index.down.sql | 13 + ...000006_fix_wishlist_id_unique_index.up.sql | 16 + .../000007_add_projects_median_mv.down.sql | 4 + .../000007_add_projects_median_mv.up.sql | 34 + .../000008_change_median_to_4_weeks.down.sql | 34 + .../000008_change_median_to_4_weeks.up.sql | 35 + .../000009_add_is_admin_to_users.down.sql | 9 + .../000009_add_is_admin_to_users.up.sql | 12 + ..._add_project_id_to_wishlist_items.down.sql | 9 + ...10_add_project_id_to_wishlist_items.up.sql | 13 + .../000011_add_color_to_projects.down.sql | 9 + .../000011_add_color_to_projects.up.sql | 45 + .../000012_add_subtask_position.down.sql | 9 + .../000012_add_subtask_position.up.sql | 49 + .../000013_add_user_tracking.down.sql | 2 + .../000013_add_user_tracking.up.sql | 24 + .../migrations/000014_add_group_name.down.sql | 36 + .../migrations/000014_add_group_name.up.sql | 60 + .../000015_add_fitbit_integration.down.sql | 2 + .../000015_add_fitbit_integration.up.sql | 38 + ...00016_add_project_score_sample_mv.down.sql | 3 + .../000016_add_project_score_sample_mv.up.sql | 31 + ...re_sample_mv_unique_entry_message.down.sql | 30 + ...core_sample_mv_unique_entry_message.up.sql | 42 + ...ect_score_sample_mv_one_per_score.down.sql | 39 + ...oject_score_sample_mv_one_per_score.up.sql | 32 + ..._mv_one_entry_message_per_project.down.sql | 30 + ...le_mv_one_entry_message_per_project.up.sql | 42 + play-life-backend/migrations/README.md | 115 + .../migrations_old/001_create_schema.sql | 106 + .../migrations_old/002_add_dictionaries.sql | 53 + .../003_remove_words_unique_constraint.sql | 11 + .../004_add_config_dictionaries.sql | 21 + .../005_fix_weekly_report_mv.sql | 29 + .../006_fix_weekly_report_mv_structure.sql | 48 + .../007_add_deleted_to_projects.sql | 13 + .../008_add_telegram_integrations.sql | 16 + .../009_add_users_and_multitenancy.sql | 128 + .../migrations_old/011_add_webhook_tokens.sql | 17 + .../012_refactor_telegram_single_bot.sql | 103 + .../013_refactor_todoist_single_app.sql | 45 + .../014_make_refresh_tokens_permanent.sql | 21 + .../migrations_old/015_add_tasks.sql | 58 + .../016_add_repetition_period.sql | 14 + .../migrations_old/017_add_next_show_at.sql | 14 + .../018_add_repetition_date.sql | 16 + .../migrations_old/019_add_wishlist.sql | 86 + .../020_change_period_to_start_date.sql | 37 + .../021_add_wishlist_id_to_tasks.sql | 18 + .../022_refactor_configs_to_tasks.sql | 49 + .../023_add_wishlist_boards.sql | 116 + .../migrations_old/024_add_reward_policy.sql | 13 + .../025_remove_conditions_without_user_id.sql | 13 + .../026_weekly_goals_max_score.sql | 10 + ...alized_total_score_to_weekly_report_mv.sql | 51 + .../028_optimize_task_queries.sql | 14 + .../029_add_covering_indexes.sql | 25 + play-life-backend/migrations_old/README.md | 15 + play-life-backend/play-eng-backend | Bin 0 -> 15250210 bytes play-life-backend/start_backend.sh | 20 + play-life-backend/test_baseline.sh | 347 + play-life-backend/validate_baseline.sh | 144 + play-life-llm/.gitignore | 12 + play-life-llm/Dockerfile | 19 + play-life-llm/env.example | 12 + play-life-llm/go.mod | 5 + play-life-llm/go.sum | 2 + play-life-llm/internal/handler/ask.go | 177 + play-life-llm/internal/handler/health.go | 17 + play-life-llm/internal/ollama/client.go | 148 + play-life-llm/internal/server/server.go | 35 + play-life-llm/internal/tavily/client.go | 104 + play-life-llm/main.go | 36 + play-life-web/.dockerignore | 12 + play-life-web/.gitignore | 30 + play-life-web/Dockerfile | 30 + play-life-web/README.md | 105 + play-life-web/build-and-save.sh | 42 + play-life-web/build-docker-image.sh | 29 + play-life-web/docker-compose.yml | 21 + play-life-web/env.example | 6 + play-life-web/generate-icons.cjs | 84 + play-life-web/index.html | 25 + play-life-web/nginx.conf | 111 + play-life-web/package-lock.json | 7948 ++++++++ play-life-web/package.json | 33 + play-life-web/postcss.config.js | 7 + play-life-web/public/apple-touch-icon.png | Bin 0 -> 4842 bytes play-life-web/public/favicon-new.ico | Bin 0 -> 932 bytes play-life-web/public/favicon.svg | 13 + play-life-web/public/privacy.html | 159 + play-life-web/public/pwa-192x192.png | Bin 0 -> 5189 bytes play-life-web/public/pwa-512x512.png | Bin 0 -> 19571 bytes play-life-web/public/pwa-maskable-192x192.png | Bin 0 -> 3717 bytes play-life-web/public/pwa-maskable-512x512.png | Bin 0 -> 14823 bytes play-life-web/public/terms.html | 128 + play-life-web/src/App.jsx | 1574 ++ play-life-web/src/components/AddWords.css | 231 + play-life-web/src/components/AddWords.jsx | 325 + play-life-web/src/components/BoardForm.css | 132 + play-life-web/src/components/BoardForm.jsx | 286 + .../src/components/BoardJoinPreview.css | 199 + .../src/components/BoardJoinPreview.jsx | 156 + play-life-web/src/components/BoardMembers.css | 132 + play-life-web/src/components/BoardMembers.jsx | 113 + .../src/components/BoardSelector.css | 261 + .../src/components/BoardSelector.jsx | 121 + play-life-web/src/components/Buttons.css | 63 + .../src/components/ColorPickerModal.jsx | 63 + play-life-web/src/components/CurrentWeek.css | 176 + play-life-web/src/components/CurrentWeek.jsx | 715 + play-life-web/src/components/DeleteButton.jsx | 29 + .../src/components/DictionaryList.css | 224 + .../src/components/DictionaryList.jsx | 155 + .../src/components/FitbitIntegration.jsx | 528 + .../src/components/FullStatistics.jsx | 202 + play-life-web/src/components/Integrations.css | 25 + play-life-web/src/components/LoadingError.css | 54 + play-life-web/src/components/LoadingError.jsx | 23 + .../src/components/PWAUpdatePrompt.jsx | 59 + play-life-web/src/components/Profile.jsx | 196 + .../src/components/ProjectPriorityManager.jsx | 1105 + .../src/components/ProjectProgressBar.jsx | 158 + play-life-web/src/components/SubmitButton.jsx | 20 + play-life-web/src/components/TaskDetail.css | 429 + .../src/components/TaskDetail.css.bak | 319 + play-life-web/src/components/TaskDetail.jsx | 933 + play-life-web/src/components/TaskForm.css | 610 + play-life-web/src/components/TaskForm.jsx | 1432 ++ play-life-web/src/components/TaskList.css | 876 + play-life-web/src/components/TaskList.jsx | 1171 ++ .../src/components/TelegramIntegration.jsx | 140 + play-life-web/src/components/TestWords.css | 466 + play-life-web/src/components/TestWords.jsx | 772 + play-life-web/src/components/Toast.css | 47 + play-life-web/src/components/Toast.jsx | 30 + .../src/components/TodayEntriesList.jsx | 270 + .../src/components/TodoistIntegration.jsx | 210 + play-life-web/src/components/Tracking.css | 436 + play-life-web/src/components/Tracking.jsx | 193 + .../src/components/TrackingAccess.jsx | 158 + .../src/components/TrackingInviteAccept.jsx | 115 + .../src/components/WeekProgressChart.jsx | 320 + play-life-web/src/components/Wishlist.css | 447 + play-life-web/src/components/Wishlist.jsx | 789 + .../src/components/WishlistDetail.css | 458 + .../src/components/WishlistDetail.jsx | 755 + play-life-web/src/components/WishlistForm.css | 713 + play-life-web/src/components/WishlistForm.jsx | 1493 ++ play-life-web/src/components/WordList.css | 344 + play-life-web/src/components/WordList.jsx | 335 + .../src/components/auth/AuthContext.jsx | 353 + .../src/components/auth/AuthScreen.jsx | 16 + .../src/components/auth/LoginForm.jsx | 112 + .../src/components/auth/RegisterForm.jsx | 150 + play-life-web/src/index.css | 51 + play-life-web/src/main.jsx | 11 + play-life-web/src/utils/projectUtils.js | 146 + play-life-web/tailwind.config.js | 12 + play-life-web/vite.config.js | 186 + restore-db.sh | 206 + run.sh | 89 + supervisord.conf | 29 + 217 files changed, 57075 insertions(+) create mode 100644 .DS_Store create mode 100644 .cursor/commands.json create mode 100644 .cursor/plans/изменить_сортировку_заблокированных_желаний_по_времени_разблокировки_4987d56a.plan.md create mode 100644 .cursor/plans/создать_общие_функции_расчета_и_форматирования_срока_разблокировки_8a3f4b2c.plan.md create mode 100644 .cursor/rules/migrations.mdc create mode 100644 .cursor/rules/restart_on_changes.mdc create mode 100644 .cursor/rules/version_bump_and_push.mdc create mode 100644 .dockerignore create mode 100644 .env.test create mode 100644 .gitea/workflows/build-and-push.yml create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 BUILD_INSTRUCTIONS.md create mode 100644 Dockerfile create mode 100644 ENV_SETUP.md create mode 100644 IMPACT_ANALYSIS.md create mode 100644 TODOIST_REFACTOR_PLAN.md create mode 100644 VERSION create mode 100644 build-and-save.ps1 create mode 100644 build-and-save.sh create mode 100755 check-repo-fs.sh create mode 100644 database-dumps/.gitkeep create mode 100644 database-dumps/README.md create mode 100644 docker-compose.prod.yml create mode 100644 docker-compose.yml create mode 100755 dump-db.sh create mode 100644 env.example create mode 100755 init.sh create mode 100755 list-dumps.sh create mode 100644 nginx-unified.conf create mode 100644 nginx.conf create mode 100644 package.json create mode 100644 play-life-backend/.gitignore create mode 100644 play-life-backend/Dockerfile create mode 100644 play-life-backend/ENV_SETUP.md create mode 100644 play-life-backend/MIGRATION_BASELINE.md create mode 100644 play-life-backend/MIGRATION_RISKS_AND_SOLUTIONS.md create mode 100644 play-life-backend/admin.html create mode 100755 play-life-backend/apply_baseline.sh create mode 100644 play-life-backend/docker-compose.yml create mode 100644 play-life-backend/go.mod create mode 100644 play-life-backend/go.sum create mode 100644 play-life-backend/main.go create mode 100644 play-life-backend/migrations/000001_baseline.down.sql create mode 100644 play-life-backend/migrations/000001_baseline.up.sql create mode 100644 play-life-backend/migrations/000002_fix_weekly_goals_user_id.down.sql create mode 100644 play-life-backend/migrations/000002_fix_weekly_goals_user_id.up.sql create mode 100644 play-life-backend/migrations/000003_add_reward_configs_covering_index.down.sql create mode 100644 play-life-backend/migrations/000003_add_reward_configs_covering_index.up.sql create mode 100644 play-life-backend/migrations/000004_optimize_weekly_report_mv.down.sql create mode 100644 play-life-backend/migrations/000004_optimize_weekly_report_mv.up.sql create mode 100644 play-life-backend/migrations/000005_add_task_drafts.down.sql create mode 100644 play-life-backend/migrations/000005_add_task_drafts.up.sql create mode 100644 play-life-backend/migrations/000006_fix_wishlist_id_unique_index.down.sql create mode 100644 play-life-backend/migrations/000006_fix_wishlist_id_unique_index.up.sql create mode 100644 play-life-backend/migrations/000007_add_projects_median_mv.down.sql create mode 100644 play-life-backend/migrations/000007_add_projects_median_mv.up.sql create mode 100644 play-life-backend/migrations/000008_change_median_to_4_weeks.down.sql create mode 100644 play-life-backend/migrations/000008_change_median_to_4_weeks.up.sql create mode 100644 play-life-backend/migrations/000009_add_is_admin_to_users.down.sql create mode 100644 play-life-backend/migrations/000009_add_is_admin_to_users.up.sql create mode 100644 play-life-backend/migrations/000010_add_project_id_to_wishlist_items.down.sql create mode 100644 play-life-backend/migrations/000010_add_project_id_to_wishlist_items.up.sql create mode 100644 play-life-backend/migrations/000011_add_color_to_projects.down.sql create mode 100644 play-life-backend/migrations/000011_add_color_to_projects.up.sql create mode 100644 play-life-backend/migrations/000012_add_subtask_position.down.sql create mode 100644 play-life-backend/migrations/000012_add_subtask_position.up.sql create mode 100644 play-life-backend/migrations/000013_add_user_tracking.down.sql create mode 100644 play-life-backend/migrations/000013_add_user_tracking.up.sql create mode 100644 play-life-backend/migrations/000014_add_group_name.down.sql create mode 100644 play-life-backend/migrations/000014_add_group_name.up.sql create mode 100644 play-life-backend/migrations/000015_add_fitbit_integration.down.sql create mode 100644 play-life-backend/migrations/000015_add_fitbit_integration.up.sql create mode 100644 play-life-backend/migrations/000016_add_project_score_sample_mv.down.sql create mode 100644 play-life-backend/migrations/000016_add_project_score_sample_mv.up.sql create mode 100644 play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.down.sql create mode 100644 play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.up.sql create mode 100644 play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.down.sql create mode 100644 play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.up.sql create mode 100644 play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.down.sql create mode 100644 play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.up.sql create mode 100644 play-life-backend/migrations/README.md create mode 100644 play-life-backend/migrations_old/001_create_schema.sql create mode 100644 play-life-backend/migrations_old/002_add_dictionaries.sql create mode 100644 play-life-backend/migrations_old/003_remove_words_unique_constraint.sql create mode 100644 play-life-backend/migrations_old/004_add_config_dictionaries.sql create mode 100644 play-life-backend/migrations_old/005_fix_weekly_report_mv.sql create mode 100644 play-life-backend/migrations_old/006_fix_weekly_report_mv_structure.sql create mode 100644 play-life-backend/migrations_old/007_add_deleted_to_projects.sql create mode 100644 play-life-backend/migrations_old/008_add_telegram_integrations.sql create mode 100644 play-life-backend/migrations_old/009_add_users_and_multitenancy.sql create mode 100644 play-life-backend/migrations_old/011_add_webhook_tokens.sql create mode 100644 play-life-backend/migrations_old/012_refactor_telegram_single_bot.sql create mode 100644 play-life-backend/migrations_old/013_refactor_todoist_single_app.sql create mode 100644 play-life-backend/migrations_old/014_make_refresh_tokens_permanent.sql create mode 100644 play-life-backend/migrations_old/015_add_tasks.sql create mode 100644 play-life-backend/migrations_old/016_add_repetition_period.sql create mode 100644 play-life-backend/migrations_old/017_add_next_show_at.sql create mode 100644 play-life-backend/migrations_old/018_add_repetition_date.sql create mode 100644 play-life-backend/migrations_old/019_add_wishlist.sql create mode 100644 play-life-backend/migrations_old/020_change_period_to_start_date.sql create mode 100644 play-life-backend/migrations_old/021_add_wishlist_id_to_tasks.sql create mode 100644 play-life-backend/migrations_old/022_refactor_configs_to_tasks.sql create mode 100644 play-life-backend/migrations_old/023_add_wishlist_boards.sql create mode 100644 play-life-backend/migrations_old/024_add_reward_policy.sql create mode 100644 play-life-backend/migrations_old/025_remove_conditions_without_user_id.sql create mode 100644 play-life-backend/migrations_old/026_weekly_goals_max_score.sql create mode 100644 play-life-backend/migrations_old/027_add_normalized_total_score_to_weekly_report_mv.sql create mode 100644 play-life-backend/migrations_old/028_optimize_task_queries.sql create mode 100644 play-life-backend/migrations_old/029_add_covering_indexes.sql create mode 100644 play-life-backend/migrations_old/README.md create mode 100755 play-life-backend/play-eng-backend create mode 100755 play-life-backend/start_backend.sh create mode 100755 play-life-backend/test_baseline.sh create mode 100755 play-life-backend/validate_baseline.sh create mode 100644 play-life-llm/.gitignore create mode 100644 play-life-llm/Dockerfile create mode 100644 play-life-llm/env.example create mode 100644 play-life-llm/go.mod create mode 100644 play-life-llm/go.sum create mode 100644 play-life-llm/internal/handler/ask.go create mode 100644 play-life-llm/internal/handler/health.go create mode 100644 play-life-llm/internal/ollama/client.go create mode 100644 play-life-llm/internal/server/server.go create mode 100644 play-life-llm/internal/tavily/client.go create mode 100644 play-life-llm/main.go create mode 100644 play-life-web/.dockerignore create mode 100644 play-life-web/.gitignore create mode 100644 play-life-web/Dockerfile create mode 100644 play-life-web/README.md create mode 100644 play-life-web/build-and-save.sh create mode 100644 play-life-web/build-docker-image.sh create mode 100644 play-life-web/docker-compose.yml create mode 100644 play-life-web/env.example create mode 100644 play-life-web/generate-icons.cjs create mode 100644 play-life-web/index.html create mode 100644 play-life-web/nginx.conf create mode 100644 play-life-web/package-lock.json create mode 100644 play-life-web/package.json create mode 100644 play-life-web/postcss.config.js create mode 100644 play-life-web/public/apple-touch-icon.png create mode 100644 play-life-web/public/favicon-new.ico create mode 100644 play-life-web/public/favicon.svg create mode 100644 play-life-web/public/privacy.html create mode 100644 play-life-web/public/pwa-192x192.png create mode 100644 play-life-web/public/pwa-512x512.png create mode 100644 play-life-web/public/pwa-maskable-192x192.png create mode 100644 play-life-web/public/pwa-maskable-512x512.png create mode 100644 play-life-web/public/terms.html create mode 100644 play-life-web/src/App.jsx create mode 100644 play-life-web/src/components/AddWords.css create mode 100644 play-life-web/src/components/AddWords.jsx create mode 100644 play-life-web/src/components/BoardForm.css create mode 100644 play-life-web/src/components/BoardForm.jsx create mode 100644 play-life-web/src/components/BoardJoinPreview.css create mode 100644 play-life-web/src/components/BoardJoinPreview.jsx create mode 100644 play-life-web/src/components/BoardMembers.css create mode 100644 play-life-web/src/components/BoardMembers.jsx create mode 100644 play-life-web/src/components/BoardSelector.css create mode 100644 play-life-web/src/components/BoardSelector.jsx create mode 100644 play-life-web/src/components/Buttons.css create mode 100644 play-life-web/src/components/ColorPickerModal.jsx create mode 100644 play-life-web/src/components/CurrentWeek.css create mode 100644 play-life-web/src/components/CurrentWeek.jsx create mode 100644 play-life-web/src/components/DeleteButton.jsx create mode 100644 play-life-web/src/components/DictionaryList.css create mode 100644 play-life-web/src/components/DictionaryList.jsx create mode 100644 play-life-web/src/components/FitbitIntegration.jsx create mode 100644 play-life-web/src/components/FullStatistics.jsx create mode 100644 play-life-web/src/components/Integrations.css create mode 100644 play-life-web/src/components/LoadingError.css create mode 100644 play-life-web/src/components/LoadingError.jsx create mode 100644 play-life-web/src/components/PWAUpdatePrompt.jsx create mode 100644 play-life-web/src/components/Profile.jsx create mode 100644 play-life-web/src/components/ProjectPriorityManager.jsx create mode 100644 play-life-web/src/components/ProjectProgressBar.jsx create mode 100644 play-life-web/src/components/SubmitButton.jsx create mode 100644 play-life-web/src/components/TaskDetail.css create mode 100644 play-life-web/src/components/TaskDetail.css.bak create mode 100644 play-life-web/src/components/TaskDetail.jsx create mode 100644 play-life-web/src/components/TaskForm.css create mode 100644 play-life-web/src/components/TaskForm.jsx create mode 100644 play-life-web/src/components/TaskList.css create mode 100644 play-life-web/src/components/TaskList.jsx create mode 100644 play-life-web/src/components/TelegramIntegration.jsx create mode 100644 play-life-web/src/components/TestWords.css create mode 100644 play-life-web/src/components/TestWords.jsx create mode 100644 play-life-web/src/components/Toast.css create mode 100644 play-life-web/src/components/Toast.jsx create mode 100644 play-life-web/src/components/TodayEntriesList.jsx create mode 100644 play-life-web/src/components/TodoistIntegration.jsx create mode 100644 play-life-web/src/components/Tracking.css create mode 100644 play-life-web/src/components/Tracking.jsx create mode 100644 play-life-web/src/components/TrackingAccess.jsx create mode 100644 play-life-web/src/components/TrackingInviteAccept.jsx create mode 100644 play-life-web/src/components/WeekProgressChart.jsx create mode 100644 play-life-web/src/components/Wishlist.css create mode 100644 play-life-web/src/components/Wishlist.jsx create mode 100644 play-life-web/src/components/WishlistDetail.css create mode 100644 play-life-web/src/components/WishlistDetail.jsx create mode 100644 play-life-web/src/components/WishlistForm.css create mode 100644 play-life-web/src/components/WishlistForm.jsx create mode 100644 play-life-web/src/components/WordList.css create mode 100644 play-life-web/src/components/WordList.jsx create mode 100644 play-life-web/src/components/auth/AuthContext.jsx create mode 100644 play-life-web/src/components/auth/AuthScreen.jsx create mode 100644 play-life-web/src/components/auth/LoginForm.jsx create mode 100644 play-life-web/src/components/auth/RegisterForm.jsx create mode 100644 play-life-web/src/index.css create mode 100644 play-life-web/src/main.jsx create mode 100644 play-life-web/src/utils/projectUtils.js create mode 100644 play-life-web/tailwind.config.js create mode 100644 play-life-web/vite.config.js create mode 100755 restore-db.sh create mode 100755 run.sh create mode 100644 supervisord.conf diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..187b392bd796a3dd46a1f5d5dde4aac40aca19a4 GIT binary patch literal 8196 zcmeHM&1(}u6n~S(c4KL2!Akr97xW};ZB0>1E-|JD_2!B_sIH4vl- z>RHr_3cU(NPkL7H=*@FaJ^C-`n~$`!=EDdgfzH6po6Nl5%Bsp(Th12!TSyTbsA?w9Q)&Xa%$aS^=$qRzNE-2nyhx&5F_G z-WRjF)e2|@4y6L@_rb)7Y38=eB7jpHyc*vCA8V@zo?(l&+VP+U`F4@5$V zOfiUnXbr3xz0?#8kV7%H>VkdH-%} zUl(N^l}&fA4t&Oug^jA%;9w0=of#adK^X!FBkaZ&Cy`xGf0gUw6W2dIe95`~0dt^Z zznDlIV{efbOd?+oBY1%PJv`_8JQ5aD9@eq%gR4dp%MP9I52ePm`gtdre$Hd+V?Xsw z{tl_e7h7tw_{KWMSI5YlYaY$ZZw|YtcCgO=sea!-H>A~F<~T(#L7f+bMx{-YT8_wPc^2^&Bcpz*iT(*G!n+t*$e5LE9+j_r%!nd zK;#vT(L~F$-Vv&2e)PuPa&K?-tUv5+#dlxvv+kk2ddB@B)UzEA_+J)1*59xyzDNBv z@%u{eKu@-$Yl2$w=E27DurB_lE!nH#PMA&&Aixp;h1)UUOM* literal 0 HcmV?d00001 diff --git a/.cursor/commands.json b/.cursor/commands.json new file mode 100644 index 0000000..d777428 --- /dev/null +++ b/.cursor/commands.json @@ -0,0 +1,33 @@ +{ + "commands": [ + { + "name": "init", + "description": "Инициализация Play Life: остановка контейнеров, поднятие сервисов, создание дампа с продакшена и восстановление в локальную базу", + "command": "./init.sh", + "type": "shell", + "cwd": "${workspaceFolder}" + }, + { + "name": "run", + "description": "Перезапуск Play Life: перезапуск всех контейнеров", + "command": "./run.sh", + "type": "shell", + "cwd": "${workspaceFolder}" + }, + { + "name": "backupFromProd", + "description": "Создание дампа базы данных с продакшена", + "command": "./dump-db.sh", + "type": "shell", + "cwd": "${workspaceFolder}" + }, + { + "name": "restoreToLocal", + "description": "Восстановление базы данных из самого свежего дампа в локальную базу (автоматически выбирает последний дамп)", + "command": "./restore-db.sh", + "type": "shell", + "cwd": "${workspaceFolder}" + } + ] +} + diff --git a/.cursor/plans/изменить_сортировку_заблокированных_желаний_по_времени_разблокировки_4987d56a.plan.md b/.cursor/plans/изменить_сортировку_заблокированных_желаний_по_времени_разблокировки_4987d56a.plan.md new file mode 100644 index 0000000..0174406 --- /dev/null +++ b/.cursor/plans/изменить_сортировку_заблокированных_желаний_по_времени_разблокировки_4987d56a.plan.md @@ -0,0 +1,260 @@ +# План: Изменить сортировку заблокированных желаний по времени разблокировки + +## Цель +Изменить сортировку желаний: +1. Разблокированные - по цене от меньшего к большему +2. Заблокированные без целей-задач - по сроку разблокировки (максимальное время среди проектов) +3. Заблокированные с целями-задачами - по сроку разблокировки (максимальное время среди проектов) + +## Статус реализации + +**Уже реализовано:** +- ✅ `calculateProjectUnlockWeeks` - функция расчета недель разблокировки +- ✅ `calculateLockedSortValue` - использует `calculateProjectUnlockWeeks` и возвращает недели +- ✅ `getProjectMedian` - упрощенная версия без fallback (используется как есть) + +**Требуется реализовать:** +- ⏳ Создать миграцию для `projects_median_mv` (миграции нет, но используется в коде) +- ⏳ В `getWishlistHandler`: заменить `calculateUnlockedSortValue` на прямую сортировку по цене для разблокированных +- ⏳ В `getWishlistHandler`: разделить заблокированные на группы (с задачами/без задач) и сортировать каждую группу +- ⏳ В `getBoardItemsHandler`: заменить `calculateUnlockedSortValue` на прямую сортировку по цене для разблокированных +- ⏳ В `getBoardItemsHandler`: разделить заблокированные на группы (с задачами/без задач) и сортировать каждую группу + +## Изменения + +### 1. Создать миграцию для projects_median_mv + +**Статус:** `getProjectMedian` уже использует `projects_median_mv`, но миграции для неё нет в списке миграций. Нужно создать миграцию. + +**Файл:** `play-life-backend/migrations/000007_add_projects_median_mv.up.sql` + +Убедиться, что materialized view включает `user_id`: +```sql +CREATE MATERIALIZED VIEW projects_median_mv AS +SELECT + p.id AS project_id, + p.user_id, + PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score +FROM ( + SELECT + project_id, + normalized_total_score, + report_year, + report_week, + ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn + FROM weekly_report_mv + WHERE + (report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) +) sub +JOIN projects p ON p.id = sub.project_id +WHERE rn <= 12 AND p.deleted = FALSE +GROUP BY p.id, p.user_id +WITH DATA; + +CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id); +CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id); +``` + +**Файл:** `play-life-backend/migrations/000007_add_projects_median_mv.down.sql` + +```sql +DROP MATERIALIZED VIEW IF EXISTS projects_median_mv; +``` + +### 2. Изменить calculateLockedSortValue для расчета времени + +**Файл:** `play-life-backend/main.go` (строки 12488-12561) + +**Статус:** Функция уже реализована и использует `calculateProjectUnlockWeeks`. Проверить, что логика соответствует требованиям: +- Учитывает только условия типа `project_points` +- Использует правильного владельца условия (`conditionOwnerID`) +- Возвращает максимальное количество недель среди всех условий проектов +- Возвращает 999999.0 если нет условий по проектам или все выполнены + +**Текущая реализация уже корректна**, изменения не требуются. + +**Важно:** +- Функция уже использует `calculateProjectUnlockWeeks` для расчета (уже реализовано) +- Функция НЕ должна учитывать задачи, только проекты. Разделение на группы с задачами и без задач будет в сортировке. +- Функция уже правильно обрабатывает владельца условия через `conditionOwnerID` (не использует `userID` напрямую) + +### 3. Обновить сортировку в getWishlistHandler + +**Файл:** `play-life-backend/main.go` (строки 9933-9951) + +**Текущее состояние:** +- Разблокированные: используют `calculateUnlockedSortValue` (сумма баллов) - **нужно заменить на цену** +- Заблокированные: сортируются по `calculateLockedSortValue` (недели) - **нужно разделить на группы** + +**Изменить:** +1. Разблокированные: сортировка по цене от меньшего к большему (заменить `calculateUnlockedSortValue`) +2. Заблокированные: разделить на группы (с задачами/без задач) и сортировать каждую группу по времени + +```go +// Сортируем разблокированные по цене от меньшего к большему +// ЗАМЕНА: было calculateUnlockedSortValue, стало прямая сортировка по цене +sort.Slice(unlocked, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if unlocked[i].Price != nil { + priceI = *unlocked[i].Price + } + if unlocked[j].Price != nil { + priceJ = *unlocked[j].Price + } + if priceI == priceJ { + return unlocked[i].ID < unlocked[j].ID + } + return priceI < priceJ // Сортировка по цене от меньшего к большему (заменяет calculateUnlockedSortValue) +}) + +// Разделяем заблокированные на группы +lockedWithoutTasks := []WishlistItem{} +lockedWithTasks := []WishlistItem{} + +for _, item := range locked { + hasUncompletedTasks := false + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" && (cond.TaskCompleted == nil || !*cond.TaskCompleted) { + hasUncompletedTasks = true + break + } + } + if hasUncompletedTasks { + lockedWithTasks = append(lockedWithTasks, item) + } else { + lockedWithoutTasks = append(lockedWithoutTasks, item) + } +} + +// Сортируем каждую группу по времени разблокировки +sort.Slice(lockedWithoutTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) + if valueI == valueJ { + return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID + } + return valueI < valueJ +}) + +sort.Slice(lockedWithTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithTasks[j], userID) + if valueI == valueJ { + return lockedWithTasks[i].ID < lockedWithTasks[j].ID + } + return valueI < valueJ +}) + +// Объединяем: сначала без задач, потом с задачами +locked = append(lockedWithoutTasks, lockedWithTasks...) +``` + +### 4. Обновить сортировку в getBoardItemsHandler + +**Файл:** `play-life-backend/main.go` (строки 12222-12240) + +**Текущее состояние:** +- Разблокированные: используют `calculateUnlockedSortValue` (сумма баллов) - **нужно заменить на цену** +- Заблокированные: сортируются по `calculateLockedSortValue` (недели) - **нужно разделить на группы** + +**Изменить аналогично getWishlistHandler:** +1. Разблокированные: сортировка по цене от меньшего к большему (заменить `calculateUnlockedSortValue`) +2. Заблокированные: разделить на группы (с задачами/без задач) и сортировать каждую группу по времени + +```go +// Сортируем разблокированные по цене от меньшего к большему +// ЗАМЕНА: было calculateUnlockedSortValue, стало прямая сортировка по цене +sort.Slice(unlocked, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if unlocked[i].Price != nil { + priceI = *unlocked[i].Price + } + if unlocked[j].Price != nil { + priceJ = *unlocked[j].Price + } + if priceI == priceJ { + return unlocked[i].ID < unlocked[j].ID + } + return priceI < priceJ +}) + +// РАЗДЕЛЕНИЕ НА ГРУППЫ: Заблокированные с задачами и без задач +// ЗАМЕНА: было просто sort.Slice(locked, ...), стало разделение на группы +lockedWithoutTasks := []WishlistItem{} +lockedWithTasks := []WishlistItem{} + +for _, item := range locked { + hasUncompletedTasks := false + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" && (cond.TaskCompleted == nil || !*cond.TaskCompleted) { + hasUncompletedTasks = true + break + } + } + if hasUncompletedTasks { + lockedWithTasks = append(lockedWithTasks, item) + } else { + lockedWithoutTasks = append(lockedWithoutTasks, item) + } +} + +// Сортируем каждую группу по времени разблокировки +sort.Slice(lockedWithoutTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) + if valueI == valueJ { + return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID + } + return valueI < valueJ +}) + +sort.Slice(lockedWithTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithTasks[j], userID) + if valueI == valueJ { + return lockedWithTasks[i].ID < lockedWithTasks[j].ID + } + return valueI < valueJ +}) + +// Объединяем: сначала без задач, потом с задачами +locked = append(lockedWithoutTasks, lockedWithTasks...) +``` + +## Итоговый порядок элементов + +1. **Разблокированные** - отсортированы по цене от меньшего к большему +2. **Заблокированные без целей-задач** - отсортированы по максимальному времени разблокировки (среди всех проектов) от меньшего к большему +3. **Заблокированные с целями-задачами** - отсортированы по максимальному времени разблокировки (среди всех проектов) от меньшего к большему + +## Обработка краевых случаев + +- **Если медиана проекта = 0 или отсутствует**: `calculateProjectUnlockWeeks` возвращает 99999, что обрабатывается в `calculateLockedSortValue` (не учитывается в maxWeeks, если >= 99999) +- **Если нет условий**: возвращать 999999.0 (отсутствие условий = все условия выполнены) +- **Если все условия выполнены**: возвращать 999999.0 +- **Если цена не указана (NULL)**: считать как 0.0 +- **Если нет условий по проектам** (только задачи или нет условий): возвращать 999999.0 + +## Зависимости + +- `projects_median_mv` должна существовать (проверить наличие миграции или создать при необходимости) +- Функция `getProjectMedian` уже реализована (упрощенная версия без fallback) +- Функция `calculateProjectUnlockWeeks` уже реализована и используется в `calculateLockedSortValue` + +## Финальный шаг: Перезапуск приложения + +**После выполнения всех изменений:** + +Выполнить команду для перезапуска фронтенда и бэкенда: +```bash +./run.sh +``` + +Это пересоберет и перезапустит: +- Backend сервер (с пересборкой) +- Frontend приложение (с пересборкой) +- База данных diff --git a/.cursor/plans/создать_общие_функции_расчета_и_форматирования_срока_разблокировки_8a3f4b2c.plan.md b/.cursor/plans/создать_общие_функции_расчета_и_форматирования_срока_разблокировки_8a3f4b2c.plan.md new file mode 100644 index 0000000..fc97fae --- /dev/null +++ b/.cursor/plans/создать_общие_функции_расчета_и_форматирования_срока_разблокировки_8a3f4b2c.plan.md @@ -0,0 +1,392 @@ +# План: Создать общие функции расчета и форматирования срока разблокировки + +## Цель + +Создать универсальные функции для расчета и форматирования срока разблокировки проекта, которые будут использоваться везде где необходимо считать остаточный срок. + +## Изменения + +### 1. Создать функцию расчета срока разблокировки (бэкенд) + +**Файл:** `play-life-backend/main.go` + +Создать функцию `calculateProjectUnlockWeeks`: + +```go +// calculateProjectUnlockWeeks рассчитывает срок разблокировки проекта в неделях +// projectID - ID проекта +// requiredPoints - необходимое количество баллов +// startDate - дата начала подсчета (может быть nil - за всё время) +// userID - ID пользователя (владельца условия) +// Возвращает количество недель (float64): +// - > 0: условие не выполнено, возвращает количество недель +// - 0: условие уже выполнено (remaining <= 0) +// - 99999: медиана отсутствует или равна 0 (нельзя рассчитать) +func (a *App) calculateProjectUnlockWeeks(projectID int, requiredPoints float64, startDate sql.NullTime, userID int) float64 { + // 1. Получаем текущие баллы от startDate + currentPoints, err := a.calculateProjectPointsFromDate(projectID, startDate, userID) + if err != nil { + log.Printf("Error calculating project points for project %d, user %d: %v", projectID, userID, err) + return 99999 // Ошибка расчета - возвращаем 99999 + } + + // 2. Вычисляем остаток + remaining := requiredPoints - currentPoints + if remaining <= 0 { + // Условие уже выполнено + return 0 + } + + // 3. Получаем медиану проекта + median, err := a.getProjectMedian(projectID) + if err != nil || median <= 0 { + // Если медиана отсутствует или равна 0, возвращаем 99999 (нельзя рассчитать) + // Это нормальная ситуация, не логируем + return 99999 + } + + // 4. Рассчитываем недели + weeks := remaining / median + return weeks +} +``` + +**Примечание:** Функция возвращает: + +- `0`: условие уже выполнено (remaining <= 0) +- `> 0 && < 99999`: количество недель до выполнения условия +- `99999`: медиана отсутствует или равна 0 (нельзя рассчитать) или ошибка расчета + +```` + +### 2. Создать функцию форматирования срока (бэкенд) + +**Файл:** `play-life-backend/main.go` + +Создать функцию `formatWeeksText`: + +```go +// formatWeeksText форматирует количество недель в текстовый формат +// weeks - количество недель (float64) +// Возвращает строку: "2 недели", "<1 недели", "5 недель", "∞ недель" и т.д. +func formatWeeksText(weeks float64) string { + // Если weeks == 0, условие уже выполнено - не показываем срок + if weeks == 0 { + return "" + } + + // Если weeks >= 99999, это означает что медиана отсутствует или нельзя рассчитать + if weeks >= 99999 { + return "∞ недель" + } + + if weeks < 0 { + return "" + } + + if weeks < 1 { + return "<1 недели" + } + + weeksRounded := math.Round(weeks) + weeksInt := int(weeksRounded) + + // Правильное склонение для русского языка + var weekWord string + lastDigit := weeksInt % 10 + lastTwoDigits := weeksInt % 100 + + if lastTwoDigits >= 11 && lastTwoDigits <= 14 { + weekWord = "недель" + } else if lastDigit == 1 { + weekWord = "неделя" + } else if lastDigit >= 2 && lastDigit <= 4 { + weekWord = "недели" + } else { + weekWord = "недель" + } + + return fmt.Sprintf("%d %s", weeksInt, weekWord) +} +``` + +**Примечание:** + +- Форматирование на бэкенде, так как сортировка происходит на бэкенде. Фронтенд получает уже отформатированную строку. +- При `weeks == 0` (условие выполнено) возвращается пустая строка (не показываем срок) +- При `weeks >= 99999` (медиана отсутствует, нельзя рассчитать или ошибка расчета) возвращается "∞ недель" + +### 3. Использовать функции в calculateLockedSortValue + +**Файл:** `play-life-backend/main.go` (строки 12314-12337) + +Обновить функцию для использования `calculateProjectUnlockWeeks`: + +```go +func (a *App) calculateLockedSortValue(item WishlistItem, userID int) float64 { + // Если нет условий, возвращаем большое значение (отсутствие условий = все выполнены) + if len(item.UnlockConditions) == 0 { + return 999999.0 + } + + maxWeeks := 0.0 + hasProjectConditions := false + + for _, condition := range item.UnlockConditions { + if condition.Type == "project_points" { + hasProjectConditions = true + if condition.RequiredPoints != nil { + var startDate sql.NullTime + if condition.StartDate != nil { + date, err := time.Parse("2006-01-02", *condition.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + // ВАЖНО: Используем владельца условия из condition.UserID + // Если condition.UserID есть - это владелец условия + // Если нет - получаем владельца желания из БД (для старых условий) + // НЕ используем текущего пользователя (userID), так как условие может принадлежать другому пользователю + conditionOwnerID := 0 + if condition.UserID != nil { + conditionOwnerID = *condition.UserID + } else { + // Если нет владельца условия, получаем владельца желания из БД + var itemOwnerID int + err := a.DB.QueryRow(`SELECT user_id FROM wishlist_items WHERE id = $1`, item.ID).Scan(&itemOwnerID) + if err != nil { + log.Printf("Error getting wishlist item owner for item %d: %v", item.ID, err) + continue // Пропускаем условие, если не можем получить владельца + } + conditionOwnerID = itemOwnerID + } + + // Получаем projectID из условия + if condition.ProjectID != nil { + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, // Владелец условия, а не текущий пользователь + ) + // weeks > 0 && < 99999 означает, что условие еще не выполнено и расчет успешен + // weeks == 0 означает условие выполнено + // weeks == 99999 означает медиана отсутствует (нельзя рассчитать) или ошибка расчета + if weeks > 0 && weeks < 99999 { + if weeks > maxWeeks { + maxWeeks = weeks + } + } + } + } + } + } + + // Если были условия по проектам, но все выполнены (maxWeeks = 0) + if hasProjectConditions && maxWeeks == 0.0 { + return 999999.0 + } + + // Если не было условий по проектам (только задачи или нет условий) + if !hasProjectConditions { + return 999999.0 + } + + return maxWeeks +} +``` + +### 4. Использовать функции в API endpoint для расчета недель + +**Файл:** `play-life-backend/main.go` + +Обновить endpoint `/api/wishlist/calculate-weeks` (из плана "добавить расчет недель в форму"): + +**Важно:** Использовать владельца условия, а не текущего пользователя! + +```go +func (a *App) calculateWeeksHandler(w http.ResponseWriter, r *http.Request) { + // ... валидация и получение параметров ... + + // Определяем владельца условия: + // 1. Если передан condition_user_id в запросе - используем его (для существующего условия) + // 2. Иначе используем текущего пользователя (для нового условия) + conditionOwnerID := userID // userID из контекста (текущий пользователь) + if req.ConditionUserID != nil && *req.ConditionUserID > 0 { + conditionOwnerID = *req.ConditionUserID + } + + var startDate sql.NullTime + if req.StartDate != "" { + date, err := time.Parse("2006-01-02", req.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + // Используем владельца условия, а не текущего пользователя + weeks := a.calculateProjectUnlockWeeks(req.ProjectID, req.RequiredPoints, startDate, conditionOwnerID) + + response := map[string]interface{}{ + "weeks_text": formatWeeksText(weeks), // Отформатированная строка для отображения + } + + // weeks используется только для сортировки на бэкенде, на клиент не отправляется + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} +``` + +**Структура запроса:** + +```go +type CalculateWeeksRequest struct { + ProjectID int `json:"project_id"` + RequiredPoints float64 `json:"required_points"` + StartDate string `json:"start_date,omitempty"` + ConditionUserID *int `json:"condition_user_id,omitempty"` // Владелец условия (если условие существует) +} +``` + +### 5. Добавить weeks_text в UnlockConditionDisplay + +**Файл:** `play-life-backend/main.go` + +Добавить поле `WeeksText *string` в структуру `UnlockConditionDisplay`: + +```go +type UnlockConditionDisplay struct { + // ... существующие поля ... + WeeksText *string `json:"weeks_text,omitempty"` // Отформатированный текст срока разблокировки +} +``` + +При загрузке условий типа `project_points` рассчитывать и форматировать срок: + +```go +if condition.Type == "project_points" && condition.RequiredPoints != nil && condition.ProjectID != nil { + var startDate sql.NullTime + if condition.StartDate != nil { + date, err := time.Parse("2006-01-02", *condition.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + // ВАЖНО: Используем владельца условия из condition.UserID, а не текущего пользователя + // Если condition.UserID есть - это владелец условия + // Если нет - используем владельца желания (itemOwnerID), но НЕ текущего пользователя (userID) + conditionOwnerID := itemOwnerID // Владелец желания как fallback + if condition.UserID != nil { + conditionOwnerID = *condition.UserID // Владелец условия (приоритет) + } + + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, // Владелец условия, а не текущий пользователь + ) + + // Форматируем всегда (при weeks == 0 вернет пустую строку, при weeks >= 99999 вернет "∞ недель") + weeksText := formatWeeksText(weeks) + condition.WeeksText = &weeksText +} +``` + +**Важно:** + +- `condition.UserID` - это владелец условия (из `wishlist_conditions.user_id`) +- `itemOwnerID` - это владелец желания (fallback для старых условий) +- `userID` (текущий пользователь) НЕ используется, так как условие может принадлежать другому пользователю + +### 6. Использовать weeks_text на фронтенде + +**Файл:** `play-life-web/src/components/WishlistDetail.jsx` + +Использовать готовый `weeks_text` из условия (приходит уже отформатированным из API): + +```javascript +// В renderUnlockConditions: +{progress.remaining > 0 && condition.weeks_text && ( + + Осталось: {Math.round(progress.remaining)} ({condition.weeks_text}) + +)} +``` + +**Файл:** `play-life-web/src/components/WishlistForm.jsx` + +Использовать `weeks_text` из ответа API для отображения недель в форме редактирования условия. Форматирование уже выполнено на бэкенде. + +### 7. Обновить загрузку медианы в условиях (опционально) + +**Файл:** `play-life-backend/main.go` + +При загрузке условий типа `project_points` медиана не нужна отдельно, так как `calculateProjectUnlockWeeks` сама получит её и вернет уже отформатированный `weeks_text`. + +## Места использования функций + +1. **calculateProjectUnlockWeeks** (бэкенд): + + - `calculateLockedSortValue` - для сортировки заблокированных желаний (использует числовое значение) + - `calculateWeeksHandler` - API endpoint для расчета недель (использует для расчета, но на клиент отправляется только отформатированная строка) + - При загрузке условий для расчета `weeks_text` (используется внутри, на клиент не отправляется) + - Любые другие места, где нужно рассчитать срок разблокировки + +2. **formatWeeksText** (бэкенд): + + - При загрузке условий в `UnlockConditionDisplay.WeeksText` (отправляется на клиент для отображения) + - В API endpoint `/api/wishlist/calculate-weeks` (отправляется на клиент для отображения в форме) + - Форматирование на бэкенде, так как сортировка происходит на бэкенде по числовому значению `weeks` + +## Выявленные и исправленные проблемы + +1. **Проблема с userID в calculateLockedSortValue**: + + - **Проблема**: Использовался текущий пользователь (`userID`), но условие может принадлежать другому пользователю + - **Исправление**: Используется `conditionOwnerID` из `condition.UserID` (владелец условия). Если `condition.UserID` отсутствует, условие пропускается (некорректное состояние) + +2. **Обработка отсутствия медианы**: + + - **Решение**: При отсутствии медианы возвращается `99999` (нельзя рассчитать). В `formatWeeksText` это значение преобразуется в "∞ недель". Такие условия не учитываются при сортировке по времени разблокировки (проверка `weeks > 0 && weeks < 99999`) + +3. **Форматирование и передача данных**: + + - **Решение**: Форматирование на бэкенде, так как сортировка происходит на бэкенде по числовому значению `weeks` + - Числовое значение `weeks` используется только на бэкенде для сортировки, на клиент не отправляется + - На клиент отправляется только отформатированная строка `weeks_text` для отображения + - Фронтенд просто отображает готовую строку без дополнительного форматирования + - Это исключает дублирование логики и обеспечивает единообразие форматирования + +4. **Использование правильного userID (владельца условия)**: + + - **Проблема**: В функцию `calculateProjectUnlockWeeks` может передаваться текущий пользователь вместо владельца условия + - **Решение**: + - В `calculateLockedSortValue`: используется `condition.UserID` (владелец условия) + - В `calculateWeeksHandler`: используется `condition_user_id` из запроса (если передан) или текущий пользователь (для нового условия) + - При загрузке условий: используется `condition.UserID` или `itemOwnerID` (владелец желания), но НЕ текущий пользователь + - **Важно**: Условие может принадлежать другому пользователю (на общих досках), поэтому нужно использовать именно владельца условия + +## Зависимости + +- Функция `getProjectMedian` должна быть создана (из плана сортировки) +- Функция `calculateProjectPointsFromDate` уже существует + +## Финальный шаг: Перезапуск приложения + +**После выполнения всех изменений:** + +Выполнить команду для перезапуска фронтенда и бэкенда: + +```bash +./run.sh +``` + +Это пересоберет и перезапустит: + +- Backend сервер (с пересборкой) +- Frontend приложение (с пересборкой) +- База данных \ No newline at end of file diff --git a/.cursor/rules/migrations.mdc b/.cursor/rules/migrations.mdc new file mode 100644 index 0000000..8e8aaac --- /dev/null +++ b/.cursor/rules/migrations.mdc @@ -0,0 +1,8 @@ +--- +description: "Запрет доработок старых миграций" +alwaysApply: true +--- + +**ВАЖНО:** Если ты меняешь структуру базы данных - напиши НОВУЮ миграцию. +НИ В КОЕМ СЛУЧАЕ не меняй старые миграции, можно добавлять только новые. +Старой миграцией считается та что была уже ранее закомичена diff --git a/.cursor/rules/restart_on_changes.mdc b/.cursor/rules/restart_on_changes.mdc new file mode 100644 index 0000000..0b8cd8f --- /dev/null +++ b/.cursor/rules/restart_on_changes.mdc @@ -0,0 +1,16 @@ +--- +description: "Перезапуск приложения после изменений в бэкенде или фронтенде" +alwaysApply: true +--- + +## Правило перезапуска приложения + +**ВАЖНО:** После применения всех изменений в бэкенде (`play-life-backend/`) или фронтенде (`play-life-web/`), а также после изменений в `docker-compose.yml`, **ОБЯЗАТЕЛЬНО** выполни команду `./run.sh` для перезапуска всех сервисов приложения. + +Это правило применяется при работе с: +- Go кодом в `play-life-backend/` +- Миграциями базы данных в `play-life-backend/migrations/` +- React компонентами и стилями в `play-life-web/src/` +- Docker конфигурациями (`docker-compose.yml`, `Dockerfile`) + +**Команда для перезапуска:** `./run.sh` или `bash run.sh` в корне проекта. diff --git a/.cursor/rules/version_bump_and_push.mdc b/.cursor/rules/version_bump_and_push.mdc new file mode 100644 index 0000000..a10e6f6 --- /dev/null +++ b/.cursor/rules/version_bump_and_push.mdc @@ -0,0 +1,71 @@ +--- +description: "Правило для поднятия версии и пуша в git" +alwaysApply: true +--- + +## Правило поднятия версии и пуша + +Когда пользователь просит **поднять версию и запушить**, выполни следующие шаги: + +### 1. Определи тип версии + +Определи по сообщению пользователя, какую часть версии нужно поднять: +- **major** (мажор) - первая цифра (например: 1.1.1 → 2.0.0), минор и патч должны обнулиться +- **minor** (минор) - вторая цифра (например: 1.0.1 → 1.1.0), патч должна обнулиться +- **patch** (патч) - третья цифра (например: 1.0.0 → 1.0.1) +Любая часть версии может быть больше 9, то есть может быть версия 10, 11, 12 и тд. + +**Если тип версии непонятен из контекста — обязательно спроси у пользователя!** + +### 2. Обнови версию в файлах + +Обнови версию в двух файлах: +- `VERSION` (в корне проекта) +- `play-life-web/package.json` (поле `"version"`) + +### 3. Проанализируй git diff + +Выполни `git diff --staged` и `git diff` для анализа изменений. На основе изменений составь **короткий commit message** (максимум 50 символов) на русском языке, описывающий суть изменений. В начале commit message должна быть указана версия на которую осуществился переход в формате "1.2.3: Коммит мессадж" + +### 4. Закоммить изменения + +Выполни: +```bash +git add -A +git commit -m "" +``` + +### 5. Запушь в репозиторий + +Выполни: +```bash +git push +``` + +## Правило пуша без поднятия версии + +### 1. Проанализируй git diff + +Выполни `git diff --staged` и `git diff` для анализа изменений. На основе изменений составь **короткий commit message** (максимум 50 символов) на русском языке, описывающий суть изменений + +### 2. Закоммить изменения + +Выполни: +```bash +git add -A +git commit -m "" +``` + +### 3. Запушь в репозиторий + +Выполни: +```bash +git push +``` +--- + +**Пример использования:** +- "Подними патч и запушь" → поднять patch версию +- "Bump minor and push" → поднять minor версию +- "Подними версию и запушь" → спросить какой тип версии поднять +- "Запуш именения" → запушить без изменения версии diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d41e1bf --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +# Игнорируем node_modules при копировании +play-life-web/node_modules +play-life-web/dist +play-life-web/.git +play-life-backend/.git +*.md +.git +.gitignore + diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..48672d3 --- /dev/null +++ b/.env.test @@ -0,0 +1,85 @@ +# ============================================ +# Единый файл конфигурации для всех проектов +# Backend и Play-Life-Web +# ============================================ + +# ============================================ +# Database Configuration +# ============================================ +DB_HOST=localhost +DB_PORT=5432 +DB_USER=playeng +DB_PASSWORD=playeng +DB_NAME=playeng_migration_test_1769347550 + +# ============================================ +# Backend Server Configuration +# ============================================ +# Порт для backend сервера (по умолчанию: 8080) +# В production всегда используется порт 8080 внутри контейнера +PORT=8080 + +# ============================================ +# Play Life Web Configuration +# ============================================ +# Порт для frontend приложения play-life-web +WEB_PORT=3001 + +# ============================================ +# Telegram Bot Configuration +# ============================================ +# Токен единого бота для всех пользователей +# Получить у @BotFather: https://t.me/botfather +TELEGRAM_BOT_TOKEN=your-bot-token-here + +# Base URL для автоматической настройки webhook +# Примеры: +# - Для production с HTTPS: https://your-domain.com +# - Для локальной разработки с ngrok: https://abc123.ngrok.io +# - Для прямого доступа на нестандартном порту: http://your-server:8080 +# Webhook будет настроен автоматически при старте сервера на: /webhook/telegram +# Если не указан, webhook нужно настраивать вручную +WEBHOOK_BASE_URL=https://your-domain.com + +# ============================================ +# Todoist Integration Configuration +# ============================================ +# Единое Todoist приложение для всех пользователей Play Life +# Настроить в: https://developer.todoist.com/appconsole.html +# +# В настройках Todoist приложения указать: +# - OAuth Redirect URL: /api/integrations/todoist/oauth/callback +# - Webhooks callback URL: /webhook/todoist +# - Watched events: item:completed + +# Client ID единого Todoist приложения +TODOIST_CLIENT_ID= + +# Client Secret единого Todoist приложения +TODOIST_CLIENT_SECRET= + +# Секрет для проверки подлинности webhook от Todoist (опционально) +# Получить в Developer Console: "Client secret for webhooks" +TODOIST_WEBHOOK_SECRET= + +# ============================================ +# Authentication Configuration +# ============================================ +# Секретный ключ для подписи JWT токенов +# ВАЖНО: Обязательно задайте свой уникальный секретный ключ для production! +# Если не задан, будет использован случайно сгенерированный (не рекомендуется для production) +# Можно сгенерировать с помощью: openssl rand -base64 32 +JWT_SECRET=your-super-secret-jwt-key-change-in-production + +# ============================================ +# Scheduler Configuration +# ============================================ +# Часовой пояс для планировщика задач (например: Europe/Moscow, America/New_York, UTC) +# Используется для: +# - Автоматической фиксации целей на неделю каждый понедельник в 6:00 +# - Отправки ежедневного отчёта в 23:59 +# ВАЖНО: Укажите правильный часовой пояс, иначе задачи будут срабатывать в UTC! +# Список доступных часовых поясов: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TIMEZONE=Europe/Moscow + +DB_NAME=playeng_migration_test_1769347550 diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml new file mode 100644 index 0000000..dae2d1b --- /dev/null +++ b/.gitea/workflows/build-and-push.yml @@ -0,0 +1,215 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest # Убедитесь, что у вашего раннера есть этот тег + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Get versions and check change + id: version_check + run: | + # Извлекаем текущую версию + CUR=$(cat VERSION | tr -d '[:space:]') + echo "current=$CUR" >> $GITHUB_OUTPUT + + # Извлекаем сообщение последнего коммита + COMMIT_MSG=$(git log -1 --pretty=%B | head -1) + echo "commit_message=$COMMIT_MSG" >> $GITHUB_OUTPUT + + # Безопасно извлекаем старую версию + PREV=$(git show HEAD~1:VERSION 2>/dev/null | tr -d '[:space:]' || echo "none") + + if [ "$CUR" != "$PREV" ]; then + echo "changed=true" >> $GITHUB_OUTPUT + else + echo "changed=false" >> $GITHUB_OUTPUT + fi + + - name: Patch DNS for Local Network + run: | + # Записываем IP Synology прямо в контейнер сборки + echo "192.168.50.55 dungeonsiege.synology.me" | sudo tee -a /etc/hosts + + - name: Build Docker Image + id: build + run: | + REGISTRY="dungeonsiege.synology.me/poignatov/play-life" + VER="${{ steps.version_check.outputs.current }}" + + echo "Building Docker image..." + echo "Registry: $REGISTRY" + echo "Tag: latest" + + # Собираем образ + docker build -t $REGISTRY:latest . + + echo "✅ Successfully built image: $REGISTRY:latest" + + - name: Log in to Gitea Registry + if: steps.version_check.outputs.changed == 'true' + run: | + echo "${{ secrets.GIT_TOKEN }}" | docker login dungeonsiege.synology.me -u ${{ secrets.GIT_USERNAME }} --password-stdin + + - name: Push Docker Image + id: push + if: steps.version_check.outputs.changed == 'true' + run: | + REGISTRY="dungeonsiege.synology.me/poignatov/play-life" + VER="${{ steps.version_check.outputs.current }}" + + # Тегируем образ версией + docker tag $REGISTRY:latest $REGISTRY:$VER + + # Пушим оба тега + echo "Pushing image to registry..." + docker push $REGISTRY:latest + docker push $REGISTRY:$VER + + echo "✅ Successfully pushed to registry:" + echo " - $REGISTRY:latest" + echo " - $REGISTRY:$VER" + + - name: Send Telegram notification (build success) + if: success() && steps.version_check.outputs.changed == 'false' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + message: | + *play-life* + `${{ steps.version_check.outputs.commit_message }}` + + Build: ✅ + Registration: ⏭️ + Deploy: ⏭️ + + - name: Deploy to Production Server + id: deploy + if: steps.version_check.outputs.changed == 'true' + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.DEPLOY_HOST }} + username: ${{ secrets.DEPLOY_USER }} + password: ${{ secrets.DEPLOY_PASSWORD }} + script: | + set -e + + # Расширяем PATH для Synology (при SSH сессии PATH минимальный) + export PATH="/usr/local/bin:/usr/syno/bin:$PATH" + + REGISTRY="dungeonsiege.synology.me/poignatov/play-life" + DEPLOY_PATH="/volume1/docker/play-life" + + echo "🚀 Начинаю деплой на production сервер..." + echo "PATH: $PATH" + + # Проверяем наличие docker + if ! command -v docker >/dev/null 2>&1; then + echo "❌ Docker не найден в PATH!" + echo "Пробуем найти docker..." + which docker || find /usr -name "docker" -type f 2>/dev/null | head -5 + exit 1 + fi + + DOCKER_CMD="docker" + + # Определяем docker-compose (может быть docker compose или docker-compose) + if command -v docker-compose >/dev/null 2>&1; then + DOCKER_COMPOSE_CMD="docker-compose" + elif docker compose version >/dev/null 2>&1; then + DOCKER_COMPOSE_CMD="docker compose" + else + echo "❌ Docker Compose не найден!" + exit 1 + fi + + echo "Используем: $DOCKER_CMD и $DOCKER_COMPOSE_CMD" + + # Переходим в директорию проекта + cd $DEPLOY_PATH + + # Логинимся в registry + echo "${{ secrets.GIT_TOKEN }}" | $DOCKER_CMD login dungeonsiege.synology.me -u ${{ secrets.GIT_USERNAME }} --password-stdin + + # Обновляем образ + echo "📥 Обновляю образ из registry..." + $DOCKER_CMD pull $REGISTRY:latest + + # Перезапускаем контейнеры + echo "🔄 Перезапускаю контейнеры..." + $DOCKER_COMPOSE_CMD -f docker-compose.prod.yml up -d --force-recreate + + # Проверяем статус + echo "✅ Деплой завершен успешно" + $DOCKER_COMPOSE_CMD -f docker-compose.prod.yml ps + + - name: Send Telegram notification (publish success) + if: steps.build.outcome == 'success' && steps.version_check.outputs.changed == 'true' && steps.push.outcome == 'success' && steps.deploy.outcome == 'success' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + message: | + *play-life* + `${{ steps.version_check.outputs.commit_message }}` + + Build: ✅ + Registration: ✅ + Deploy: ✅ + + - name: Send Telegram notification (push failure) + if: steps.build.outcome == 'success' && steps.version_check.outputs.changed == 'true' && steps.push.outcome == 'failure' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + message: | + *play-life* + `${{ steps.version_check.outputs.commit_message }}` + + Build: ✅ + Registration: ❌ + Deploy: ⏭️ + + - name: Send Telegram notification (deploy failure) + if: steps.build.outcome == 'success' && steps.push.outcome == 'success' && steps.version_check.outputs.changed == 'true' && steps.deploy.outcome == 'failure' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + message: | + *play-life* + `${{ steps.version_check.outputs.commit_message }}` + + Build: ✅ + Registration: ✅ + Deploy: ❌ + + - name: Send Telegram notification (build failure) + if: steps.build.outcome == 'failure' + uses: appleboy/telegram-action@master + with: + to: ${{ secrets.TELEGRAM_TO }} + token: ${{ secrets.TELEGRAM_TOKEN }} + format: markdown + message: | + *play-life* + `${{ steps.version_check.outputs.commit_message }}` + + Build: ❌ + Registration: ⏭️ + Deploy: ⏭️ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..448efdd --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +.env +.env.local +.env.prod +*.log +main +dist/ +node_modules/ +*.tar + +# Database dumps +database-dumps/*.sql +database-dumps/*.sql.gz +!database-dumps/.gitkeep + +# Uploaded files +uploads/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e913111 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,4 @@ +{ + "version": "0.2.0", + "configurations": [] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..82e2630 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,82 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "init", + "type": "shell", + "command": "./init.sh", + "group": { + "kind": "build", + "isDefault": false + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + }, + "problemMatcher": [], + "detail": "Инициализация Play Life: остановка контейнеров, поднятие сервисов, создание дампа с продакшена и восстановление в локальную базу" + }, + { + "label": "run", + "type": "shell", + "command": "./run.sh", + "group": { + "kind": "build", + "isDefault": false + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + }, + "problemMatcher": [], + "detail": "Перезапуск Play Life: перезапуск всех контейнеров" + }, + { + "label": "backupFromProd", + "type": "shell", + "command": "./dump-db.sh", + "group": { + "kind": "build", + "isDefault": false + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + }, + "problemMatcher": [], + "detail": "Создание дампа базы данных с продакшена" + }, + { + "label": "restoreToLocal", + "type": "shell", + "command": "./restore-db.sh", + "group": { + "kind": "build", + "isDefault": false + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + }, + "problemMatcher": [], + "detail": "Восстановление базы данных из самого свежего дампа в локальную базу (автоматически выбирает последний дамп)" + } + ] +} + diff --git a/BUILD_INSTRUCTIONS.md b/BUILD_INSTRUCTIONS.md new file mode 100644 index 0000000..940f3c4 --- /dev/null +++ b/BUILD_INSTRUCTIONS.md @@ -0,0 +1,80 @@ +# Инструкция по сборке единого Docker образа + +Этот проект содержит единый Dockerfile для сборки frontend и backend в один образ. + +## Структура + +- `Dockerfile` - единый Dockerfile для сборки frontend и backend +- `nginx-unified.conf` - конфигурация nginx для единого образа +- `supervisord.conf` - конфигурация supervisor для запуска nginx и backend +- `build-and-save.sh` - скрипт для сборки и сохранения в tar (Linux/Mac) +- `build-and-save.ps1` - скрипт для сборки и сохранения в tar (Windows PowerShell) + +## Сборка образа + +### Linux/Mac: +```bash +./build-and-save.sh +``` + +### Windows PowerShell: +```powershell +.\build-and-save.ps1 +``` + +### Вручную: +```bash +# Сборка образа +docker build -t play-life-unified:latest . + +# Сохранение в tar +docker save play-life-unified:latest -o play-life-unified.tar +``` + +## Загрузка образа на другой машине + +```bash +docker load -i play-life-unified.tar +``` + +## Запуск контейнера + +```bash +docker run -d \ + -p 80:80 \ + --env-file .env \ + --name play-life \ + play-life-unified:latest +``` + +## Переменные окружения + +Создайте файл `.env` на основе `env.example` с необходимыми переменными: + +- `DB_HOST` - хост базы данных (по умолчанию: localhost) +- `DB_PORT` - порт базы данных (по умолчанию: 5432) +- `DB_USER` - пользователь БД +- `DB_PASSWORD` - пароль БД +- `DB_NAME` - имя БД +- `WEBHOOK_BASE_URL` - базовый URL для webhook (опционально) + - Bot Token и Chat ID настраиваются через UI приложения в разделе "Интеграции" -> "Telegram" +- `TODOIST_WEBHOOK_SECRET` - секрет для Todoist webhook (опционально) + +**Важно:** Backend внутри контейнера всегда работает на порту 8080. Nginx проксирует запросы с порта 80 на backend. + +## Проверка работы + +После запуска контейнера: + +- Frontend доступен по адресу: `http://localhost` +- API доступен через nginx: `http://localhost/api/...` +- Admin панель: `http://localhost/admin.html` + +## Логи + +Логи доступны через supervisor: +```bash +docker exec play-life cat /var/log/supervisor/backend.out.log +docker exec play-life cat /var/log/supervisor/nginx.out.log +``` + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7eee930 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,71 @@ +# Multi-stage build для единого образа frontend + backend + +# Stage 1: Build Frontend +FROM node:20-alpine AS frontend-builder +WORKDIR /app/frontend +COPY play-life-web/package*.json ./ +RUN npm ci +# Копируем исходники (node_modules исключены через .dockerignore) +COPY play-life-web/ . +RUN npm run build + +# Stage 2: Build Backend +FROM golang:1.24-alpine AS backend-builder +WORKDIR /app/backend +# Устанавливаем GOPROXY для более надежной загрузки модулей +ENV GOPROXY=https://proxy.golang.org,direct +ENV GOSUMDB=sum.golang.org +COPY play-life-backend/go.mod play-life-backend/go.sum ./ +RUN go mod download +COPY play-life-backend/ . +RUN go mod tidy +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . + +# Stage 3: Final image +FROM alpine:latest + +# Устанавливаем необходимые пакеты +# tzdata — данные о часовых поясах для корректной работы планировщика +RUN apk --no-cache add \ + ca-certificates \ + nginx \ + supervisor \ + curl \ + tzdata + +# Создаем директории +WORKDIR /app + +# Создаем директорию для загруженных файлов +RUN mkdir -p /app/uploads/wishlist && \ + chmod 755 /app/uploads + +# Копируем собранный frontend +COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html + +# Копируем собранный backend +COPY --from=backend-builder /app/backend/main /app/backend/main +COPY play-life-backend/admin.html /app/backend/admin.html +# Копируем миграции для применения при запуске +COPY play-life-backend/migrations /migrations +# Копируем файл версии +COPY VERSION /app/VERSION + +# Копируем конфигурацию nginx +COPY nginx.conf /etc/nginx/nginx.conf +COPY nginx-unified.conf /etc/nginx/conf.d/default.conf + +# Копируем конфигурацию supervisor для запуска backend +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Создаем директории для логов +RUN mkdir -p /var/log/supervisor && \ + mkdir -p /var/log/nginx && \ + mkdir -p /var/run + +# Открываем порт 80 +EXPOSE 80 + +# Запускаем supervisor, который запустит nginx и backend +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] + diff --git a/ENV_SETUP.md b/ENV_SETUP.md new file mode 100644 index 0000000..4628061 --- /dev/null +++ b/ENV_SETUP.md @@ -0,0 +1,298 @@ +# Настройка единого .env файла + +Все приложения проекта используют единый файл `.env` в корне проекта. + +## Быстрый старт + +1. Скопируйте файл `.env.example` в `.env`: + ```bash + cp .env.example .env + ``` + +2. Отредактируйте `.env` и укажите свои значения: + ```bash + nano .env + # или + vim .env + ``` + +3. **ВАЖНО**: Файл `.env` уже добавлен в `.gitignore` и не будет попадать в git. + +## Структура переменных окружения + +### Database Configuration +- `DB_HOST` - хост базы данных (по умолчанию: localhost) +- `DB_PORT` - порт базы данных (по умолчанию: 5432) +- `DB_USER` - пользователь БД (по умолчанию: playeng) +- `DB_PASSWORD` - пароль БД (по умолчанию: playeng) +- `DB_NAME` - имя БД (по умолчанию: playeng) + +### Backend Server Configuration +- `PORT` - порт бэкенд сервера (по умолчанию: 8080) + - В production всегда используется порт 8080 внутри контейнера + - Nginx автоматически проксирует запросы к `http://backend:8080` + +### Frontend Configuration (play-life-web) +- `VITE_PORT` - порт для dev-сервера Vite (по умолчанию: 3000) +- `WEB_PORT` - порт для production контейнера (по умолчанию: 3001) + +**Примечание:** API запросы автоматически проксируются к бэкенду. В development режиме Vite проксирует запросы к `http://localhost:8080`. В production nginx проксирует запросы к бэкенд контейнеру. Не требуется настройка `VITE_API_BASE_URL`. + +### Telegram Bot Configuration +- `WEBHOOK_BASE_URL` - базовый URL для автоматической настройки webhook. Webhook будет настроен автоматически при сохранении bot token через UI на `/webhook/telegram`. +- Bot Token и Chat ID настраиваются через UI приложения в разделе "Интеграции" -> "Telegram" + + **Примеры значений:** + - Production с HTTPS: `https://your-domain.com` (порт не нужен для стандартных 80/443) + - Локальная разработка с ngrok: `https://abc123.ngrok.io` (порт не нужен) + - Прямой доступ на нестандартном порту: `http://your-server:8080` (порт обязателен) + +### Todoist Webhook Configuration (опционально) +- `TODOIST_WEBHOOK_SECRET` - секрет для проверки подлинности webhook от Todoist (если задан, все запросы должны содержать заголовок `X-Todoist-Webhook-Secret` с этим значением) + +## Настройка интеграции с Todoist + +Интеграция с Todoist позволяет автоматически обрабатывать закрытые задачи и добавлять их в базу данных play-life. + +### Как это работает + +1. При закрытии задачи в Todoist отправляется webhook на ваш сервер +2. Сервер извлекает `title` (content) и `description` из закрытой задачи +3. Склеивает их в один текст: `title + "\n" + description` +4. Обрабатывает текст через существующую логику `processMessage`, которая: + - Парсит ноды в формате `**[Project][+/-][Score]**` + - Сохраняет данные в базу данных + - Отправляет уведомление в Telegram (если настроено) + +### Настройка webhook в Todoist + +1. Откройте настройки Todoist: https://todoist.com/app/settings/integrations +2. Перейдите в раздел "Webhooks" или "Integrations" +3. Создайте новый webhook: + - **URL**: `http://your-server:8080/webhook/todoist` + - Для локальной разработки: `http://localhost:8080/webhook/todoist` + - Для production: укажите публичный URL вашего сервера + - **Event**: выберите `item:completed` (закрытие задачи) +4. Сохраните webhook + +### Безопасность (опционально) + +Для защиты webhook от несанкционированного доступа: + +1. Установите секрет в `.env`: + ```bash + TODOIST_WEBHOOK_SECRET=your_secret_key_here + ``` + +2. Настройте Todoist для отправки секрета в заголовке: + - В настройках webhook добавьте заголовок: `X-Todoist-Webhook-Secret: your_secret_key_here` + - Или используйте встроенные механизмы безопасности Todoist, если они доступны + +**Примечание**: Если `TODOIST_WEBHOOK_SECRET` не задан, проверка секрета не выполняется. + +### Формат задач в Todoist + +Для корректной обработки задачи должны содержать ноды в формате: +``` +**[ProjectName][+/-][Score]** +``` + +Примеры: +- `**[Work]+5.5**` - добавить 5.5 баллов к проекту "Work" +- `**[Health]-2.0**` - вычесть 2.0 баллов из проекта "Health" + +Ноды можно размещать как в `title` (content), так и в `description` задачи. Они будут обработаны при закрытии задачи. + +### Тестирование + +Для тестирования интеграции: + +1. Создайте задачу в Todoist с нодами, например: + - Title: `Test task` + - Description: `**[TestProject]+10.0**` + +2. Закройте задачу в Todoist + +3. Проверьте логи сервера - должно появиться сообщение: + ``` + Processing Todoist task: title='Test task', description='**[TestProject]+10.0**' + Successfully processed Todoist task, found 1 nodes + ``` + +4. Проверьте базу данных или веб-интерфейс - данные должны быть добавлены + + +## Использование + +### Локальная разработка + +Все приложения автоматически читают переменные из корневого `.env` файла: + +- **play-life-backend**: читает из `../.env` и `.env` (локальный имеет приоритет) +- **play-life-web**: читает из `../.env` и `.env` (локальный имеет приоритет) + +### Docker Compose + +Для запуска всех приложений в одном образе используйте корневой `docker-compose.yml`: + +```bash +docker-compose up --build +``` + +Все сервисы автоматически загружают переменные из корневого `.env` файла. + +### Отдельные приложения + +Если нужно запустить отдельные приложения, они также будут использовать корневой `.env`: + +```bash +# Backend +cd play-life-backend +docker-compose up + +# Frontend +cd play-life-web +docker-compose up +``` + +## Приоритет переменных окружения + +1. Переменные окружения системы (высший приоритет) +2. Локальный `.env` в директории приложения +3. Корневой `.env` файл +4. Значения по умолчанию в коде + +## Примеры использования + +### Изменение порта базы данных + +```bash +# В .env +DB_PORT=5433 +``` + +### Изменение порта бэкенда + +```bash +# В .env +PORT=9090 +``` + +### Изменение порта фронтенда + +```bash +# В .env +VITE_PORT=4000 # для development +WEB_PORT=4001 # для production Docker контейнера +``` + +После изменения `.env` файла перезапустите соответствующие сервисы. + +## Настройка интеграции с Telegram (webhook для сообщений пользователя) + +Интеграция с Telegram позволяет автоматически обрабатывать сообщения, отправленные пользователем в чат бота, и добавлять их в базу данных play-life. + +### Как это работает + +1. Пользователь отправляет сообщение в чат с ботом в Telegram +2. Telegram отправляет webhook на ваш сервер с информацией о сообщении и entities (форматирование) +3. Сервер извлекает жирный текст из entities (type === 'bold') +4. Парсит жирный текст по формату `project+/-score` (без `**`) +5. Обрабатывает текст и сохраняет данные в базу данных +6. **НЕ отправляет сообщение обратно в Telegram** (в отличие от других интеграций) + +### Отличия от других интеграций + +- **Формат нод**: `project+/-score` (без `**`), например: `Work+5.5` или `Health-2.0` +- **Определение жирного текста**: через entities от Telegram, а не через markdown `**` +- **Без обратной отправки**: сообщение не отправляется обратно в Telegram + +### Настройка webhook в Telegram + +#### Автоматическая настройка (рекомендуется) + +1. Создайте бота через [@BotFather](https://t.me/botfather) в Telegram +2. Получите токен бота +3. Добавьте `WEBHOOK_BASE_URL` в `.env`: + ```bash + WEBHOOK_BASE_URL=https://your-domain.com + ``` +4. Откройте приложение и перейдите в раздел "Интеграции" -> "Telegram" +5. Введите Bot Token в поле и нажмите "Сохранить" +6. Отправьте первое сообщение боту в Telegram - Chat ID будет сохранён автоматически + + **Важно о портах:** + - Если сервер доступен на стандартных портах (HTTP 80 или HTTPS 443), порт можно не указывать + - Если сервер работает на нестандартном порту и доступен напрямую, укажите порт: `http://your-server:8080` + - Если используется reverse proxy (nginx, etc.), указывайте внешний URL без порта: `https://your-domain.com` + +3. Запустите сервер - webhook будет настроен автоматически при старте! + + Для локальной разработки можно использовать ngrok или аналогичный сервис: + ```bash + # Установите ngrok: https://ngrok.com/ + ngrok http 8080 + # Используйте полученный URL в WEBHOOK_BASE_URL (без порта) + # Например: WEBHOOK_BASE_URL=https://abc123.ngrok.io + ``` + +4. Проверьте логи сервера - должно появиться сообщение: + ``` + Telegram webhook configured successfully: https://abc123.ngrok.io/webhook/telegram + ``` + +#### Ручная настройка (если не указан WEBHOOK_BASE_URL) + +Если вы не указали `WEBHOOK_BASE_URL`, webhook нужно настроить вручную: + +```bash +curl -X POST "https://api.telegram.org/bot/setWebhook" \ + -H "Content-Type: application/json" \ + -d '{ + "url": "http://your-server:8080/webhook/telegram" + }' +``` + +Проверьте, что webhook установлен: +```bash +curl "https://api.telegram.org/bot/getWebhookInfo" +``` + +### Формат сообщений в Telegram + +Для корректной обработки сообщения должны содержать жирный текст в формате: +``` +project+/-score +``` + +Примеры: +- `Work+5.5` (жирным) - добавить 5.5 баллов к проекту "Work" +- `Health-2.0` (жирным) - вычесть 2.0 баллов из проекта "Health" + +**Важно**: Текст должен быть выделен жирным шрифтом в Telegram (через форматирование сообщения, не через `**`). + +### Тестирование + +Для тестирования интеграции: + +1. Откройте чат с вашим ботом в Telegram +2. Отправьте сообщение с жирным текстом в формате `project+/-score`, например: + - Напишите: `Test message` + - Выделите `Work+10.0` жирным шрифтом (через форматирование) + - Отправьте сообщение + +3. Проверьте логи сервера - должно появиться сообщение: + ``` + Processing Telegram message: text='Test message', entities count=1 + Successfully processed Telegram message, found 1 nodes + ``` + +4. Проверьте базу данных или веб-интерфейс - данные должны быть добавлены + +### Примечания + +- Webhook должен быть доступен из интернета (для production используйте публичный URL) +- Для локальной разработки используйте ngrok или аналогичный сервис для туннелирования +- Сообщения обрабатываются только если содержат жирный текст в правильном формате +- Сообщения **не отправляются обратно** в Telegram (в отличие от других интеграций) + diff --git a/IMPACT_ANALYSIS.md b/IMPACT_ANALYSIS.md new file mode 100644 index 0000000..db0158a --- /dev/null +++ b/IMPACT_ANALYSIS.md @@ -0,0 +1,184 @@ +# Импакт-анализ: Редизайн экрана редактирования доски желаний + +## Дата анализа +2025-01-21 + +## Созданные компоненты (дизайн-система) + +### 1. `SubmitButton.jsx` +- **Путь**: `play-life-web/src/components/SubmitButton.jsx` +- **Назначение**: Переиспользуемый компонент кнопки сохранения с градиентным фоном +- **Пропсы**: `loading`, `disabled`, `children`, `onClick`, `type` +- **Стили**: Градиент от #6366f1 до #8b5cf6, hover эффект с тенью +- **Использование**: Заменяет все кнопки сохранения в формах + +### 2. `DeleteButton.jsx` +- **Путь**: `play-life-web/src/components/DeleteButton.jsx` +- **Назначение**: Переиспользуемый компонент кнопки удаления с красным фоном и иконкой корзины +- **Пропсы**: `loading`, `disabled`, `onClick`, `title` +- **Стили**: Красный фон #ef4444, квадратная кнопка 44x44px +- **Использование**: Заменяет все кнопки удаления в формах + +### 3. `Buttons.css` +- **Путь**: `play-life-web/src/components/Buttons.css` +- **Назначение**: Общие стили для кнопок дизайн-системы +- **Содержимое**: + - `.form-actions` - flex-контейнер для группировки кнопок + - `.submit-button` - стили для кнопки сохранения + - `.delete-button` - стили для кнопки удаления + +## Измененные компоненты + +### 1. `BoardForm.jsx` +**Путь**: `play-life-web/src/components/BoardForm.jsx` + +**Изменения**: +- ✅ Заменена эмодзи копирования (📋) на SVG иконку в кнопке копирования ссылки +- ✅ Удалена кнопка "Отмена" из блока `form-actions` +- ✅ Кнопка удаления перемещена в блок `form-actions` справа от кнопки "Сохранить" +- ✅ Добавлено состояние `isDeleting` для отслеживания процесса удаления +- ✅ Удалена кнопка "Перегенерить ссылку" +- ✅ Удалена функция `handleRegenerateLink` (заменена на `generateInviteLink` для внутреннего использования) +- ✅ Интегрированы компоненты `SubmitButton` и `DeleteButton` +- ✅ Добавлен импорт `Buttons.css` + +**Затронутые места в компоненте**: +- Строки 1-5: Добавлены импорты новых компонентов и стилей +- Строка 14: Добавлено состояние `isDeleting` +- Строки 89-105: Удалена функция `handleRegenerateLink` +- Строки 114-132: Обновлена функция `handleToggleInvite` (использует `generateInviteLink`) +- Строки 134-151: Обновлена функция `handleDelete` (добавлено состояние `isDeleting`) +- Строки 216-222: Заменена эмодзи на SVG иконку копирования +- Строки 224-229: Удалена кнопка "Перегенерить ссылку" +- Строки 247-258: Обновлен блок `form-actions` (удалена кнопка "Отмена", добавлены новые компоненты) +- Строки 261-265: Удален отдельный блок с кнопкой удаления + +### 2. `BoardForm.css` +**Путь**: `play-life-web/src/components/BoardForm.css` + +**Изменения**: +- ✅ Удалены стили `.regenerate-btn` (строки 128-143) +- ✅ Удалены стили `.delete-board-btn` (строки 152-169) +- ✅ Стили кнопок теперь импортируются из `Buttons.css` + +**Затронутые места**: +- Удалено 42 строки неиспользуемых стилей + +### 3. `TaskForm.jsx` +**Путь**: `play-life-web/src/components/TaskForm.jsx` + +**Изменения**: +- ✅ Интегрированы компоненты `SubmitButton` и `DeleteButton` +- ✅ Добавлен импорт `Buttons.css` (через компоненты) +- ✅ Заменены нативные кнопки на компоненты дизайн-системы + +**Затронутые места в компоненте**: +- Строки 1-4: Добавлены импорты новых компонентов +- Строки 1170-1195: Заменены кнопки на компоненты `SubmitButton` и `DeleteButton` + +## Затронутые экраны + +### 1. Экран редактирования доски желаний (`board-form`) +**Компонент**: `BoardForm` +**Навигация**: Открывается из экрана списка желаний (`wishlist`) при нажатии на кнопку редактирования доски + +**Изменения в UI**: +- ✅ Кнопка копирования ссылки: эмодзи 📋 заменена на SVG иконку (два перекрывающихся прямоугольника) +- ✅ При успешном копировании показывается SVG иконка галочки вместо текста ✓ +- ✅ Удалена кнопка "Отмена" - теперь закрытие происходит только через крестик в правом верхнем углу +- ✅ Кнопка "Удалить доску" перемещена в блок действий справа от кнопки "Сохранить" +- ✅ Кнопка удаления теперь имеет красный фон и иконку корзины (как в экране редактирования задачи) +- ✅ Удалена кнопка "Перегенерить ссылку" - ссылка теперь генерируется автоматически при включении доступа +- ✅ Кнопка "Сохранить" имеет градиентный фон и hover эффект (как в экране редактирования задачи) + +**Функциональные изменения**: +- Ссылка для приглашения теперь генерируется автоматически при включении переключателя "Разрешить присоединение по ссылке" +- Кнопка удаления показывает состояние загрузки (три точки) во время удаления +- Кнопка сохранения показывает "Сохранение..." во время процесса сохранения + +**Путь навигации**: +- `wishlist` → `board-form` (при нажатии на кнопку редактирования доски) + +### 2. Экран редактирования задачи (`task-form`) +**Компонент**: `TaskForm` +**Навигация**: Открывается из списка задач (`tasks`) или из деталей желания (`wishlist-detail`) + +**Изменения в UI**: +- ✅ Кнопки сохранения и удаления теперь используют компоненты дизайн-системы +- ✅ Визуально идентичны кнопкам на экране редактирования доски + +**Функциональные изменения**: +- Нет функциональных изменений, только рефакторинг кода + +**Путь навигации**: +- `tasks` → `task-form` (при создании/редактировании задачи) +- `wishlist-detail` → `task-form` (при создании задачи из желания) + +## Потенциальные места для рефакторинга + +Следующие компоненты используют похожие кнопки и могут быть обновлены для использования новых компонентов дизайн-системы: + +### 1. `WishlistForm.jsx` +- **Текущее состояние**: Использует нативную кнопку с классом `submit-button` +- **Потенциал**: Можно заменить на `SubmitButton` +- **Расположение**: Строки 836-838, 1246-1248 + +### 2. `AddWords.jsx` +- **Текущее состояние**: Использует нативную кнопку с классом `submit-button` +- **Потенциал**: Можно заменить на `SubmitButton` +- **Расположение**: Строка 187 + +### 3. Другие формы +- Компоненты с кнопками удаления могут использовать `DeleteButton` +- Компоненты с кнопками сохранения могут использовать `SubmitButton` + +## Файлы, созданные/измененные + +### Созданные файлы: +1. `play-life-web/src/components/SubmitButton.jsx` (новый) +2. `play-life-web/src/components/DeleteButton.jsx` (новый) +3. `play-life-web/src/components/Buttons.css` (новый) + +### Измененные файлы: +1. `play-life-web/src/components/BoardForm.jsx` (обновлен) +2. `play-life-web/src/components/BoardForm.css` (обновлен) +3. `play-life-web/src/components/TaskForm.jsx` (обновлен) + +## Визуальные изменения + +### До изменений: +- Эмодзи в кнопке копирования +- Кнопка "Отмена" в блоке действий +- Кнопка удаления отдельно внизу формы +- Кнопка "Перегенерить ссылку" под полем ссылки +- Разные стили кнопок в разных формах + +### После изменений: +- SVG иконки в кнопке копирования +- Только кнопка "Сохранить" и "Удалить" в блоке действий +- Кнопка удаления справа от кнопки сохранения +- Автоматическая генерация ссылки +- Единый стиль кнопок во всех формах (дизайн-система) + +## Технические детали + +### Зависимости +- Новые компоненты не добавляют внешних зависимостей +- Используют только React и существующие стили + +### Обратная совместимость +- ✅ Все изменения обратно совместимы +- ✅ Функциональность не нарушена +- ✅ API компонентов не изменился + +### Производительность +- ✅ Нет влияния на производительность +- ✅ Компоненты легковесные +- ✅ Стили оптимизированы + +## Рекомендации + +1. **Рефакторинг других форм**: Рассмотреть возможность замены кнопок в `WishlistForm` и `AddWords` на компоненты дизайн-системы +2. **Расширение дизайн-системы**: Добавить другие типы кнопок (например, `CancelButton`, `IconButton`) +3. **Документация**: Создать документацию по использованию компонентов дизайн-системы +4. **Тестирование**: Протестировать все затронутые экраны после развертывания diff --git a/TODOIST_REFACTOR_PLAN.md b/TODOIST_REFACTOR_PLAN.md new file mode 100644 index 0000000..931b2f7 --- /dev/null +++ b/TODOIST_REFACTOR_PLAN.md @@ -0,0 +1,727 @@ +# План рефакторинга интеграции с Todoist + +## Цель +Переделать интеграцию с Todoist для использования **единого приложения**, созданного в Todoist Developer Platform. Все пользователи Play Life используют одно Todoist приложение с единым webhook URL. + +## Текущая реализация +- Каждый пользователь имеет уникальный `webhook_token` в таблице `todoist_integrations` +- Webhook URL: `/webhook/todoist/{token}` (токен в URL) +- Пользователь определяется по токену из URL +- Пользователь должен вручную копировать webhook URL + +## Новая реализация (Единое приложение) +- **Единое Todoist приложение** для всех пользователей Play Life +- **Единый Webhook URL:** `/webhook/todoist` (без токена!) +- Webhook настроен в Todoist Developer Console на уровне приложения +- Пользователь определяется по `todoist_user_id` из `event_data` webhook +- OAuth используется для привязки Todoist аккаунта к Play Life аккаунту +- **Пользователю не нужно ничего настраивать** — просто нажать "Подключить Todoist"! + +## Краткое резюме изменений + +### База данных: +- **Удалить** поле `webhook_token` (больше не нужно!) +- Добавить поля: `todoist_user_id`, `todoist_email`, `access_token` + +### Переменные окружения: +- `TODOIST_CLIENT_ID` - Client ID приложения +- `TODOIST_CLIENT_SECRET` - Client Secret приложения +- `WEBHOOK_BASE_URL` - для формирования OAuth Redirect URI + +### Backend: +- **Изменить webhook handler** — идентификация по `todoist_user_id` +- Добавить OAuth endpoints для подключения/отключения +- Убрать логику с токенами в URL + +### Frontend: +- **Убрать отображение webhook URL** (не нужно!) +- Показать кнопку "Подключить Todoist" +- После подключения показать email и статус + +--- + +## 1. Изменения в базе данных + +### Миграция: `013_refactor_todoist_single_app.sql` + +**Изменения в таблице `todoist_integrations`:** + +1. **Удалить:** + - `webhook_token` — больше не нужен! Webhook единый для всего приложения. + +2. **Добавить:** + - `todoist_user_id` (BIGINT) — ID пользователя в Todoist (из OAuth, для идентификации в webhook) + - `todoist_email` (VARCHAR(255)) — Email пользователя в Todoist (из OAuth) + - `access_token` (TEXT) — OAuth access token (бессрочный в Todoist) + +3. **Индексы:** + - **Уникальный** индекс на `todoist_user_id` — ключевой для идентификации в webhook! + - Уникальный индекс на `todoist_email` + - Удалить индекс на `webhook_token` + +**Структура после миграции:** +```sql +CREATE TABLE todoist_integrations ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + todoist_user_id BIGINT, -- ID пользователя в Todoist (КЛЮЧЕВОЕ для webhook!) + todoist_email VARCHAR(255), -- Email пользователя в Todoist + access_token TEXT, -- OAuth access token (бессрочный) + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT todoist_integrations_user_id_unique UNIQUE (user_id) +); + +-- Индексы +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_user_id +ON todoist_integrations(todoist_user_id) +WHERE todoist_user_id IS NOT NULL; + +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_email +ON todoist_integrations(todoist_email) +WHERE todoist_email IS NOT NULL; +``` + +**Ключевое изменение:** `todoist_user_id` теперь используется для идентификации пользователя при получении webhook от Todoist. + +--- + +## 2. Переменные окружения (.env) + +### Добавить в `env.example`: + +```env +# ============================================ +# Todoist OAuth Configuration +# ============================================ +# Client ID единого Todoist приложения +# Получить в: https://developer.todoist.com/appconsole.html +TODOIST_CLIENT_ID=your-todoist-client-id + +# Client Secret единого Todoist приложения +TODOIST_CLIENT_SECRET=your-todoist-client-secret + +# Секрет для проверки подлинности webhook от Todoist (опционально) +# Если задан, все запросы должны содержать заголовок X-Todoist-Webhook-Secret с этим значением +TODOIST_WEBHOOK_SECRET= +``` + +**Что нужно получить из Todoist приложения:** +1. `TODOIST_CLIENT_ID` - Client ID приложения +2. `TODOIST_CLIENT_SECRET` - Client Secret приложения +3. `TODOIST_WEBHOOK_SECRET` (опционально) - для дополнительной безопасности webhook + +**Важно:** В настройках Todoist приложения нужно указать Redirect URI: +- Используйте: `/api/integrations/todoist/oauth/callback` +- Например, если `WEBHOOK_BASE_URL=https://your-domain.com`, то Redirect URI: `https://your-domain.com/api/integrations/todoist/oauth/callback` + +--- + +## 3. Изменения в Backend (main.go) + +### 3.1. Обновить структуру `TodoistIntegration`: +```go +type TodoistIntegration struct { + ID int `json:"id"` + UserID int `json:"user_id"` + TodoistUserID *int64 `json:"todoist_user_id,omitempty"` // Ключевое для webhook! + TodoistEmail *string `json:"todoist_email,omitempty"` + AccessToken *string `json:"-"` // Не отдавать в JSON! + CreatedAt *time.Time `json:"created_at,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} +``` + +**Важно:** +- `AccessToken` не должен отдаваться в JSON ответах (используйте `json:"-"`) +- `TodoistUserID` — ключевое поле для идентификации пользователя в webhook + +### 3.2. Webhook handler (`todoistWebhookHandler`) - КЛЮЧЕВОЕ ИЗМЕНЕНИЕ: + +**Новый подход:** +- URL: `/webhook/todoist` (БЕЗ токена!) +- Webhook настроен в Todoist Developer Console для всего приложения +- Извлекает `user_id` из `event_data` webhook +- Находит пользователя по `todoist_user_id` + +**Новая логика:** +```go +func (a *App) todoistWebhookHandler(w http.ResponseWriter, r *http.Request) { + // CORS, OPTIONS handling + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + // Проверка webhook secret (если настроен) + todoistWebhookSecret := getEnv("TODOIST_WEBHOOK_SECRET", "") + if todoistWebhookSecret != "" { + providedSecret := r.Header.Get("X-Todoist-Hmac-SHA256") + // TODO: проверить HMAC подпись + } + + // Парсим webhook + var webhook TodoistWebhook + if err := json.NewDecoder(r.Body).Decode(&webhook); err != nil { + log.Printf("Todoist webhook: error decoding: %v", err) + w.WriteHeader(http.StatusOK) + return + } + + log.Printf("Todoist webhook: event=%s", webhook.EventName) + + // Обрабатываем только item:completed + if webhook.EventName != "item:completed" { + log.Printf("Todoist webhook: ignoring event %s", webhook.EventName) + w.WriteHeader(http.StatusOK) + return + } + + // Извлекаем user_id из event_data (это Todoist user_id!) + // Может приходить как string или float64 + var todoistUserID int64 + switch v := webhook.EventData["user_id"].(type) { + case float64: + todoistUserID = int64(v) + case string: + todoistUserID, _ = strconv.ParseInt(v, 10, 64) + default: + log.Printf("Todoist webhook: user_id not found or invalid type in event_data") + w.WriteHeader(http.StatusOK) + return + } + + // Находим пользователя Play Life по todoist_user_id + var userID int + err := a.DB.QueryRow(` + SELECT user_id FROM todoist_integrations + WHERE todoist_user_id = $1 + `, todoistUserID).Scan(&userID) + + if err == sql.ErrNoRows { + // Пользователь не подключил Play Life — игнорируем + log.Printf("Todoist webhook: no user found for todoist_user_id=%d (ignoring)", todoistUserID) + w.WriteHeader(http.StatusOK) + return + } + if err != nil { + log.Printf("Todoist webhook: DB error: %v", err) + w.WriteHeader(http.StatusOK) + return + } + + log.Printf("Todoist webhook: todoist_user_id=%d -> user_id=%d", todoistUserID, userID) + + // ... остальная логика обработки события (как раньше) ... +} +``` + +### 3.3. Маршрут webhook - ИЗМЕНИТЬ: +```go +// Было: +r.HandleFunc("/webhook/todoist/{token}", app.todoistWebhookHandler).Methods("POST", "OPTIONS") + +// Стало: +r.HandleFunc("/webhook/todoist", app.todoistWebhookHandler).Methods("POST", "OPTIONS") +``` + +**Важно:** Этот URL нужно указать в Todoist Developer Console при настройке приложения! + +### 3.4. Добавить OAuth endpoints: + +1. **Инициация OAuth:** + - `GET /api/integrations/todoist/oauth/connect` - перенаправляет на Todoist OAuth + - **ВАЖНО:** Требует авторизацию пользователя (JWT token в cookie или header) + - Генерирует `state` параметр с user_id (JWT подписанный jwtSecret) + - Формирует `redirect_uri` из `WEBHOOK_BASE_URL`: + ```go + baseURL := getEnv("WEBHOOK_BASE_URL", "") + if baseURL == "" { + sendErrorWithCORS(w, "WEBHOOK_BASE_URL must be configured", http.StatusInternalServerError) + return + } + redirectURI := strings.TrimRight(baseURL, "/") + "/api/integrations/todoist/oauth/callback" + + // Генерируем state с user_id + state := generateOAuthState(userID, jwtSecret) // JWT с user_id и exp + + // Формируем URL для редиректа + authURL := fmt.Sprintf( + "https://todoist.com/oauth/authorize?client_id=%s&scope=data:read_write&state=%s&redirect_uri=%s", + url.QueryEscape(todoistClientID), + url.QueryEscape(state), + url.QueryEscape(redirectURI), + ) + + http.Redirect(w, r, authURL, http.StatusTemporaryRedirect) + ``` + +2. **OAuth callback:** + - `GET /api/integrations/todoist/oauth/callback` - обрабатывает callback от Todoist + - **ПУБЛИЧНЫЙ ENDPOINT** (без авторизации, так как пользователь приходит от Todoist) + - Логика: + 1. Проверяет `state` параметр (JWT с user_id, exp = 1 день) + 2. Извлекает `code` из query parameters + 3. Обменивает `code` на `access_token` через POST запрос к Todoist + 4. Получает информацию о пользователе через Sync API + 5. Сохраняет/обновляет данные в БД + 6. Перенаправляет пользователя на страницу интеграций + + ```go + func (a *App) todoistOAuthCallbackHandler(w http.ResponseWriter, r *http.Request) { + frontendURL := getEnv("WEBHOOK_BASE_URL", "") + redirectSuccess := frontendURL + "/?integration=todoist&status=connected" + redirectError := frontendURL + "/?integration=todoist&status=error" + + // 1. Проверяем state (JWT с user_id, exp = 1 день) + state := r.URL.Query().Get("state") + userID, err := validateOAuthState(state, jwtSecret) + if err != nil { + log.Printf("Todoist OAuth: invalid state: %v", err) + http.Redirect(w, r, redirectError+"&message=invalid_state", http.StatusTemporaryRedirect) + return + } + + // 2. Получаем code + code := r.URL.Query().Get("code") + if code == "" { + log.Printf("Todoist OAuth: no code in callback") + http.Redirect(w, r, redirectError+"&message=no_code", http.StatusTemporaryRedirect) + return + } + + // 3. Обмениваем code на access_token + accessToken, err := exchangeCodeForToken(code, redirectURI) + if err != nil { + log.Printf("Todoist OAuth: token exchange failed: %v", err) + http.Redirect(w, r, redirectError+"&message=token_exchange_failed", http.StatusTemporaryRedirect) + return + } + + // 4. Получаем информацию о пользователе + todoistUser, err := getTodoistUserInfo(accessToken) + if err != nil { + log.Printf("Todoist OAuth: get user info failed: %v", err) + http.Redirect(w, r, redirectError+"&message=user_info_failed", http.StatusTemporaryRedirect) + return + } + + log.Printf("Todoist OAuth: user_id=%d connected todoist_user_id=%d email=%s", + userID, todoistUser.ID, todoistUser.Email) + + // 5. Сохраняем в БД (INSERT или UPDATE) + _, err = a.DB.Exec(` + INSERT INTO todoist_integrations (user_id, todoist_user_id, todoist_email, access_token) + VALUES ($1, $2, $3, $4) + ON CONFLICT (user_id) DO UPDATE SET + todoist_user_id = $2, + todoist_email = $3, + access_token = $4, + updated_at = CURRENT_TIMESTAMP + `, userID, todoistUser.ID, todoistUser.Email, accessToken) + + if err != nil { + log.Printf("Todoist OAuth: DB error: %v", err) + http.Redirect(w, r, redirectError+"&message=db_error", http.StatusTemporaryRedirect) + return + } + + // 6. Редирект на страницу интеграций + http.Redirect(w, r, redirectSuccess, http.StatusTemporaryRedirect) + } + ``` + +3. **Получение статуса интеграции:** + - `GET /api/integrations/todoist/status` - возвращает статус подключения + - Требует авторизацию (protected endpoint) + - Возвращает: + ```json + { + "connected": true, + "todoist_email": "user@example.com" + } + ``` + или если не подключено: + ```json + { + "connected": false + } + ``` + - **Примечание:** webhook_url больше не нужен — он единый для всего приложения! + +4. **Отключение интеграции:** + - `DELETE /api/integrations/todoist/disconnect` - отключает интеграцию + - Требует авторизацию (protected endpoint) + - **Удаляет запись** из `todoist_integrations` полностью + - Возвращает: `{"success": true, "message": "Todoist disconnected"}` + +### 3.5. Новые маршруты: +```go +// OAuth endpoints +protected.HandleFunc("/api/integrations/todoist/oauth/connect", app.todoistOAuthConnectHandler).Methods("GET") +r.HandleFunc("/api/integrations/todoist/oauth/callback", app.todoistOAuthCallbackHandler).Methods("GET") // Публичный! +protected.HandleFunc("/api/integrations/todoist/status", app.getTodoistStatusHandler).Methods("GET", "OPTIONS") +protected.HandleFunc("/api/integrations/todoist/disconnect", app.todoistDisconnectHandler).Methods("DELETE", "OPTIONS") + +// Webhook (единый для всего приложения) +r.HandleFunc("/webhook/todoist", app.todoistWebhookHandler).Methods("POST", "OPTIONS") + +// УДАЛИТЬ старый endpoint: +// protected.HandleFunc("/api/integrations/todoist/webhook-url", ...) // Больше не нужен! +``` + +**Важно:** +- OAuth callback должен быть публичным (пользователь приходит от Todoist без JWT) +- Webhook тоже публичный (Todoist отправляет события) +- `/api/integrations/todoist/webhook-url` — **УДАЛИТЬ**, больше не нужен! + +--- + +## 4. Изменения в Frontend (TodoistIntegration.jsx) + +### 4.1. Добавить проверку статуса подключения: +- При загрузке компонента вызывать `GET /api/integrations/todoist/status` +- Определять, подключен ли Todoist + +### 4.2. Добавить OAuth flow: +- **Если не подключено:** + - Показать кнопку "Подключить Todoist" + - При клике: `window.location.href = '/api/integrations/todoist/oauth/connect'` + - После OAuth callback backend перенаправит на `/?integration=todoist&status=connected` + - При загрузке проверять URL параметры и показывать соответствующее сообщение + +- **Если подключено:** + - Показать email пользователя Todoist + - Показать статус: "✅ Todoist подключен" + - Кнопка "Отключить Todoist" (вызывает `DELETE /api/integrations/todoist/disconnect`) + - **Webhook URL не нужен** — всё работает автоматически! + +### 4.3. Обновить инструкции: +- **Если не подключено:** + - Инструкция: "Нажмите кнопку 'Подключить Todoist' для авторизации" + +- **Если подключено:** + - Инструкция: "✅ Todoist подключен! Закрывайте задачи в Todoist — они автоматически появятся в Play Life." + - **Никаких дополнительных настроек не требуется!** + +### 4.4. Удалить: +- Отображение webhook URL +- Кнопку "Копировать" +- Инструкции по настройке webhook в Todoist + +--- + +## 5. Порядок выполнения изменений + +### Шаг 1: Создать миграцию БД +- Создать файл `013_refactor_todoist_single_app.sql` +- Содержимое миграции: +```sql +-- Migration: Refactor todoist_integrations for single Todoist app +-- Webhook теперь единый для всего приложения, токены в URL больше не нужны + +-- 1. Добавляем новые поля +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS todoist_user_id BIGINT; + +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS todoist_email VARCHAR(255); + +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS access_token TEXT; + +-- 2. Удаляем webhook_token (больше не нужен!) +ALTER TABLE todoist_integrations +DROP COLUMN IF EXISTS webhook_token; + +-- 3. Удаляем старый индекс на webhook_token +DROP INDEX IF EXISTS idx_todoist_integrations_webhook_token; + +-- 4. Создаем новые индексы +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_user_id +ON todoist_integrations(todoist_user_id) +WHERE todoist_user_id IS NOT NULL; + +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_email +ON todoist_integrations(todoist_email) +WHERE todoist_email IS NOT NULL; + +-- 5. Комментарии +COMMENT ON COLUMN todoist_integrations.todoist_user_id IS 'Todoist user ID (from OAuth) - used to identify user in webhooks'; +COMMENT ON COLUMN todoist_integrations.todoist_email IS 'Todoist user email (from OAuth)'; +COMMENT ON COLUMN todoist_integrations.access_token IS 'Todoist OAuth access token (permanent)'; +``` +- Применить миграцию + +**Важно:** После миграции старые записи с `webhook_token` будут работать пока не применится миграция. После миграции все пользователи должны переподключить Todoist через OAuth. + +### Шаг 2: Обновить .env +- Добавить новые переменные окружения +- Получить данные из Todoist приложения + +### Шаг 3: Обновить Backend +- Обновить структуру `TodoistIntegration` +- Изменить webhook handler +- Добавить OAuth endpoints +- Обновить маршруты + +### Шаг 4: Обновить Frontend +- Обновить компонент `TodoistIntegration.jsx` +- Добавить OAuth flow + +### Шаг 5: Тестирование +- Протестировать OAuth flow +- Протестировать webhook с новым способом идентификации +- Проверить миграцию данных + +--- + +## 6. Важные замечания + +### 6.1. Идентификация пользователя в webhook +**Новый подход:** +- Используется `todoist_user_id` из `event_data` webhook +- `todoist_user_id` сохраняется при OAuth подключении +- Webhook приходит на единый URL `/webhook/todoist` +- Находим пользователя Play Life по `todoist_user_id` + +### 6.2. Миграция существующих данных +- **Удаляем `webhook_token`** — больше не нужен +- Все существующие записи будут работать после миграции, но без OAuth данных +- Пользователям нужно **переподключить Todoist через OAuth** для работы интеграции +- После миграции старый endpoint `/webhook/todoist/{token}` перестанет работать + +### 6.3. Обратная совместимость +- **НЕТ обратной совместимости** — это breaking change +- Старый endpoint `/webhook/todoist/{token}` удаляется +- Все пользователи должны переподключить Todoist +- **Рекомендация:** Уведомить пользователей о необходимости переподключения + +### 6.3.1. Удаляемый код +**Удалить полностью:** +- Endpoint `GET /api/integrations/todoist/webhook-url` +- Handler `getTodoistWebhookURLHandler` +- Маршрут `/webhook/todoist/{token}` +- Функция генерации webhook_token для Todoist + +### 6.4. Безопасность +- OAuth токен (`access_token`) не отдавать в JSON ответах (json:"-") +- Использовать `TODOIST_WEBHOOK_SECRET` для проверки подлинности webhook (если настроен в Todoist) +- Todoist access_token бессрочный, но пользователь может отозвать его в настройках Todoist +- User-Agent для запросов к Todoist API: `PlayLife` + +### 6.5. OAuth Flow (детально) +1. Пользователь нажимает "Подключить Todoist" +2. Backend генерирует `state` (случайная строка или JWT с user_id) и сохраняет его +3. Перенаправление на Todoist OAuth: + ``` + https://todoist.com/oauth/authorize? + client_id=& + scope=data:read_write& + state=& + redirect_uri=/api/integrations/todoist/oauth/callback + ``` +4. Пользователь авторизуется в Todoist +5. Todoist перенаправляет на `redirect_uri` с `code` и `state` +6. Backend проверяет `state` и обменивает `code` на `access_token`: + ``` + POST https://todoist.com/oauth/access_token + Content-Type: application/x-www-form-urlencoded + + client_id=& + client_secret=& + code=& + redirect_uri= + ``` +7. Backend получает информацию о пользователе через Todoist Sync API: + ``` + POST https://api.todoist.com/sync/v9/sync + Authorization: Bearer + Content-Type: application/x-www-form-urlencoded + User-Agent: PlayLife + + sync_token=*&resource_types=["user"] + ``` + Ответ содержит `user.id` и `user.email` +8. Backend сохраняет `todoist_user_id`, `todoist_email`, `access_token` в БД +9. Перенаправление пользователя на страницу интеграций + +### 6.6. Хранение state для OAuth +Используем JWT токен (не требует хранения в БД): + +```go +// Генерация state (таймаут = 1 день) +func generateOAuthState(userID int, jwtSecret string) string { + state := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "user_id": userID, + "type": "todoist_oauth", + "exp": time.Now().Add(24 * time.Hour).Unix(), // 1 день + }) + stateString, _ := state.SignedString([]byte(jwtSecret)) + return stateString +} + +// Проверка state в callback +func validateOAuthState(stateString string, jwtSecret string) (int, error) { + token, err := jwt.Parse(stateString, func(token *jwt.Token) (interface{}, error) { + return []byte(jwtSecret), nil + }) + if err != nil { + return 0, err + } + + claims, ok := token.Claims.(jwt.MapClaims) + if !ok || !token.Valid { + return 0, fmt.Errorf("invalid token") + } + + if claims["type"] != "todoist_oauth" { + return 0, fmt.Errorf("wrong token type") + } + + userID := int(claims["user_id"].(float64)) + return userID, nil +} +``` + +### 6.7. Особенности Todoist OAuth +- **Scope:** `data:read_write` — полный доступ к данным пользователя +- **Access Token:** Todoist выдает бессрочный access_token +- **Refresh Token:** Todoist НЕ использует refresh_token +- **Отзыв токена:** Пользователь может отозвать доступ в настройках Todoist + +### 6.8. Обработка ошибок + +**Если todoist_user_id не найден в webhook:** +- Логировать: `log.Printf("Todoist webhook: no user found for todoist_user_id=%d", todoistUserID)` +- Возвращать `200 OK` (чтобы Todoist не делал retry) +- Игнорировать событие + +**Если токен отозван пользователем:** +- При попытке использовать access_token Todoist вернет ошибку +- Автоматически отключить интеграцию (удалить запись из БД) +- Логировать: `log.Printf("Todoist: token revoked for user_id=%d, disconnecting", userID)` + +**При disconnect:** +- Просто удалить запись из БД +- НЕ отзывать токен через Todoist API (упрощение) + +### 6.9. События Todoist +Подписываемся только на: **`item:completed`** + +Другие события (`item:added`, `item:updated`, `item:deleted`) не нужны. + +--- + +## 7. Архитектура: Единый Webhook + +**Ключевое решение:** Используем единый webhook URL для всего приложения. + +### Как это работает: + +1. **Настройка в Todoist Developer Console:** + - Создать приложение в https://developer.todoist.com/appconsole.html + - Указать Webhook URL: `/webhook/todoist` + - Указать OAuth Redirect URI: `/api/integrations/todoist/oauth/callback` + - Выбрать события: `item:completed` + +2. **При OAuth подключении:** + - Пользователь нажимает "Подключить Todoist" + - Авторизуется в Todoist + - Play Life получает `access_token` и информацию о пользователе + - Сохраняем `todoist_user_id` — это ключ для идентификации в webhook + +3. **При получении webhook:** + - Todoist отправляет POST на `/webhook/todoist` + - В `event_data` есть `user_id` (это Todoist user_id) + - Находим пользователя Play Life по `todoist_user_id` + - Обрабатываем событие + +### Преимущества: +- ✅ Пользователю не нужно ничего настраивать! +- ✅ Нет токенов в URL +- ✅ Простая архитектура +- ✅ Webhook настраивается один раз в Developer Console + +--- + +## 8. Настройка Todoist приложения в Developer Console + +### Шаги настройки: +1. Зайти в https://developer.todoist.com/appconsole.html +2. Создать новое приложение или открыть существующее +3. Заполнить: + - **App name:** Play Life + - **App description:** Интеграция с Play Life для отслеживания прогресса + - **OAuth Redirect URL:** `/api/integrations/todoist/oauth/callback` + - **Webhooks callback URL:** `/webhook/todoist` + - **Watched events:** `item:completed` (только это событие!) +4. Скопировать: + - **Client ID** → `TODOIST_CLIENT_ID` + - **Client Secret** → `TODOIST_CLIENT_SECRET` + - **Client secret for webhooks** (если есть) → `TODOIST_WEBHOOK_SECRET` + +### Важные настройки: +- **OAuth scope:** `data:read_write` +- **Watched events:** только `item:completed` +- Другие события НЕ подписывать + +### Формат webhook от Todoist: +```json +{ + "event_name": "item:completed", + "user_id": "12345678", // ← Это todoist_user_id для идентификации! + "event_data": { + "id": "task_id", + "content": "Task title", + "description": "Task description", + "user_id": "12345678", // ← Тоже здесь + ... + } +} +``` + +**Важно:** `user_id` приходит как string, нужно конвертировать в int64. + +--- + +## 9. Краткая сводка для быстрого старта + +### Настройка Todoist приложения: +1. Зайти в https://developer.todoist.com/appconsole.html +2. Создать приложение +3. Настроить: + - **OAuth Redirect URL:** `/api/integrations/todoist/oauth/callback` + - **Webhooks callback URL:** `/webhook/todoist` + - **Watched events:** `item:completed` +4. Скопировать Client ID и Client Secret + +### Что добавить в .env: +```env +TODOIST_CLIENT_ID=your-client-id-here +TODOIST_CLIENT_SECRET=your-client-secret-here +TODOIST_WEBHOOK_SECRET= # опционально, из Developer Console +``` + +### Что изменится в базе данных: +- Добавятся поля: `todoist_user_id`, `todoist_email`, `access_token` +- **Удалится поле:** `webhook_token` + +### Что изменится для пользователей: +- Пользователи нажимают "Подключить Todoist" +- Авторизуются в Todoist +- **Готово!** Никаких дополнительных настроек! +- Закрытые задачи в Todoist автоматически появляются в Play Life + +### Порядок реализации: +1. ⬜ Настроить Todoist приложение в Developer Console +2. ⬜ Создать миграцию БД (`013_refactor_todoist_single_app.sql`) +3. ⬜ Обновить `.env` с новыми переменными +4. ⬜ Реализовать OAuth endpoints в Backend +5. ⬜ Обновить webhook handler (идентификация по todoist_user_id) +6. ⬜ Обновить Frontend компонент +7. ⬜ Удалить старый код (webhook-url endpoint, токены) +8. ⬜ Протестировать OAuth flow и webhook + diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..0062ac9 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +5.0.0 diff --git a/build-and-save.ps1 b/build-and-save.ps1 new file mode 100644 index 0000000..1f5d8f5 --- /dev/null +++ b/build-and-save.ps1 @@ -0,0 +1,25 @@ +# PowerShell скрипт для сборки единого Docker образа и сохранения в tar + +$ErrorActionPreference = "Stop" + +$IMAGE_NAME = "play-life-unified" +$IMAGE_TAG = if ($env:IMAGE_TAG) { $env:IMAGE_TAG } else { "latest" } +$TAR_FILE = if ($env:TAR_FILE) { $env:TAR_FILE } else { "play-life-unified.tar" } + +Write-Host "🔨 Сборка единого Docker образа..." -ForegroundColor Cyan +docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" . + +Write-Host "💾 Сохранение образа в tar файл..." -ForegroundColor Cyan +docker save "${IMAGE_NAME}:${IMAGE_TAG}" -o "${TAR_FILE}" + +$fileSize = (Get-Item "${TAR_FILE}").Length / 1MB +Write-Host "✅ Образ успешно сохранен в ${TAR_FILE}" -ForegroundColor Green +Write-Host "📦 Размер файла: $([math]::Round($fileSize, 2)) MB" -ForegroundColor Green + +Write-Host "" +Write-Host "Для загрузки образа на другой машине используйте:" -ForegroundColor Yellow +Write-Host " docker load -i ${TAR_FILE}" -ForegroundColor White +Write-Host "" +Write-Host "Для запуска контейнера используйте:" -ForegroundColor Yellow +Write-Host " docker run -d -p 80:80 --env-file .env ${IMAGE_NAME}:${IMAGE_TAG}" -ForegroundColor White + diff --git a/build-and-save.sh b/build-and-save.sh new file mode 100644 index 0000000..f0ecf72 --- /dev/null +++ b/build-and-save.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Скрипт для сборки единого Docker образа и сохранения в tar + +set -e + +IMAGE_NAME="play-life-unified" +IMAGE_TAG="${IMAGE_TAG:-latest}" +TAR_FILE="${TAR_FILE:-play-life-unified.tar}" + +echo "🔨 Сборка единого Docker образа..." +docker build -t "${IMAGE_NAME}:${IMAGE_TAG}" . + +echo "💾 Сохранение образа в tar файл..." +docker save "${IMAGE_NAME}:${IMAGE_TAG}" -o "${TAR_FILE}" + +echo "✅ Образ успешно сохранен в ${TAR_FILE}" +echo "📦 Размер файла: $(du -h ${TAR_FILE} | cut -f1)" + +echo "" +echo "Для загрузки образа на другой машине используйте:" +echo " docker load -i ${TAR_FILE}" +echo "" +echo "Для запуска контейнера используйте:" +echo " docker run -d -p 80:80 --env-file .env ${IMAGE_NAME}:${IMAGE_TAG}" + diff --git a/check-repo-fs.sh b/check-repo-fs.sh new file mode 100755 index 0000000..f5a68f4 --- /dev/null +++ b/check-repo-fs.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# Скрипт для проверки файловой системы репозитория Gitea +# Выполните на сервере с административным доступом + +REPO_PATH="/poignatov/play-life.git" +GITEA_USER="git" # или пользователь, под которым работает Gitea + +echo "=== Проверка существования репозитория ===" +if [ -d "$REPO_PATH" ]; then + echo "✓ Репозиторий существует" +else + echo "✗ Репозиторий НЕ найден: $REPO_PATH" + exit 1 +fi + +echo "" +echo "=== Проверка прав доступа ===" +ls -ld "$REPO_PATH" + +echo "" +echo "=== Проверка владельца ===" +OWNER=$(stat -c '%U:%G' "$REPO_PATH" 2>/dev/null || stat -f '%Su:%Sg' "$REPO_PATH" 2>/dev/null) +echo "Владелец: $OWNER" + +echo "" +echo "=== Проверка размера репозитория ===" +du -sh "$REPO_PATH" + +echo "" +echo "=== Проверка свободного места ===" +df -h "$REPO_PATH" | tail -1 + +echo "" +echo "=== Проверка ключевых файлов Git ===" +if [ -f "$REPO_PATH/config" ]; then + echo "✓ config существует" +else + echo "✗ config НЕ найден" +fi + +if [ -d "$REPO_PATH/objects" ]; then + echo "✓ objects/ существует" + echo " Количество объектов: $(find "$REPO_PATH/objects" -type f | wc -l)" +else + echo "✗ objects/ НЕ найден" +fi + +if [ -f "$REPO_PATH/HEAD" ]; then + echo "✓ HEAD существует" + echo " Текущая ветка: $(cat "$REPO_PATH/HEAD")" +else + echo "✗ HEAD НЕ найден" +fi + +if [ -f "$REPO_PATH/refs/heads/main" ]; then + echo "✓ refs/heads/main существует" + echo " Последний коммит: $(cat "$REPO_PATH/refs/heads/main")" +else + echo "✗ refs/heads/main НЕ найден" +fi + +echo "" +echo "=== Проверка целостности репозитория ===" +cd "$REPO_PATH" +if git fsck --no-progress 2>&1 | head -20; then + echo "✓ Репозиторий цел" +else + echo "✗ Обнаружены проблемы с целостностью" +fi + +echo "" +echo "=== Проверка логов Gitea ===" +echo "Проверьте логи Gitea на наличие ошибок:" +echo " - /var/log/gitea/gitea.log" +echo " - или в директории, указанной в конфиге Gitea" diff --git a/database-dumps/.gitkeep b/database-dumps/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/database-dumps/README.md b/database-dumps/README.md new file mode 100644 index 0000000..34579df --- /dev/null +++ b/database-dumps/README.md @@ -0,0 +1,59 @@ +# Database Dumps + +Эта директория содержит дампы базы данных для разработки и тестирования. + +## Использование + +### Создание дампа + +```bash +# Дамп из БД (по умолчанию .env) +./dump-db.sh + +# Дамп с именем +./dump-db.sh production-backup + +# Дамп из другого окружения +./dump-db.sh --env-file .env.prod my-backup +``` + +### Просмотр дампов + +```bash +./list-dumps.sh +``` + +### Восстановление дампа + +```bash +# Восстановление в БД (по умолчанию .env) +./restore-db.sh dump_20240101_120000.sql.gz + +# Восстановление в другое окружение +./restore-db.sh --env-file .env.prod dump_20240101_120000.sql.gz + +# Можно указать имя без расширения +./restore-db.sh dump_20240101_120000 +``` + +## Поведение по умолчанию + +- **Создание дампа**: использует `.env` +- **Восстановление**: использует `.env` + +Это можно изменить с помощью параметра `--env-file`. + +## Важно + +⚠️ **Восстановление дампа удалит все данные в целевой базе данных!** + +Всегда проверяйте, в какую БД вы восстанавливаете данные. + +## Формат файлов + +Дампы сохраняются в формате: +- `dump_YYYYMMDD_HHMMSS.sql.gz` - автоматическое имя с датой/временем +- `имя_дампа.sql.gz` - именованный дамп + +Все дампы автоматически сжимаются с помощью gzip. + diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..4ab1ca1 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,27 @@ +version: '3.8' + +# Production конфигурация для Synology +# Использует образ из registry вместо локальной сборки +# База данных postgres запущена отдельно (не в этом compose) + +services: + play-life: + image: dungeonsiege.synology.me/poignatov/play-life:latest + container_name: play-life-prod + ports: + - "3080:80" + volumes: + - /volume1/docker/play-life/uploads:/app/uploads:rw + restart: always + env_file: + - .env + # Подключаемся к общей сети playlife-net + # Перед первым запуском нужно создать сеть и подключить postgres: + # docker network create playlife-net + # docker network connect playlife-net postgres1 + networks: + - playlife-net + +networks: + playlife-net: + external: true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6b1b341 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,83 @@ +version: '3.8' + +# Единый docker-compose для всех приложений в одном образе +# Использует корневой .env файл + +services: + # База данных PostgreSQL + db: + image: postgres:15-alpine + restart: unless-stopped + environment: + POSTGRES_USER: ${DB_USER:-playeng} + POSTGRES_PASSWORD: ${DB_PASSWORD:-playeng} + POSTGRES_DB: ${DB_NAME:-playeng} + ports: + - "${DB_PORT:-5432}:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-playeng}"] + interval: 10s + timeout: 5s + retries: 5 + env_file: + - .env + + # Backend сервер (Go) + backend: + build: + context: . + dockerfile: ./play-life-backend/Dockerfile + ports: + - "${PORT:-8080}:8080" + environment: + DB_HOST: db + DB_PORT: 5432 + DB_USER: ${DB_USER:-playeng} + DB_PASSWORD: ${DB_PASSWORD:-playeng} + DB_NAME: ${DB_NAME:-playeng} + PORT: ${PORT:-8080} + depends_on: + db: + condition: service_healthy + volumes: + - ./play-life-backend/migrations:/migrations + - ./uploads:/app/uploads + env_file: + - .env + + # Frontend приложение play-life-web + play-life-web: + build: + context: ./play-life-web + dockerfile: Dockerfile + container_name: play-life-web + ports: + - "${WEB_PORT:-3001}:80" + restart: unless-stopped + depends_on: + - backend + env_file: + - .env + + # LLM сервис (Ollama + Tavily), свой Docker и свой env + llm: + build: + context: ./play-life-llm + dockerfile: Dockerfile + container_name: play-life-llm + ports: + - "8090:8090" + restart: unless-stopped + env_file: + - ./play-life-llm/.env + +volumes: + postgres_data: + name: play-life_postgres_data + +networks: + default: + name: play-life-network + diff --git a/dump-db.sh b/dump-db.sh new file mode 100755 index 0000000..2833d42 --- /dev/null +++ b/dump-db.sh @@ -0,0 +1,138 @@ +#!/bin/bash + +# Скрипт для создания дампа базы данных +# Использование: +# ./dump-db.sh [имя_дампа] # Дамп из .env.prod +# ./dump-db.sh --env-file .env [имя] # Дамп из указанного файла +# ./dump-db.sh production-backup # Именованный дамп из .env.prod + +set -e + +# Значения по умолчанию +DEFAULT_ENV_FILE=".env.prod" +ENV_FILE="$DEFAULT_ENV_FILE" +DUMP_NAME="" + +# Парсим аргументы +while [[ $# -gt 0 ]]; do + case $1 in + --env-file) + ENV_FILE="$2" + shift 2 + ;; + *) + if [ -z "$DUMP_NAME" ]; then + DUMP_NAME="$1" + else + echo "❌ Ошибка: Неизвестный аргумент: $1" + echo "Использование: ./dump-db.sh [--env-file FILE] [имя_дампа]" + exit 1 + fi + shift + ;; + esac +done + +# Загружаем переменные окружения из указанного файла +if [ -f "$ENV_FILE" ]; then + export $(cat "$ENV_FILE" | grep -v '^#' | grep -v '^$' | xargs) + echo "📋 Используется файл окружения: $ENV_FILE" +else + echo "⚠️ Файл $ENV_FILE не найден, используются значения по умолчанию" +fi + +DB_HOST=${DB_HOST:-localhost} +DB_PORT=${DB_PORT:-5432} +DB_USER=${DB_USER:-playeng} +DB_PASSWORD=${DB_PASSWORD:-playeng} +DB_NAME=${DB_NAME:-playeng} + +# Создаем директорию для дампов, если её нет +mkdir -p database-dumps + +# Генерируем имя файла с датой и временем, если не указано +if [ -z "$DUMP_NAME" ]; then + DUMP_NAME="dump_$(date +%Y%m%d_%H%M%S).sql" +else + DUMP_NAME="$DUMP_NAME.sql" +fi + +DUMP_PATH="database-dumps/$DUMP_NAME" + +echo "🗄️ Создание дампа базы данных..." +echo " База: $DB_NAME" +echo " Хост: $DB_HOST:$DB_PORT" +echo " Пользователь: $DB_USER" +echo " Файл: $DUMP_PATH" + +# Создаем дамп через docker-compose, если контейнер запущен И хост локальный +if [ "$DB_HOST" = "localhost" ] || [ "$DB_HOST" = "127.0.0.1" ] || [ -z "$DB_HOST" ]; then + if docker-compose ps db 2>/dev/null | grep -q "Up"; then + echo " Используется docker-compose..." + docker-compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" + elif command -v pg_dump &> /dev/null; then + # Или напрямую через pg_dump, если БД доступна локально + echo " Используется локальный pg_dump..." + PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" + elif command -v docker &> /dev/null; then + # Используем Docker образ postgres для создания дампа + echo " Используется Docker (postgres:latest)..." + docker run --rm -i --network host \ + -e PGPASSWORD="$DB_PASSWORD" \ + postgres:latest \ + pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" + else + echo "❌ Ошибка: pg_dump не найден, docker-compose не запущен и Docker недоступен" + echo " Установите PostgreSQL клиент или Docker" + exit 1 + fi +else + # Для удаленных хостов используем pg_dump или Docker + if command -v pg_dump &> /dev/null; then + echo " Используется локальный pg_dump..." + PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" + elif command -v docker &> /dev/null; then + # Используем Docker образ postgres для создания дампа + # Используем latest для совместимости с разными версиями сервера + echo " Используется Docker (postgres:latest)..." + # Используем --network host для доступа к удаленным хостам + docker run --rm -i --network host \ + -e PGPASSWORD="$DB_PASSWORD" \ + postgres:latest \ + pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" > "$DUMP_PATH" + else + echo "❌ Ошибка: pg_dump не найден и Docker недоступен" + echo " Установите PostgreSQL клиент или Docker" + exit 1 + fi +fi + +# Сжимаем дамп +echo " Сжатие дампа..." +gzip -f "$DUMP_PATH" +DUMP_PATH="${DUMP_PATH}.gz" + +echo "✅ Дамп успешно создан: $DUMP_PATH" +echo " Размер: $(du -h "$DUMP_PATH" | cut -f1)" + +# Ограничиваем количество дампов (максимум 10) +MAX_DUMPS=10 +DUMP_COUNT=$(ls -1 database-dumps/*.sql.gz 2>/dev/null | wc -l | tr -d ' ') + +if [ "$DUMP_COUNT" -gt "$MAX_DUMPS" ]; then + echo "" + echo "🧹 Очистка старых дампов (максимум $MAX_DUMPS)..." + # Сортируем по дате модификации (новые первыми) и удаляем самые старые + OLD_DUMPS=$(ls -1t database-dumps/*.sql.gz 2>/dev/null | tail -n +$((MAX_DUMPS + 1))) + if [ -n "$OLD_DUMPS" ]; then + REMOVED_COUNT=0 + for old_dump in $OLD_DUMPS; do + rm -f "$old_dump" + REMOVED_COUNT=$((REMOVED_COUNT + 1)) + echo " Удален: $(basename "$old_dump")" + done + echo " Удалено дампов: $REMOVED_COUNT" + echo " Осталось дампов: $MAX_DUMPS" + fi +fi + diff --git a/env.example b/env.example new file mode 100644 index 0000000..fb24704 --- /dev/null +++ b/env.example @@ -0,0 +1,104 @@ +# ============================================ +# Единый файл конфигурации для всех проектов +# Backend и Play-Life-Web +# ============================================ + +# ============================================ +# Database Configuration +# ============================================ +DB_HOST=localhost +DB_PORT=5432 +DB_USER=playeng +DB_PASSWORD=playeng +DB_NAME=playeng + +# ============================================ +# Backend Server Configuration +# ============================================ +# Порт для backend сервера (по умолчанию: 8080) +# В production всегда используется порт 8080 внутри контейнера +PORT=8080 + +# ============================================ +# Play Life Web Configuration +# ============================================ +# Порт для frontend приложения play-life-web +WEB_PORT=3001 + +# ============================================ +# Telegram Bot Configuration +# ============================================ +# Токен единого бота для всех пользователей +# Получить у @BotFather: https://t.me/botfather +TELEGRAM_BOT_TOKEN=your-bot-token-here + +# Base URL для автоматической настройки webhook +# Примеры: +# - Для production с HTTPS: https://your-domain.com +# - Для локальной разработки с ngrok: https://abc123.ngrok.io +# - Для прямого доступа на нестандартном порту: http://your-server:8080 +# Webhook будет настроен автоматически при старте сервера на: /webhook/telegram +# Если не указан, webhook нужно настраивать вручную +WEBHOOK_BASE_URL=https://your-domain.com + +# ============================================ +# Todoist Integration Configuration +# ============================================ +# Единое Todoist приложение для всех пользователей Play Life +# Настроить в: https://developer.todoist.com/appconsole.html +# +# В настройках Todoist приложения указать: +# - OAuth Redirect URL: /api/integrations/todoist/oauth/callback +# - Webhooks callback URL: /webhook/todoist +# - Watched events: item:completed + +# Client ID единого Todoist приложения +TODOIST_CLIENT_ID= + +# Client Secret единого Todoist приложения +TODOIST_CLIENT_SECRET= + +# Секрет для проверки подлинности webhook от Todoist (опционально) +# Получить в Developer Console: "Client secret for webhooks" +TODOIST_WEBHOOK_SECRET= + +# ============================================ +# Fitbit Integration Configuration +# ============================================ +# Fitbit приложение для интеграции с Play Life +# Настроить в: https://dev.fitbit.com/apps +# +# В настройках Fitbit приложения указать: +# - OAuth 2.0 Application Type: Server +# - Callback URL: /api/integrations/fitbit/oauth/callback +# - Default Access Type: Read-Only +# - Scopes: activity, profile +# - Terms of Service URL: /terms +# - Privacy Policy URL: /privacy + +# Client ID Fitbit приложения +FITBIT_CLIENT_ID= + +# Client Secret Fitbit приложения +FITBIT_CLIENT_SECRET= + +# ============================================ +# Authentication Configuration +# ============================================ +# Секретный ключ для подписи JWT токенов +# ВАЖНО: Обязательно задайте свой уникальный секретный ключ для production! +# Если не задан, будет использован случайно сгенерированный (не рекомендуется для production) +# Можно сгенерировать с помощью: openssl rand -base64 32 +JWT_SECRET=your-super-secret-jwt-key-change-in-production + +# ============================================ +# Scheduler Configuration +# ============================================ +# Часовой пояс для планировщика задач (например: Europe/Moscow, America/New_York, UTC) +# Используется для: +# - Автоматической фиксации целей на неделю каждый понедельник в 6:00 +# - Отправки ежедневного отчёта в 23:59 +# ВАЖНО: Укажите правильный часовой пояс, иначе задачи будут срабатывать в UTC! +# Список доступных часовых поясов: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TIMEZONE=Europe/Moscow + diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..6a31379 --- /dev/null +++ b/init.sh @@ -0,0 +1,160 @@ +#!/bin/bash + +# Скрипт для первоначальной настройки и запуска приложения +# Использование: ./init.sh + +set -e + +# Цвета для вывода +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +# Проверка наличия .env файла +if [ ! -f ".env" ]; then + echo -e "${RED}❌ Файл .env не найден!${NC}" + echo " Создайте файл .env на основе env.example" + exit 1 +fi + +# Загружаем переменные окружения +export $(cat .env | grep -v '^#' | grep -v '^$' | xargs) + +# Значения по умолчанию +DB_USER=${DB_USER:-playeng} +DB_PASSWORD=${DB_PASSWORD:-playeng} +DB_NAME=${DB_NAME:-playeng} +DB_PORT=${DB_PORT:-5432} +PORT=${PORT:-8080} +WEB_PORT=${WEB_PORT:-3001} + +echo -e "${GREEN}🚀 Инициализация Play Life...${NC}" +echo "" + +# 1. Остановка и удаление существующих контейнеров +echo -e "${YELLOW}1. Остановка существующих контейнеров...${NC}" +docker-compose down -v 2>/dev/null || true +echo -e "${GREEN} ✅ Контейнеры остановлены${NC}" + +# Удаляем старые образы postgres, если они есть +echo -e "${YELLOW} Удаление старых образов postgres...${NC}" +docker images | grep -E "postgres:(15|16|17|18|latest)" | awk '{print $3}' | xargs -r docker rmi -f 2>/dev/null || true +echo -e "${GREEN} ✅ Старые образы postgres удалены${NC}" +echo "" + +# 2. Поднятие всех сервисов +echo -e "${YELLOW}2. Поднятие сервисов через Docker Compose...${NC}" +echo " - База данных PostgreSQL 18.0 (порт: $DB_PORT)" +echo " - Backend сервер (порт: $PORT)" +echo " - Frontend приложение (порт: $WEB_PORT)" +docker-compose up -d --build +echo -e "${GREEN} ✅ Сервисы запущены${NC}" +echo "" + +# 3. Ожидание готовности базы данных +echo -e "${YELLOW}3. Ожидание готовности базы данных...${NC}" +MAX_WAIT=60 +WAIT_COUNT=0 +while ! docker-compose exec -T db pg_isready -U "$DB_USER" >/dev/null 2>&1; do + if [ $WAIT_COUNT -ge $MAX_WAIT ]; then + echo -e "${RED} ❌ База данных не готова за $MAX_WAIT секунд${NC}" + exit 1 + fi + echo -n "." + sleep 1 + WAIT_COUNT=$((WAIT_COUNT + 1)) +done +echo "" +echo -e "${GREEN} ✅ База данных готова${NC}" +echo "" + +# 4. Поиск самого свежего дампа +echo -e "${YELLOW}4. Поиск самого свежего дампа...${NC}" +DUMP_DIR="database-dumps" + +if [ ! -d "$DUMP_DIR" ]; then + echo -e "${YELLOW} ⚠️ Директория дампов не найдена, создаём...${NC}" + mkdir -p "$DUMP_DIR" +fi + +# Ищем все дампы (сначала .sql.gz, потом .sql) +LATEST_DUMP=$(ls -t "$DUMP_DIR"/*.{sql.gz,sql} 2>/dev/null | head -n 1) + +if [ -z "$LATEST_DUMP" ]; then + echo -e "${YELLOW} ⚠️ Дампы не найдены${NC}" + echo "" + + # Создаём дамп с продакшена используя креденшелы из .env + echo -e "${YELLOW}5. Создание дампа с продакшена...${NC}" + echo -e "${BLUE} 📦 Используются креденшелы из .env${NC}" + echo " Используется скрипт dump-db.sh" + + if [ -f "./dump-db.sh" ]; then + chmod +x ./dump-db.sh + DUMP_NAME="prod_backup_$(date +%Y%m%d_%H%M%S)" + + # Временно останавливаем контейнер db, чтобы dump-db.sh не использовал docker-compose exec + # и подключился напрямую к продакшен базе по креденшелам из .env + echo -e "${BLUE} ⏸️ Временно останавливаем локальный контейнер db для создания дампа с продакшена...${NC}" + docker-compose stop db 2>/dev/null || true + + # Используем dump-db.sh с креденшелами из .env (по умолчанию) + # Теперь он подключится напрямую к продакшен базе, а не через docker-compose + ./dump-db.sh "$DUMP_NAME" + + # Запускаем контейнер db обратно + echo -e "${BLUE} ▶️ Запускаем локальный контейнер db обратно...${NC}" + docker-compose start db 2>/dev/null || docker-compose up -d db + + # Проверяем, был ли создан дамп + CREATED_DUMP=$(ls -t "$DUMP_DIR"/"$DUMP_NAME".sql.gz 2>/dev/null | head -n 1) + if [ -n "$CREATED_DUMP" ]; then + echo -e "${GREEN} ✅ Дамп с продакшена создан: $(basename "$CREATED_DUMP")${NC}" + LATEST_DUMP="$CREATED_DUMP" + # Продолжаем с восстановлением ниже + else + echo -e "${RED} ❌ Не удалось создать дамп с продакшена${NC}" + echo -e "${YELLOW} ⚠️ Проверьте креденшелы в .env и доступность базы данных${NC}" + exit 1 + fi + else + echo -e "${RED} ❌ Скрипт dump-db.sh не найден${NC}" + exit 1 + fi +fi + +# Если дамп найден или создан, восстанавливаем его +if [ -n "$LATEST_DUMP" ]; then + LATEST_DUMP_NAME=$(basename "$LATEST_DUMP") + echo -e "${GREEN} ✅ Найден дамп: $LATEST_DUMP_NAME${NC}" + echo "" + + # 6. Восстановление базы данных + echo -e "${YELLOW}6. Восстановление базы данных из дампа...${NC}" + echo " Файл: $LATEST_DUMP_NAME" + echo " Используется скрипт restore-db.sh (восстановление в локальную базу)" + + # Используем restore-db.sh, который автоматически восстанавливает в локальную базу при использовании .env + # restore-db.sh автоматически выберет самый свежий дамп, если имя не указано + if [ -f "./restore-db.sh" ]; then + chmod +x ./restore-db.sh + # Автоматически подтверждаем восстановление + # restore-db.sh сам выберет самый свежий дамп из database-dumps/ + echo "yes" | ./restore-db.sh + else + echo -e "${RED} ❌ Скрипт restore-db.sh не найден${NC}" + exit 1 + fi +fi + +echo "" +echo -e "${GREEN}✅ Инициализация завершена!${NC}" +echo "" +echo -e "${BLUE}📋 Статус сервисов:${NC}" +docker-compose ps + diff --git a/list-dumps.sh b/list-dumps.sh new file mode 100755 index 0000000..a07eac8 --- /dev/null +++ b/list-dumps.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Скрипт для просмотра списка доступных дампов + +DUMP_DIR="database-dumps" + +if [ ! -d "$DUMP_DIR" ]; then + echo "❌ Директория дампов не найдена: $DUMP_DIR" + exit 1 +fi + +echo "📦 Доступные дампы базы данных:" +echo "" + +# Показываем дампы с информацией о размере и дате +if ls "$DUMP_DIR"/*.sql.gz 2>/dev/null | grep -q .; then + ls -lh "$DUMP_DIR"/*.sql.gz 2>/dev/null | awk '{ + filename = $9 + gsub(/.*\//, "", filename) + printf " %-40s %8s %s %s %s\n", filename, $5, $6, $7, $8 + }' + echo "" + echo "Всего дампов: $(ls -1 "$DUMP_DIR"/*.sql.gz 2>/dev/null | wc -l | tr -d ' ')" + echo "" + echo "Для восстановления используйте:" + echo " ./restore-db.sh <имя_дампа.sql.gz> # В .env" + echo " ./restore-db.sh --env-file .env.prod <имя_дампа> # В указанный файл" +else + echo " (нет дампов)" + echo "" + echo "Для создания дампа используйте:" + echo " ./dump-db.sh # Из .env" + echo " ./dump-db.sh --env-file .env.prod [имя] # Из указанного файла" +fi + diff --git a/nginx-unified.conf b/nginx-unified.conf new file mode 100644 index 0000000..9af225d --- /dev/null +++ b/nginx-unified.conf @@ -0,0 +1,127 @@ +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json; + + # Proxy API requests to backend (localhost внутри контейнера) + location /api/ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Proxy webhook endpoints to backend + location /webhook/ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Proxy daily-report endpoints to backend + location /daily-report/ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Proxy admin panel to backend (must be before location /) + location ^~ /admin { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Proxy project endpoints to backend (must be before location /) + location ^~ /project/ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Proxy other API endpoints to backend + location ~ ^/(playlife-feed|d2dc349a-0d13-49b2-a8f0-1ab094bfba9b|projects|message/post|weekly_goals/setup|project_score_sample_mv/refresh)$ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # Service Worker должен быть без кэширования + location /sw.js { + add_header Cache-Control "no-cache"; + expires 0; + } + + # Manifest тоже без долгого кэширования + location /manifest.webmanifest { + add_header Cache-Control "no-cache"; + expires 0; + } + + # Раздача загруженных файлов (картинки wishlist) - проксируем через backend + # Используем ^~ чтобы этот location имел приоритет над regex locations + location ^~ /uploads/ { + proxy_pass http://localhost:8080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + expires 30d; + add_header Cache-Control "public, immutable"; + } + + # Handle React Router (SPA) + location / { + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..60a79af --- /dev/null +++ b/nginx.conf @@ -0,0 +1,29 @@ +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + # Include server configurations + include /etc/nginx/conf.d/*.conf; +} + diff --git a/package.json b/package.json new file mode 100644 index 0000000..8b7c317 --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "name": "play-life", + "version": "1.0.0", + "description": "Play Life application", + "scripts": { + "db:dump": "./dump-db.sh", + "db:restore": "./restore-db.sh" + } +} diff --git a/play-life-backend/.gitignore b/play-life-backend/.gitignore new file mode 100644 index 0000000..e8f54ae --- /dev/null +++ b/play-life-backend/.gitignore @@ -0,0 +1,34 @@ +# Environment variables with secrets +.env + +# Go build artifacts +main +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool +*.out + +# Dependency directories +vendor/ + +# Go workspace file +go.work + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + diff --git a/play-life-backend/Dockerfile b/play-life-backend/Dockerfile new file mode 100644 index 0000000..10968d4 --- /dev/null +++ b/play-life-backend/Dockerfile @@ -0,0 +1,66 @@ +# Multi-stage build для единого образа frontend + backend + +# Stage 1: Build Frontend +FROM node:20-alpine AS frontend-builder +WORKDIR /app/frontend +COPY play-life-web/package*.json ./ +RUN npm ci +# Копируем РёСЃС…РѕРґРЅРёРєРё (node_modules исключены через .dockerignore) +COPY play-life-web/ . +RUN npm run build + +# Stage 2: Build Backend +FROM golang:1.24-alpine AS backend-builder +WORKDIR /app/backend +# Устанавливаем GOPROXY для более надежной загрузки модулей +ENV GOPROXY=https://proxy.golang.org,direct +ENV GOSUMDB=sum.golang.org +COPY play-life-backend/go.mod play-life-backend/go.sum ./ +RUN go mod download +COPY play-life-backend/ . +RUN go mod tidy +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . + +# Stage 3: Final image +FROM alpine:latest + +# Устанавливаем необходимые пакеты +RUN apk --no-cache add \ + ca-certificates \ + nginx \ + supervisor \ + curl \ + tzdata \ + chromium \ + chromium-chromedriver \ + udev \ + ttf-freefont \ + font-noto-emoji + +# Создаем директории +WORKDIR /app + +# Копируем собранный frontend +COPY --from=frontend-builder /app/frontend/dist /usr/share/nginx/html + +# Копируем собранный backend +COPY --from=backend-builder /app/backend/main /app/backend/main +COPY play-life-backend/admin.html /app/backend/admin.html + +# Копируем конфигурацию nginx +COPY nginx.conf /etc/nginx/nginx.conf +COPY nginx-unified.conf /etc/nginx/conf.d/default.conf + +# Копируем конфигурацию supervisor для запуска backend +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Создаем директории для логов +RUN mkdir -p /var/log/supervisor && \ + mkdir -p /var/log/nginx && \ + mkdir -p /var/run + +# Открываем РїРѕСЂС‚ 80 +EXPOSE 80 + +# Запускаем supervisor, который запустит nginx Рё backend +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] \ No newline at end of file diff --git a/play-life-backend/ENV_SETUP.md b/play-life-backend/ENV_SETUP.md new file mode 100644 index 0000000..a6c917b --- /dev/null +++ b/play-life-backend/ENV_SETUP.md @@ -0,0 +1,75 @@ +# Настройка переменных окружения + +## Быстрый старт + +1. Скопируйте файл `env.example` в `.env`: + ```bash + cp env.example .env + ``` + +2. Откройте `.env` и заполните реальные значения: + ```bash + nano .env + # или + vim .env + ``` + +3. **ВАЖНО**: Файл `.env` уже добавлен в `.gitignore` и не будет попадать в git. + +## Переменные окружения + +### Обязательные (для работы приложения) + +- `DB_HOST` - хост базы данных (по умолчанию: localhost) +- `DB_PORT` - порт базы данных (по умолчанию: 5432) +- `DB_USER` - пользователь БД (по умолчанию: playeng) +- `DB_PASSWORD` - пароль БД (по умолчанию: playeng) +- `DB_NAME` - имя БД (по умолчанию: playeng) +- `PORT` - порт сервера (по умолчанию: 8080) + +### Опциональные (для Telegram интеграции) + +- `WEBHOOK_BASE_URL` - базовый URL для автоматической настройки webhook +- Bot Token и Chat ID настраиваются через UI приложения в разделе "Интеграции" -> "Telegram" + +## Использование в коде + +Приложение автоматически читает переменные окружения через `os.Getenv()`. + +Для загрузки `.env` файла в локальной разработке можно использовать: + +### Вариант 1: Установить переменные вручную +```bash +export DB_PASSWORD=your_password +go run main.go +``` + +### Вариант 2: Использовать библиотеку godotenv (рекомендуется) + +1. Установить библиотеку: + ```bash + go get github.com/joho/godotenv + ``` + +2. Добавить в начало `main()`: + ```go + import "github.com/joho/godotenv" + + func main() { + // Загрузить .env файл + godotenv.Load() + // ... остальной код + } + ``` + +### Вариант 3: Использовать docker-compose + +В `docker-compose.yml` уже настроена передача переменных окружения из `.env` файла. + +## Безопасность + +- ✅ Файл `.env` добавлен в `.gitignore` +- ✅ Файл `env.example` содержит только шаблоны без реальных значений +- ✅ Никогда не коммитьте `.env` в git +- ✅ Используйте разные токены для dev/prod окружений + diff --git a/play-life-backend/MIGRATION_BASELINE.md b/play-life-backend/MIGRATION_BASELINE.md new file mode 100644 index 0000000..5dcc0f1 --- /dev/null +++ b/play-life-backend/MIGRATION_BASELINE.md @@ -0,0 +1,120 @@ +# Инструкция по применению baseline миграции + +## Обзор + +После перехода на `golang-migrate` текущая схема БД была зафиксирована как baseline миграция `000001_baseline.up.sql`. Для существующих баз данных baseline миграция **не должна применяться автоматически** - вместо этого нужно использовать команду `migrate force` для установки текущей версии миграции. + +## Для существующих баз данных + +### Шаг 1: Создание backup + +**ОБЯЗАТЕЛЬНО** создайте backup базы данных перед применением baseline: + +```bash +# Используйте существующий скрипт dump-db.sh +./dump-db.sh + +# Или вручную: +pg_dump -h $DB_HOST -U $DB_USER -d $DB_NAME > backup_$(date +%Y%m%d_%H%M%S).sql +``` + +### Шаг 2: Установка версии миграции + +Для существующих баз данных нужно установить версию миграции в `1` (baseline), не применяя саму миграцию: + +```bash +# Установите переменные окружения +export DB_HOST=localhost +export DB_PORT=5432 +export DB_USER=playeng +export DB_PASSWORD=playeng +export DB_NAME=playeng + +# Установите версию миграции в 1 (baseline) +migrate -path ./play-life-backend/migrations \ + -database "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" \ + force 1 +``` + +**Важно:** Команда `force 1` устанавливает версию миграции в `1`, но **не выполняет** SQL из baseline миграции. Это правильно, так как схема уже существует. + +### Шаг 3: Проверка + +Проверьте, что версия миграции установлена правильно: + +```bash +migrate -path ./play-life-backend/migrations \ + -database "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" \ + version +``` + +Должно вывести: `1 (dirty)` + +Если выводит `1 (dirty)`, это нормально - это означает, что версия установлена, но миграция не была применена (что и требуется для baseline). + +### Шаг 4: Очистка dirty флага (опционально) + +Если нужно убрать dirty флаг: + +```bash +migrate -path ./play-life-backend/migrations \ + -database "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" \ + force 1 +``` + +## Для новых баз данных + +Для новых баз данных baseline миграция применится автоматически при первом запуске приложения через функцию `runMigrations()`. + +Или вручную: + +```bash +migrate -path ./play-life-backend/migrations \ + -database "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" \ + up +``` + +## Проверка схемы + +После применения baseline (или установки версии для существующих БД) можно проверить схему: + +```bash +# Экспорт схемы +pg_dump -h $DB_HOST -U $DB_USER -d $DB_NAME --schema-only > current_schema.sql + +# Сравнение с baseline (если нужно) +diff current_schema.sql play-life-backend/migrations/000001_baseline.up.sql +``` + +## Важные замечания + +1. **Никогда не применяйте baseline миграцию на существующих БД** - используйте только `migrate force 1` +2. **Всегда создавайте backup** перед любыми операциями с миграциями +3. **Проверяйте версию миграции** после установки baseline +4. **Новые миграции** будут применяться автоматически при запуске приложения + +## Устранение проблем + +### Ошибка "dirty database version" + +Если база данных находится в состоянии "dirty", исправьте это: + +```bash +migrate -path ./play-life-backend/migrations \ + -database "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" \ + force +``` + +Где `` - текущая версия миграции (обычно 1 для baseline). + +### Ошибка "no change" + +Если при применении миграций вы видите "no change", это нормально - база данных уже на актуальной версии. + +### Проблемы с путями к миграциям + +Убедитесь, что путь к миграциям правильный: +- Локально: `./play-life-backend/migrations` +- В Docker: `/migrations` + +Приложение автоматически проверяет оба пути. diff --git a/play-life-backend/MIGRATION_RISKS_AND_SOLUTIONS.md b/play-life-backend/MIGRATION_RISKS_AND_SOLUTIONS.md new file mode 100644 index 0000000..f208489 --- /dev/null +++ b/play-life-backend/MIGRATION_RISKS_AND_SOLUTIONS.md @@ -0,0 +1,458 @@ +# Анализ рисков миграции на golang-migrate с baseline + +## Критические риски + +### 1. Потеря данных при неправильном применении baseline + +**Риск**: При применении baseline миграции на существующую БД может произойти: +- Попытка создать уже существующие таблицы (ошибка) +- Потеря данных при DROP/CREATE операциях +- Конфликты с существующими данными + +**Вероятность**: Средняя +**Влияние**: Критическое + +**Решения**: + +1. **Обязательный backup перед применением** + ```bash + # Создать backup перед миграцией + ./dump-db.sh --env-file .env baseline-migration-backup + ``` + +2. **Использование `migrate force` вместо `migrate up` для существующих БД** + ```bash + # Для существующих БД - установить версию без применения + migrate -path ./migrations -database "postgres://..." force 1 + ``` + +3. **Проверка существования таблиц в baseline миграции** + - Использовать `CREATE TABLE IF NOT EXISTS` (но это не идеально для baseline) + - Или создать скрипт проверки перед применением + +4. **Тестирование на dev окружении** + - Сначала применить на dev БД + - Проверить целостность данных + - Только потом применять на production + +--- + +### 2. Ошибки в baseline миграции (неполная схема) + +**Риск**: Baseline миграция может не включать: +- Некоторые таблицы или колонки +- Индексы или constraints +- Materialized views +- Начальные данные (словарь с id=0) +- Sequences с правильными значениями + +**Вероятность**: Высокая +**Влияние**: Критическое + +**Решения**: + +1. **Автоматическая проверка полноты схемы** + ```bash + # Создать скрипт для сравнения текущей схемы с baseline + # Использовать pg_dump --schema-only для сравнения + pg_dump --schema-only -h $DB_HOST -U $DB_USER -d $DB_NAME > current_schema.sql + # Сравнить с baseline миграцией + ``` + +2. **Пошаговая сборка baseline** + - Собрать схему из всех init*DB функций + - Добавить все миграции 012-029 + - Проверить через `pg_dump --schema-only` на актуальной БД + +3. **Тестирование baseline на чистой БД** + ```bash + # Создать тестовую БД + createdb test_baseline + # Применить baseline + migrate -path ./migrations -database "postgres://.../test_baseline" up + # Сравнить схему с production + ``` + +4. **Валидация через SQL проверки** + - Добавить в baseline проверки существования всех таблиц + - Использовать `DO $$ BEGIN ... END $$;` блоки для валидации + +--- + +### 3. Проблемы с sequences и начальными данными + +**Риск**: +- Sequences могут быть не синхронизированы +- Начальные данные (словарь id=0) могут конфликтовать +- Автоинкременты могут начаться с неправильного значения + +**Вероятность**: Средняя +**Влияние**: Среднее + +**Решения**: + +1. **Правильная настройка sequences в baseline** + ```sql + -- После создания таблицы и вставки данных + SELECT setval('dictionaries_id_seq', + (SELECT MAX(id) FROM dictionaries), + true); + ``` + +2. **Использование ON CONFLICT для начальных данных** + ```sql + INSERT INTO dictionaries (id, name) + VALUES (0, 'Все слова') + ON CONFLICT (id) DO NOTHING; + ``` + +3. **Проверка sequences после baseline** + ```sql + -- Скрипт для проверки всех sequences + SELECT schemaname, sequencename, last_value + FROM pg_sequences; + ``` + +--- + +### 4. Проблемы с materialized views + +**Риск**: +- Materialized view может не создаться корректно +- Зависимости от таблиц могут быть нарушены +- Данные в MV могут быть неактуальными + +**Вероятность**: Средняя +**Влияние**: Среднее + +**Решения**: + +1. **Создание MV после всех таблиц** + - Убедиться, что все таблицы созданы до создания MV + - Использовать `DROP MATERIALIZED VIEW IF EXISTS` перед созданием + +2. **Обновление данных после создания** + ```sql + -- После создания MV + REFRESH MATERIALIZED VIEW weekly_report_mv; + ``` + +3. **Проверка зависимостей** + ```sql + -- Проверить зависимости MV + SELECT * FROM pg_depend + WHERE objid = 'weekly_report_mv'::regclass; + ``` + +--- + +### 5. Конфликты версий миграций + +**Риск**: +- Таблица `schema_migrations` может быть в неправильном состоянии +- Версия может быть установлена неправильно +- Конфликт между старой и новой системой миграций + +**Вероятность**: Средняя +**Влияние**: Высокое + +**Решения**: + +1. **Проверка состояния schema_migrations перед применением** + ```go + // Проверить, существует ли таблица schema_migrations + // Если да - проверить текущую версию + var version uint + err := db.QueryRow("SELECT version FROM schema_migrations LIMIT 1").Scan(&version) + ``` + +2. **Очистка старой таблицы (если была)** + ```sql + -- Если была старая таблица миграций + DROP TABLE IF EXISTS old_migrations_table; + ``` + +3. **Использование `migrate force` только для существующих БД** + - Новые БД должны использовать `migrate up` + - Существующие БД - `migrate force 1` + +--- + +### 6. Проблемы с окружениями (dev/prod различия) + +**Риск**: +- Различия в схемах между dev и prod +- Разные версии PostgreSQL +- Разные настройки БД + +**Вероятность**: Средняя +**Влияние**: Высокое + +**Решения**: + +1. **Проверка версии PostgreSQL** + ```sql + SELECT version(); + ``` + +2. **Тестирование на всех окружениях** + - Dev окружение + - Staging (если есть) + - Production (после успешного тестирования) + +3. **Документирование различий** + - Зафиксировать версию PostgreSQL + - Зафиксировать настройки БД + +--- + +### 7. Проблемы с откатом (rollback) + +**Риск**: +- Baseline миграция не может быть откачена +- Ошибки при откате последующих миграций +- Потеря данных при откате + +**Вероятность**: Низкая +**Влияние**: Высокое + +**Решения**: + +1. **Baseline не откатывается (по дизайну)** + - Пустой `000001_baseline.down.sql` + - Документировать это ограничение + +2. **Правильные down миграции для новых миграций** + - Каждая новая миграция должна иметь корректный down файл + - Тестировать откат на dev окружении + +3. **Backup перед откатом** + - Всегда создавать backup перед откатом + - Особенно на production + +--- + +### 8. Проблемы при старте приложения + +**Риск**: +- Миграции могут не примениться при старте +- Ошибки подключения к БД во время миграций +- Таймауты при применении миграций + +**Вероятность**: Средняя +**Влияние**: Высокое + +**Решения**: + +1. **Обработка ошибок миграций** + ```go + m, err := migrate.NewWithDatabaseInstance( + "file://migrations", + "postgres", driver) + if err != nil { + log.Fatal("Failed to initialize migrations:", err) + } + + if err := m.Up(); err != nil { + if err != migrate.ErrNoChange { + log.Fatal("Failed to apply migrations:", err) + } + log.Println("Database is up to date") + } + ``` + +2. **Retry логика для подключения к БД** + - Уже есть в коде (10 попыток) + - Применить перед миграциями + +3. **Таймауты для миграций** + ```go + // Установить таймаут для миграций + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + ``` + +4. **Логирование процесса миграций** + - Логировать каждую применяемую миграцию + - Логировать ошибки с деталями + +--- + +### 9. Проблемы с Docker и путями к миграциям + +**Риск**: +- Миграции могут не найтись в контейнере +- Неправильные пути к файлам миграций +- Проблемы с правами доступа + +**Вероятность**: Низкая +**Влияние**: Среднее + +**Решения**: + +1. **Проверка путей в Dockerfile** + ```dockerfile + # Убедиться, что миграции копируются + COPY play-life-backend/migrations /migrations + ``` + +2. **Использование абсолютных путей** + ```go + migrationsPath := "/migrations" + if _, err := os.Stat(migrationsPath); os.IsNotExist(err) { + // Fallback для локальной разработки + migrationsPath = "play-life-backend/migrations" + } + ``` + +3. **Проверка доступности миграций при старте** + ```go + // Проверить, что папка миграций существует + if _, err := os.Stat(migrationsPath); os.IsNotExist(err) { + log.Fatal("Migrations directory not found:", migrationsPath) + } + ``` + +--- + +### 10. Проблемы с параллельным доступом + +**Риск**: +- Несколько инстансов приложения могут пытаться применить миграции одновременно +- Конфликты при применении миграций + +**Вероятность**: Низкая +**Влияние**: Высокое + +**Решения**: + +1. **Блокировки на уровне БД** + - golang-migrate использует транзакции + - PostgreSQL блокирует таблицу schema_migrations + +2. **Применение миграций только в одном инстансе** + - Использовать флаг `--migrate` для запуска миграций + - Или применять миграции отдельным процессом + +3. **Проверка версии перед применением** + ```go + version, dirty, err := m.Version() + if dirty { + log.Fatal("Database is in dirty state, manual intervention required") + } + ``` + +--- + +## План митигации рисков + +### Этап 1: Подготовка (до применения baseline) + +1. ✅ Создать backup всех БД (dev, staging, prod) +2. ✅ Собрать полную схему через `pg_dump --schema-only` +3. ✅ Создать baseline миграцию на основе схемы +4. ✅ Протестировать baseline на чистой БД +5. ✅ Сравнить схему после baseline с текущей схемой + +### Этап 2: Тестирование (на dev окружении) + +1. ✅ Применить baseline через `migrate force 1` +2. ✅ Проверить целостность данных +3. ✅ Проверить работу приложения +4. ✅ Проверить sequences и начальные данные +5. ✅ Проверить materialized views + +### Этап 3: Применение (на production) + +1. ✅ Создать backup production БД +2. ✅ Применить baseline через `migrate force 1` +3. ✅ Проверить работу приложения +4. ✅ Мониторинг в течение первых часов + +### Этап 4: Мониторинг (после применения) + +1. ✅ Проверить логи приложения +2. ✅ Проверить ошибки БД +3. ✅ Проверить производительность +4. ✅ Собрать обратную связь от пользователей + +--- + +## Чеклист перед применением baseline + +- [ ] Backup всех БД создан и проверен +- [ ] Baseline миграция протестирована на чистой БД +- [ ] Схема после baseline совпадает с текущей схемой +- [ ] Тестирование на dev окружении успешно +- [ ] Инструкции по применению baseline готовы +- [ ] Команда проинформирована о миграции +- [ ] Окно для миграции запланировано (для production) +- [ ] План отката подготовлен (если что-то пойдет не так) + +--- + +## Скрипты для проверки + +### Скрипт проверки схемы + +```bash +#!/bin/bash +# check_schema.sh - Проверка полноты baseline миграции + +DB_HOST=${DB_HOST:-localhost} +DB_PORT=${DB_PORT:-5432} +DB_USER=${DB_USER:-playeng} +DB_PASSWORD=${DB_PASSWORD:-playeng} +DB_NAME=${DB_NAME:-playeng} + +echo "Проверка схемы БД..." + +# Получить список всех таблиц +PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c " +SELECT tablename +FROM pg_tables +WHERE schemaname = 'public' +ORDER BY tablename; +" > current_tables.txt + +echo "Таблицы в БД сохранены в current_tables.txt" +echo "Сравните с таблицами в baseline миграции" +``` + +### Скрипт применения baseline + +```bash +#!/bin/bash +# apply_baseline.sh - Безопасное применение baseline + +set -e + +DB_HOST=${DB_HOST:-localhost} +DB_PORT=${DB_PORT:-5432} +DB_USER=${DB_USER:-playeng} +DB_PASSWORD=${DB_PASSWORD:-playeng} +DB_NAME=${DB_NAME:-playeng} + +DATABASE_URL="postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" + +echo "⚠️ ВНИМАНИЕ: Это применит baseline миграцию!" +echo "База данных: $DB_NAME" +echo "Хост: $DB_HOST:$DB_PORT" +read -p "Вы уверены? (yes/no): " confirm + +if [ "$confirm" != "yes" ]; then + echo "Отменено" + exit 1 +fi + +# Создать backup +echo "Создание backup..." +./dump-db.sh --env-file .env baseline-backup-$(date +%Y%m%d_%H%M%S) + +# Применить baseline +echo "Применение baseline..." +migrate -path ./play-life-backend/migrations -database "$DATABASE_URL" force 1 + +echo "✅ Baseline применен успешно" +echo "Проверьте работу приложения" +``` diff --git a/play-life-backend/admin.html b/play-life-backend/admin.html new file mode 100644 index 0000000..8de5fe5 --- /dev/null +++ b/play-life-backend/admin.html @@ -0,0 +1,394 @@ + + + + + + Play Life Backend - Admin Panel + + + + + +
+

🎯 Play Life Backend - Admin Panel

+ +
+ +
+

+ 🎯 Weekly Goals Setup + +

+

+ Нажмите кнопку для установки целей на текущую неделю на основе медианы за последние 3 месяца (с отправкой в чат). Обычно срабатывает автоматически в начале недели. +

+ +
+
+ + +
+

+ 📊 project_score_sample_mv + +

+

+ Обновить материализованное представление и показать данные текущего пользователя (по одному представителю на вариант баллов проекта). +

+ +
+
+
+
+ + + + + diff --git a/play-life-backend/apply_baseline.sh b/play-life-backend/apply_baseline.sh new file mode 100755 index 0000000..3a6ee74 --- /dev/null +++ b/play-life-backend/apply_baseline.sh @@ -0,0 +1,168 @@ +#!/bin/bash + +# Безопасный скрипт для применения baseline миграции к существующим БД +# Включает создание backup, проверки и применение baseline + +set -e + +# Цвета для вывода +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Получаем переменные окружения +DB_HOST=${DB_HOST:-localhost} +DB_PORT=${DB_PORT:-5432} +DB_USER=${DB_USER:-playeng} +DB_PASSWORD=${DB_PASSWORD:-playeng} +DB_NAME=${DB_NAME:-playeng} + +MIGRATIONS_PATH="play-life-backend/migrations" +BACKUP_DIR="../database-dumps" + +echo "=== Применение baseline миграции ===" +echo "" + +# Проверяем наличие необходимых инструментов +if ! command -v migrate &> /dev/null; then + echo -e "${RED}Ошибка: migrate не найден. Установите golang-migrate:${NC}" + echo " brew install golang-migrate" + echo " или" + echo " go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest" + exit 1 +fi + +if ! command -v pg_dump &> /dev/null; then + echo -e "${RED}Ошибка: pg_dump не найден. Установите PostgreSQL client tools.${NC}" + exit 1 +fi + +# Проверяем наличие директории миграций +if [ ! -d "$MIGRATIONS_PATH" ]; then + echo -e "${RED}Ошибка: Директория миграций не найдена: $MIGRATIONS_PATH${NC}" + exit 1 +fi + +# Проверяем наличие baseline миграции +if [ ! -f "$MIGRATIONS_PATH/000001_baseline.up.sql" ]; then + echo -e "${RED}Ошибка: Baseline миграция не найдена: $MIGRATIONS_PATH/000001_baseline.up.sql${NC}" + exit 1 +fi + +echo "Параметры подключения:" +echo " Host: $DB_HOST" +echo " Port: $DB_PORT" +echo " User: $DB_USER" +echo " Database: $DB_NAME" +echo "" + +# Проверяем подключение к БД +echo "1. Проверка подключения к БД..." +PGPASSWORD=$DB_PASSWORD psql \ + -h $DB_HOST \ + -p $DB_PORT \ + -U $DB_USER \ + -d $DB_NAME \ + -c "SELECT 1;" > /dev/null 2>&1 + +if [ $? -ne 0 ]; then + echo -e "${RED}Ошибка: Не удалось подключиться к БД${NC}" + exit 1 +fi + +echo -e "${GREEN}✓ Подключение успешно${NC}" +echo "" + +# Проверяем текущую версию миграции +echo "2. Проверка текущей версии миграции..." +DATABASE_URL="postgres://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME?sslmode=disable" + +CURRENT_VERSION=$(migrate -path "$MIGRATIONS_PATH" -database "$DATABASE_URL" version 2>&1 || echo "none") + +if echo "$CURRENT_VERSION" | grep -q "dirty"; then + echo -e "${YELLOW}⚠ База данных находится в состоянии 'dirty'${NC}" + echo " Это нормально для baseline - будет исправлено" +elif echo "$CURRENT_VERSION" | grep -q "^[0-9]"; then + VERSION_NUM=$(echo "$CURRENT_VERSION" | grep -oE "^[0-9]+" || echo "0") + if [ "$VERSION_NUM" -ge 1 ]; then + echo -e "${GREEN}✓ Версия миграции уже установлена: $VERSION_NUM${NC}" + echo " Baseline уже применен, дальнейшие действия не требуются" + exit 0 + fi +fi + +echo " Текущая версия: $CURRENT_VERSION" +echo "" + +# Создаем backup +echo "3. Создание backup БД..." +mkdir -p "$BACKUP_DIR" +BACKUP_FILE="$BACKUP_DIR/baseline_backup_$(date +%Y%m%d_%H%M%S).sql.gz" + +PGPASSWORD=$DB_PASSWORD pg_dump \ + -h $DB_HOST \ + -p $DB_PORT \ + -U $DB_USER \ + -d $DB_NAME \ + | gzip > "$BACKUP_FILE" + +if [ $? -ne 0 ]; then + echo -e "${RED}Ошибка: Не удалось создать backup${NC}" + exit 1 +fi + +BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1) +echo -e "${GREEN}✓ Backup создан: $BACKUP_FILE (размер: $BACKUP_SIZE)${NC}" +echo "" + +# Подтверждение +echo "4. Подтверждение применения baseline..." +echo "" +echo -e "${YELLOW}ВНИМАНИЕ:${NC}" +echo " Будет установлена версия миграции в 1 (baseline)" +echo " Сама миграция НЕ будет применена (схема уже существует)" +echo " Backup сохранен в: $BACKUP_FILE" +echo "" +read -p "Продолжить? (yes/no): " CONFIRM + +if [ "$CONFIRM" != "yes" ]; then + echo "Отменено пользователем" + exit 0 +fi + +# Применяем baseline (force 1) +echo "" +echo "5. Установка версии миграции в 1 (baseline)..." +migrate -path "$MIGRATIONS_PATH" \ + -database "$DATABASE_URL" \ + force 1 + +if [ $? -ne 0 ]; then + echo -e "${RED}Ошибка: Не удалось установить версию миграции${NC}" + echo " Backup доступен в: $BACKUP_FILE" + exit 1 +fi + +echo -e "${GREEN}✓ Версия миграции установлена${NC}" +echo "" + +# Проверяем результат +echo "6. Проверка результата..." +FINAL_VERSION=$(migrate -path "$MIGRATIONS_PATH" -database "$DATABASE_URL" version 2>&1) +echo " Версия миграции: $FINAL_VERSION" + +if echo "$FINAL_VERSION" | grep -qE "^1"; then + echo -e "${GREEN}✓ Baseline успешно применен!${NC}" +else + echo -e "${YELLOW}⚠ Версия миграции: $FINAL_VERSION${NC}" + echo " Это может быть нормально, если база в состоянии 'dirty'" +fi + +echo "" +echo "=== Готово ===" +echo "" +echo "Backup сохранен в: $BACKUP_FILE" +echo "Версия миграции установлена в: 1 (baseline)" +echo "" +echo "Теперь приложение будет автоматически применять новые миграции при запуске." diff --git a/play-life-backend/docker-compose.yml b/play-life-backend/docker-compose.yml new file mode 100644 index 0000000..060fc1c --- /dev/null +++ b/play-life-backend/docker-compose.yml @@ -0,0 +1,41 @@ +version: '3.8' + +services: + db: + image: postgres:15-alpine + restart: unless-stopped + environment: + POSTGRES_USER: ${DB_USER:-playeng} + POSTGRES_PASSWORD: ${DB_PASSWORD:-playeng} + POSTGRES_DB: ${DB_NAME:-playeng} + ports: + - "${DB_PORT:-5432}:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-playeng}"] + interval: 10s + timeout: 5s + retries: 5 + env_file: + - ../.env + - .env # Локальный .env имеет приоритет + + backend: + build: . + ports: + - "${PORT:-8080}:8080" + environment: + DB_HOST: db + DB_PORT: 5432 + DB_USER: ${DB_USER:-playeng} + DB_PASSWORD: ${DB_PASSWORD:-playeng} + DB_NAME: ${DB_NAME:-playeng} + PORT: ${PORT:-8080} + depends_on: + db: + condition: service_healthy + volumes: + - ./migrations:/migrations + env_file: + - ../.env + - .env # Локальный .env имеет приоритет + diff --git a/play-life-backend/go.mod b/play-life-backend/go.mod new file mode 100644 index 0000000..1edcd6c --- /dev/null +++ b/play-life-backend/go.mod @@ -0,0 +1,27 @@ +module play-eng-backend + +go 1.24.0 + +require ( + github.com/chromedp/chromedp v0.14.2 + github.com/disintegration/imaging v1.6.2 + github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 + github.com/golang-jwt/jwt/v5 v5.3.0 + github.com/golang-migrate/migrate/v4 v4.19.1 + github.com/gorilla/mux v1.8.1 + github.com/joho/godotenv v1.5.1 + github.com/lib/pq v1.10.9 + github.com/robfig/cron/v3 v3.0.1 + golang.org/x/crypto v0.45.0 +) + +require ( + github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327 // indirect + github.com/chromedp/sysutil v1.1.0 // indirect + github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.4.0 // indirect + golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect + golang.org/x/sys v0.38.0 // indirect +) diff --git a/play-life-backend/go.sum b/play-life-backend/go.sum new file mode 100644 index 0000000..23888dd --- /dev/null +++ b/play-life-backend/go.sum @@ -0,0 +1,98 @@ +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327 h1:UQ4AU+BGti3Sy/aLU8KVseYKNALcX9UXY6DfpwQ6J8E= +github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327/go.mod h1:NItd7aLkcfOA/dcMXvl8p1u+lQqioRMq/SqDp71Pb/k= +github.com/chromedp/chromedp v0.14.2 h1:r3b/WtwM50RsBZHMUm9fsNhhzRStTHrKdr2zmwbZSzM= +github.com/chromedp/chromedp v0.14.2/go.mod h1:rHzAv60xDE7VNy/MYtTUrYreSc0ujt2O1/C3bzctYBo= +github.com/chromedp/sysutil v1.1.0 h1:PUFNv5EcprjqXZD9nJb9b/c9ibAbxiYo4exNWZyipwM= +github.com/chromedp/sysutil v1.1.0/go.mod h1:WiThHUdltqCNKGc4gaU50XgYjwjYIhKWoHGPTUfWTJ8= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dhui/dktest v0.4.6 h1:+DPKyScKSEp3VLtbMDHcUq6V5Lm5zfZZVb0Sk7Ahom4= +github.com/dhui/dktest v0.4.6/go.mod h1:JHTSYDtKkvFNFHJKqCzVzqXecyv+tKt8EzceOmQOgbU= +github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= +github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= +github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 h1:iizUGZ9pEquQS5jTGkh4AqeeHCMbfbjeb0zMt0aEFzs= +github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc= +github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= +github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= +github.com/golang-migrate/migrate/v4 v4.19.1 h1:OCyb44lFuQfYXYLx1SCxPZQGU7mcaZ7gH9yH4jSFbBA= +github.com/golang-migrate/migrate/v4 v4.19.1/go.mod h1:CTcgfjxhaUtsLipnLoQRWCrjYXycRz/g5+RWDuYgPrE= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhAVbbWWBzr41ElhJx5tXPWkIHA2HWPRuw= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/play-life-backend/main.go b/play-life-backend/main.go new file mode 100644 index 0000000..a8dd052 --- /dev/null +++ b/play-life-backend/main.go @@ -0,0 +1,16617 @@ +package main + +import ( + "bytes" + "compress/gzip" + "context" + "crypto/rand" + "database/sql" + "encoding/base64" + "encoding/hex" + "encoding/json" + "fmt" + "html" + "io" + "log" + "math" + "net/http" + "net/url" + "os" + "path/filepath" + "regexp" + "sort" + "strconv" + "strings" + "sync" + "time" + "unicode/utf16" + + "image/jpeg" + + mathrand "math/rand" + + "github.com/chromedp/chromedp" + "github.com/disintegration/imaging" + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + "github.com/golang-jwt/jwt/v5" + "github.com/golang-migrate/migrate/v4" + _ "github.com/golang-migrate/migrate/v4/database/postgres" + _ "github.com/golang-migrate/migrate/v4/source/file" + "github.com/gorilla/mux" + "github.com/joho/godotenv" + "github.com/lib/pq" + _ "github.com/lib/pq" + "github.com/robfig/cron/v3" + "golang.org/x/crypto/bcrypt" +) + +// Палитра из 30 контрастных цветов для проектов (HEX формат) +// Используется для генерации случайного цвета при создании проекта +// Должна быть синхронизирована с frontend (projectUtils.js) +var projectColorsPalette = []string{ + "#EF4444", // Красный + "#F97316", // Оранжевый + "#F59E0B", // Янтарный + "#EAB308", // Желтый + "#84CC16", // Лайм + "#22C55E", // Зеленый + "#10B981", // Изумрудный + "#14B8A6", // Бирюзовый + "#06B6D4", // Голубой + "#0EA5E9", // Небесный + "#3B82F6", // Синий + "#6366F1", // Индиго + "#8B5CF6", // Фиолетовый + "#A855F7", // Пурпурный + "#D946EF", // Фуксия + "#EC4899", // Розовый + "#F43F5E", // Розово-красный + "#DC2626", // Темно-красный + "#EA580C", // Темно-оранжевый + "#CA8A04", // Темно-желтый + "#65A30D", // Темно-лайм + "#16A34A", // Темно-зеленый + "#059669", // Темно-изумрудный + "#0D9488", // Темно-бирюзовый + "#0891B2", // Темно-голубой + "#0284C7", // Темно-небесный + "#2563EB", // Темно-синий + "#4F46E5", // Темно-индиго + "#7C3AED", // Темно-фиолетовый + "#9333EA", // Темно-пурпурный +} + +type Word struct { + ID int `json:"id"` + Name string `json:"name"` + Translation string `json:"translation"` + Description string `json:"description"` + Success int `json:"success"` + Failure int `json:"failure"` + LastSuccess *string `json:"last_success_at,omitempty"` + LastFailure *string `json:"last_failure_at,omitempty"` +} + +type WordRequest struct { + Name string `json:"name"` + Translation string `json:"translation"` + Description string `json:"description"` + DictionaryID *int `json:"dictionary_id,omitempty"` +} + +type WordsRequest struct { + Words []WordRequest `json:"words"` +} + +type TestProgressUpdate struct { + ID int `json:"id"` + Success int `json:"success"` + Failure int `json:"failure"` + LastSuccessAt *string `json:"last_success_at,omitempty"` + LastFailureAt *string `json:"last_failure_at,omitempty"` +} + +type TestProgressRequest struct { + Words []TestProgressUpdate `json:"words"` + ConfigID *int `json:"config_id,omitempty"` +} + +type Config struct { + ID int `json:"id"` + WordsCount int `json:"words_count"` + MaxCards *int `json:"max_cards,omitempty"` +} + +type ConfigRequest struct { + WordsCount int `json:"words_count"` + MaxCards *int `json:"max_cards,omitempty"` + DictionaryIDs []int `json:"dictionary_ids,omitempty"` +} + +type Dictionary struct { + ID int `json:"id"` + Name string `json:"name"` + WordsCount int `json:"wordsCount"` +} + +type DictionaryRequest struct { + Name string `json:"name"` +} + +type TestConfigsAndDictionariesResponse struct { + Configs []Config `json:"configs"` + Dictionaries []Dictionary `json:"dictionaries"` +} + +type WeeklyProjectStats struct { + ProjectName string `json:"project_name"` + TotalScore float64 `json:"total_score"` + MinGoalScore float64 `json:"min_goal_score"` + MaxGoalScore *float64 `json:"max_goal_score,omitempty"` + Priority *int `json:"priority,omitempty"` + CalculatedScore float64 `json:"calculated_score"` + TodayChange *float64 `json:"today_change,omitempty"` + Color string `json:"color"` +} + +type GroupsProgress struct { + Group1 *float64 `json:"group1,omitempty"` + Group2 *float64 `json:"group2,omitempty"` + Group0 *float64 `json:"group0,omitempty"` +} + +type WeeklyStatsResponse struct { + Total *float64 `json:"total,omitempty"` + GroupProgress1 *float64 `json:"group_progress_1,omitempty"` + GroupProgress2 *float64 `json:"group_progress_2,omitempty"` + GroupProgress0 *float64 `json:"group_progress_0,omitempty"` + Projects []WeeklyProjectStats `json:"projects"` +} + +type MessagePostRequest struct { + Body struct { + Text string `json:"text"` + } `json:"body"` +} + +type ProcessedNode struct { + Project string `json:"project"` + Score float64 `json:"score"` +} + +type ProcessedEntry struct { + Text string `json:"text"` + CreatedDate string `json:"createdDate"` + Nodes []ProcessedNode `json:"nodes"` + Raw string `json:"raw"` + Markdown string `json:"markdown"` +} + +type WeeklyGoalSetup struct { + ProjectName string `json:"project_name"` + MinGoalScore float64 `json:"min_goal_score"` + MaxGoalScore float64 `json:"max_goal_score"` +} + +// ProjectScoreSampleMvRow represents one row from project_score_sample_mv +type ProjectScoreSampleMvRow struct { + ProjectID int `json:"project_id"` + Score float64 `json:"score"` + EntryMessage string `json:"entry_message"` + UserID *int `json:"user_id,omitempty"` + CreatedDate time.Time `json:"created_date"` +} + +type Project struct { + ProjectID int `json:"project_id"` + ProjectName string `json:"project_name"` + Priority *int `json:"priority,omitempty"` + Color string `json:"color"` +} + +type ProjectPriorityUpdate struct { + ID int `json:"id"` + Priority *int `json:"priority"` +} + +type ProjectPriorityRequest struct { + Body []ProjectPriorityUpdate `json:"body"` +} + +type FullStatisticsItem struct { + ProjectName string `json:"project_name"` + ReportYear int `json:"report_year"` + ReportWeek int `json:"report_week"` + TotalScore float64 `json:"total_score"` + MinGoalScore float64 `json:"min_goal_score"` + MaxGoalScore float64 `json:"max_goal_score"` + NormalizedTotalScore float64 `json:"normalized_total_score"` + Color string `json:"color"` +} + +type TodayEntryNode struct { + ProjectName string `json:"project_name"` + Score float64 `json:"score"` + Index int `json:"index"` +} + +type TodayEntry struct { + ID int `json:"id"` + Text string `json:"text"` + CreatedDate string `json:"created_date"` + Nodes []TodayEntryNode `json:"nodes"` +} + +type TodoistWebhook struct { + EventName string `json:"event_name"` + EventData map[string]interface{} `json:"event_data"` +} + +type TelegramEntity struct { + Type string `json:"type"` + Offset int `json:"offset"` + Length int `json:"length"` +} + +type TelegramChat struct { + ID int64 `json:"id"` +} + +type TelegramUser struct { + ID int64 `json:"id"` +} + +type TelegramMessage struct { + Text string `json:"text"` + Entities []TelegramEntity `json:"entities"` + Chat TelegramChat `json:"chat"` + From *TelegramUser `json:"from,omitempty"` +} + +type TelegramWebhook struct { + Message TelegramMessage `json:"message"` +} + +// TelegramUpdate - структура для Telegram webhook (обычно это Update объект) +type TelegramUpdate struct { + UpdateID int `json:"update_id"` + Message *TelegramMessage `json:"message,omitempty"` + EditedMessage *TelegramMessage `json:"edited_message,omitempty"` +} + +// Tracking structures +type TrackingUserStats struct { + UserID int `json:"user_id"` + UserName string `json:"user_name"` + IsCurrentUser bool `json:"is_current_user"` + Total *float64 `json:"total,omitempty"` + Projects []TrackingProjectStats `json:"projects"` +} + +type TrackingProjectStats struct { + ProjectName string `json:"project_name"` + CalculatedScore float64 `json:"calculated_score"` // процент выполнения + Priority *int `json:"priority,omitempty"` +} + +type TrackingStatsResponse struct { + WeekNumber int `json:"week_number"` + Year int `json:"year"` + Users []TrackingUserStats `json:"users"` +} + +type TrackingAccessResponse struct { + Trackers []TrackingUser `json:"trackers"` // кто меня отслеживает + Tracked []TrackingUser `json:"tracked"` // кого я отслеживаю +} + +type TrackingUser struct { + ID int `json:"id"` + RelationID int `json:"relation_id"` // id записи в user_tracking для удаления + Name string `json:"name"` + Email string `json:"email"` + CreatedAt time.Time `json:"created_at"` +} + +type TrackingInviteInfo struct { + UserID int `json:"user_id"` + UserName string `json:"user_name"` +} + +type TrackingInviteResponse struct { + InviteURL string `json:"invite_url"` +} + +// Task structures +type Task struct { + ID int `json:"id"` + Name string `json:"name"` + Completed int `json:"completed"` + LastCompletedAt *string `json:"last_completed_at,omitempty"` + NextShowAt *string `json:"next_show_at,omitempty"` + RewardMessage *string `json:"reward_message,omitempty"` + ProgressionBase *float64 `json:"progression_base,omitempty"` + RepetitionPeriod *string `json:"repetition_period,omitempty"` + RepetitionDate *string `json:"repetition_date,omitempty"` + WishlistID *int `json:"wishlist_id,omitempty"` + ConfigID *int `json:"config_id,omitempty"` + RewardPolicy *string `json:"reward_policy,omitempty"` // "personal" или "general" для задач, связанных с желаниями + Position *int `json:"position,omitempty"` // Position for subtasks + // Дополнительные поля для списка задач (без omitempty чтобы всегда передавались) + ProjectNames []string `json:"project_names"` + GroupName *string `json:"group_name,omitempty"` // Название группы задачи + SubtasksCount int `json:"subtasks_count"` + HasProgression bool `json:"has_progression"` + AutoComplete bool `json:"auto_complete"` +} + +type Reward struct { + ID int `json:"id"` + Position int `json:"position"` + ProjectName string `json:"project_name"` + Value float64 `json:"value"` + UseProgression bool `json:"use_progression"` +} + +type Subtask struct { + Task Task `json:"task"` + Rewards []Reward `json:"rewards"` +} + +type WishlistInfo struct { + ID int `json:"id"` + Name string `json:"name"` + Unlocked bool `json:"unlocked"` +} + +type TaskDetail struct { + Task Task `json:"task"` + Rewards []Reward `json:"rewards"` + Subtasks []Subtask `json:"subtasks"` + WishlistInfo *WishlistInfo `json:"wishlist_info,omitempty"` + // Test-specific fields (only present if task has config_id) + WordsCount *int `json:"words_count,omitempty"` + MaxCards *int `json:"max_cards,omitempty"` + DictionaryIDs []int `json:"dictionary_ids,omitempty"` + // Draft fields (only present if draft exists) + DraftProgressionValue *float64 `json:"draft_progression_value,omitempty"` + DraftSubtasks []DraftSubtask `json:"draft_subtasks,omitempty"` +} + +type RewardRequest struct { + Position int `json:"position"` + ProjectName string `json:"project_name"` + Value float64 `json:"value"` + UseProgression bool `json:"use_progression"` +} + +type SubtaskRequest struct { + ID *int `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + RewardMessage *string `json:"reward_message,omitempty"` + Position *int `json:"position,omitempty"` + Rewards []RewardRequest `json:"rewards,omitempty"` +} + +type TaskRequest struct { + Name string `json:"name"` + ProgressionBase *float64 `json:"progression_base,omitempty"` + RewardMessage *string `json:"reward_message,omitempty"` + RepetitionPeriod *string `json:"repetition_period,omitempty"` + RepetitionDate *string `json:"repetition_date,omitempty"` + WishlistID *int `json:"wishlist_id,omitempty"` + RewardPolicy *string `json:"reward_policy,omitempty"` // "personal" или "general" для задач, связанных с желаниями + GroupName *string `json:"group_name,omitempty"` // Название группы задачи + Rewards []RewardRequest `json:"rewards,omitempty"` + Subtasks []SubtaskRequest `json:"subtasks,omitempty"` + // Test-specific fields + IsTest bool `json:"is_test,omitempty"` + WordsCount *int `json:"words_count,omitempty"` + MaxCards *int `json:"max_cards,omitempty"` + DictionaryIDs []int `json:"dictionary_ids,omitempty"` +} + +type CompleteTaskRequest struct { + Value *float64 `json:"value,omitempty"` + ChildrenTaskIDs []int `json:"children_task_ids,omitempty"` +} + +type PostponeTaskRequest struct { + NextShowAt *string `json:"next_show_at"` +} + +// ============================================ +// Task Draft structures +// ============================================ + +type SaveDraftRequest struct { + ProgressionValue *float64 `json:"progression_value,omitempty"` + ChildrenTaskIDs []int `json:"children_task_ids,omitempty"` // только checked подзадачи + AutoComplete bool `json:"auto_complete"` +} + +type TaskDraft struct { + ID int + TaskID int + UserID int + ProgressionValue *float64 + AutoComplete bool + CreatedAt time.Time + UpdatedAt time.Time +} + +type TaskDraftSubtask struct { + ID int + TaskDraftID int + SubtaskID int +} + +type DraftSubtask struct { + SubtaskID int `json:"subtask_id"` +} + +// ============================================ +// Wishlist structures +// ============================================ + +type LinkedTask struct { + ID int `json:"id"` + Name string `json:"name"` + Completed int `json:"completed"` + NextShowAt *string `json:"next_show_at,omitempty"` + UserID *int `json:"user_id,omitempty"` // ID пользователя-владельца задачи +} + +type WishlistItem struct { + ID int `json:"id"` + Name string `json:"name"` + Price *float64 `json:"price,omitempty"` + ImageURL *string `json:"image_url,omitempty"` + Link *string `json:"link,omitempty"` + Unlocked bool `json:"unlocked"` + Completed bool `json:"completed"` + FirstLockedCondition *UnlockConditionDisplay `json:"first_locked_condition,omitempty"` + MoreLockedConditions int `json:"more_locked_conditions,omitempty"` + LockedConditionsCount int `json:"locked_conditions_count,omitempty"` // Общее количество заблокированных условий + UnlockConditions []UnlockConditionDisplay `json:"unlock_conditions,omitempty"` + LinkedTask *LinkedTask `json:"linked_task,omitempty"` + TasksCount int `json:"tasks_count,omitempty"` // Количество задач для этого желания + GroupName *string `json:"group_name,omitempty"` // Название группы желания +} + +type UnlockConditionDisplay struct { + ID int `json:"id"` + Type string `json:"type"` + TaskID *int `json:"task_id,omitempty"` // ID задачи (для task_completion) + TaskName *string `json:"task_name,omitempty"` + TaskNextShowAt *string `json:"task_next_show_at,omitempty"` // Дата следующего показа задачи (для task_completion) + ProjectID *int `json:"project_id,omitempty"` // ID проекта (для project_points) + ProjectName *string `json:"project_name,omitempty"` + RequiredPoints *float64 `json:"required_points,omitempty"` + StartDate *string `json:"start_date,omitempty"` // Дата начала подсчёта (YYYY-MM-DD), NULL = за всё время + DisplayOrder int `json:"display_order"` + // Прогресс выполнения + CurrentPoints *float64 `json:"current_points,omitempty"` // Текущее количество баллов (для project_points) + TaskCompleted *bool `json:"task_completed,omitempty"` // Выполнена ли задача (для task_completion) + // Персональные цели + UserID *int `json:"user_id,omitempty"` // ID пользователя для персональных целей + UserName *string `json:"user_name,omitempty"` // Имя пользователя для персональных целей + // Срок разблокировки + WeeksText *string `json:"weeks_text,omitempty"` // Отформатированный текст срока разблокировки +} + +type WishlistRequest struct { + Name string `json:"name"` + Price *float64 `json:"price,omitempty"` + Link *string `json:"link,omitempty"` + GroupName *string `json:"group_name,omitempty"` // Название группы желания + UnlockConditions []UnlockConditionRequest `json:"unlock_conditions,omitempty"` +} + +type UnlockConditionRequest struct { + ID *int `json:"id,omitempty"` // ID существующего условия (для сохранения чужих условий) + Type string `json:"type"` + TaskID *int `json:"task_id,omitempty"` + ProjectID *int `json:"project_id,omitempty"` + RequiredPoints *float64 `json:"required_points,omitempty"` + StartDate *string `json:"start_date,omitempty"` // Дата начала подсчёта (YYYY-MM-DD), NULL = за всё время + DisplayOrder *int `json:"display_order,omitempty"` +} + +type WishlistResponse struct { + Unlocked []WishlistItem `json:"unlocked"` + Locked []WishlistItem `json:"locked"` + Completed []WishlistItem `json:"completed,omitempty"` + CompletedCount int `json:"completed_count"` // Количество завершённых желаний +} + +// ============================================ +// Wishlist Boards (доски желаний) +// ============================================ + +type WishlistBoard struct { + ID int `json:"id"` + OwnerID int `json:"owner_id"` + OwnerName string `json:"owner_name,omitempty"` + Name string `json:"name"` + InviteEnabled bool `json:"invite_enabled"` + InviteToken *string `json:"invite_token,omitempty"` + InviteURL *string `json:"invite_url,omitempty"` + MemberCount int `json:"member_count"` + IsOwner bool `json:"is_owner"` + CreatedAt time.Time `json:"created_at"` +} + +type BoardMember struct { + ID int `json:"id"` + UserID int `json:"user_id"` + Name string `json:"name"` + Email string `json:"email"` + JoinedAt time.Time `json:"joined_at"` +} + +type BoardRequest struct { + Name string `json:"name"` + InviteEnabled *bool `json:"invite_enabled,omitempty"` +} + +type BoardInviteInfo struct { + BoardID int `json:"board_id"` + Name string `json:"name"` + OwnerName string `json:"owner_name"` + MemberCount int `json:"member_count"` +} + +type JoinBoardResponse struct { + Board WishlistBoard `json:"board"` + Message string `json:"message"` +} + +// ============================================ +// Helper functions for repetition_date +// ============================================ + +// calculateNextShowAtFromRepetitionDate calculates the next occurrence date based on repetition_date pattern +// Formats: +// - "N week" - Nth day of week (1=Monday, 7=Sunday) +// - "N month" - Nth day of month (1-31) +// - "MM-DD year" - specific date each year +func calculateNextShowAtFromRepetitionDate(repetitionDate string, fromDate time.Time) *time.Time { + if repetitionDate == "" { + return nil + } + + parts := strings.Fields(strings.TrimSpace(repetitionDate)) + if len(parts) < 2 { + return nil + } + + value := parts[0] + unit := strings.ToLower(parts[1]) + + // Start from tomorrow at midnight + nextDate := time.Date(fromDate.Year(), fromDate.Month(), fromDate.Day(), 0, 0, 0, 0, fromDate.Location()) + nextDate = nextDate.AddDate(0, 0, 1) + + switch unit { + case "week": + // N-th day of week (1=Monday, 7=Sunday) + dayOfWeek, err := strconv.Atoi(value) + if err != nil || dayOfWeek < 1 || dayOfWeek > 7 { + return nil + } + // Go: Sunday=0, Monday=1, ..., Saturday=6 + // Our format: Monday=1, ..., Sunday=7 + // Convert our format to Go format + targetGoDay := dayOfWeek % 7 // Monday(1)->1, Sunday(7)->0 + + currentGoDay := int(nextDate.Weekday()) + daysUntil := (targetGoDay - currentGoDay + 7) % 7 + if daysUntil == 0 { + daysUntil = 7 // If same day, go to next week + } + nextDate = nextDate.AddDate(0, 0, daysUntil) + + case "month": + // N-th day of month + dayOfMonth, err := strconv.Atoi(value) + if err != nil || dayOfMonth < 1 || dayOfMonth > 31 { + return nil + } + + // Find the next occurrence of this day + for i := 0; i < 12; i++ { // Check up to 12 months ahead + // Get the last day of the current month + year, month, _ := nextDate.Date() + lastDayOfMonth := time.Date(year, month+1, 0, 0, 0, 0, 0, nextDate.Location()).Day() + + // Use the actual day (capped at last day of month if needed) + actualDay := dayOfMonth + if actualDay > lastDayOfMonth { + actualDay = lastDayOfMonth + } + + candidateDate := time.Date(year, month, actualDay, 0, 0, 0, 0, nextDate.Location()) + + // If this date is in the future (after fromDate), use it + if candidateDate.After(fromDate) { + nextDate = candidateDate + break + } + + // Otherwise, try next month + nextDate = time.Date(year, month+1, 1, 0, 0, 0, 0, nextDate.Location()) + } + + case "year": + // MM-DD format (e.g., "02-01" for February 1st) + dateParts := strings.Split(value, "-") + if len(dateParts) != 2 { + return nil + } + month, err1 := strconv.Atoi(dateParts[0]) + day, err2 := strconv.Atoi(dateParts[1]) + if err1 != nil || err2 != nil || month < 1 || month > 12 || day < 1 || day > 31 { + return nil + } + + // Find the next occurrence of this date + year := nextDate.Year() + candidateDate := time.Date(year, time.Month(month), day, 0, 0, 0, 0, nextDate.Location()) + + // If this year's date has passed, use next year + if !candidateDate.After(fromDate) { + candidateDate = time.Date(year+1, time.Month(month), day, 0, 0, 0, 0, nextDate.Location()) + } + nextDate = candidateDate + + default: + return nil + } + + return &nextDate +} + +// calculateNextShowAtFromRepetitionPeriod calculates the next show date by adding repetition_period to fromDate +// Format: PostgreSQL INTERVAL string (e.g., "1 day", "2 weeks", "3 months" or "3 mons") +// Note: PostgreSQL may return weeks as days (e.g., "7 days" instead of "1 week") +func calculateNextShowAtFromRepetitionPeriod(repetitionPeriod string, fromDate time.Time) *time.Time { + if repetitionPeriod == "" { + return nil + } + + parts := strings.Fields(strings.TrimSpace(repetitionPeriod)) + if len(parts) < 2 { + log.Printf("calculateNextShowAtFromRepetitionPeriod: invalid format, parts=%v", parts) + return nil + } + + value, err := strconv.Atoi(parts[0]) + if err != nil { + log.Printf("calculateNextShowAtFromRepetitionPeriod: failed to parse value '%s': %v", parts[0], err) + return nil + } + + unit := strings.ToLower(parts[1]) + log.Printf("calculateNextShowAtFromRepetitionPeriod: value=%d, unit='%s'", value, unit) + + // Start from fromDate at midnight + nextDate := time.Date(fromDate.Year(), fromDate.Month(), fromDate.Day(), 0, 0, 0, 0, fromDate.Location()) + + switch unit { + case "minute", "minutes", "mins", "min": + nextDate = nextDate.Add(time.Duration(value) * time.Minute) + case "hour", "hours", "hrs", "hr": + nextDate = nextDate.Add(time.Duration(value) * time.Hour) + case "day", "days": + // PostgreSQL может возвращать недели как дни (например, "7 days" вместо "1 week") + // Если количество дней кратно 7, обрабатываем как недели + if value%7 == 0 && value >= 7 { + weeks := value / 7 + nextDate = nextDate.AddDate(0, 0, weeks*7) + } else { + nextDate = nextDate.AddDate(0, 0, value) + } + case "week", "weeks", "wks", "wk": + nextDate = nextDate.AddDate(0, 0, value*7) + case "month", "months", "mons", "mon": + nextDate = nextDate.AddDate(0, value, 0) + log.Printf("calculateNextShowAtFromRepetitionPeriod: added %d months, result=%v", value, nextDate) + case "year", "years", "yrs", "yr": + nextDate = nextDate.AddDate(value, 0, 0) + default: + log.Printf("calculateNextShowAtFromRepetitionPeriod: unknown unit '%s'", unit) + return nil + } + + return &nextDate +} + +// ============================================ +// Auth types +// ============================================ + +type User struct { + ID int `json:"id"` + Email string `json:"email"` + Name *string `json:"name,omitempty"` + PasswordHash string `json:"-"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + IsActive bool `json:"is_active"` + IsAdmin bool `json:"is_admin"` + LastLoginAt *time.Time `json:"last_login_at,omitempty"` +} + +type LoginRequest struct { + Email string `json:"email"` + Password string `json:"password"` +} + +type RegisterRequest struct { + Email string `json:"email"` + Password string `json:"password"` + Name *string `json:"name,omitempty"` +} + +type TokenResponse struct { + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + ExpiresIn int `json:"expires_in"` + User User `json:"user"` +} + +type RefreshRequest struct { + RefreshToken string `json:"refresh_token"` +} + +type UserResponse struct { + User User `json:"user"` +} + +type JWTClaims struct { + UserID int `json:"user_id"` + jwt.RegisteredClaims +} + +// Context key for user ID +type contextKey string + +const userIDKey contextKey = "user_id" + +type App struct { + DB *sql.DB + webhookMutex sync.Mutex + lastWebhookTime map[int]time.Time // config_id -> last webhook time + telegramBot *tgbotapi.BotAPI + telegramBotUsername string + jwtSecret []byte +} + +func setCORSHeaders(w http.ResponseWriter) { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization") +} + +// ============================================ +// Auth helper functions +// ============================================ + +func hashPassword(password string) (string, error) { + bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + return string(bytes), err +} + +func checkPasswordHash(password, hash string) bool { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + return err == nil +} + +func generateRefreshToken() (string, error) { + b := make([]byte, 32) + _, err := rand.Read(b) + if err != nil { + return "", err + } + return base64.URLEncoding.EncodeToString(b), nil +} + +// generateWebhookToken generates a unique token for webhook URL identification +func generateWebhookToken() (string, error) { + b := make([]byte, 24) // 24 bytes = 32 chars in base64 + _, err := rand.Read(b) + if err != nil { + return "", err + } + return base64.URLEncoding.EncodeToString(b), nil +} + +// generateRandomProjectColor возвращает случайный цвет из предопределенной палитры +func generateRandomProjectColor() string { + if len(projectColorsPalette) == 0 { + return "#3B82F6" // Fallback цвет + } + return projectColorsPalette[mathrand.Intn(len(projectColorsPalette))] +} + +func (a *App) generateAccessToken(userID int) (string, error) { + claims := JWTClaims{ + UserID: userID, + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString(a.jwtSecret) +} + +func (a *App) validateAccessToken(tokenString string) (*JWTClaims, error) { + token, err := jwt.ParseWithClaims(tokenString, &JWTClaims{}, func(token *jwt.Token) (interface{}, error) { + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) + } + return a.jwtSecret, nil + }) + if err != nil { + return nil, err + } + if claims, ok := token.Claims.(*JWTClaims); ok && token.Valid { + return claims, nil + } + return nil, fmt.Errorf("invalid token") +} + +// getUserIDFromContext extracts user ID from request context +func getUserIDFromContext(r *http.Request) (int, bool) { + userID, ok := r.Context().Value(userIDKey).(int) + return userID, ok +} + +// ============================================ +// Auth middleware +// ============================================ + +func (a *App) authMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Handle CORS preflight + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + authHeader := r.Header.Get("Authorization") + if authHeader == "" { + sendErrorWithCORS(w, "Authorization header required", http.StatusUnauthorized) + return + } + + parts := strings.Split(authHeader, " ") + if len(parts) != 2 || parts[0] != "Bearer" { + sendErrorWithCORS(w, "Invalid authorization header format", http.StatusUnauthorized) + return + } + + claims, err := a.validateAccessToken(parts[1]) + if err != nil { + sendErrorWithCORS(w, "Invalid or expired token", http.StatusUnauthorized) + return + } + + // Add user_id to context + ctx := context.WithValue(r.Context(), userIDKey, claims.UserID) + next.ServeHTTP(w, r.WithContext(ctx)) + }) +} + +func (a *App) adminMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Handle CORS preflight + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + // Get user_id from context (should be set by authMiddleware) + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Check if user is admin + var isAdmin bool + err := a.DB.QueryRow("SELECT is_admin FROM users WHERE id = $1", userID).Scan(&isAdmin) + if err != nil { + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "User not found", http.StatusNotFound) + return + } + log.Printf("Error checking admin status: %v", err) + sendErrorWithCORS(w, "Database error", http.StatusInternalServerError) + return + } + + if !isAdmin { + sendErrorWithCORS(w, "Forbidden: Admin access required", http.StatusForbidden) + return + } + + next.ServeHTTP(w, r) + }) +} + +// ============================================ +// Auth handlers +// ============================================ + +func (a *App) registerHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + var req RegisterRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.Email == "" || req.Password == "" { + sendErrorWithCORS(w, "Email and password are required", http.StatusBadRequest) + return + } + + if len(req.Password) < 6 { + sendErrorWithCORS(w, "Password must be at least 6 characters", http.StatusBadRequest) + return + } + + // Check if email already exists + var existingID int + err := a.DB.QueryRow("SELECT id FROM users WHERE email = $1", req.Email).Scan(&existingID) + if err == nil { + sendErrorWithCORS(w, "Email already registered", http.StatusConflict) + return + } + if err != sql.ErrNoRows { + log.Printf("Error checking existing user: %v", err) + sendErrorWithCORS(w, "Database error", http.StatusInternalServerError) + return + } + + // Hash password + passwordHash, err := hashPassword(req.Password) + if err != nil { + log.Printf("Error hashing password: %v", err) + sendErrorWithCORS(w, "Error processing password", http.StatusInternalServerError) + return + } + + // Insert user + var user User + err = a.DB.QueryRow(` + INSERT INTO users (email, password_hash, name, created_at, updated_at, is_active, is_admin) + VALUES ($1, $2, $3, NOW(), NOW(), true, false) + RETURNING id, email, name, created_at, updated_at, is_active, is_admin, last_login_at + `, req.Email, passwordHash, req.Name).Scan( + &user.ID, &user.Email, &user.Name, &user.CreatedAt, &user.UpdatedAt, &user.IsActive, &user.IsAdmin, &user.LastLoginAt, + ) + if err != nil { + log.Printf("Error inserting user: %v", err) + sendErrorWithCORS(w, "Error creating user", http.StatusInternalServerError) + return + } + + // Check if this is the first user - if so, claim all orphaned data + var userCount int + a.DB.QueryRow("SELECT COUNT(*) FROM users").Scan(&userCount) + if userCount == 1 { + log.Printf("First user registered (ID: %d), claiming all orphaned data", user.ID) + a.claimOrphanedData(user.ID) + } + + // Generate tokens + accessToken, err := a.generateAccessToken(user.ID) + if err != nil { + log.Printf("Error generating access token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + refreshToken, err := generateRefreshToken() + if err != nil { + log.Printf("Error generating refresh token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + // Hash and store refresh token + refreshTokenHash, _ := hashPassword(refreshToken) + _, err = a.DB.Exec(` + INSERT INTO refresh_tokens (user_id, token_hash, expires_at) + VALUES ($1, $2, $3) + `, user.ID, refreshTokenHash, nil) + if err != nil { + log.Printf("Error storing refresh token: %v", err) + } + + // Update last login + a.DB.Exec("UPDATE users SET last_login_at = NOW() WHERE id = $1", user.ID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(TokenResponse{ + AccessToken: accessToken, + RefreshToken: refreshToken, + ExpiresIn: 86400, // 24 hours + User: user, + }) +} + +func (a *App) loginHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + var req LoginRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.Email == "" || req.Password == "" { + sendErrorWithCORS(w, "Email and password are required", http.StatusBadRequest) + return + } + + // Find user + var user User + err := a.DB.QueryRow(` + SELECT id, email, password_hash, name, created_at, updated_at, is_active, is_admin, last_login_at + FROM users WHERE email = $1 + `, req.Email).Scan( + &user.ID, &user.Email, &user.PasswordHash, &user.Name, + &user.CreatedAt, &user.UpdatedAt, &user.IsActive, &user.IsAdmin, &user.LastLoginAt, + ) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Invalid email or password", http.StatusUnauthorized) + return + } + if err != nil { + log.Printf("Error finding user: %v", err) + sendErrorWithCORS(w, "Database error", http.StatusInternalServerError) + return + } + + if !user.IsActive { + sendErrorWithCORS(w, "Account is disabled", http.StatusForbidden) + return + } + + // Check password + if !checkPasswordHash(req.Password, user.PasswordHash) { + sendErrorWithCORS(w, "Invalid email or password", http.StatusUnauthorized) + return + } + + // Check if there is any orphaned data - claim it for this user + var orphanedDataCount int + a.DB.QueryRow(` + SELECT COUNT(*) FROM ( + SELECT 1 FROM projects WHERE user_id IS NULL + UNION ALL SELECT 1 FROM entries WHERE user_id IS NULL + UNION ALL SELECT 1 FROM nodes WHERE user_id IS NULL + UNION ALL SELECT 1 FROM dictionaries WHERE user_id IS NULL + UNION ALL SELECT 1 FROM words WHERE user_id IS NULL + UNION ALL SELECT 1 FROM progress WHERE user_id IS NULL + UNION ALL SELECT 1 FROM configs WHERE user_id IS NULL + UNION ALL SELECT 1 FROM telegram_integrations WHERE user_id IS NULL + UNION ALL SELECT 1 FROM weekly_goals WHERE user_id IS NULL + LIMIT 1 + ) orphaned + `).Scan(&orphanedDataCount) + if orphanedDataCount > 0 { + log.Printf("User %d logging in, claiming orphaned data from all tables", user.ID) + a.claimOrphanedData(user.ID) + } + + // Generate tokens + accessToken, err := a.generateAccessToken(user.ID) + if err != nil { + log.Printf("Error generating access token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + refreshToken, err := generateRefreshToken() + if err != nil { + log.Printf("Error generating refresh token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + // Hash and store refresh token + refreshTokenHash, _ := hashPassword(refreshToken) + _, err = a.DB.Exec(` + INSERT INTO refresh_tokens (user_id, token_hash, expires_at) + VALUES ($1, $2, $3) + `, user.ID, refreshTokenHash, nil) + if err != nil { + log.Printf("Error storing refresh token: %v", err) + } + + // Update last login + a.DB.Exec("UPDATE users SET last_login_at = NOW() WHERE id = $1", user.ID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(TokenResponse{ + AccessToken: accessToken, + RefreshToken: refreshToken, + ExpiresIn: 86400, // 24 hours + User: user, + }) +} + +func (a *App) refreshTokenHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + var req RefreshRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.RefreshToken == "" { + sendErrorWithCORS(w, "Refresh token is required", http.StatusBadRequest) + return + } + + // Find valid refresh token (expires_at is NULL for tokens without expiration) + rows, err := a.DB.Query(` + SELECT rt.id, rt.user_id, rt.token_hash, u.email, u.name, u.created_at, u.updated_at, u.is_active, u.is_admin, u.last_login_at + FROM refresh_tokens rt + JOIN users u ON rt.user_id = u.id + WHERE rt.expires_at IS NULL OR rt.expires_at > NOW() + `) + if err != nil { + log.Printf("Error querying refresh tokens: %v", err) + sendErrorWithCORS(w, "Database error", http.StatusInternalServerError) + return + } + defer rows.Close() + + var foundTokenID int + var user User + var tokenFound bool + + for rows.Next() { + var tokenID int + var tokenHash string + err := rows.Scan(&tokenID, &user.ID, &tokenHash, &user.Email, &user.Name, + &user.CreatedAt, &user.UpdatedAt, &user.IsActive, &user.IsAdmin, &user.LastLoginAt) + if err != nil { + continue + } + if checkPasswordHash(req.RefreshToken, tokenHash) { + foundTokenID = tokenID + tokenFound = true + break + } + } + + if !tokenFound { + sendErrorWithCORS(w, "Invalid or expired refresh token", http.StatusUnauthorized) + return + } + + if !user.IsActive { + sendErrorWithCORS(w, "Account is disabled", http.StatusForbidden) + return + } + + // Generate new tokens FIRST before deleting old one to prevent race condition + accessToken, err := a.generateAccessToken(user.ID) + if err != nil { + log.Printf("Error generating access token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + refreshToken, err := generateRefreshToken() + if err != nil { + log.Printf("Error generating refresh token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + // Store new refresh token FIRST + refreshTokenHash, _ := hashPassword(refreshToken) + _, err = a.DB.Exec(` + INSERT INTO refresh_tokens (user_id, token_hash, expires_at) + VALUES ($1, $2, $3) + `, user.ID, refreshTokenHash, nil) + if err != nil { + log.Printf("Error storing new refresh token: %v", err) + sendErrorWithCORS(w, "Error generating token", http.StatusInternalServerError) + return + } + + // Delete old refresh token AFTER new one is successfully stored + // This prevents race condition where multiple refresh requests might use the same token + a.DB.Exec("DELETE FROM refresh_tokens WHERE id = $1", foundTokenID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(TokenResponse{ + AccessToken: accessToken, + RefreshToken: refreshToken, + ExpiresIn: 86400, // 24 hours + User: user, + }) +} + +func (a *App) logoutHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Delete all refresh tokens for this user + a.DB.Exec("DELETE FROM refresh_tokens WHERE user_id = $1", userID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{"message": "Logged out successfully"}) +} + +func (a *App) getMeHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var user User + err := a.DB.QueryRow(` + SELECT id, email, name, created_at, updated_at, is_active, is_admin, last_login_at + FROM users WHERE id = $1 + `, userID).Scan( + &user.ID, &user.Email, &user.Name, &user.CreatedAt, &user.UpdatedAt, &user.IsActive, &user.IsAdmin, &user.LastLoginAt, + ) + if err != nil { + log.Printf("Error finding user: %v", err) + sendErrorWithCORS(w, "User not found", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(UserResponse{User: user}) +} + +// claimOrphanedData assigns all data with NULL user_id to the specified user +func (a *App) claimOrphanedData(userID int) { + tables := []string{"projects", "entries", "nodes", "dictionaries", "words", "progress", "configs", "telegram_integrations", "weekly_goals"} + for _, table := range tables { + // First check if user_id column exists + var columnExists bool + err := a.DB.QueryRow(` + SELECT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = $1 AND column_name = 'user_id' + ) + `, table).Scan(&columnExists) + + if err != nil || !columnExists { + log.Printf("Skipping %s: user_id column does not exist (run migrations as table owner)", table) + continue + } + + result, err := a.DB.Exec(fmt.Sprintf("UPDATE %s SET user_id = $1 WHERE user_id IS NULL", table), userID) + if err != nil { + log.Printf("Error claiming orphaned data in %s: %v", table, err) + } else { + rowsAffected, _ := result.RowsAffected() + if rowsAffected > 0 { + log.Printf("Claimed %d orphaned rows in %s for user %d", rowsAffected, table, userID) + } + } + } +} + +func sendErrorWithCORS(w http.ResponseWriter, message string, statusCode int) { + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(statusCode) + json.NewEncoder(w).Encode(map[string]interface{}{ + "error": message, + }) +} + +func (a *App) getWordsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Get dictionary_id from query parameter + dictionaryIDStr := r.URL.Query().Get("dictionary_id") + var dictionaryID *int + if dictionaryIDStr != "" { + if id, err := strconv.Atoi(dictionaryIDStr); err == nil { + dictionaryID = &id + } + } + + query := ` + SELECT + w.id, + w.name, + w.translation, + w.description, + COALESCE(p.success, 0) as success, + COALESCE(p.failure, 0) as failure, + CASE WHEN p.last_success_at IS NOT NULL THEN p.last_success_at::text ELSE NULL END as last_success_at, + CASE WHEN p.last_failure_at IS NOT NULL THEN p.last_failure_at::text ELSE NULL END as last_failure_at + FROM words w + JOIN dictionaries d ON w.dictionary_id = d.id + LEFT JOIN progress p ON w.id = p.word_id AND p.user_id = $1 + WHERE d.user_id = $1 AND ($2::INTEGER IS NULL OR w.dictionary_id = $2) + ORDER BY w.id + ` + + rows, err := a.DB.Query(query, userID, dictionaryID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + words := make([]Word, 0) + for rows.Next() { + var word Word + var lastSuccess, lastFailure sql.NullString + + err := rows.Scan( + &word.ID, + &word.Name, + &word.Translation, + &word.Description, + &word.Success, + &word.Failure, + &lastSuccess, + &lastFailure, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if lastSuccess.Valid { + word.LastSuccess = &lastSuccess.String + } + if lastFailure.Valid { + word.LastFailure = &lastFailure.String + } + + words = append(words, word) + } + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(words) +} + +func (a *App) addWordsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req WordsRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding addWords request: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + log.Printf("addWords: user_id=%d, words_count=%d", userID, len(req.Words)) + + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Create default dictionary for user if needed + var defaultDictID int + err = tx.QueryRow(` + SELECT id FROM dictionaries WHERE user_id = $1 ORDER BY id LIMIT 1 + `, userID).Scan(&defaultDictID) + if err == sql.ErrNoRows { + // Create default dictionary for user + log.Printf("Creating default dictionary for user_id=%d", userID) + err = tx.QueryRow(` + INSERT INTO dictionaries (name, user_id) VALUES ('Все слова', $1) RETURNING id + `, userID).Scan(&defaultDictID) + if err != nil { + log.Printf("Error creating default dictionary: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + log.Printf("Created default dictionary id=%d for user_id=%d", defaultDictID, userID) + } else if err != nil { + log.Printf("Error finding default dictionary: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } else { + log.Printf("Using default dictionary id=%d for user_id=%d", defaultDictID, userID) + } + + stmt, err := tx.Prepare(` + INSERT INTO words (name, translation, description, dictionary_id, user_id) + VALUES ($1, $2, $3, $4, $5) + RETURNING id + `) + if err != nil { + log.Printf("Error preparing insert statement: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer stmt.Close() + + var addedCount int + for i, wordReq := range req.Words { + var id int + dictionaryID := defaultDictID + if wordReq.DictionaryID != nil { + dictionaryID = *wordReq.DictionaryID + // Проверяем, что словарь принадлежит пользователю + var dictUserID int + err := tx.QueryRow(` + SELECT user_id FROM dictionaries WHERE id = $1 + `, dictionaryID).Scan(&dictUserID) + if err == sql.ErrNoRows { + log.Printf("Dictionary %d not found for word %d", dictionaryID, i) + sendErrorWithCORS(w, fmt.Sprintf("Dictionary %d not found", dictionaryID), http.StatusBadRequest) + return + } else if err != nil { + log.Printf("Error checking dictionary ownership: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + if dictUserID != userID { + log.Printf("Dictionary %d belongs to user %d, but request from user %d", dictionaryID, dictUserID, userID) + sendErrorWithCORS(w, fmt.Sprintf("Dictionary %d does not belong to user", dictionaryID), http.StatusForbidden) + return + } + } + err := stmt.QueryRow(wordReq.Name, wordReq.Translation, wordReq.Description, dictionaryID, userID).Scan(&id) + if err != nil { + log.Printf("Error inserting word %d (name='%s', dict_id=%d, user_id=%d): %v", i, wordReq.Name, dictionaryID, userID, err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + addedCount++ + log.Printf("Successfully added word id=%d: name='%s', dict_id=%d", id, wordReq.Name, dictionaryID) + } + + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + log.Printf("Successfully added %d words for user_id=%d", addedCount, userID) + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": fmt.Sprintf("Added %d words", addedCount), + "added": addedCount, + }) +} + +func (a *App) deleteWordHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + wordID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid word ID", http.StatusBadRequest) + return + } + + // Verify ownership - check that word belongs to user + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM words WHERE id = $1", wordID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Word not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking word ownership: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Word not found", http.StatusNotFound) + return + } + + // Delete the word (progress will be deleted automatically due to CASCADE) + result, err := a.DB.Exec("DELETE FROM words WHERE id = $1", wordID) + if err != nil { + log.Printf("Error deleting word: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + log.Printf("Error getting rows affected: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + sendErrorWithCORS(w, "Word not found", http.StatusNotFound) + return + } + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Word deleted successfully", + }) +} + +func (a *App) resetWordProgressHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + wordID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid word ID", http.StatusBadRequest) + return + } + + // Verify ownership - check that word belongs to user + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM words WHERE id = $1", wordID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Word not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking word ownership: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Word not found", http.StatusNotFound) + return + } + + // Reset progress for this word and user + _, err = a.DB.Exec(` + UPDATE progress + SET success = 0, + failure = 0, + last_success_at = NULL, + last_failure_at = NULL + WHERE word_id = $1 AND user_id = $2 + `, wordID, userID) + if err != nil { + log.Printf("Error resetting word progress: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Word progress reset successfully", + }) +} + +func (a *App) getTestWordsHandler(w http.ResponseWriter, r *http.Request) { + log.Printf("getTestWordsHandler called: %s %s", r.Method, r.URL.Path) + setCORSHeaders(w) + + if r.Method == "OPTIONS" { + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Get config_id from query parameter (required) + configIDStr := r.URL.Query().Get("config_id") + if configIDStr == "" { + sendErrorWithCORS(w, "config_id parameter is required", http.StatusBadRequest) + return + } + + configID, err := strconv.Atoi(configIDStr) + if err != nil { + sendErrorWithCORS(w, "invalid config_id parameter", http.StatusBadRequest) + return + } + + // Get words_count from config (verify ownership) + var wordsCount int + err = a.DB.QueryRow("SELECT words_count FROM configs WHERE id = $1 AND user_id = $2", configID, userID).Scan(&wordsCount) + if err != nil { + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "config not found", http.StatusNotFound) + return + } + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Get dictionary IDs for this config + var dictionaryIDs []int + dictQuery := ` + SELECT dictionary_id + FROM config_dictionaries + WHERE config_id = $1 + ` + dictRows, err := a.DB.Query(dictQuery, configID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer dictRows.Close() + + for dictRows.Next() { + var dictID int + if err := dictRows.Scan(&dictID); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + dictionaryIDs = append(dictionaryIDs, dictID) + } + + // If no dictionaries are selected for config, use all dictionaries (no filter) + var dictFilter string + var dictArgs []interface{} + if len(dictionaryIDs) > 0 { + placeholders := make([]string, len(dictionaryIDs)) + for i := range dictionaryIDs { + placeholders[i] = fmt.Sprintf("$%d", i+1) + } + dictFilter = fmt.Sprintf("w.dictionary_id IN (%s)", strings.Join(placeholders, ",")) + for _, dictID := range dictionaryIDs { + dictArgs = append(dictArgs, dictID) + } + } else { + dictFilter = "1=1" // No filter + } + + // Calculate group sizes (use ceiling to ensure we don't lose words due to rounding) + group1Count := int(float64(wordsCount) * 0.3) // 30% + group2Count := int(float64(wordsCount) * 0.4) // 40% + // group3Count is calculated dynamically based on actual words collected from groups 1 and 2 + + // Base query parts + baseSelect := ` + w.id, + w.name, + w.translation, + w.description, + COALESCE(p.success, 0) as success, + COALESCE(p.failure, 0) as failure, + CASE WHEN p.last_success_at IS NOT NULL THEN p.last_success_at::text ELSE NULL END as last_success_at, + CASE WHEN p.last_failure_at IS NOT NULL THEN p.last_failure_at::text ELSE NULL END as last_failure_at + ` + baseFrom := fmt.Sprintf(` + FROM words w + JOIN dictionaries d ON w.dictionary_id = d.id AND d.user_id = %d + LEFT JOIN progress p ON w.id = p.word_id AND p.user_id = %d + WHERE `, userID, userID) + dictFilter + + // Group 1: success <= 3, sorted by success ASC, then last_success_at ASC (NULL first) + group1Query := ` + SELECT ` + baseSelect + ` + ` + baseFrom + ` + AND COALESCE(p.success, 0) <= 3 + ORDER BY + COALESCE(p.success, 0) ASC, + CASE WHEN p.last_success_at IS NULL THEN 0 ELSE 1 END, + p.last_success_at ASC + LIMIT $` + fmt.Sprintf("%d", len(dictArgs)+1) + + group1Args := append(dictArgs, group1Count*2) // Get more to ensure uniqueness + group1Rows, err := a.DB.Query(group1Query, group1Args...) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer group1Rows.Close() + + group1Words := make([]Word, 0) + group1WordIDs := make(map[int]bool) + for group1Rows.Next() && len(group1Words) < group1Count { + var word Word + var lastSuccess, lastFailure sql.NullString + + err := group1Rows.Scan( + &word.ID, + &word.Name, + &word.Translation, + &word.Description, + &word.Success, + &word.Failure, + &lastSuccess, + &lastFailure, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if lastSuccess.Valid { + word.LastSuccess = &lastSuccess.String + } + if lastFailure.Valid { + word.LastFailure = &lastFailure.String + } + + group1Words = append(group1Words, word) + group1WordIDs[word.ID] = true + } + + // Group 2: sorted by (failure + 1)/(success + 1) DESC, take top 40% + // Exclude words already in group1 + group2Exclude := "" + group2Args := make([]interface{}, 0) + group2Args = append(group2Args, dictArgs...) + if len(group1WordIDs) > 0 { + excludePlaceholders := make([]string, 0, len(group1WordIDs)) + idx := len(dictArgs) + 1 + for wordID := range group1WordIDs { + excludePlaceholders = append(excludePlaceholders, fmt.Sprintf("$%d", idx)) + group2Args = append(group2Args, wordID) + idx++ + } + group2Exclude = " AND w.id NOT IN (" + strings.Join(excludePlaceholders, ",") + ")" + } + + group2Query := ` + SELECT ` + baseSelect + ` + ` + baseFrom + ` + ` + group2Exclude + ` + ORDER BY + (COALESCE(p.failure, 0) + 1.0) / (COALESCE(p.success, 0) + 1.0) DESC, + CASE WHEN p.last_success_at IS NULL THEN 0 ELSE 1 END, + p.last_success_at ASC + LIMIT $` + fmt.Sprintf("%d", len(group2Args)+1) + + group2Args = append(group2Args, group2Count) + group2Rows, err := a.DB.Query(group2Query, group2Args...) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer group2Rows.Close() + + group2Words := make([]Word, 0) + group2WordIDs := make(map[int]bool) + for group2Rows.Next() { + var word Word + var lastSuccess, lastFailure sql.NullString + + err := group2Rows.Scan( + &word.ID, + &word.Name, + &word.Translation, + &word.Description, + &word.Success, + &word.Failure, + &lastSuccess, + &lastFailure, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if lastSuccess.Valid { + word.LastSuccess = &lastSuccess.String + } + if lastFailure.Valid { + word.LastFailure = &lastFailure.String + } + + group2Words = append(group2Words, word) + group2WordIDs[word.ID] = true + } + + // Group 3: All remaining words, sorted by last_success_at ASC (NULL first) + // Exclude words already in group1 and group2 + allExcludedIDs := make(map[int]bool) + for id := range group1WordIDs { + allExcludedIDs[id] = true + } + for id := range group2WordIDs { + allExcludedIDs[id] = true + } + + group3Exclude := "" + group3Args := make([]interface{}, 0) + group3Args = append(group3Args, dictArgs...) + if len(allExcludedIDs) > 0 { + excludePlaceholders := make([]string, 0, len(allExcludedIDs)) + idx := len(dictArgs) + 1 + for wordID := range allExcludedIDs { + excludePlaceholders = append(excludePlaceholders, fmt.Sprintf("$%d", idx)) + group3Args = append(group3Args, wordID) + idx++ + } + group3Exclude = " AND w.id NOT IN (" + strings.Join(excludePlaceholders, ",") + ")" + } + + // Calculate how many words we still need from group 3 + wordsCollected := len(group1Words) + len(group2Words) + group3Needed := wordsCount - wordsCollected + + log.Printf("Word selection: wordsCount=%d, group1=%d, group2=%d, collected=%d, group3Needed=%d", + wordsCount, len(group1Words), len(group2Words), wordsCollected, group3Needed) + + group3Words := make([]Word, 0) + if group3Needed > 0 { + group3Query := ` + SELECT ` + baseSelect + ` + ` + baseFrom + ` + ` + group3Exclude + ` + ORDER BY + CASE WHEN p.last_success_at IS NULL THEN 0 ELSE 1 END, + p.last_success_at ASC + LIMIT $` + fmt.Sprintf("%d", len(group3Args)+1) + + group3Args = append(group3Args, group3Needed) + group3Rows, err := a.DB.Query(group3Query, group3Args...) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer group3Rows.Close() + + for group3Rows.Next() { + var word Word + var lastSuccess, lastFailure sql.NullString + + err := group3Rows.Scan( + &word.ID, + &word.Name, + &word.Translation, + &word.Description, + &word.Success, + &word.Failure, + &lastSuccess, + &lastFailure, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if lastSuccess.Valid { + word.LastSuccess = &lastSuccess.String + } + if lastFailure.Valid { + word.LastFailure = &lastFailure.String + } + + group3Words = append(group3Words, word) + } + } + + // Combine all groups + words := make([]Word, 0) + words = append(words, group1Words...) + words = append(words, group2Words...) + words = append(words, group3Words...) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(words) +} + +func (a *App) updateTestProgressHandler(w http.ResponseWriter, r *http.Request) { + log.Printf("updateTestProgressHandler called: %s %s", r.Method, r.URL.Path) + setCORSHeaders(w) + + if r.Method == "OPTIONS" { + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req TestProgressRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding request: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + log.Printf("Received %d word updates, config_id: %v, user_id: %d", len(req.Words), req.ConfigID, userID) + + tx, err := a.DB.Begin() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Create unique constraint for (word_id, user_id) if not exists + tx.Exec("CREATE UNIQUE INDEX IF NOT EXISTS progress_word_user_unique ON progress(word_id, user_id)") + + stmt, err := tx.Prepare(` + INSERT INTO progress (word_id, user_id, success, failure, last_success_at, last_failure_at) + VALUES ($1, $2, $3, $4, $5, $6) + ON CONFLICT (word_id, user_id) + DO UPDATE SET + success = EXCLUDED.success, + failure = EXCLUDED.failure, + last_success_at = COALESCE(EXCLUDED.last_success_at, progress.last_success_at), + last_failure_at = COALESCE(EXCLUDED.last_failure_at, progress.last_failure_at) + `) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer stmt.Close() + + for _, wordUpdate := range req.Words { + // Convert pointers to values for logging + lastSuccessStr := "nil" + if wordUpdate.LastSuccessAt != nil { + lastSuccessStr = *wordUpdate.LastSuccessAt + } + lastFailureStr := "nil" + if wordUpdate.LastFailureAt != nil { + lastFailureStr = *wordUpdate.LastFailureAt + } + log.Printf("Updating word %d: success=%d, failure=%d, last_success_at=%s, last_failure_at=%s", + wordUpdate.ID, wordUpdate.Success, wordUpdate.Failure, lastSuccessStr, lastFailureStr) + + // Convert pointers to sql.NullString for proper NULL handling + var lastSuccess, lastFailure interface{} + if wordUpdate.LastSuccessAt != nil && *wordUpdate.LastSuccessAt != "" { + lastSuccess = *wordUpdate.LastSuccessAt + } else { + lastSuccess = nil + } + if wordUpdate.LastFailureAt != nil && *wordUpdate.LastFailureAt != "" { + lastFailure = *wordUpdate.LastFailureAt + } else { + lastFailure = nil + } + + _, err := stmt.Exec( + wordUpdate.ID, + userID, + wordUpdate.Success, + wordUpdate.Failure, + lastSuccess, + lastFailure, + ) + if err != nil { + log.Printf("Error executing update for word %d: %v", wordUpdate.ID, err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + } + + if err := tx.Commit(); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Note: Reward message is now sent via completeTaskHandler when the test task is automatically completed. + // The config_id is kept in the request for potential future use, but we no longer send messages here + // to avoid duplicate messages (one from test completion, one from task completion). + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Progress updated successfully", + }) +} + +func (a *App) getConfigsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + query := ` + SELECT id, words_count, max_cards + FROM configs + WHERE user_id = $1 + ORDER BY id + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + configs := make([]Config, 0) + for rows.Next() { + var config Config + var maxCards sql.NullInt64 + err := rows.Scan( + &config.ID, + &config.WordsCount, + &maxCards, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + if maxCards.Valid { + maxCardsVal := int(maxCards.Int64) + config.MaxCards = &maxCardsVal + } + configs = append(configs, config) + } + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(configs) +} + +func (a *App) getDictionariesHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + query := ` + SELECT + d.id, + d.name, + COALESCE(COUNT(w.id), 0) as words_count + FROM dictionaries d + LEFT JOIN words w ON d.id = w.dictionary_id + WHERE d.user_id = $1 + GROUP BY d.id, d.name + ORDER BY d.id + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + dictionaries := make([]Dictionary, 0) + for rows.Next() { + var dict Dictionary + err := rows.Scan( + &dict.ID, + &dict.Name, + &dict.WordsCount, + ) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + dictionaries = append(dictionaries, dict) + } + + setCORSHeaders(w) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(dictionaries) +} + +func (a *App) addDictionaryHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req DictionaryRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + if req.Name == "" { + sendErrorWithCORS(w, "Имя словаря обязательно", http.StatusBadRequest) + return + } + + var id int + err := a.DB.QueryRow(` + INSERT INTO dictionaries (name, user_id) + VALUES ($1, $2) + RETURNING id + `, req.Name, userID).Scan(&id) + + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "id": id, + "name": req.Name, + }) +} + +func (a *App) updateDictionaryHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + dictionaryID := vars["id"] + + var req DictionaryRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + if req.Name == "" { + sendErrorWithCORS(w, "Имя словаря обязательно", http.StatusBadRequest) + return + } + + result, err := a.DB.Exec(` + UPDATE dictionaries + SET name = $1 + WHERE id = $2 AND user_id = $3 + `, req.Name, dictionaryID, userID) + + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + http.Error(w, "Dictionary not found", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Dictionary updated successfully", + }) +} + +func (a *App) deleteDictionaryHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + dictionaryID := vars["id"] + + // Prevent deletion of default dictionary (id = 0) + if dictionaryID == "0" { + sendErrorWithCORS(w, "Cannot delete default dictionary", http.StatusBadRequest) + return + } + + // Verify ownership + var ownerID int + err := a.DB.QueryRow("SELECT user_id FROM dictionaries WHERE id = $1", dictionaryID).Scan(&ownerID) + if err != nil || ownerID != userID { + sendErrorWithCORS(w, "Dictionary not found", http.StatusNotFound) + return + } + + tx, err := a.DB.Begin() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Delete all words from this dictionary (progress will be deleted automatically due to CASCADE) + _, err = tx.Exec(` + DELETE FROM words + WHERE dictionary_id = $1 + `, dictionaryID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Delete all config-dictionary associations (will be deleted automatically due to CASCADE, but doing explicitly for clarity) + _, err = tx.Exec(` + DELETE FROM config_dictionaries + WHERE dictionary_id = $1 + `, dictionaryID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Delete the dictionary + result, err := tx.Exec("DELETE FROM dictionaries WHERE id = $1", dictionaryID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + sendErrorWithCORS(w, "Dictionary not found", http.StatusNotFound) + return + } + + if err := tx.Commit(); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Dictionary deleted successfully. All words and configuration associations have been deleted.", + }) +} + +func (a *App) getConfigDictionariesHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Methods", "GET, OPTIONS") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") + w.WriteHeader(http.StatusOK) + return + } + + vars := mux.Vars(r) + configID := vars["id"] + + query := ` + SELECT dictionary_id + FROM config_dictionaries + WHERE config_id = $1 + ORDER BY dictionary_id + ` + + rows, err := a.DB.Query(query, configID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + dictionaryIDs := make([]int, 0) + for rows.Next() { + var dictID int + err := rows.Scan(&dictID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + dictionaryIDs = append(dictionaryIDs, dictID) + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "dictionary_ids": dictionaryIDs, + }) +} + +func (a *App) getTestConfigsAndDictionariesHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + log.Printf("getTestConfigsAndDictionariesHandler: Unauthorized request") + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + log.Printf("getTestConfigsAndDictionariesHandler called, user: %d", userID) + + // Get configs + configsQuery := ` + SELECT id, words_count, max_cards + FROM configs + WHERE user_id = $1 + ORDER BY id + ` + + configsRows, err := a.DB.Query(configsQuery, userID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer configsRows.Close() + + configs := make([]Config, 0) + for configsRows.Next() { + var config Config + var maxCards sql.NullInt64 + err := configsRows.Scan( + &config.ID, + &config.WordsCount, + &maxCards, + ) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + if maxCards.Valid { + maxCardsVal := int(maxCards.Int64) + config.MaxCards = &maxCardsVal + } + configs = append(configs, config) + } + + // Get dictionaries + dictsQuery := ` + SELECT + d.id, + d.name, + COALESCE(COUNT(w.id), 0) as words_count + FROM dictionaries d + LEFT JOIN words w ON d.id = w.dictionary_id + WHERE d.user_id = $1 + GROUP BY d.id, d.name + ORDER BY d.id + ` + + dictsRows, err := a.DB.Query(dictsQuery, userID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer dictsRows.Close() + + dictionaries := make([]Dictionary, 0) + for dictsRows.Next() { + var dict Dictionary + err := dictsRows.Scan( + &dict.ID, + &dict.Name, + &dict.WordsCount, + ) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + dictionaries = append(dictionaries, dict) + } + + response := TestConfigsAndDictionariesResponse{ + Configs: configs, + Dictionaries: dictionaries, + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(response) +} + +func (a *App) addConfigHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req ConfigRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + if req.WordsCount <= 0 { + sendErrorWithCORS(w, "Количество слов должно быть больше 0", http.StatusBadRequest) + return + } + + tx, err := a.DB.Begin() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + var id int + err = tx.QueryRow(` + INSERT INTO configs (words_count, max_cards, user_id) + VALUES ($1, $2, $3) + RETURNING id + `, req.WordsCount, req.MaxCards, userID).Scan(&id) + + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // Insert dictionary associations if provided + if len(req.DictionaryIDs) > 0 { + stmt, err := tx.Prepare(` + INSERT INTO config_dictionaries (config_id, dictionary_id) + VALUES ($1, $2) + `) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer stmt.Close() + + for _, dictID := range req.DictionaryIDs { + _, err := stmt.Exec(id, dictID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + } + } + + if err := tx.Commit(); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Config created successfully", + "id": id, + }) +} + +func (a *App) updateConfigHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + configID := vars["id"] + + // Verify ownership + var ownerID int + err := a.DB.QueryRow("SELECT user_id FROM configs WHERE id = $1", configID).Scan(&ownerID) + if err != nil || ownerID != userID { + sendErrorWithCORS(w, "Config not found", http.StatusNotFound) + return + } + + var req ConfigRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + if req.WordsCount <= 0 { + sendErrorWithCORS(w, "Количество слов должно быть больше 0", http.StatusBadRequest) + return + } + + tx, err := a.DB.Begin() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + result, err := tx.Exec(` + UPDATE configs + SET words_count = $1, max_cards = $2 + WHERE id = $3 + `, req.WordsCount, req.MaxCards, configID) + + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + http.Error(w, "Config not found", http.StatusNotFound) + return + } + + // Delete existing dictionary associations + _, err = tx.Exec("DELETE FROM config_dictionaries WHERE config_id = $1", configID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // Insert new dictionary associations if provided + if len(req.DictionaryIDs) > 0 { + stmt, err := tx.Prepare(` + INSERT INTO config_dictionaries (config_id, dictionary_id) + VALUES ($1, $2) + `) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer stmt.Close() + + for _, dictID := range req.DictionaryIDs { + _, err := stmt.Exec(configID, dictID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + } + } + + if err := tx.Commit(); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Access-Control-Allow-Origin", "*") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Config updated successfully", + }) +} + +func (a *App) deleteConfigHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + configID := vars["id"] + + result, err := a.DB.Exec("DELETE FROM configs WHERE id = $1 AND user_id = $2", configID, userID) + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + sendErrorWithCORS(w, "Config not found", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Config deleted successfully", + }) +} + +func (a *App) getWeeklyStatsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + log.Printf("getWeeklyStatsHandler called from %s, path: %s, user: %d", r.RemoteAddr, r.URL.Path, userID) + + // Получаем данные текущей недели напрямую из nodes + currentWeekScores, err := a.getCurrentWeekScores(userID) + if err != nil { + log.Printf("Error getting current week scores: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Получаем сегодняшние приросты + todayScores, err := a.getTodayScores(userID) + if err != nil { + log.Printf("Error getting today scores: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + query := ` + SELECT + p.id AS project_id, + p.name AS project_name, + -- Используем COALESCE для установки total_score в 0.0000, если нет данных в weekly_report_mv + COALESCE(wr.total_score, 0.0000) AS total_score, + wg.min_goal_score, + wg.max_goal_score, + wg.priority AS priority, + p.color + FROM + projects p + LEFT JOIN + weekly_goals wg ON wg.project_id = p.id + AND wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + LEFT JOIN + weekly_report_mv wr + ON p.id = wr.project_id + AND EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER = wr.report_year + AND EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER = wr.report_week + WHERE + p.deleted = FALSE AND p.user_id = $1 + ORDER BY + total_score DESC + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying weekly stats: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + defer rows.Close() + + projects := make([]WeeklyProjectStats, 0) + // Группы для расчета среднего по priority + groups := make(map[int][]float64) + + for rows.Next() { + var project WeeklyProjectStats + var projectID int + var minGoalScore sql.NullFloat64 + var maxGoalScore sql.NullFloat64 + var priority sql.NullInt64 + + err := rows.Scan( + &projectID, + &project.ProjectName, + &project.TotalScore, + &minGoalScore, + &maxGoalScore, + &priority, + &project.Color, + ) + if err != nil { + log.Printf("Error scanning weekly stats row: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Объединяем данные: если есть данные текущей недели, используем их вместо MV + if currentWeekScore, exists := currentWeekScores[projectID]; exists { + project.TotalScore = currentWeekScore + } + + // Добавляем сегодняшний прирост + if todayScore, exists := todayScores[projectID]; exists && todayScore != 0 { + project.TodayChange = &todayScore + } + + if minGoalScore.Valid { + project.MinGoalScore = minGoalScore.Float64 + } else { + project.MinGoalScore = 0 + } + + if maxGoalScore.Valid { + maxGoalVal := maxGoalScore.Float64 + project.MaxGoalScore = &maxGoalVal + } + + var priorityVal int + if priority.Valid { + priorityVal = int(priority.Int64) + project.Priority = &priorityVal + } + + // Расчет calculated_score по формуле из n8n + totalScore := project.TotalScore + minGoalScoreVal := project.MinGoalScore + var maxGoalScoreVal float64 + if project.MaxGoalScore != nil { + maxGoalScoreVal = *project.MaxGoalScore + } + + // Параметры бонуса в зависимости от priority + var extraBonusLimit float64 = 20 + if priorityVal == 1 { + extraBonusLimit = 50 + } else if priorityVal == 2 { + extraBonusLimit = 35 + } + + // Расчет calculated_score по логике фронтенда + // min_goal -> 100%, max_goal -> 150%/135%/120% в зависимости от приоритета + var resultScore float64 + if minGoalScoreVal <= 0 { + // Если нет minGoal, возвращаем 0 (или можно относительно maxGoal, но обычно 0) + resultScore = 0 + } else if totalScore < minGoalScoreVal { + // До достижения minGoal растем линейно от 0 до 100% + resultScore = (totalScore / minGoalScoreVal) * 100.0 + } else { + // Достигнут minGoal - базовый прогресс = 100% + baseProgress := 100.0 + + // Если maxGoal задан корректно и больше minGoal, добавляем экстра прогресс + if maxGoalScoreVal > minGoalScoreVal { + extraRange := maxGoalScoreVal - minGoalScoreVal + excess := min(totalScore, maxGoalScoreVal) - minGoalScoreVal + extraRatio := min(1.0, max(0.0, excess/extraRange)) + extraProgress := extraRatio * extraBonusLimit + resultScore = min(100.0+extraBonusLimit, baseProgress+extraProgress) + } else { + // Если maxGoal не задан или некорректен, просто 100% + resultScore = baseProgress + } + } + + project.CalculatedScore = roundToTwoDecimals(resultScore) + + // Группировка для итогового расчета + // Проекты с minGoal = 0 или null не учитываются в общем проценте выполнения + if minGoalScoreVal > 0 { + if _, exists := groups[priorityVal]; !exists { + groups[priorityVal] = make([]float64, 0) + } + groups[priorityVal] = append(groups[priorityVal], project.CalculatedScore) + } + + projects = append(projects, project) + } + + // Вычисляем проценты для каждой группы + groupsProgress := calculateGroupsProgress(groups) + + // Вычисляем общий процент выполнения + total := calculateOverallProgress(groupsProgress, groups) + + response := WeeklyStatsResponse{ + Total: total, + GroupProgress1: groupsProgress.Group1, + GroupProgress2: groupsProgress.Group2, + GroupProgress0: groupsProgress.Group0, + Projects: projects, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// runMigrations applies database migrations using golang-migrate +func (a *App) runMigrations() error { + migrationsPath := "migrations" + if _, err := os.Stat(migrationsPath); os.IsNotExist(err) { + // Try alternative path for Docker + migrationsPath = "/migrations" + if _, err := os.Stat(migrationsPath); os.IsNotExist(err) { + return fmt.Errorf("migrations directory not found") + } + } + + // Get database connection string from environment + dbHost := getEnv("DB_HOST", "localhost") + dbPort := getEnv("DB_PORT", "5432") + dbUser := getEnv("DB_USER", "playeng") + dbPassword := getEnv("DB_PASSWORD", "playeng") + dbName := getEnv("DB_NAME", "playeng") + + // Build database URL with proper encoding for special characters in password + // url.UserPassword properly encodes special characters like ^, @, etc. + userInfo := url.UserPassword(dbUser, dbPassword) + databaseURL := fmt.Sprintf("postgres://%s@%s:%s/%s?sslmode=disable", + userInfo.String(), dbHost, dbPort, dbName) + + // Create migrate instance + m, err := migrate.New( + fmt.Sprintf("file://%s", migrationsPath), + databaseURL, + ) + if err != nil { + return fmt.Errorf("failed to initialize migrations: %w", err) + } + defer m.Close() + + // Check if schema_migrations table exists and its state + var schemaExists bool + var currentVersion int64 + var isDirty bool + err = a.DB.QueryRow(` + SELECT EXISTS ( + SELECT FROM information_schema.tables + WHERE table_schema = 'public' + AND table_name = 'schema_migrations' + ) + `).Scan(&schemaExists) + if err != nil { + log.Printf("Warning: Could not check schema_migrations table: %v", err) + } + + // If schema_migrations exists, check its state + if schemaExists { + err = a.DB.QueryRow(` + SELECT version, dirty FROM schema_migrations LIMIT 1 + `).Scan(¤tVersion, &isDirty) + if err != nil { + log.Printf("Warning: Could not read schema_migrations: %v", err) + schemaExists = false // Treat as if it doesn't exist + } else if isDirty { + // Database is in dirty state - fix it + log.Println("Detected dirty migration state, fixing...") + _, err = a.DB.Exec(` + UPDATE schema_migrations SET dirty = false WHERE version = $1 + `, currentVersion) + if err != nil { + return fmt.Errorf("failed to fix dirty migration state: %w", err) + } + log.Printf("Fixed dirty migration state for version %d", currentVersion) + // Continue to apply migrations normally + } + } + + // If schema_migrations doesn't exist, check if database has existing tables + // This handles the case when an old dump was restored + if !schemaExists { + var tableCount int + err = a.DB.QueryRow(` + SELECT COUNT(*) FROM information_schema.tables + WHERE table_schema = 'public' + AND table_name NOT IN ('schema_migrations') + `).Scan(&tableCount) + if err == nil && tableCount > 0 { + // Database has existing tables but no schema_migrations + // This means an old dump was restored - set version to 1 without applying migration + log.Println("Detected existing database schema without schema_migrations table") + log.Println("Setting migration version to 1 (baseline) without applying migration") + + // Create schema_migrations table and set version to 1 + _, err = a.DB.Exec(` + CREATE TABLE IF NOT EXISTS schema_migrations ( + version bigint NOT NULL PRIMARY KEY, + dirty boolean NOT NULL + ) + `) + if err != nil { + return fmt.Errorf("failed to create schema_migrations table: %w", err) + } + + _, err = a.DB.Exec(` + INSERT INTO schema_migrations (version, dirty) + VALUES (1, false) + ON CONFLICT (version) DO UPDATE SET dirty = false + `) + if err != nil { + return fmt.Errorf("failed to set migration version: %w", err) + } + + log.Println("Migration version set to 1 (baseline) for existing database") + return nil + } + } + + // Apply migrations normally + if err := m.Up(); err != nil { + if err == migrate.ErrNoChange { + log.Println("Database is up to date, no migrations to apply") + return nil + } + return fmt.Errorf("failed to apply migrations: %w", err) + } + + log.Println("Database migrations applied successfully") + return nil +} + +func (a *App) initDB() error { + // This function is kept for backward compatibility but does nothing + // Database schema is now managed by golang-migrate + return nil +} + +func (a *App) initAuthDB() error { + // Clean up expired refresh tokens (only those with expiration date set) + // This is business logic that should run on startup + a.DB.Exec("DELETE FROM refresh_tokens WHERE expires_at IS NOT NULL AND expires_at < NOW()") + return nil +} + +func (a *App) initPlayLifeDB() error { + // This function is kept for backward compatibility but does nothing + // Database schema is now managed by golang-migrate + return nil +} + +// DEPRECATED: All migration functions below are no longer used +// Database migrations are now handled by golang-migrate +// These functions are kept for reference only and will be removed in future versions +// +// NOTE: Functions applyMigration012-029 have been removed as they are no longer needed. +// All database schema is now managed by golang-migrate baseline migration. + +// DEPRECATED: initPlayLifeDBOld is no longer used - schema is managed by golang-migrate +func (a *App) initPlayLifeDBOld() error { + // This function is kept for backward compatibility but does nothing + // Database schema is now managed by golang-migrate + return nil +} + +// startWeeklyGoalsScheduler запускает планировщик для автоматической фиксации целей на неделю +// каждый понедельник в 6:00 утра в указанном часовом поясе +func (a *App) startWeeklyGoalsScheduler() { + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + log.Printf("Loading timezone for weekly goals scheduler: '%s'", timezoneStr) + + // Загружаем часовой пояс + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + log.Printf("Note: Timezone must be in IANA format (e.g., 'Europe/Moscow', 'America/New_York'), not 'UTC+3'") + loc = time.UTC + timezoneStr = "UTC" + } else { + log.Printf("Weekly goals scheduler timezone set to: %s", timezoneStr) + } + + // Логируем текущее время в указанном часовом поясе для проверки + now := time.Now().In(loc) + log.Printf("Current time in scheduler timezone (%s): %s", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + log.Printf("Next weekly goals setup will be on Monday at: 06:00 %s (cron: '0 6 * * 1')", timezoneStr) + + // Создаем планировщик с указанным часовым поясом + c := cron.New(cron.WithLocation(loc)) + + // Добавляем задачу: каждый понедельник в 6:00 утра + // Cron выражение: "0 6 * * 1" означает: минута=0, час=6, любой день месяца, любой месяц, понедельник (1) + _, err = c.AddFunc("0 6 * * 1", func() { + now := time.Now().In(loc) + log.Printf("Scheduled task: Refreshing materialized views and setting up weekly goals (timezone: %s, local time: %s)", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + + // Сначала обновляем MV (чтобы в ней были данные прошлой недели) + _, err := a.DB.Exec("REFRESH MATERIALIZED VIEW weekly_report_mv") + if err != nil { + log.Printf("Error refreshing materialized view: %v", err) + } else { + log.Printf("Materialized view refreshed successfully") + } + + // Обновляем projects_median_mv после обновления weekly_report_mv + _, err = a.DB.Exec("REFRESH MATERIALIZED VIEW projects_median_mv") + if err != nil { + log.Printf("Error refreshing projects_median_mv: %v", err) + } else { + log.Printf("Projects median materialized view refreshed successfully") + } + + // Обновляем project_score_sample_mv + _, err = a.DB.Exec("REFRESH MATERIALIZED VIEW project_score_sample_mv") + if err != nil { + log.Printf("Error refreshing project_score_sample_mv: %v", err) + } else { + log.Printf("Project score sample materialized view refreshed successfully") + } + + // Затем настраиваем цели на новую неделю + if err := a.setupWeeklyGoals(); err != nil { + log.Printf("Error in scheduled weekly goals setup: %v", err) + } + }) + if err != nil { + log.Printf("Warning: Failed to add weekly goals scheduler: %v", err) + return + } + + // Запускаем планировщик + c.Start() + log.Println("Weekly goals scheduler started") +} + +// getCurrentWeekScores получает данные текущей недели напрямую из таблицы nodes для конкретного пользователя +// Возвращает map[project_id]total_score для текущей недели +func (a *App) getCurrentWeekScores(userID int) (map[int]float64, error) { + query := ` + SELECT + n.project_id, + COALESCE(SUM(n.score), 0) AS total_score + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE + p.deleted = FALSE + AND p.user_id = $1 + AND n.user_id = $1 + AND EXTRACT(ISOYEAR FROM n.created_date)::INTEGER = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND EXTRACT(WEEK FROM n.created_date)::INTEGER = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + GROUP BY n.project_id + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying current week scores: %v", err) + return nil, fmt.Errorf("error querying current week scores: %w", err) + } + defer rows.Close() + + scores := make(map[int]float64) + for rows.Next() { + var projectID int + var totalScore float64 + if err := rows.Scan(&projectID, &totalScore); err != nil { + log.Printf("Error scanning current week scores row: %v", err) + return nil, fmt.Errorf("error scanning current week scores row: %w", err) + } + scores[projectID] = totalScore + } + + return scores, nil +} + +// getTodayScores получает сумму score всех нод, созданных сегодня для конкретного пользователя +// Возвращает map[project_id]today_score для сегодняшнего дня +func (a *App) getTodayScores(userID int) (map[int]float64, error) { + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + timezoneStr = "UTC" + } + + // Вычисляем текущую дату в нужном часовом поясе + now := time.Now().In(loc) + todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc) + todayEnd := todayStart.Add(24 * time.Hour) + + query := ` + SELECT + n.project_id, + COALESCE(SUM(n.score), 0) AS today_score + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE + p.deleted = FALSE + AND p.user_id = $1 + AND n.user_id = $1 + AND n.created_date >= $2 + AND n.created_date < $3 + GROUP BY n.project_id + ` + + rows, err := a.DB.Query(query, userID, todayStart, todayEnd) + if err != nil { + log.Printf("Error querying today scores: %v", err) + return nil, fmt.Errorf("error querying today scores: %w", err) + } + defer rows.Close() + + scores := make(map[int]float64) + for rows.Next() { + var projectID int + var todayScore float64 + if err := rows.Scan(&projectID, &todayScore); err != nil { + log.Printf("Error scanning today scores row: %v", err) + return nil, fmt.Errorf("error scanning today scores row: %w", err) + } + scores[projectID] = todayScore + } + + return scores, nil +} + +// getTodayScoresAllUsers получает сумму score всех нод, созданных сегодня для всех пользователей +// Возвращает map[project_id]today_score для сегодняшнего дня +func (a *App) getTodayScoresAllUsers() (map[int]float64, error) { + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + timezoneStr = "UTC" + } + + // Вычисляем текущую дату в нужном часовом поясе + now := time.Now().In(loc) + todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc) + todayEnd := todayStart.Add(24 * time.Hour) + + query := ` + SELECT + n.project_id, + COALESCE(SUM(n.score), 0) AS today_score + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE + p.deleted = FALSE + AND n.created_date >= $1 + AND n.created_date < $2 + GROUP BY n.project_id + ` + + rows, err := a.DB.Query(query, todayStart, todayEnd) + if err != nil { + log.Printf("Error querying today scores for all users: %v", err) + return nil, fmt.Errorf("error querying today scores for all users: %w", err) + } + defer rows.Close() + + scores := make(map[int]float64) + for rows.Next() { + var projectID int + var todayScore float64 + if err := rows.Scan(&projectID, &todayScore); err != nil { + log.Printf("Error scanning today scores row: %v", err) + return nil, fmt.Errorf("error scanning today scores row: %w", err) + } + scores[projectID] = todayScore + } + + return scores, nil +} + +// getCurrentWeekScoresAllUsers получает данные текущей недели для всех пользователей +// Возвращает map[project_id]total_score для текущей недели +func (a *App) getCurrentWeekScoresAllUsers() (map[int]float64, error) { + query := ` + SELECT + n.project_id, + COALESCE(SUM(n.score), 0) AS total_score + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE + p.deleted = FALSE + AND EXTRACT(ISOYEAR FROM n.created_date)::INTEGER = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND EXTRACT(WEEK FROM n.created_date)::INTEGER = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + GROUP BY n.project_id + ` + + rows, err := a.DB.Query(query) + if err != nil { + log.Printf("Error querying current week scores for all users: %v", err) + return nil, fmt.Errorf("error querying current week scores for all users: %w", err) + } + defer rows.Close() + + scores := make(map[int]float64) + for rows.Next() { + var projectID int + var totalScore float64 + if err := rows.Scan(&projectID, &totalScore); err != nil { + log.Printf("Error scanning current week scores row: %v", err) + return nil, fmt.Errorf("error scanning current week scores row: %w", err) + } + scores[projectID] = totalScore + } + + return scores, nil +} + +// getWeeklyStatsData получает данные о проектах и их целях (без HTTP обработки) +func (a *App) getWeeklyStatsData() (*WeeklyStatsResponse, error) { + // Получаем данные текущей недели для всех пользователей + currentWeekScores, err := a.getCurrentWeekScoresAllUsers() + if err != nil { + log.Printf("Error getting current week scores: %v", err) + return nil, fmt.Errorf("error getting current week scores: %w", err) + } + + // Получаем сегодняшние приросты для всех пользователей + todayScores, err := a.getTodayScoresAllUsers() + if err != nil { + log.Printf("Error getting today scores: %v", err) + return nil, fmt.Errorf("error getting today scores: %w", err) + } + + query := ` + SELECT + p.id AS project_id, + p.name AS project_name, + -- Используем COALESCE для установки total_score в 0.0000, если нет данных в weekly_report_mv + COALESCE(wr.total_score, 0.0000) AS total_score, + wg.min_goal_score, + wg.max_goal_score, + wg.priority AS priority, + p.color + FROM + projects p + LEFT JOIN + weekly_goals wg ON wg.project_id = p.id + AND wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + LEFT JOIN + weekly_report_mv wr + ON p.id = wr.project_id + AND EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER = wr.report_year + AND EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER = wr.report_week + WHERE + p.deleted = FALSE + ORDER BY + total_score DESC + ` + + rows, err := a.DB.Query(query) + if err != nil { + log.Printf("Error querying weekly stats: %v", err) + return nil, fmt.Errorf("error querying weekly stats: %w", err) + } + defer rows.Close() + + projects := make([]WeeklyProjectStats, 0) + // Группы для расчета среднего по priority + groups := make(map[int][]float64) + + for rows.Next() { + var project WeeklyProjectStats + var projectID int + var minGoalScore sql.NullFloat64 + var maxGoalScore sql.NullFloat64 + var priority sql.NullInt64 + + err := rows.Scan( + &projectID, + &project.ProjectName, + &project.TotalScore, + &minGoalScore, + &maxGoalScore, + &priority, + ) + if err != nil { + log.Printf("Error scanning weekly stats row: %v", err) + return nil, fmt.Errorf("error scanning weekly stats row: %w", err) + } + + // Объединяем данные: если есть данные текущей недели, используем их вместо MV + if currentWeekScore, exists := currentWeekScores[projectID]; exists { + project.TotalScore = currentWeekScore + } + + // Добавляем сегодняшний прирост + if todayScore, exists := todayScores[projectID]; exists && todayScore != 0 { + project.TodayChange = &todayScore + } + + if minGoalScore.Valid { + project.MinGoalScore = minGoalScore.Float64 + } else { + project.MinGoalScore = 0 + } + + if maxGoalScore.Valid { + maxGoalVal := maxGoalScore.Float64 + project.MaxGoalScore = &maxGoalVal + } + + var priorityVal int + if priority.Valid { + priorityVal = int(priority.Int64) + project.Priority = &priorityVal + } + + // Расчет calculated_score по формуле из n8n + totalScore := project.TotalScore + minGoalScoreVal := project.MinGoalScore + var maxGoalScoreVal float64 + if project.MaxGoalScore != nil { + maxGoalScoreVal = *project.MaxGoalScore + } + + // Параметры бонуса в зависимости от priority + var extraBonusLimit float64 = 20 + if priorityVal == 1 { + extraBonusLimit = 50 + } else if priorityVal == 2 { + extraBonusLimit = 35 + } + + // Расчет calculated_score по логике фронтенда + // min_goal -> 100%, max_goal -> 150%/135%/120% в зависимости от приоритета + var resultScore float64 + if minGoalScoreVal <= 0 { + // Если нет minGoal, возвращаем 0 (или можно относительно maxGoal, но обычно 0) + resultScore = 0 + } else if totalScore < minGoalScoreVal { + // До достижения minGoal растем линейно от 0 до 100% + resultScore = (totalScore / minGoalScoreVal) * 100.0 + } else { + // Достигнут minGoal - базовый прогресс = 100% + baseProgress := 100.0 + + // Если maxGoal задан корректно и больше minGoal, добавляем экстра прогресс + if maxGoalScoreVal > minGoalScoreVal { + extraRange := maxGoalScoreVal - minGoalScoreVal + excess := min(totalScore, maxGoalScoreVal) - minGoalScoreVal + extraRatio := min(1.0, max(0.0, excess/extraRange)) + extraProgress := extraRatio * extraBonusLimit + resultScore = min(100.0+extraBonusLimit, baseProgress+extraProgress) + } else { + // Если maxGoal не задан или некорректен, просто 100% + resultScore = baseProgress + } + } + + project.CalculatedScore = roundToTwoDecimals(resultScore) + + // Группировка для итогового расчета + // Проекты с minGoal = 0 или null не учитываются в общем проценте выполнения + if minGoalScoreVal > 0 { + if _, exists := groups[priorityVal]; !exists { + groups[priorityVal] = make([]float64, 0) + } + groups[priorityVal] = append(groups[priorityVal], project.CalculatedScore) + } + + projects = append(projects, project) + } + + // Вычисляем проценты для каждой группы + groupsProgress := calculateGroupsProgress(groups) + + // Вычисляем общий процент выполнения + total := calculateOverallProgress(groupsProgress, groups) + + response := WeeklyStatsResponse{ + Total: total, + GroupProgress1: groupsProgress.Group1, + GroupProgress2: groupsProgress.Group2, + GroupProgress0: groupsProgress.Group0, + Projects: projects, + } + + return &response, nil +} + +// getWeeklyStatsDataForUser получает данные о проектах для конкретного пользователя +func (a *App) getWeeklyStatsDataForUser(userID int) (*WeeklyStatsResponse, error) { + // Получаем данные текущей недели напрямую из nodes + currentWeekScores, err := a.getCurrentWeekScores(userID) + if err != nil { + log.Printf("Error getting current week scores: %v", err) + return nil, fmt.Errorf("error getting current week scores: %w", err) + } + + // Получаем сегодняшние приросты + todayScores, err := a.getTodayScores(userID) + if err != nil { + log.Printf("Error getting today scores: %v", err) + return nil, fmt.Errorf("error getting today scores: %w", err) + } + + query := ` + SELECT + p.id AS project_id, + p.name AS project_name, + COALESCE(wr.total_score, 0.0000) AS total_score, + wg.min_goal_score, + wg.max_goal_score, + wg.priority AS priority, + p.color + FROM + projects p + LEFT JOIN + weekly_goals wg ON wg.project_id = p.id + AND wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + LEFT JOIN + weekly_report_mv wr + ON p.id = wr.project_id + AND EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER = wr.report_year + AND EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER = wr.report_week + WHERE + p.deleted = FALSE AND p.user_id = $1 + ORDER BY + total_score DESC + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + return nil, fmt.Errorf("error querying weekly stats: %w", err) + } + defer rows.Close() + + projects := make([]WeeklyProjectStats, 0) + groups := make(map[int][]float64) + + for rows.Next() { + var project WeeklyProjectStats + var projectID int + var minGoalScore sql.NullFloat64 + var maxGoalScore sql.NullFloat64 + var priority sql.NullInt64 + + err := rows.Scan( + &projectID, + &project.ProjectName, + &project.TotalScore, + &minGoalScore, + &maxGoalScore, + &priority, + &project.Color, + ) + if err != nil { + return nil, fmt.Errorf("error scanning weekly stats row: %w", err) + } + + // Объединяем данные: если есть данные текущей недели, используем их вместо MV + if currentWeekScore, exists := currentWeekScores[projectID]; exists { + project.TotalScore = currentWeekScore + } + + // Добавляем сегодняшний прирост + if todayScore, exists := todayScores[projectID]; exists && todayScore != 0 { + project.TodayChange = &todayScore + } + + if minGoalScore.Valid { + project.MinGoalScore = minGoalScore.Float64 + } else { + project.MinGoalScore = 0 + } + + if maxGoalScore.Valid { + maxGoalVal := maxGoalScore.Float64 + project.MaxGoalScore = &maxGoalVal + } + + var priorityVal int + if priority.Valid { + priorityVal = int(priority.Int64) + project.Priority = &priorityVal + } + + // Расчет calculated_score + totalScore := project.TotalScore + minGoalScoreVal := project.MinGoalScore + var maxGoalScoreVal float64 + if project.MaxGoalScore != nil { + maxGoalScoreVal = *project.MaxGoalScore + } + + // Параметры бонуса в зависимости от priority + var extraBonusLimit float64 = 20 + if priorityVal == 1 { + extraBonusLimit = 50 + } else if priorityVal == 2 { + extraBonusLimit = 35 + } + + // Расчет calculated_score по логике фронтенда + // min_goal -> 100%, max_goal -> 150%/135%/120% в зависимости от приоритета + var resultScore float64 + if minGoalScoreVal <= 0 { + // Если нет minGoal, возвращаем 0 (или можно относительно maxGoal, но обычно 0) + resultScore = 0 + } else if totalScore < minGoalScoreVal { + // До достижения minGoal растем линейно от 0 до 100% + resultScore = (totalScore / minGoalScoreVal) * 100.0 + } else { + // Достигнут minGoal - базовый прогресс = 100% + baseProgress := 100.0 + + // Если maxGoal задан корректно и больше minGoal, добавляем экстра прогресс + if maxGoalScoreVal > minGoalScoreVal { + extraRange := maxGoalScoreVal - minGoalScoreVal + excess := min(totalScore, maxGoalScoreVal) - minGoalScoreVal + extraRatio := min(1.0, max(0.0, excess/extraRange)) + extraProgress := extraRatio * extraBonusLimit + resultScore = min(100.0+extraBonusLimit, baseProgress+extraProgress) + } else { + // Если maxGoal не задан или некорректен, просто 100% + resultScore = baseProgress + } + } + + project.CalculatedScore = roundToTwoDecimals(resultScore) + projects = append(projects, project) + + // Группировка для итогового расчета + // Проекты с minGoal = 0 или null не учитываются в общем проценте выполнения + if minGoalScoreVal > 0 { + if _, exists := groups[priorityVal]; !exists { + groups[priorityVal] = make([]float64, 0) + } + groups[priorityVal] = append(groups[priorityVal], project.CalculatedScore) + } + } + + // Вычисляем проценты для каждой группы + groupsProgress := calculateGroupsProgress(groups) + + // Вычисляем общий процент выполнения + total := calculateOverallProgress(groupsProgress, groups) + + response := WeeklyStatsResponse{ + Total: total, + GroupProgress1: groupsProgress.Group1, + GroupProgress2: groupsProgress.Group2, + GroupProgress0: groupsProgress.Group0, + Projects: projects, + } + + return &response, nil +} + +// formatDailyReport форматирует данные проектов в сообщение для Telegram +// Формат аналогичен JS коду из n8n +func (a *App) formatDailyReport(data *WeeklyStatsResponse) string { + if data == nil || len(data.Projects) == 0 { + return "" + } + + // Заголовок сообщения + markdownMessage := "*📈 Отчет:*\n\n" + + // Простой вывод списка проектов + for _, item := range data.Projects { + projectName := item.ProjectName + if projectName == "" { + projectName = "Без названия" + } + + actualScore := item.TotalScore + minGoal := item.MinGoalScore + var maxGoal float64 + hasMaxGoal := false + if item.MaxGoalScore != nil { + maxGoal = *item.MaxGoalScore + hasMaxGoal = true + } + + // Форматирование Score (+/-) + scoreFormatted := "" + if actualScore >= 0 { + scoreFormatted = fmt.Sprintf("+%.2f", actualScore) + } else { + scoreFormatted = fmt.Sprintf("%.2f", actualScore) + } + + // Форматирование текста целей + // Проверяем, что minGoal валиден (не NaN, как в JS коде: !isNaN(minGoal)) + goalText := "" + if !math.IsNaN(minGoal) { + if hasMaxGoal && !math.IsNaN(maxGoal) { + goalText = fmt.Sprintf(" (Цель: %.1f–%.1f)", minGoal, maxGoal) + } else { + goalText = fmt.Sprintf(" (Цель: мин. %.1f)", minGoal) + } + } + + // Собираем строку: Проект: +Score (Цели) + markdownMessage += fmt.Sprintf("*%s*: %s%s\n", projectName, scoreFormatted, goalText) + } + + // Выводим итоговый total из корня JSON + if data.Total != nil { + markdownMessage += "\n---\n" + markdownMessage += fmt.Sprintf("*Общее выполнение целей*: %.1f%%", *data.Total) + } + + return markdownMessage +} + +// sendDailyReport отправляет персональные ежедневные отчеты всем пользователям +func (a *App) sendDailyReport() error { + log.Printf("Scheduled task: Sending daily reports") + + userIDs, err := a.getAllUsersWithTelegram() + if err != nil { + return fmt.Errorf("error getting users: %w", err) + } + + if len(userIDs) == 0 { + log.Printf("No users with Telegram connected, skipping daily report") + return nil + } + + for _, userID := range userIDs { + data, err := a.getWeeklyStatsDataForUser(userID) + if err != nil { + log.Printf("Error getting data for user %d: %v", userID, err) + continue + } + + message := a.formatDailyReport(data) + if message == "" { + continue + } + + if err := a.sendTelegramMessageToUser(userID, message); err != nil { + log.Printf("Error sending daily report to user %d: %v", userID, err) + } else { + log.Printf("Daily report sent to user %d", userID) + } + } + + return nil +} + +// startDailyReportScheduler запускает планировщик для ежедневного отчета +// каждый день в 23:59 в указанном часовом поясе +func (a *App) startDailyReportScheduler() { + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + log.Printf("Loading timezone for daily report scheduler: '%s'", timezoneStr) + + // Загружаем часовой пояс + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + log.Printf("Note: Timezone must be in IANA format (e.g., 'Europe/Moscow', 'America/New_York'), not 'UTC+3'") + loc = time.UTC + timezoneStr = "UTC" + } else { + log.Printf("Daily report scheduler timezone set to: %s", timezoneStr) + } + + // Логируем текущее время в указанном часовом поясе для проверки + now := time.Now().In(loc) + log.Printf("Current time in scheduler timezone (%s): %s", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + log.Printf("Next daily report will be sent at: 23:59 %s (cron: '59 23 * * *')", timezoneStr) + + // Создаем планировщик с указанным часовым поясом + c := cron.New(cron.WithLocation(loc)) + + // Добавляем задачу: каждый день в 23:59 + // Cron выражение: "59 23 * * *" означает: минута=59, час=23, любой день месяца, любой месяц, любой день недели + _, err = c.AddFunc("59 23 * * *", func() { + now := time.Now().In(loc) + log.Printf("Scheduled task: Sending daily report (timezone: %s, local time: %s)", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + if err := a.sendDailyReport(); err != nil { + log.Printf("Error in scheduled daily report: %v", err) + } + }) + + if err != nil { + log.Printf("Error adding cron job for daily report: %v", err) + return + } + + // Запускаем планировщик + c.Start() + log.Printf("Daily report scheduler started: every day at 23:59 %s", timezoneStr) + + // Планировщик будет работать в фоновом режиме +} + +// startFitbitSyncScheduler запускает планировщик для синхронизации данных Fitbit каждые 4 часа +func (a *App) startFitbitSyncScheduler() { + // Создаем планировщик в UTC (синхронизация не зависит от часового пояса пользователя) + c := cron.New(cron.WithLocation(time.UTC)) + + // Добавляем задачу: каждые 4 часа + // Cron выражение: "0 */4 * * *" означает: минута=0, каждый 4-й час, любой день месяца, любой месяц, любой день недели + _, err := c.AddFunc("0 */4 * * *", func() { + log.Printf("Scheduled task: Syncing Fitbit data for all users") + if err := a.syncFitbitDataForAllUsers(); err != nil { + log.Printf("Error in scheduled Fitbit sync: %v", err) + } + }) + + if err != nil { + log.Printf("Error adding cron job for Fitbit sync: %v", err) + return + } + + // Запускаем планировщик + c.Start() + log.Printf("Fitbit sync scheduler started: every 4 hours") + + // Планировщик будет работать в фоновом режиме +} + +// syncFitbitDataForAllUsers синхронизирует данные Fitbit для всех подключенных пользователей +func (a *App) syncFitbitDataForAllUsers() error { + rows, err := a.DB.Query(` + SELECT user_id FROM fitbit_integrations + WHERE access_token IS NOT NULL + `) + if err != nil { + return fmt.Errorf("failed to get users: %w", err) + } + defer rows.Close() + + var userIDs []int + for rows.Next() { + var userID int + if err := rows.Scan(&userID); err != nil { + log.Printf("Error scanning user_id: %v", err) + continue + } + userIDs = append(userIDs, userID) + } + + if err := rows.Err(); err != nil { + return fmt.Errorf("error iterating users: %w", err) + } + + log.Printf("Syncing Fitbit data for %d users", len(userIDs)) + + // Синхронизируем данные за сегодня для каждого пользователя + today := time.Now() + for _, userID := range userIDs { + if err := a.syncFitbitData(userID, today); err != nil { + log.Printf("Failed to sync Fitbit data for user_id=%d: %v", userID, err) + // Продолжаем синхронизацию для остальных пользователей + continue + } + } + + return nil +} + +// startEndOfDayTaskScheduler запускает планировщик для автовыполнения задач в конце дня +// каждый день в 23:55 в указанном часовом поясе +func (a *App) startEndOfDayTaskScheduler() { + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + log.Printf("Loading timezone for end of day task scheduler: '%s'", timezoneStr) + + // Загружаем часовой пояс + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + log.Printf("Note: Timezone must be in IANA format (e.g., 'Europe/Moscow', 'America/New_York'), not 'UTC+3'") + loc = time.UTC + timezoneStr = "UTC" + } else { + log.Printf("End of day task scheduler timezone set to: %s", timezoneStr) + } + + // Логируем текущее время в указанном часовом поясе для проверки + now := time.Now().In(loc) + log.Printf("Current time in scheduler timezone (%s): %s", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + log.Printf("Next end of day task execution will be at: 23:55 %s (cron: '55 23 * * *')", timezoneStr) + + // Создаем планировщик с указанным часовым поясом + c := cron.New(cron.WithLocation(loc)) + + // Добавляем задачу: каждый день в 23:55 + // Cron выражение: "55 23 * * *" означает: минута=55, час=23, любой день месяца, любой месяц, любой день недели + _, err = c.AddFunc("55 23 * * *", func() { + now := time.Now().In(loc) + log.Printf("Scheduled task: Executing end of day tasks (timezone: %s, local time: %s)", timezoneStr, now.Format("2006-01-02 15:04:05 MST")) + + // Находим все задачи с auto_complete = true + rows, err := a.DB.Query(` + SELECT task_id, user_id, progression_value + FROM task_drafts + WHERE auto_complete = TRUE + `) + if err != nil { + log.Printf("Error querying tasks for end of day execution: %v", err) + return + } + defer rows.Close() + + tasksToExecute := make([]struct { + TaskID int + UserID int + ProgressionValue *float64 + }, 0) + + for rows.Next() { + var taskID, userID int + var progressionValue sql.NullFloat64 + if err := rows.Scan(&taskID, &userID, &progressionValue); err != nil { + log.Printf("Error scanning task for end of day execution: %v", err) + continue + } + var progValue *float64 + if progressionValue.Valid { + progValue = &progressionValue.Float64 + } + tasksToExecute = append(tasksToExecute, struct { + TaskID int + UserID int + ProgressionValue *float64 + }{TaskID: taskID, UserID: userID, ProgressionValue: progValue}) + } + + // Для каждой задачи загружаем подзадачи из драфта и выполняем + for _, taskInfo := range tasksToExecute { + // Загружаем подзадачи из драфта + subtaskRows, err := a.DB.Query(` + SELECT subtask_id + FROM task_draft_subtasks + WHERE task_draft_id = (SELECT id FROM task_drafts WHERE task_id = $1) + `, taskInfo.TaskID) + + childrenTaskIDs := make([]int, 0) + if err == nil { + defer subtaskRows.Close() + for subtaskRows.Next() { + var subtaskID int + if err := subtaskRows.Scan(&subtaskID); err == nil { + childrenTaskIDs = append(childrenTaskIDs, subtaskID) + } + } + } else if err != sql.ErrNoRows { + log.Printf("Error loading subtasks for task %d: %v", taskInfo.TaskID, err) + } + + // Формируем CompleteTaskRequest из данных драфта + req := CompleteTaskRequest{ + Value: taskInfo.ProgressionValue, + ChildrenTaskIDs: childrenTaskIDs, + } + + // Вызываем executeTask - она сама удалит драфт перед выполнением + err = a.executeTask(taskInfo.TaskID, taskInfo.UserID, req) + if err != nil { + log.Printf("Error executing task %d at end of day: %v", taskInfo.TaskID, err) + } else { + log.Printf("Task %d executed successfully at end of day", taskInfo.TaskID) + } + } + }) + + if err != nil { + log.Printf("Error adding cron job for end of day tasks: %v", err) + return + } + + // Запускаем планировщик + c.Start() + log.Printf("End of day task scheduler started: every day at 23:55 %s", timezoneStr) + + // Планировщик будет работать в фоновом режиме +} + +// readVersion читает версию из файла VERSION +func readVersion() string { + // Пробуем разные пути к файлу VERSION + paths := []string{ + "/app/VERSION", // В Docker контейнере + "../VERSION", // При запуске из play-life-backend/ + "../../VERSION", // Альтернативный путь + "VERSION", // Текущая директория + } + + for _, path := range paths { + data, err := os.ReadFile(path) + if err == nil { + version := strings.TrimSpace(string(data)) + if version != "" { + return version + } + } + } + + return "unknown" +} + +func main() { + // Читаем версию приложения + version := readVersion() + log.Printf("========================================") + log.Printf("Play Life Backend v%s", version) + log.Printf("========================================") + + // Загружаем переменные окружения из .env файла (если существует) + // Сначала пробуем загрузить из корня проекта, затем из текущей директории + // Игнорируем ошибку, если файл не найден + godotenv.Load("../.env") // Пробуем корневой .env + godotenv.Load(".env") // Пробуем локальный .env + + dbHost := getEnv("DB_HOST", "localhost") + dbPort := getEnv("DB_PORT", "5432") + dbUser := getEnv("DB_USER", "playeng") + dbPassword := getEnv("DB_PASSWORD", "playeng") + dbName := getEnv("DB_NAME", "playeng") + + // Логируем параметры подключения к БД (без пароля) + log.Printf("Database connection parameters: host=%s port=%s user=%s dbname=%s", dbHost, dbPort, dbUser, dbName) + + dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", + dbHost, dbPort, dbUser, dbPassword, dbName) + + var db *sql.DB + var err error + + // Retry connection + for i := 0; i < 10; i++ { + db, err = sql.Open("postgres", dsn) + if err == nil { + err = db.Ping() + if err == nil { + break + } + } + if i < 9 { + time.Sleep(2 * time.Second) + } + } + + if err != nil { + log.Fatal("Failed to connect to database:", err) + } + log.Printf("Successfully connected to database: %s@%s:%s/%s", dbUser, dbHost, dbPort, dbName) + defer db.Close() + + // Telegram бот теперь загружается из БД при необходимости + // Webhook будет настроен автоматически при сохранении bot token через UI + + // JWT secret from env or generate random + jwtSecret := getEnv("JWT_SECRET", "") + if jwtSecret == "" { + // Generate random secret if not provided (not recommended for production) + b := make([]byte, 32) + rand.Read(b) + jwtSecret = base64.StdEncoding.EncodeToString(b) + log.Printf("WARNING: JWT_SECRET not set, using randomly generated secret. Set JWT_SECRET env var for production.") + } + + app := &App{ + DB: db, + lastWebhookTime: make(map[int]time.Time), + telegramBot: nil, + telegramBotUsername: "", + jwtSecret: []byte(jwtSecret), + } + + // Инициализация Telegram бота из .env + telegramBotToken := getEnv("TELEGRAM_BOT_TOKEN", "") + if telegramBotToken != "" { + bot, err := tgbotapi.NewBotAPI(telegramBotToken) + if err != nil { + log.Printf("WARNING: Failed to initialize Telegram bot: %v", err) + } else { + app.telegramBot = bot + log.Printf("Telegram bot initialized successfully") + + // Получаем username бота через getMe + botInfo, err := bot.GetMe() + if err != nil { + log.Printf("WARNING: Failed to get bot info via getMe(): %v", err) + } else { + app.telegramBotUsername = botInfo.UserName + log.Printf("Telegram bot username: @%s", app.telegramBotUsername) + } + + // Настраиваем webhook для единого бота + webhookBaseURL := getEnv("WEBHOOK_BASE_URL", "") + if webhookBaseURL != "" { + webhookURL := strings.TrimRight(webhookBaseURL, "/") + "/webhook/telegram" + log.Printf("Setting up Telegram webhook: URL=%s", webhookURL) + if err := setupTelegramWebhook(telegramBotToken, webhookURL); err != nil { + log.Printf("WARNING: Failed to setup Telegram webhook: %v", err) + } else { + log.Printf("SUCCESS: Telegram webhook configured: %s", webhookURL) + } + } else { + log.Printf("WEBHOOK_BASE_URL not set. Webhook will not be configured.") + } + } + } else { + log.Printf("WARNING: TELEGRAM_BOT_TOKEN not set in environment") + } + + // Apply database migrations + if err := app.runMigrations(); err != nil { + log.Fatal("Failed to apply database migrations:", err) + } + log.Println("Database migrations applied successfully") + + // Запускаем планировщик для автоматической фиксации целей на неделю + app.startWeeklyGoalsScheduler() + + // Запускаем планировщик для ежедневного отчета в 23:59 + app.startDailyReportScheduler() + + // Запускаем планировщик для автовыполнения задач в конце дня в 23:55 + app.startEndOfDayTaskScheduler() + + // Запускаем планировщик синхронизации Fitbit каждые 4 часа + app.startFitbitSyncScheduler() + + r := mux.NewRouter() + + // Public auth routes (no authentication required) + r.HandleFunc("/api/auth/register", app.registerHandler).Methods("POST", "OPTIONS") + r.HandleFunc("/api/auth/login", app.loginHandler).Methods("POST", "OPTIONS") + r.HandleFunc("/api/auth/refresh", app.refreshTokenHandler).Methods("POST", "OPTIONS") + + // Webhooks - no auth (external services) + r.HandleFunc("/webhook/message/post", app.messagePostHandler).Methods("POST", "OPTIONS") + r.HandleFunc("/webhook/todoist", app.todoistWebhookHandler).Methods("POST", "OPTIONS") + r.HandleFunc("/webhook/telegram", app.telegramWebhookHandler).Methods("POST", "OPTIONS") + + // Admin pages (HTML is public, but API calls require auth) + // Note: We serve HTML without auth check, but JavaScript will check auth and API calls are protected + r.HandleFunc("/admin", app.adminHandler).Methods("GET") + r.HandleFunc("/admin.html", app.adminHandler).Methods("GET") + + // Admin API routes (require authentication and admin privileges) + adminAPIRoutes := r.PathPrefix("/").Subrouter() + adminAPIRoutes.Use(app.authMiddleware) + adminAPIRoutes.Use(app.adminMiddleware) + adminAPIRoutes.HandleFunc("/message/post", app.messagePostHandler).Methods("POST", "OPTIONS") + adminAPIRoutes.HandleFunc("/weekly_goals/setup", app.weeklyGoalsSetupHandler).Methods("POST", "OPTIONS") + adminAPIRoutes.HandleFunc("/daily-report/trigger", app.dailyReportTriggerHandler).Methods("POST", "OPTIONS") + adminAPIRoutes.HandleFunc("/project_score_sample_mv/refresh", app.projectScoreSampleMvRefreshHandler).Methods("POST", "OPTIONS") + + // Static files handler для uploads (public, no auth required) - ДО protected! + // Backend работает из /app/backend/, но uploads находится в /app/uploads/ + r.HandleFunc("/uploads/{path:.*}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + path := vars["path"] + filePath := filepath.Join("/app/uploads", path) + + // Проверяем, что файл существует + if _, err := os.Stat(filePath); os.IsNotExist(err) { + http.NotFound(w, r) + return + } + + // Отдаём файл + http.ServeFile(w, r, filePath) + }).Methods("GET") + + // Protected routes (require authentication) + protected := r.PathPrefix("/").Subrouter() + protected.Use(app.authMiddleware) + + // Auth routes that need authentication + protected.HandleFunc("/api/auth/logout", app.logoutHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/auth/me", app.getMeHandler).Methods("GET", "OPTIONS") + + // Words & dictionaries + protected.HandleFunc("/api/words", app.getWordsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/words", app.addWordsHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/words/{id}", app.deleteWordHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/words/{id}/reset-progress", app.resetWordProgressHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/test/words", app.getTestWordsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/test/progress", app.updateTestProgressHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/dictionaries", app.getDictionariesHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/dictionaries", app.addDictionaryHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/dictionaries/{id}", app.updateDictionaryHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/dictionaries/{id}", app.deleteDictionaryHandler).Methods("DELETE", "OPTIONS") + + // Configs + protected.HandleFunc("/api/configs", app.getConfigsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/configs", app.addConfigHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/configs/{id}", app.updateConfigHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/configs/{id}", app.deleteConfigHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/configs/{id}/dictionaries", app.getConfigDictionariesHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/test-configs-and-dictionaries", app.getTestConfigsAndDictionariesHandler).Methods("GET", "OPTIONS") + + // Projects & stats + protected.HandleFunc("/api/weekly-stats", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/playlife-feed", app.getWeeklyStatsHandler).Methods("GET", "OPTIONS") + // Note: /message/post, /weekly_goals/setup, /daily-report/trigger moved to adminAPIRoutes + protected.HandleFunc("/projects", app.getProjectsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/project/priority", app.setProjectPriorityHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/project/color", app.setProjectColorHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/project/move", app.moveProjectHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/project/delete", app.deleteProjectHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/project/create", app.createProjectHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/d2dc349a-0d13-49b2-a8f0-1ab094bfba9b", app.getFullStatisticsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/today-entries", app.getTodayEntriesHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/entries/{id}", app.deleteEntryHandler).Methods("DELETE", "OPTIONS") + + // Integrations + protected.HandleFunc("/api/integrations/telegram", app.getTelegramIntegrationHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/integrations/telegram", app.updateTelegramIntegrationHandler).Methods("POST", "OPTIONS") + + // Todoist OAuth endpoints + protected.HandleFunc("/api/integrations/todoist/oauth/connect", app.todoistOAuthConnectHandler).Methods("GET") + r.HandleFunc("/api/integrations/todoist/oauth/callback", app.todoistOAuthCallbackHandler).Methods("GET") // Публичный! + protected.HandleFunc("/api/integrations/todoist/status", app.getTodoistStatusHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/integrations/todoist/disconnect", app.todoistDisconnectHandler).Methods("DELETE", "OPTIONS") + + // Fitbit OAuth endpoints + protected.HandleFunc("/api/integrations/fitbit/oauth/connect", app.fitbitOAuthConnectHandler).Methods("GET") + r.HandleFunc("/api/integrations/fitbit/oauth/callback", app.fitbitOAuthCallbackHandler).Methods("GET") // Публичный! + protected.HandleFunc("/api/integrations/fitbit/status", app.getFitbitStatusHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/integrations/fitbit/disconnect", app.fitbitDisconnectHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/integrations/fitbit/goals", app.updateFitbitGoalsHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/integrations/fitbit/sync", app.fitbitSyncHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/integrations/fitbit/stats", app.getFitbitStatsHandler).Methods("GET", "OPTIONS") + + // Tasks + protected.HandleFunc("/api/tasks", app.getTasksHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/tasks", app.createTaskHandler).Methods("POST", "OPTIONS") + // Специфичные роуты должны быть ПЕРЕД общим роутом /api/tasks/{id} + protected.HandleFunc("/api/tasks/{id}/complete", app.completeTaskHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}/complete-and-delete", app.completeAndDeleteTaskHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}/postpone", app.postponeTaskHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}/draft", app.saveTaskDraftHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}/complete-at-end-of-day", app.completeTaskAtEndOfDayHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}", app.getTaskDetailHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}", app.updateTaskHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/tasks/{id}", app.deleteTaskHandler).Methods("DELETE", "OPTIONS") + + // Wishlist + protected.HandleFunc("/api/wishlist", app.getWishlistHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist", app.createWishlistHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/completed", app.getWishlistCompletedHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/metadata", app.extractLinkMetadataHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/proxy-image", app.proxyImageHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/calculate-weeks", app.calculateWeeksHandler).Methods("POST", "OPTIONS") + + // Wishlist Boards (ВАЖНО: должны быть ПЕРЕД /api/wishlist/{id} чтобы избежать конфликта роутов!) + protected.HandleFunc("/api/wishlist/boards", app.getBoardsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards", app.createBoardHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}", app.getBoardHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}", app.updateBoardHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}", app.deleteBoardHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}/regenerate-invite", app.regenerateBoardInviteHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}/members", app.getBoardMembersHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}/members/{userId}", app.removeBoardMemberHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{id}/leave", app.leaveBoardHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{boardId}/items", app.getBoardItemsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{boardId}/items", app.createBoardItemHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/boards/{boardId}/completed", app.getBoardCompletedHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/invite/{token}", app.getBoardInviteInfoHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/invite/{token}/join", app.joinBoardHandler).Methods("POST", "OPTIONS") + + // Tracking + protected.HandleFunc("/api/tracking/stats", app.getTrackingStatsHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/tracking/invite", app.createTrackingInviteHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tracking/invite/{token}", app.getTrackingInviteInfoHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/tracking/invite/{token}/accept", app.acceptTrackingInviteHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/tracking/access", app.getTrackingAccessHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/tracking/trackers/{id}", app.deleteTrackingTrackerHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/tracking/tracked/{id}", app.deleteTrackingTrackedHandler).Methods("DELETE", "OPTIONS") + + // Wishlist items (после boards, чтобы {id} не перехватывал "boards") + protected.HandleFunc("/api/wishlist/{id}", app.getWishlistItemHandler).Methods("GET", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}", app.updateWishlistHandler).Methods("PUT", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}", app.deleteWishlistHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}/image", app.uploadWishlistImageHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}/image", app.deleteWishlistImageHandler).Methods("DELETE", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}/complete", app.completeWishlistHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}/uncomplete", app.uncompleteWishlistHandler).Methods("POST", "OPTIONS") + protected.HandleFunc("/api/wishlist/{id}/copy", app.copyWishlistHandler).Methods("POST", "OPTIONS") + + // Group suggestions + protected.HandleFunc("/api/group-suggestions", app.getGroupSuggestionsHandler).Methods("GET", "OPTIONS") + + // Admin operations + protected.HandleFunc("/admin/recreate-mv", app.recreateMaterializedViewHandler).Methods("POST", "OPTIONS") + + port := getEnv("PORT", "8080") + log.Printf("Server starting on port %s", port) + log.Printf("Registered public routes: /api/auth/register, /api/auth/login, /api/auth/refresh, webhooks") + log.Printf("All other routes require authentication via Bearer token") + log.Printf("Admin panel available at: http://localhost:%s/admin.html", port) + log.Fatal(http.ListenAndServe(":"+port, r)) +} + +func getEnv(key, defaultValue string) string { + if value := os.Getenv(key); value != "" { + return value + } + return defaultValue +} + +// getMapKeys возвращает список ключей из map +func getMapKeys(m map[string]interface{}) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + return keys +} + +// setupTelegramWebhook настраивает webhook для Telegram бота +func setupTelegramWebhook(botToken, webhookURL string) error { + apiURL := fmt.Sprintf("https://api.telegram.org/bot%s/setWebhook", botToken) + log.Printf("Setting up Telegram webhook: apiURL=%s, webhookURL=%s", apiURL, webhookURL) + + payload := map[string]string{ + "url": webhookURL, + } + + jsonData, err := json.Marshal(payload) + if err != nil { + return fmt.Errorf("failed to marshal webhook payload: %w", err) + } + + // Создаем HTTP клиент с таймаутом + client := &http.Client{ + Timeout: 10 * time.Second, + } + + resp, err := client.Post(apiURL, "application/json", bytes.NewBuffer(jsonData)) + if err != nil { + log.Printf("ERROR: Failed to send webhook setup request: %v", err) + return fmt.Errorf("failed to send webhook setup request: %w", err) + } + defer resp.Body.Close() + + bodyBytes, err := io.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("failed to read response body: %w", err) + } + log.Printf("Telegram API response: status=%d, body=%s", resp.StatusCode, string(bodyBytes)) + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("telegram API returned status %d: %s", resp.StatusCode, string(bodyBytes)) + } + + // Декодируем из уже прочитанных байтов + var result map[string]interface{} + if err := json.Unmarshal(bodyBytes, &result); err != nil { + return fmt.Errorf("failed to decode response: %w", err) + } + + if ok, _ := result["ok"].(bool); !ok { + description, _ := result["description"].(string) + return fmt.Errorf("telegram API returned error: %s", description) + } + + return nil +} + +// Вспомогательные функции для расчетов +func min(a, b float64) float64 { + if a < b { + return a + } + return b +} + +func max(a, b float64) float64 { + if a > b { + return a + } + return b +} + +func roundToTwoDecimals(val float64) float64 { + return float64(int(val*100+0.5)) / 100.0 +} + +func roundToFourDecimals(val float64) float64 { + return float64(int(val*10000+0.5)) / 10000.0 +} + +// calculateGroupsProgress вычисляет проценты выполнения для каждой группы приоритетов +// groups - карта приоритетов к спискам calculatedScore проектов +// Возвращает структуру GroupsProgress с процентами для каждой группы +// Если какая-то группа отсутствует, она считается как 100% +// min_goal = 100%, max_goal = 150%/135%/120% в зависимости от приоритета +func calculateGroupsProgress(groups map[int][]float64) GroupsProgress { + // Всего есть 3 группы: приоритет 1, приоритет 2, приоритет 0 + // Вычисляем среднее для каждой группы, если она есть + // Если группы нет, считаем её как 100% + + result := GroupsProgress{} + + // Обрабатываем все 3 возможных приоритета + priorities := []int{1, 2, 0} + + for _, priorityVal := range priorities { + scores, exists := groups[priorityVal] + + var avg float64 + if !exists || len(scores) == 0 { + // Если группы нет, считаем как 100% + avg = 100.0 + } else { + // Для приоритета 1 и 2 - обычное среднее + if priorityVal == 1 || priorityVal == 2 { + sum := 0.0 + for _, score := range scores { + sum += score + } + avg = sum / float64(len(scores)) + } else { + // Для проектов без приоритета (priorityVal == 0) - специальная формула + projectCount := float64(len(scores)) + multiplier := 100.0 / (projectCount * 0.8) + + sum := 0.0 + for _, score := range scores { + // score уже в процентах (например, 80.0), переводим в долю (0.8) + scoreAsDecimal := score / 100.0 + sum += scoreAsDecimal * multiplier + } + + avg = math.Min(120.0, sum) + } + } + + // Сохраняем результат в соответствующее поле + avgRounded := roundToFourDecimals(avg) + switch priorityVal { + case 1: + result.Group1 = &avgRounded + case 2: + result.Group2 = &avgRounded + case 0: + result.Group0 = &avgRounded + } + } + + return result +} + +// calculateOverallProgress вычисляет общий процент выполнения на основе процентов групп +// groupsProgress - структура с процентами для каждой группы приоритетов +// groups - карта приоритетов к спискам calculatedScore проектов (используется для точного расчета) +// Возвращает указатель на float64 с общим процентом выполнения +// Вычисляет среднее между группами (min_goal = 100%, max_goal = 150%/135%/120%) +func calculateOverallProgress(groupsProgress GroupsProgress, groups map[int][]float64) *float64 { + // Собираем проценты по группам + var groupScores []float64 + + // Добавляем проценты только тех групп, которые существуют (имеют проекты) + if groupsProgress.Group1 != nil { + groupScores = append(groupScores, *groupsProgress.Group1) + } + if groupsProgress.Group2 != nil { + groupScores = append(groupScores, *groupsProgress.Group2) + } + if groupsProgress.Group0 != nil { + groupScores = append(groupScores, *groupsProgress.Group0) + } + + // Если нет групп с проектами, возвращаем 0 + if len(groupScores) == 0 { + zero := 0.0 + return &zero + } + + // Вычисляем среднее между группами + var sum float64 + for _, score := range groupScores { + sum += score + } + + overallProgress := sum / float64(len(groupScores)) + overallProgressRounded := roundToFourDecimals(overallProgress) + total := &overallProgressRounded + + return total +} + +// TelegramIntegration представляет запись из таблицы telegram_integrations +type TelegramIntegration struct { + ID int `json:"id"` + UserID int `json:"user_id"` + TelegramUserID *int64 `json:"telegram_user_id,omitempty"` + ChatID *string `json:"chat_id,omitempty"` + StartToken *string `json:"start_token,omitempty"` + CreatedAt *time.Time `json:"created_at,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} + +// TodoistIntegration представляет запись из таблицы todoist_integrations +type TodoistIntegration struct { + ID int `json:"id"` + UserID int `json:"user_id"` + TodoistUserID *int64 `json:"todoist_user_id,omitempty"` + TodoistEmail *string `json:"todoist_email,omitempty"` + AccessToken *string `json:"-"` // Не отдавать в JSON! + CreatedAt *time.Time `json:"created_at,omitempty"` + UpdatedAt *time.Time `json:"updated_at,omitempty"` +} + +// getTelegramIntegration получает telegram интеграцию из БД +// getTelegramIntegrationForUser gets telegram integration for specific user +func (a *App) getTelegramIntegrationForUser(userID int) (*TelegramIntegration, error) { + var integration TelegramIntegration + var telegramUserID sql.NullInt64 + var chatID, startToken sql.NullString + var createdAt, updatedAt sql.NullTime + + err := a.DB.QueryRow(` + SELECT id, user_id, telegram_user_id, chat_id, start_token, created_at, updated_at + FROM telegram_integrations + WHERE user_id = $1 + LIMIT 1 + `, userID).Scan( + &integration.ID, + &integration.UserID, + &telegramUserID, + &chatID, + &startToken, + &createdAt, + &updatedAt, + ) + + if err == sql.ErrNoRows { + // Создаем новую запись с start_token + startTokenValue, err := generateWebhookToken() + if err != nil { + return nil, fmt.Errorf("failed to generate start token: %w", err) + } + + err = a.DB.QueryRow(` + INSERT INTO telegram_integrations (user_id, start_token) + VALUES ($1, $2) + RETURNING id, user_id, telegram_user_id, chat_id, start_token, created_at, updated_at + `, userID, startTokenValue).Scan( + &integration.ID, + &integration.UserID, + &telegramUserID, + &chatID, + &startToken, + &createdAt, + &updatedAt, + ) + if err != nil { + return nil, fmt.Errorf("failed to create telegram integration: %w", err) + } + startToken = sql.NullString{String: startTokenValue, Valid: true} + } else if err != nil { + return nil, fmt.Errorf("failed to get telegram integration: %w", err) + } + + // Заполняем указатели + if telegramUserID.Valid { + integration.TelegramUserID = &telegramUserID.Int64 + } + if chatID.Valid { + integration.ChatID = &chatID.String + } + if startToken.Valid { + integration.StartToken = &startToken.String + } + if createdAt.Valid { + integration.CreatedAt = &createdAt.Time + } + if updatedAt.Valid { + integration.UpdatedAt = &updatedAt.Time + } + + return &integration, nil +} + +// sendTelegramMessageToChat - отправляет сообщение в конкретный чат по chat_id +func (a *App) sendTelegramMessageToChat(chatID int64, text string) error { + if a.telegramBot == nil { + return fmt.Errorf("telegram bot not initialized") + } + + telegramText := regexp.MustCompile(`\*\*([^*]+)\*\*`).ReplaceAllString(text, "*$1*") + msg := tgbotapi.NewMessage(chatID, telegramText) + msg.ParseMode = "Markdown" + + _, err := a.telegramBot.Send(msg) + if err != nil { + // Проверяем, не заблокирован ли бот + if strings.Contains(err.Error(), "blocked") || + strings.Contains(err.Error(), "chat not found") || + strings.Contains(err.Error(), "bot was blocked") { + // Пользователь заблокировал бота - очищаем данные + chatIDStr := strconv.FormatInt(chatID, 10) + a.DB.Exec(` + UPDATE telegram_integrations + SET telegram_user_id = NULL, chat_id = NULL, updated_at = CURRENT_TIMESTAMP + WHERE chat_id = $1 + `, chatIDStr) + log.Printf("User blocked bot, cleared integration for chat_id=%d", chatID) + } + return err + } + + log.Printf("Message sent to chat_id=%d", chatID) + return nil +} + +// sendTelegramMessageToUser - отправляет сообщение пользователю по user_id +func (a *App) sendTelegramMessageToUser(userID int, text string) error { + var chatID sql.NullString + err := a.DB.QueryRow(` + SELECT chat_id FROM telegram_integrations + WHERE user_id = $1 AND chat_id IS NOT NULL + `, userID).Scan(&chatID) + + if err == sql.ErrNoRows || !chatID.Valid { + return fmt.Errorf("telegram not connected for user %d", userID) + } + if err != nil { + return err + } + + chatIDInt, err := strconv.ParseInt(chatID.String, 10, 64) + if err != nil { + return fmt.Errorf("invalid chat_id format: %w", err) + } + + return a.sendTelegramMessageToChat(chatIDInt, text) +} + +// getAllUsersWithTelegram - получает список всех user_id с подключенным Telegram +func (a *App) getAllUsersWithTelegram() ([]int, error) { + rows, err := a.DB.Query(` + SELECT user_id FROM telegram_integrations + WHERE chat_id IS NOT NULL AND telegram_user_id IS NOT NULL + `) + if err != nil { + return nil, err + } + defer rows.Close() + + var userIDs []int + for rows.Next() { + var userID int + if err := rows.Scan(&userID); err == nil { + userIDs = append(userIDs, userID) + } + } + return userIDs, nil +} + +// utf16OffsetToUTF8 конвертирует UTF-16 offset в UTF-8 byte offset +func utf16OffsetToUTF8(text string, utf16Offset int) int { + utf16Runes := utf16.Encode([]rune(text)) + if utf16Offset >= len(utf16Runes) { + return len(text) + } + + // Конвертируем UTF-16 кодовые единицы обратно в UTF-8 байты + runes := utf16.Decode(utf16Runes[:utf16Offset]) + return len(string(runes)) +} + +// utf16LengthToUTF8 конвертирует UTF-16 length в UTF-8 byte length +func utf16LengthToUTF8(text string, utf16Offset, utf16Length int) int { + utf16Runes := utf16.Encode([]rune(text)) + if utf16Offset+utf16Length > len(utf16Runes) { + utf16Length = len(utf16Runes) - utf16Offset + } + if utf16Length <= 0 { + return 0 + } + + // Конвертируем UTF-16 кодовые единицы в UTF-8 байты + startRunes := utf16.Decode(utf16Runes[:utf16Offset]) + endRunes := utf16.Decode(utf16Runes[:utf16Offset+utf16Length]) + + startBytes := len(string(startRunes)) + endBytes := len(string(endRunes)) + + return endBytes - startBytes +} + +// processTelegramMessage обрабатывает сообщение из Telegram с использованием entities +// Логика отличается от processMessage: использует entities для определения жирного текста +// и не отправляет сообщение обратно в Telegram +// userID может быть nil, если пользователь не определен +func (a *App) processTelegramMessage(fullText string, entities []TelegramEntity, userID *int) (*ProcessedEntry, error) { + fullText = strings.TrimSpace(fullText) + + // Регулярное выражение: project+/-score (без **) + scoreRegex := regexp.MustCompile(`^([а-яА-ЯёЁ\w]+)([+-])(\d+(?:\.\d+)?)$`) + + // Массив для хранения извлеченных элементов {project, score} + scoreNodes := make([]ProcessedNode, 0) + workingText := fullText + placeholderIndex := 0 + + // Находим все элементы, выделенные жирным шрифтом + boldEntities := make([]TelegramEntity, 0) + for _, entity := range entities { + if entity.Type == "bold" { + boldEntities = append(boldEntities, entity) + } + } + + // Сортируем в ПРЯМОМ порядке (по offset), чтобы гарантировать, что ${0} соответствует первому в тексте + sort.Slice(boldEntities, func(i, j int) bool { + return boldEntities[i].Offset < boldEntities[j].Offset + }) + + // Массив для хранения данных, которые будут использоваться для замены в обратном порядке + type ReplacementData struct { + Start int + Length int + Placeholder string + } + replacementData := make([]ReplacementData, 0) + + for _, entity := range boldEntities { + // Telegram использует UTF-16 для offset и length, конвертируем в UTF-8 байты + start := utf16OffsetToUTF8(fullText, entity.Offset) + length := utf16LengthToUTF8(fullText, entity.Offset, entity.Length) + + // Извлекаем чистый жирный текст + if start+length > len(fullText) { + continue // Пропускаем некорректные entities + } + boldText := strings.TrimSpace(fullText[start : start+length]) + + // Проверяем соответствие формату + match := scoreRegex.FindStringSubmatch(boldText) + + if match != nil && len(match) == 4 { + // Создаем элемент node + project := match[1] + sign := match[2] + rawScore, err := strconv.ParseFloat(match[3], 64) + if err != nil { + log.Printf("Error parsing score: %v", err) + continue + } + score := rawScore + if sign == "-" { + score = -rawScore + } + + // Добавляем в массив nodes (по порядку) + scoreNodes = append(scoreNodes, ProcessedNode{ + Project: project, + Score: score, + }) + + // Создаем данные для замены + replacementData = append(replacementData, ReplacementData{ + Start: start, + Length: length, + Placeholder: fmt.Sprintf("${%d}", placeholderIndex), + }) + + placeholderIndex++ + } + } + + // Теперь выполняем замены в ОБРАТНОМ порядке, чтобы offset не "смещались" + sort.Slice(replacementData, func(i, j int) bool { + return replacementData[i].Start > replacementData[j].Start + }) + + for _, item := range replacementData { + // Заменяем сегмент в workingText, используя оригинальные offset и length + if item.Start+item.Length <= len(workingText) { + workingText = workingText[:item.Start] + item.Placeholder + workingText[item.Start+item.Length:] + } + } + + // Удаляем пустые строки и лишние пробелы + lines := strings.Split(workingText, "\n") + cleanedLines := make([]string, 0) + for _, line := range lines { + trimmed := strings.TrimSpace(line) + if trimmed != "" { + cleanedLines = append(cleanedLines, trimmed) + } + } + processedText := strings.Join(cleanedLines, "\n") + + // Используем текущее время в формате ISO 8601 (UTC) + createdDate := time.Now().UTC().Format(time.RFC3339) + + // Вставляем данные в БД только если есть nodes + if len(scoreNodes) > 0 { + err := a.insertMessageData(processedText, createdDate, scoreNodes, userID) + if err != nil { + log.Printf("Error inserting message data: %v", err) + return nil, fmt.Errorf("error inserting data: %w", err) + } + } else { + // Если nodes нет, используем исходный текст для processedText + processedText = fullText + log.Printf("No nodes found in Telegram message, message will not be saved to database") + } + + // Формируем ответ + response := &ProcessedEntry{ + Text: processedText, + CreatedDate: createdDate, + Nodes: scoreNodes, + Raw: fullText, + Markdown: fullText, // Для Telegram markdown не нужен + } + + // НЕ отправляем сообщение обратно в Telegram (в отличие от processMessage) + + return response, nil +} + +// processMessage обрабатывает текст сообщения: парсит ноды, сохраняет в БД и отправляет в Telegram +func (a *App) processMessage(rawText string, userID *int) (*ProcessedEntry, error) { + return a.processMessageInternal(rawText, true, userID) +} + +// processMessageWithoutTelegram обрабатывает текст сообщения: парсит ноды, сохраняет в БД, но НЕ отправляет в Telegram +func (a *App) processMessageWithoutTelegram(rawText string, userID *int) (*ProcessedEntry, error) { + return a.processMessageInternal(rawText, false, userID) +} + +// processMessageInternal - внутренняя функция обработки сообщения +// sendToTelegram определяет, нужно ли отправлять сообщение в Telegram +func (a *App) processMessageInternal(rawText string, sendToTelegram bool, userID *int) (*ProcessedEntry, error) { + rawText = strings.TrimSpace(rawText) + + // Регулярное выражение для поиска **[Project][+| -][Score]** + regex := regexp.MustCompile(`\*\*(.+?)([+-])([\d.]+)\*\*`) + + nodes := make([]ProcessedNode, 0) + nodeCounter := 0 + + // Ищем все node и заменяем их в тексте на плейсхолдеры ${0}, ${1} и т.д. + processedText := regex.ReplaceAllStringFunc(rawText, func(fullMatch string) string { + matches := regex.FindStringSubmatch(fullMatch) + if len(matches) != 4 { + return fullMatch + } + + projectName := strings.TrimSpace(matches[1]) + sign := matches[2] + scoreString := matches[3] + + score, err := strconv.ParseFloat(scoreString, 64) + if err != nil { + log.Printf("Error parsing score: %v", err) + return fullMatch + } + + if sign == "-" { + score = -score + } + + // Добавляем данные в массив nodes + nodes = append(nodes, ProcessedNode{ + Project: projectName, + Score: score, + }) + + placeholder := fmt.Sprintf("${%d}", nodeCounter) + nodeCounter++ + return placeholder + }) + + // Удаляем пустые строки и лишние пробелы + lines := strings.Split(processedText, "\n") + cleanedLines := make([]string, 0) + for _, line := range lines { + trimmed := strings.TrimSpace(line) + if trimmed != "" { + cleanedLines = append(cleanedLines, trimmed) + } + } + processedText = strings.Join(cleanedLines, "\n") + + // Формируем Markdown (Legacy) контент: заменяем ** на * + markdownText := strings.ReplaceAll(rawText, "**", "*") + + // Используем текущее время + createdDate := time.Now().UTC().Format(time.RFC3339) + + // Вставляем данные в БД только если есть nodes + if len(nodes) > 0 { + err := a.insertMessageData(processedText, createdDate, nodes, userID) + if err != nil { + log.Printf("Error inserting message data: %v", err) + return nil, fmt.Errorf("error inserting data: %w", err) + } + } else { + // Если nodes нет, используем исходный текст для processedText + processedText = rawText + if sendToTelegram { + log.Printf("No nodes found in text, message will be sent to Telegram but not saved to database") + } else { + log.Printf("No nodes found in text, message will be ignored (not saved to database and not sent to Telegram)") + } + } + + // Формируем ответ + response := &ProcessedEntry{ + Text: processedText, + CreatedDate: createdDate, + Nodes: nodes, + Raw: rawText, + Markdown: markdownText, + } + + // Отправляем дублирующее сообщение в Telegram только если указано + if sendToTelegram && userID != nil { + if err := a.sendTelegramMessageToUser(*userID, rawText); err != nil { + log.Printf("Error sending Telegram message: %v", err) + } + } + + return response, nil +} + +func (a *App) messagePostHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + // Get user ID from context (may be nil for webhook) + var userIDPtr *int + if userID, ok := getUserIDFromContext(r); ok { + userIDPtr = &userID + } + + // Парсим входящий запрос - может быть как {body: {text: ...}}, так и {text: ...} + var rawReq map[string]interface{} + if err := json.NewDecoder(r.Body).Decode(&rawReq); err != nil { + log.Printf("Error decoding message post request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Извлекаем text из разных возможных структур + var rawText string + if body, ok := rawReq["body"].(map[string]interface{}); ok { + if text, ok := body["text"].(string); ok { + rawText = text + } + } + + // Если не нашли в body, пробуем напрямую + if rawText == "" { + if text, ok := rawReq["text"].(string); ok { + rawText = text + } + } + + // Проверка на наличие нужного поля + if rawText == "" { + sendErrorWithCORS(w, "Missing 'text' field in body", http.StatusBadRequest) + return + } + + // Обрабатываем сообщение + response, err := a.processMessage(rawText, userIDPtr) + if err != nil { + log.Printf("Error processing message: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +func (a *App) insertMessageData(entryText string, createdDate string, nodes []ProcessedNode, userID *int) error { + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + return fmt.Errorf("failed to begin transaction: %w", err) + } + defer tx.Rollback() + + // 1. UPSERT проектов + projectNames := make(map[string]bool) + for _, node := range nodes { + projectNames[node.Project] = true + } + + // Вставляем проекты + for projectName := range projectNames { + if userID != nil { + // Используем более универсальный подход: проверяем существование и вставляем/обновляем + var existingID int + err := tx.QueryRow(` + SELECT id FROM projects + WHERE name = $1 AND user_id = $2 AND deleted = FALSE + `, projectName, *userID).Scan(&existingID) + + if err == sql.ErrNoRows { + // Проект не существует, создаем новый + randomColor := generateRandomProjectColor() + _, err = tx.Exec(` + INSERT INTO projects (name, deleted, user_id, color) + VALUES ($1, FALSE, $2, $3) + `, projectName, *userID, randomColor) + if err != nil { + // Если ошибка из-за уникальности, пробуем обновить существующий + _, err = tx.Exec(` + UPDATE projects + SET deleted = FALSE, user_id = COALESCE(user_id, $2) + WHERE name = $1 + `, projectName, *userID) + if err != nil { + return fmt.Errorf("failed to upsert project %s: %w", projectName, err) + } + } + } else if err != nil { + return fmt.Errorf("failed to check project %s: %w", projectName, err) + } + // Проект уже существует, ничего не делаем + } else { + // Для случая без user_id (legacy) + var existingID int + err := tx.QueryRow(` + SELECT id FROM projects + WHERE name = $1 AND deleted = FALSE + `, projectName).Scan(&existingID) + + if err == sql.ErrNoRows { + // Проект не существует, создаем новый + randomColor := generateRandomProjectColor() + _, err = tx.Exec(` + INSERT INTO projects (name, deleted, color) + VALUES ($1, FALSE, $2) + `, projectName, randomColor) + if err != nil { + return fmt.Errorf("failed to insert project %s: %w", projectName, err) + } + } else if err != nil { + return fmt.Errorf("failed to check project %s: %w", projectName, err) + } + // Проект уже существует, ничего не делаем + } + } + + // 2. Вставляем entry + var entryID int + if userID != nil { + err = tx.QueryRow(` + INSERT INTO entries (text, created_date, user_id) + VALUES ($1, $2, $3) + RETURNING id + `, entryText, createdDate, *userID).Scan(&entryID) + } else { + err = tx.QueryRow(` + INSERT INTO entries (text, created_date) + VALUES ($1, $2) + RETURNING id + `, entryText, createdDate).Scan(&entryID) + } + if err != nil { + return fmt.Errorf("failed to insert entry: %w", err) + } + + // 3. Вставляем nodes + for _, node := range nodes { + var projectID int + if userID != nil { + err = tx.QueryRow(` + SELECT id FROM projects + WHERE name = $1 AND user_id = $2 AND deleted = FALSE + `, node.Project, *userID).Scan(&projectID) + } else { + err = tx.QueryRow(` + SELECT id FROM projects + WHERE name = $1 AND deleted = FALSE + `, node.Project).Scan(&projectID) + } + + if err == sql.ErrNoRows { + return fmt.Errorf("project %s not found after insert", node.Project) + } else if err != nil { + return fmt.Errorf("failed to find project %s: %w", node.Project, err) + } + + // Вставляем node с user_id и created_date (денормализация) + if userID != nil { + _, err = tx.Exec(` + INSERT INTO nodes (project_id, entry_id, score, user_id, created_date) + VALUES ($1, $2, $3, $4, $5) + `, projectID, entryID, node.Score, *userID, createdDate) + } else { + _, err = tx.Exec(` + INSERT INTO nodes (project_id, entry_id, score, created_date) + VALUES ($1, $2, $3, $4) + `, projectID, entryID, node.Score, createdDate) + } + if err != nil { + return fmt.Errorf("failed to insert node for project %s: %w", node.Project, err) + } + } + + // MV обновляется только по крону в понедельник в 6:00 утра + // Данные текущей недели берутся напрямую из nodes + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + return fmt.Errorf("failed to commit transaction: %w", err) + } + + return nil +} + +// setupWeeklyGoals выполняет установку целей на неделю (без HTTP обработки) +func (a *App) setupWeeklyGoals() error { + // 1. Выполняем SQL запрос для установки целей + setupQuery := ` + WITH current_info AS ( + -- Сегодня это будет 2026 год / 1 неделя + SELECT + EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER AS c_year, + EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER AS c_week + ), + goal_metrics AS ( + -- Считаем медиану на основе данных за последние 4 недели, исключая текущую неделю + SELECT + project_id, + PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score + FROM ( + SELECT + project_id, + normalized_total_score, + report_year, + report_week, + -- Нумеруем недели от новых к старым + ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn + FROM weekly_report_mv + WHERE + -- Исключаем текущую неделю и все будущие недели + -- Используем сравнение (year, week) < (current_year, current_week) для корректного исключения + (report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) + ) sub + WHERE rn <= 4 -- Берем историю за последние 4 недели, исключая текущую неделю + GROUP BY project_id + ) + INSERT INTO weekly_goals ( + project_id, + goal_year, + goal_week, + min_goal_score, + max_goal_score, + max_score, + priority, + user_id + ) + SELECT + p.id, + ci.c_year, + ci.c_week, + -- Если нет данных (gm.median_score IS NULL), используем 0 (значение по умолчанию) + COALESCE(gm.median_score, 0) AS min_goal_score, + -- Логика max_score в зависимости от приоритета (только если есть данные) + CASE + WHEN gm.median_score IS NULL THEN NULL + WHEN p.priority = 1 THEN gm.median_score * 2.0 + WHEN p.priority = 2 THEN gm.median_score * 1.7 + ELSE gm.median_score * 1.4 + END AS max_goal_score, + -- max_score (snapshot) заполняется при INSERT, но НЕ обновляется при конфликте + CASE + WHEN gm.median_score IS NULL THEN NULL + WHEN p.priority = 1 THEN gm.median_score * 2.0 + WHEN p.priority = 2 THEN gm.median_score * 1.7 + ELSE gm.median_score * 1.4 + END AS max_score, + p.priority, + p.user_id + FROM projects p + CROSS JOIN current_info ci + LEFT JOIN goal_metrics gm ON p.id = gm.project_id + WHERE p.deleted = FALSE + ON CONFLICT (project_id, goal_year, goal_week) DO UPDATE + SET + min_goal_score = EXCLUDED.min_goal_score, + max_goal_score = EXCLUDED.max_goal_score, + priority = EXCLUDED.priority, + user_id = EXCLUDED.user_id + ` + + _, err := a.DB.Exec(setupQuery) + if err != nil { + log.Printf("Error setting up weekly goals: %v", err) + return fmt.Errorf("error setting up weekly goals: %w", err) + } + + log.Println("Weekly goals setup completed successfully") + + // Отправляем сообщение в Telegram с зафиксированными целями + if err := a.sendWeeklyGoalsTelegramMessage(); err != nil { + log.Printf("Error sending weekly goals Telegram message: %v", err) + // Не возвращаем ошибку, так как фиксация целей уже выполнена успешно + } + + return nil +} + +// getWeeklyGoalsForUser получает цели для конкретного пользователя +func (a *App) getWeeklyGoalsForUser(userID int) ([]WeeklyGoalSetup, error) { + selectQuery := ` + SELECT + p.name AS project_name, + wg.min_goal_score, + wg.max_goal_score + FROM + weekly_goals wg + JOIN + projects p ON wg.project_id = p.id + WHERE + wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + AND p.deleted = FALSE + AND p.user_id = $1 + ORDER BY + p.name + ` + + rows, err := a.DB.Query(selectQuery, userID) + if err != nil { + return nil, fmt.Errorf("error querying weekly goals: %w", err) + } + defer rows.Close() + + goals := make([]WeeklyGoalSetup, 0) + for rows.Next() { + var goal WeeklyGoalSetup + var maxGoalScore sql.NullFloat64 + + err := rows.Scan( + &goal.ProjectName, + &goal.MinGoalScore, + &maxGoalScore, + ) + if err != nil { + log.Printf("Error scanning weekly goal row: %v", err) + continue + } + + if maxGoalScore.Valid { + goal.MaxGoalScore = maxGoalScore.Float64 + } else { + goal.MaxGoalScore = math.NaN() + } + + goals = append(goals, goal) + } + + return goals, nil +} + +// sendWeeklyGoalsTelegramMessage отправляет персональные цели всем пользователям +func (a *App) sendWeeklyGoalsTelegramMessage() error { + userIDs, err := a.getAllUsersWithTelegram() + if err != nil { + return err + } + + for _, userID := range userIDs { + goals, err := a.getWeeklyGoalsForUser(userID) + if err != nil { + log.Printf("Error getting goals for user %d: %v", userID, err) + continue + } + + message := a.formatWeeklyGoalsMessage(goals) + if message == "" { + continue + } + + if err := a.sendTelegramMessageToUser(userID, message); err != nil { + log.Printf("Error sending weekly goals to user %d: %v", userID, err) + } + } + + return nil +} + +// formatWeeklyGoalsMessage форматирует список целей в сообщение для Telegram +// Формат аналогичен JS коду из n8n +func (a *App) formatWeeklyGoalsMessage(goals []WeeklyGoalSetup) string { + if len(goals) == 0 { + return "" + } + + // Заголовок сообщения: "Цели на неделю" + markdownMessage := "*🎯 Цели:*\n\n" + + // Обработка каждого проекта + for _, goal := range goals { + // Пропускаем проекты без названия + if goal.ProjectName == "" { + continue + } + + // Получаем и форматируем цели + minGoal := goal.MinGoalScore + maxGoal := goal.MaxGoalScore + + var goalText string + + // Форматируем текст цели, если они существуют + // Проверяем, что minGoal валиден (не NaN) + // В JS коде проверяется isNaN, поэтому проверяем только на NaN + if !math.IsNaN(minGoal) { + minGoalFormatted := fmt.Sprintf("%.2f", minGoal) + + // Формируем диапазон: [MIN] или [MIN - MAX] + // maxGoal должен быть валиден (не NaN) для отображения диапазона + if !math.IsNaN(maxGoal) { + maxGoalFormatted := fmt.Sprintf("%.2f", maxGoal) + // Формат: *Проект*: от 15.00 до 20.00 + goalText = fmt.Sprintf(" от %s до %s", minGoalFormatted, maxGoalFormatted) + } else { + // Формат: *Проект*: мин. 15.00 + goalText = fmt.Sprintf(" мин. %s", minGoalFormatted) + } + } else { + // Если minGoal не установлен (NaN), пропускаем вывод цели + continue + } + + // Форматирование строки для Markdown (Legacy): *Название*: Цель + markdownMessage += fmt.Sprintf("*%s*:%s\n", goal.ProjectName, goalText) + } + + return markdownMessage +} + +func (a *App) weeklyGoalsSetupHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + err := a.setupWeeklyGoals() + if err != nil { + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Получаем установленные цели для ответа + selectQuery := ` + SELECT + p.name AS project_name, + wg.min_goal_score, + wg.max_goal_score + FROM + weekly_goals wg + JOIN + projects p ON wg.project_id = p.id + WHERE + wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + AND p.deleted = FALSE + ORDER BY + p.name + ` + + rows, err := a.DB.Query(selectQuery) + if err != nil { + log.Printf("Error querying weekly goals: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying weekly goals: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + goals := make([]WeeklyGoalSetup, 0) + for rows.Next() { + var goal WeeklyGoalSetup + var maxGoalScore sql.NullFloat64 + + err := rows.Scan( + &goal.ProjectName, + &goal.MinGoalScore, + &maxGoalScore, + ) + if err != nil { + log.Printf("Error scanning weekly goal row: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error scanning data: %v", err), http.StatusInternalServerError) + return + } + + if maxGoalScore.Valid { + goal.MaxGoalScore = maxGoalScore.Float64 + } else { + goal.MaxGoalScore = 0.0 + } + + goals = append(goals, goal) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(goals) +} + +// dailyReportTriggerHandler обрабатывает запрос на отправку ежедневного отчёта +func (a *App) dailyReportTriggerHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + log.Printf("Manual trigger: Sending daily report") + err := a.sendDailyReport() + if err != nil { + log.Printf("Error in manual daily report trigger: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{ + "message": "Daily report sent successfully", + }) +} + +// projectScoreSampleMvRefreshHandler refreshes project_score_sample_mv and returns rows for the current user +func (a *App) projectScoreSampleMvRefreshHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + _, err := a.DB.Exec("REFRESH MATERIALIZED VIEW project_score_sample_mv") + if err != nil { + log.Printf("Error refreshing project_score_sample_mv: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error refreshing MV: %v", err), http.StatusInternalServerError) + return + } + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + rows, err := a.DB.Query(` + SELECT project_id, score, entry_message, user_id, created_date + FROM project_score_sample_mv + WHERE user_id = $1 + ORDER BY project_id, score + `, userID) + if err != nil { + log.Printf("Error querying project_score_sample_mv: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying MV: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + data := make([]ProjectScoreSampleMvRow, 0) + for rows.Next() { + var row ProjectScoreSampleMvRow + var userIDNull sql.NullInt64 + err := rows.Scan(&row.ProjectID, &row.Score, &row.EntryMessage, &userIDNull, &row.CreatedDate) + if err != nil { + log.Printf("Error scanning project_score_sample_mv row: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error scanning data: %v", err), http.StatusInternalServerError) + return + } + if userIDNull.Valid { + uid := int(userIDNull.Int64) + row.UserID = &uid + } + data = append(data, row) + } + if err = rows.Err(); err != nil { + log.Printf("Error iterating project_score_sample_mv rows: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error reading data: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(data) +} + +func (a *App) adminHandler(w http.ResponseWriter, r *http.Request) { + // Пробуем найти файл admin.html в разных местах + var adminPath string + + // 1. Пробуем в текущей рабочей директории + if _, err := os.Stat("admin.html"); err == nil { + adminPath = "admin.html" + } else { + // 2. Пробуем в директории play-life-backend относительно текущей директории + adminPath = filepath.Join("play-life-backend", "admin.html") + if _, err := os.Stat(adminPath); err != nil { + // 3. Пробуем получить путь к исполняемому файлу и искать рядом + if execPath, err := os.Executable(); err == nil { + execDir := filepath.Dir(execPath) + adminPath = filepath.Join(execDir, "admin.html") + if _, err := os.Stat(adminPath); err != nil { + // 4. Последняя попытка - просто "admin.html" + adminPath = "admin.html" + } + } else { + adminPath = "admin.html" + } + } + } + + http.ServeFile(w, r, adminPath) +} + +// recreateMaterializedViewHandler пересоздает materialized view с исправленной логикой ISOYEAR +func (a *App) recreateMaterializedViewHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + log.Printf("Recreating materialized view weekly_report_mv with ISOYEAR fix") + + // Удаляем старый view + dropMaterializedView := `DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv` + if _, err := a.DB.Exec(dropMaterializedView); err != nil { + log.Printf("Error dropping materialized view: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error dropping materialized view: %v", err), http.StatusInternalServerError) + return + } + + // Создаем новый view с ISOYEAR + createMaterializedView := ` + CREATE MATERIALIZED VIEW weekly_report_mv AS + SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score, + CASE + WHEN wg.max_score IS NULL THEN COALESCE(agg.total_score, 0.0000) + ELSE LEAST(COALESCE(agg.total_score, 0.0000), wg.max_score) + END AS normalized_total_score + FROM + projects p + LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id + LEFT JOIN + weekly_goals wg + ON wg.project_id = p.id + AND wg.goal_year = agg.report_year + AND wg.goal_week = agg.report_week + WHERE + p.deleted = FALSE + ORDER BY + p.id, agg.report_year, agg.report_week + ` + + if _, err := a.DB.Exec(createMaterializedView); err != nil { + log.Printf("Error creating materialized view: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating materialized view: %v", err), http.StatusInternalServerError) + return + } + + // Создаем индекс + createMVIndex := ` + CREATE INDEX IF NOT EXISTS idx_weekly_report_mv_project_year_week + ON weekly_report_mv(project_id, report_year, report_week) + ` + if _, err := a.DB.Exec(createMVIndex); err != nil { + log.Printf("Warning: Failed to create materialized view index: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{ + "message": "Materialized view recreated successfully with ISOYEAR fix", + }) +} + +func (a *App) getProjectsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + query := ` + SELECT + id AS project_id, + name AS project_name, + priority, + color + FROM + projects + WHERE + deleted = FALSE AND user_id = $1 + ORDER BY + priority ASC NULLS LAST, + project_name + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying projects: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying projects: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + projects := make([]Project, 0) + for rows.Next() { + var project Project + var priority sql.NullInt64 + + err := rows.Scan( + &project.ProjectID, + &project.ProjectName, + &priority, + &project.Color, + ) + if err != nil { + log.Printf("Error scanning project row: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error scanning data: %v", err), http.StatusInternalServerError) + return + } + + if priority.Valid { + priorityVal := int(priority.Int64) + project.Priority = &priorityVal + } + + projects = append(projects, project) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(projects) +} + +func (a *App) setProjectPriorityHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + _ = userID // Will be used in SQL queries + + // Читаем тело запроса один раз + bodyBytes, err := io.ReadAll(r.Body) + if err != nil { + log.Printf("Error reading request body: %v", err) + sendErrorWithCORS(w, "Error reading request body", http.StatusBadRequest) + return + } + defer r.Body.Close() + + // Парсим входящий запрос - может быть как {body: [...]}, так и просто массив + var projectsToUpdate []ProjectPriorityUpdate + + // Сначала пробуем декодировать как прямой массив + var directArray []interface{} + arrayErr := json.Unmarshal(bodyBytes, &directArray) + if arrayErr == nil && len(directArray) > 0 { + // Успешно декодировали как массив + log.Printf("Received direct array format with %d items", len(directArray)) + for _, item := range directArray { + if itemMap, ok := item.(map[string]interface{}); ok { + var project ProjectPriorityUpdate + + // Извлекаем id + if idVal, ok := itemMap["id"].(float64); ok { + project.ID = int(idVal) + } else if idVal, ok := itemMap["id"].(int); ok { + project.ID = idVal + } else { + log.Printf("Invalid id in request item: %v", itemMap) + continue + } + + // Извлекаем priority (может быть null, undefined, или числом) + if priorityVal, ok := itemMap["priority"]; ok && priorityVal != nil { + // Проверяем, не является ли это строкой "null" + if strVal, ok := priorityVal.(string); ok && (strVal == "null" || strVal == "NULL") { + project.Priority = nil + } else if numVal, ok := priorityVal.(float64); ok { + priorityInt := int(numVal) + project.Priority = &priorityInt + } else if numVal, ok := priorityVal.(int); ok { + project.Priority = &numVal + } else { + project.Priority = nil + } + } else { + project.Priority = nil + } + + projectsToUpdate = append(projectsToUpdate, project) + } + } + } + + // Если не получилось как массив (ошибка декодирования), пробуем как объект с body + // НЕ пытаемся декодировать как объект, если массив декодировался успешно (даже если пустой) + if len(projectsToUpdate) == 0 && arrayErr != nil { + log.Printf("Failed to decode as array (error: %v), trying as object", arrayErr) + var rawReq map[string]interface{} + if err := json.Unmarshal(bodyBytes, &rawReq); err != nil { + log.Printf("Error decoding project priority request as object: %v, body: %s", err, string(bodyBytes)) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Извлекаем массив проектов из body + if body, ok := rawReq["body"].([]interface{}); ok { + log.Printf("Received body format with %d items", len(body)) + for _, item := range body { + if itemMap, ok := item.(map[string]interface{}); ok { + var project ProjectPriorityUpdate + + // Извлекаем id + if idVal, ok := itemMap["id"].(float64); ok { + project.ID = int(idVal) + } else if idVal, ok := itemMap["id"].(int); ok { + project.ID = idVal + } else { + log.Printf("Invalid id in request item: %v", itemMap) + continue + } + + // Извлекаем priority (может быть null, undefined, или числом) + if priorityVal, ok := itemMap["priority"]; ok && priorityVal != nil { + // Проверяем, не является ли это строкой "null" + if strVal, ok := priorityVal.(string); ok && (strVal == "null" || strVal == "NULL") { + project.Priority = nil + } else if numVal, ok := priorityVal.(float64); ok { + priorityInt := int(numVal) + project.Priority = &priorityInt + } else if numVal, ok := priorityVal.(int); ok { + project.Priority = &numVal + } else { + project.Priority = nil + } + } else { + project.Priority = nil + } + + projectsToUpdate = append(projectsToUpdate, project) + } + } + } + } + + if len(projectsToUpdate) == 0 { + log.Printf("No projects to update after parsing. Body was: %s", string(bodyBytes)) + sendErrorWithCORS(w, "No projects to update", http.StatusBadRequest) + return + } + + log.Printf("Successfully parsed %d projects to update", len(projectsToUpdate)) + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Обновляем приоритеты для каждого проекта + for _, project := range projectsToUpdate { + if project.Priority == nil { + _, err = tx.Exec(` + UPDATE projects + SET priority = NULL + WHERE id = $1 AND user_id = $2 + `, project.ID, userID) + } else { + _, err = tx.Exec(` + UPDATE projects + SET priority = $1 + WHERE id = $2 AND user_id = $3 + `, *project.Priority, project.ID, userID) + } + + if err != nil { + log.Printf("Error updating project %d priority: %v", project.ID, err) + tx.Rollback() + sendErrorWithCORS(w, fmt.Sprintf("Error updating project %d: %v", project.ID, err), http.StatusInternalServerError) + return + } + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Возвращаем успешный ответ + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": fmt.Sprintf("Updated priorities for %d projects", len(projectsToUpdate)), + "updated": len(projectsToUpdate), + }) +} + +type ProjectColorRequest struct { + ID int `json:"id"` + Color string `json:"color"` +} + +func (a *App) setProjectColorHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req ProjectColorRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding project color request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.ID == 0 { + sendErrorWithCORS(w, "id is required", http.StatusBadRequest) + return + } + + if req.Color == "" { + sendErrorWithCORS(w, "color is required", http.StatusBadRequest) + return + } + + // Проверяем, что цвет в правильном формате HEX + if !strings.HasPrefix(req.Color, "#") || len(req.Color) != 7 { + sendErrorWithCORS(w, "color must be in HEX format (e.g., #FF5733)", http.StatusBadRequest) + return + } + + // Обновляем цвет проекта + _, err := a.DB.Exec(` + UPDATE projects + SET color = $1 + WHERE id = $2 AND user_id = $3 + `, req.Color, req.ID, userID) + + if err != nil { + log.Printf("Error updating project color: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating project color: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project color updated successfully", + "id": req.ID, + "color": req.Color, + }) +} + +type ProjectMoveRequest struct { + ID int `json:"id"` + NewName string `json:"new_name"` +} + +type ProjectDeleteRequest struct { + ID int `json:"id"` +} + +type ProjectCreateRequest struct { + Name string `json:"name"` +} + +func (a *App) moveProjectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + _ = userID // Will be used in SQL queries + + var req ProjectMoveRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding move project request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.NewName == "" { + sendErrorWithCORS(w, "new_name is required", http.StatusBadRequest) + return + } + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Ищем проект с таким именем + var targetProjectID int + err = tx.QueryRow(` + SELECT id FROM projects WHERE name = $1 AND deleted = FALSE + `, req.NewName).Scan(&targetProjectID) + + if err == sql.ErrNoRows { + // Проект не найден - просто переименовываем текущий проект + _, err = tx.Exec(` + UPDATE projects + SET name = $1 + WHERE id = $2 + `, req.NewName, req.ID) + if err != nil { + log.Printf("Error renaming project: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error renaming project: %v", err), http.StatusInternalServerError) + return + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов (имя проекта изменилось) + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project renamed successfully", + "project_id": req.ID, + }) + return + } else if err != nil { + log.Printf("Error querying target project: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying target project: %v", err), http.StatusInternalServerError) + return + } + + // Проект найден - переносим данные в существующий проект + finalProjectID := targetProjectID + + // Обновляем все nodes с project_id на целевой + _, err = tx.Exec(` + UPDATE nodes + SET project_id = $1 + WHERE project_id = $2 + `, finalProjectID, req.ID) + if err != nil { + log.Printf("Error updating nodes: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating nodes: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем weekly_goals + // Сначала удаляем записи старого проекта, которые конфликтуют с записями целевого проекта + // (если у целевого проекта уже есть запись для той же недели) + _, err = tx.Exec(` + DELETE FROM weekly_goals + WHERE project_id = $1 + AND EXISTS ( + SELECT 1 + FROM weekly_goals wg2 + WHERE wg2.project_id = $2 + AND wg2.goal_year = weekly_goals.goal_year + AND wg2.goal_week = weekly_goals.goal_week + ) + `, req.ID, finalProjectID) + if err != nil { + log.Printf("Error deleting conflicting weekly_goals: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting conflicting weekly_goals: %v", err), http.StatusInternalServerError) + return + } + + // Теперь обновляем оставшиеся записи (те, которые не конфликтуют) + // Обновляем project_id и user_id из целевого проекта + _, err = tx.Exec(` + UPDATE weekly_goals wg + SET project_id = $1, user_id = p.user_id + FROM projects p + WHERE wg.project_id = $2 + AND p.id = $1 + `, finalProjectID, req.ID) + if err != nil { + log.Printf("Error updating weekly_goals: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating weekly_goals: %v", err), http.StatusInternalServerError) + return + } + + // Помечаем старый проект как удаленный + _, err = tx.Exec(` + UPDATE projects + SET deleted = TRUE + WHERE id = $1 + `, req.ID) + if err != nil { + log.Printf("Error marking project as deleted: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error marking project as deleted: %v", err), http.StatusInternalServerError) + return + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов (проект переименован или удалён) + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project moved successfully", + "project_id": finalProjectID, + }) +} + +func (a *App) deleteProjectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req ProjectDeleteRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding delete project request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Verify ownership + var ownerID int + err := a.DB.QueryRow("SELECT user_id FROM projects WHERE id = $1", req.ID).Scan(&ownerID) + if err != nil || ownerID != userID { + sendErrorWithCORS(w, "Project not found", http.StatusNotFound) + return + } + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Удаляем все записи weekly_goals для этого проекта + _, err = tx.Exec(` + DELETE FROM weekly_goals + WHERE project_id = $1 + `, req.ID) + if err != nil { + log.Printf("Error deleting weekly_goals: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting weekly_goals: %v", err), http.StatusInternalServerError) + return + } + + // Помечаем проект как удаленный + _, err = tx.Exec(` + UPDATE projects + SET deleted = TRUE + WHERE id = $1 + `, req.ID) + if err != nil { + log.Printf("Error marking project as deleted: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error marking project as deleted: %v", err), http.StatusInternalServerError) + return + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов (проект удалён) + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project deleted successfully", + }) +} + +func (a *App) createProjectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req ProjectCreateRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding create project request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.Name == "" { + sendErrorWithCORS(w, "name is required", http.StatusBadRequest) + return + } + + // Проверяем, существует ли уже проект с таким именем + var existingID int + err := a.DB.QueryRow(` + SELECT id FROM projects + WHERE name = $1 AND user_id = $2 AND deleted = FALSE + `, req.Name, userID).Scan(&existingID) + + if err == nil { + // Проект уже существует + sendErrorWithCORS(w, "Project with this name already exists", http.StatusConflict) + return + } else if err != sql.ErrNoRows { + log.Printf("Error checking project existence: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking project existence: %v", err), http.StatusInternalServerError) + return + } + + // Создаем новый проект + randomColor := generateRandomProjectColor() + var projectID int + err = a.DB.QueryRow(` + INSERT INTO projects (name, deleted, user_id, color) + VALUES ($1, FALSE, $2, $3) + RETURNING id + `, req.Name, userID, randomColor).Scan(&projectID) + + if err != nil { + log.Printf("Error creating project: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating project: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов (проекты попадают в саджесты) + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Project created successfully", + "project_id": projectID, + "project_name": req.Name, + }) +} + +func (a *App) todoistWebhookHandler(w http.ResponseWriter, r *http.Request) { + // Логирование входящего запроса + log.Printf("=== Todoist Webhook Request ===") + log.Printf("Method: %s", r.Method) + log.Printf("URL: %s", r.URL.String()) + log.Printf("Path: %s", r.URL.Path) + log.Printf("RemoteAddr: %s", r.RemoteAddr) + + if r.Method == "OPTIONS" { + log.Printf("OPTIONS request, returning OK") + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + // Проверка webhook secret (если настроен) + todoistWebhookSecret := getEnv("TODOIST_WEBHOOK_SECRET", "") + if todoistWebhookSecret != "" { + providedSecret := r.Header.Get("X-Todoist-Hmac-SHA256") + if providedSecret == "" { + providedSecret = r.Header.Get("X-Todoist-Webhook-Secret") + } + if providedSecret != todoistWebhookSecret { + log.Printf("Invalid Todoist webhook secret provided") + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Unauthorized", + "message": "Invalid webhook secret", + }) + return + } + log.Printf("Webhook secret validated successfully") + } + + // Читаем тело запроса + bodyBytes, err := io.ReadAll(r.Body) + if err != nil { + log.Printf("Error reading request body: %v", err) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Error reading request body", + "message": "Failed to read request", + }) + return + } + + log.Printf("Request body (raw): %s", string(bodyBytes)) + log.Printf("Request body length: %d bytes", len(bodyBytes)) + + // Парсим webhook от Todoist + var webhook TodoistWebhook + if err := json.Unmarshal(bodyBytes, &webhook); err != nil { + log.Printf("Error decoding Todoist webhook: %v", err) + log.Printf("Failed to parse body as JSON: %s", string(bodyBytes)) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Invalid request body", + "message": "Failed to parse JSON", + }) + return + } + + // Логируем структуру webhook + log.Printf("Parsed webhook structure:") + log.Printf(" EventName: %s", webhook.EventName) + log.Printf(" EventData keys: %v", getMapKeys(webhook.EventData)) + + // Проверяем, что это событие закрытия задачи + if webhook.EventName != "item:completed" { + log.Printf("Received Todoist event '%s', ignoring (only processing 'item:completed')", webhook.EventName) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": true, + "message": "Event ignored", + "event": webhook.EventName, + }) + return + } + + // Извлекаем user_id из event_data (это Todoist user_id!) + var todoistUserID int64 + switch v := webhook.EventData["user_id"].(type) { + case float64: + todoistUserID = int64(v) + case string: + todoistUserID, _ = strconv.ParseInt(v, 10, 64) + default: + log.Printf("Todoist webhook: user_id not found or invalid type in event_data") + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Missing user_id in event_data", + "message": "Cannot identify user", + }) + return + } + + log.Printf("Todoist webhook: todoist_user_id=%d", todoistUserID) + + // Находим пользователя Play Life по todoist_user_id + var userID int + err = a.DB.QueryRow(` + SELECT user_id FROM todoist_integrations + WHERE todoist_user_id = $1 + `, todoistUserID).Scan(&userID) + + if err == sql.ErrNoRows { + // Пользователь не подключил Play Life — игнорируем + log.Printf("Todoist webhook: no user found for todoist_user_id=%d (ignoring)", todoistUserID) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": true, + "message": "User not found (not connected)", + }) + return + } + if err != nil { + log.Printf("Error finding user by todoist_user_id: %v", err) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Internal server error", + "message": "Database error", + }) + return + } + + log.Printf("Todoist webhook: todoist_user_id=%d -> user_id=%d", todoistUserID, userID) + + // Извлекаем content (title) и description из event_data + log.Printf("Extracting content and description from event_data...") + var title, description string + + if content, ok := webhook.EventData["content"].(string); ok { + title = strings.TrimSpace(content) + log.Printf(" Found 'content' (title): '%s' (length: %d)", title, len(title)) + } else { + log.Printf(" 'content' not found or not a string (type: %T, value: %v)", webhook.EventData["content"], webhook.EventData["content"]) + } + + if desc, ok := webhook.EventData["description"].(string); ok { + description = strings.TrimSpace(desc) + log.Printf(" Found 'description': '%s' (length: %d)", description, len(description)) + } else { + log.Printf(" 'description' not found or not a string (type: %T, value: %v)", webhook.EventData["description"], webhook.EventData["description"]) + } + + // Склеиваем title и description + // Логика: если есть оба - склеиваем через \n, если только один - используем его + var combinedText string + if title != "" && description != "" { + combinedText = title + "\n" + description + log.Printf(" Both title and description present, combining them") + } else if title != "" { + combinedText = title + log.Printf(" Only title present, using title only") + } else if description != "" { + combinedText = description + log.Printf(" Only description present, using description only") + } else { + combinedText = "" + log.Printf(" WARNING: Both title and description are empty!") + } + log.Printf("Combined text result: '%s' (length: %d)", combinedText, len(combinedText)) + + // Проверяем, что есть хотя бы title или description + if combinedText == "" { + log.Printf("ERROR: Todoist webhook: no content or description found in event_data") + log.Printf(" title='%s' (empty: %v), description='%s' (empty: %v)", title, title == "", description, description == "") + log.Printf("Available keys in event_data: %v", getMapKeys(webhook.EventData)) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Missing 'content' or 'description' in event_data", + "message": "No content to process", + }) + return + } + + log.Printf("Processing Todoist task: title='%s' (len=%d), description='%s' (len=%d), combined='%s' (len=%d)", + title, len(title), description, len(description), combinedText, len(combinedText)) + + // Обрабатываем сообщение через существующую логику (без отправки в Telegram) + userIDPtr := &userID + log.Printf("Calling processMessageWithoutTelegram with combined text, user_id=%d...", userID) + response, err := a.processMessageWithoutTelegram(combinedText, userIDPtr) + if err != nil { + log.Printf("ERROR processing Todoist message: %v", err) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": err.Error(), + "message": "Error processing message", + }) + return + } + + // Проверяем наличие nodes - если их нет, игнорируем сообщение + if len(response.Nodes) == 0 { + log.Printf("Todoist webhook: no nodes found in message, ignoring (not saving to database and not sending to Telegram)") + log.Printf("=== Todoist Webhook Request Ignored (No Nodes) ===") + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": true, + "message": "Message ignored (no nodes found)", + "ignored": true, + }) + return + } + + log.Printf("Successfully processed Todoist task, found %d nodes", len(response.Nodes)) + if len(response.Nodes) > 0 { + log.Printf("Nodes details:") + for i, node := range response.Nodes { + log.Printf(" Node %d: Project='%s', Score=%f", i+1, node.Project, node.Score) + } + + // Отправляем сообщение в Telegram после успешной обработки + log.Printf("Preparing to send message to Telegram...") + log.Printf("Combined text to send: '%s'", combinedText) + if err := a.sendTelegramMessageToUser(userID, combinedText); err != nil { + log.Printf("Error sending Telegram message: %v", err) + } else { + log.Printf("sendTelegramMessage call completed") + } + } else { + log.Printf("No nodes found, skipping Telegram message") + } + + log.Printf("=== Todoist Webhook Request Completed Successfully ===") + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": true, + "message": "Task processed successfully", + "result": response, + }) +} + +func (a *App) telegramWebhookHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + // Парсим webhook от Telegram + var update TelegramUpdate + if err := json.NewDecoder(r.Body).Decode(&update); err != nil { + log.Printf("Error decoding Telegram webhook: %v", err) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": false, + "error": "Invalid request body", + }) + return + } + + // Определяем сообщение + var message *TelegramMessage + if update.Message != nil { + message = update.Message + } else if update.EditedMessage != nil { + message = update.EditedMessage + } else { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]bool{"ok": true}) + return + } + + if message.From == nil { + log.Printf("Telegram webhook: message without From field") + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]bool{"ok": true}) + return + } + + telegramUserID := message.From.ID + chatID := message.Chat.ID + chatIDStr := strconv.FormatInt(chatID, 10) + + log.Printf("Telegram webhook: telegram_user_id=%d, chat_id=%d, text=%s", + telegramUserID, chatID, message.Text) + + // Обработка команды /start с токеном + if strings.HasPrefix(message.Text, "/start") { + parts := strings.Fields(message.Text) + if len(parts) > 1 { + startToken := parts[1] + + var userID int + err := a.DB.QueryRow(` + SELECT user_id FROM telegram_integrations + WHERE start_token = $1 + `, startToken).Scan(&userID) + + if err == nil { + // Привязываем Telegram к пользователю + telegramUserIDStr := strconv.FormatInt(telegramUserID, 10) + _, err = a.DB.Exec(` + UPDATE telegram_integrations + SET telegram_user_id = $1, + chat_id = $2, + start_token = NULL, + updated_at = CURRENT_TIMESTAMP + WHERE user_id = $3 + `, telegramUserIDStr, chatIDStr, userID) + + if err != nil { + log.Printf("Error updating telegram integration: %v", err) + } else { + log.Printf("Telegram connected for user_id=%d", userID) + + // Приветственное сообщение + welcomeMsg := "✅ Telegram успешно подключен к Play Life!\n\nТеперь вы будете получать уведомления и отчеты." + if err := a.sendTelegramMessageToChat(chatID, welcomeMsg); err != nil { + log.Printf("Error sending welcome message: %v", err) + } + } + } else { + log.Printf("Invalid start_token: %s", startToken) + a.sendTelegramMessageToChat(chatID, "❌ Неверный токен. Попробуйте получить новую ссылку в приложении.") + } + } else { + // /start без токена + a.sendTelegramMessageToChat(chatID, "Привет! Для подключения используйте ссылку из приложения Play Life.") + } + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]bool{"ok": true}) + return + } + + // Обычное сообщение - ищем пользователя по telegram_user_id + var userID int + err := a.DB.QueryRow(` + SELECT user_id FROM telegram_integrations + WHERE telegram_user_id = $1 + `, telegramUserID).Scan(&userID) + + if err == sql.ErrNoRows { + log.Printf("User not found for telegram_user_id=%d", telegramUserID) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]bool{"ok": true}) + return + } else if err != nil { + log.Printf("Error finding user: %v", err) + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + return + } + + // Обновляем chat_id (на случай переподключения) + a.DB.Exec(` + UPDATE telegram_integrations + SET chat_id = $1, updated_at = CURRENT_TIMESTAMP + WHERE user_id = $2 + `, chatIDStr, userID) + + // Обрабатываем сообщение + if message.Text == "" { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]bool{"ok": true}) + return + } + + entities := message.Entities + if entities == nil { + entities = []TelegramEntity{} + } + + userIDPtr := &userID + response, err := a.processTelegramMessage(message.Text, entities, userIDPtr) + if err != nil { + log.Printf("Error processing message: %v", err) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "ok": true, + "result": response, + }) +} + +func (a *App) getFullStatisticsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Получаем данные текущей недели + currentWeekScores, err := a.getCurrentWeekScores(userID) + if err != nil { + log.Printf("Error getting current week scores: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting current week scores: %v", err), http.StatusInternalServerError) + return + } + + // Получаем ISO год и неделю для текущей даты + now := time.Now() + _, currentWeekInt := now.ISOWeek() + currentYearInt := now.Year() + + query := ` + SELECT + p.name AS project_name, + -- Определяем год и неделю, беря значение из той таблицы, где оно не NULL + COALESCE(wr.report_year, wg.goal_year) AS report_year, + COALESCE(wr.report_week, wg.goal_week) AS report_week, + + -- Фактический score: COALESCE(NULL, 0.0000) + COALESCE(wr.total_score, 0.0000) AS total_score, + + -- Normalized score из MV + COALESCE(wr.normalized_total_score, 0.0000) AS normalized_total_score, + + -- Минимальная цель: COALESCE(NULL, 0.0000) + COALESCE(wg.min_goal_score, 0.0000) AS min_goal_score, + + -- Максимальная цель: COALESCE(NULL, 0.0000) + COALESCE(wg.max_goal_score, 0.0000) AS max_goal_score, + p.id AS project_id, + p.color + FROM + weekly_report_mv wr + FULL OUTER JOIN + weekly_goals wg + -- Слияние по всем трем ключевым полям + ON wr.project_id = wg.project_id + AND wr.report_year = wg.goal_year + AND wr.report_week = wg.goal_week + JOIN + projects p + -- Присоединяем имя проекта, используя ID из той таблицы, где он не NULL + ON p.id = COALESCE(wr.project_id, wg.project_id) + WHERE + p.deleted = FALSE AND p.user_id = $1 + AND COALESCE(wr.report_year, wg.goal_year) IS NOT NULL + ORDER BY + report_year DESC, + report_week DESC, + project_name + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying full statistics: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying full statistics: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + statistics := make([]FullStatisticsItem, 0) + + for rows.Next() { + var item FullStatisticsItem + var projectID int + + err := rows.Scan( + &item.ProjectName, + &item.ReportYear, + &item.ReportWeek, + &item.TotalScore, + &item.NormalizedTotalScore, + &item.MinGoalScore, + &item.MaxGoalScore, + &projectID, + &item.Color, + ) + if err != nil { + log.Printf("Error scanning full statistics row: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error scanning data: %v", err), http.StatusInternalServerError) + return + } + + // Если это текущая неделя, заменяем данные из MV на данные из nodes + if item.ReportYear == currentYearInt && item.ReportWeek == currentWeekInt { + if score, exists := currentWeekScores[projectID]; exists { + item.TotalScore = score + // Для текущей недели normalized_total_score не отправляем + item.NormalizedTotalScore = 0 + } + } + + // Если normalized_total_score равен total_score, не отправляем его + if item.NormalizedTotalScore == item.TotalScore { + item.NormalizedTotalScore = 0 + } + + statistics = append(statistics, item) + } + + // Добавляем проекты текущей недели, которых нет в MV (новые проекты без исторических данных) + // Получаем goals для текущей недели + currentWeekGoalsQuery := ` + SELECT + p.id AS project_id, + p.name AS project_name, + COALESCE(wg.min_goal_score, 0.0000) AS min_goal_score, + COALESCE(wg.max_goal_score, 0.0000) AS max_goal_score, + p.color + FROM projects p + LEFT JOIN weekly_goals wg ON wg.project_id = p.id + AND wg.goal_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wg.goal_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + WHERE p.deleted = FALSE AND p.user_id = $1 + AND NOT EXISTS ( + SELECT 1 FROM weekly_report_mv wr + WHERE wr.project_id = p.id + AND wr.report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND wr.report_week = EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER + ) + ` + + goalsRows, err := a.DB.Query(currentWeekGoalsQuery, userID) + if err == nil { + defer goalsRows.Close() + existingProjects := make(map[int]bool) + for _, stat := range statistics { + if stat.ReportYear == currentYearInt && stat.ReportWeek == currentWeekInt { + // Найдем project_id по имени проекта (не идеально, но работает) + var pid int + if err := a.DB.QueryRow("SELECT id FROM projects WHERE name = $1 AND user_id = $2", stat.ProjectName, userID).Scan(&pid); err == nil { + existingProjects[pid] = true + } + } + } + + for goalsRows.Next() { + var projectID int + var projectName string + var minGoalScore, maxGoalScore float64 + var projectColor string + if err := goalsRows.Scan(&projectID, &projectName, &minGoalScore, &maxGoalScore, &projectColor); err == nil { + // Добавляем только если проекта еще нет в статистике + if !existingProjects[projectID] { + totalScore := 0.0 + if score, exists := currentWeekScores[projectID]; exists { + totalScore = score + } + + // Для текущей недели normalized_total_score не отправляем + _, weekISO := time.Now().ISOWeek() + item := FullStatisticsItem{ + ProjectName: projectName, + ReportYear: time.Now().Year(), + ReportWeek: weekISO, + TotalScore: totalScore, + NormalizedTotalScore: 0, + MinGoalScore: minGoalScore, + MaxGoalScore: maxGoalScore, + Color: projectColor, + } + statistics = append(statistics, item) + } + } + } + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(statistics) +} + +// getTodayEntriesHandler возвращает entries с nodes за сегодняшний день +func (a *App) getTodayEntriesHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Получаем опциональные параметры из query string + projectName := r.URL.Query().Get("project") + var projectFilter *string + if projectName != "" { + projectFilter = &projectName + } + + // Получаем дату из query string (формат: YYYY-MM-DD), если не указана - используем сегодня + dateParam := r.URL.Query().Get("date") + var targetDate time.Time + if dateParam != "" { + parsedDate, err := time.Parse("2006-01-02", dateParam) + if err != nil { + log.Printf("Error parsing date parameter: %v", err) + sendErrorWithCORS(w, "Invalid date format. Use YYYY-MM-DD", http.StatusBadRequest) + return + } + targetDate = parsedDate + } else { + targetDate = time.Now() + } + + // Запрос для получения entries с nodes за указанный день + // Если указан проект, показываем все записи, которые содержат хотя бы одну ноду этого проекта, + // но возвращаем все ноды этих записей, а не только ноды выбранного проекта + query := ` + WITH filtered_entries AS ( + -- Если проект указан, находим entry_id записей, содержащих хотя бы одну ноду этого проекта + SELECT DISTINCT e.id as entry_id + FROM entries e + JOIN nodes n ON n.entry_id = e.id + JOIN projects p ON n.project_id = p.id + WHERE DATE(n.created_date) = DATE($3) + AND e.user_id = $1 + AND n.user_id = $1 + AND p.user_id = $1 + AND p.deleted = FALSE + AND ($2::text IS NULL OR p.name = $2) + ), + entry_nodes AS ( + -- Получаем все ноды для найденных записей (или всех записей, если проект не указан) + SELECT + e.id as entry_id, + e.text, + e.created_date, + p.name as project_name, + n.score, + ROW_NUMBER() OVER (PARTITION BY e.id ORDER BY n.id) - 1 as node_index + FROM entries e + JOIN nodes n ON n.entry_id = e.id + JOIN projects p ON n.project_id = p.id + WHERE DATE(n.created_date) = DATE($3) + AND e.user_id = $1 + AND n.user_id = $1 + AND p.user_id = $1 + AND p.deleted = FALSE + AND ($2::text IS NULL OR e.id IN (SELECT entry_id FROM filtered_entries)) + ) + SELECT + entry_id, + text, + created_date, + json_agg( + json_build_object( + 'project_name', project_name, + 'score', score, + 'index', node_index + ) ORDER BY node_index + ) as nodes + FROM entry_nodes + GROUP BY entry_id, text, created_date + ORDER BY created_date DESC + ` + + rows, err := a.DB.Query(query, userID, projectFilter, targetDate) + if err != nil { + log.Printf("Error querying today entries: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying today entries: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + entries := make([]TodayEntry, 0) + + for rows.Next() { + var entry TodayEntry + var createdDate time.Time + var nodesJSON string + + err := rows.Scan( + &entry.ID, + &entry.Text, + &createdDate, + &nodesJSON, + ) + if err != nil { + log.Printf("Error scanning today entry row: %v", err) + continue + } + + // Парсим JSON с nodes + if err := json.Unmarshal([]byte(nodesJSON), &entry.Nodes); err != nil { + log.Printf("Error unmarshaling nodes JSON: %v", err) + continue + } + + // Форматируем дату в ISO 8601 + entry.CreatedDate = createdDate.Format(time.RFC3339) + + entries = append(entries, entry) + } + + if err := rows.Err(); err != nil { + log.Printf("Error iterating today entries rows: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error iterating rows: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(entries) +} + +// deleteEntryHandler удаляет entry и каскадно удаляет связанные nodes +func (a *App) deleteEntryHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + entryIDStr := vars["id"] + entryID, err := strconv.Atoi(entryIDStr) + if err != nil { + sendErrorWithCORS(w, "Invalid entry ID", http.StatusBadRequest) + return + } + + // Проверяем, что entry принадлежит пользователю + var entryUserID int + err = a.DB.QueryRow("SELECT user_id FROM entries WHERE id = $1", entryID).Scan(&entryUserID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Entry not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking entry ownership: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + // Проверяем права доступа + if entryUserID != userID { + sendErrorWithCORS(w, "Forbidden", http.StatusForbidden) + return + } + + // Удаляем entry (nodes удалятся каскадно из-за ON DELETE CASCADE) + result, err := a.DB.Exec("DELETE FROM entries WHERE id = $1 AND user_id = $2", entryID, userID) + if err != nil { + log.Printf("Error deleting entry: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + rowsAffected, err := result.RowsAffected() + if err != nil { + log.Printf("Error getting rows affected: %v", err) + sendErrorWithCORS(w, err.Error(), http.StatusInternalServerError) + return + } + + if rowsAffected == 0 { + sendErrorWithCORS(w, "Entry not found", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "message": "Entry deleted successfully", + }) +} + +// getTelegramIntegrationHandler возвращает текущую telegram интеграцию с deep link +func (a *App) getTelegramIntegrationHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + integration, err := a.getTelegramIntegrationForUser(userID) + if err != nil { + sendErrorWithCORS(w, fmt.Sprintf("Failed to get telegram integration: %v", err), http.StatusInternalServerError) + return + } + + // Генерируем start_token если его нет + if integration.StartToken == nil || *integration.StartToken == "" { + token, err := generateWebhookToken() + if err == nil { + _, _ = a.DB.Exec(` + UPDATE telegram_integrations + SET start_token = $1, updated_at = CURRENT_TIMESTAMP + WHERE user_id = $2 + `, token, userID) + integration.StartToken = &token + } + } + + // Формируем deep link + var deepLink string + if a.telegramBotUsername != "" && integration.StartToken != nil { + deepLink = fmt.Sprintf("https://t.me/%s?start=%s", a.telegramBotUsername, *integration.StartToken) + } + + isConnected := integration.ChatID != nil && integration.TelegramUserID != nil + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "id": integration.ID, + "telegram_user_id": integration.TelegramUserID, + "is_connected": isConnected, + "deep_link": deepLink, + }) +} + +// updateTelegramIntegrationHandler больше не используется (bot_token теперь в .env) +// Оставлен для совместимости, возвращает ошибку +func (a *App) updateTelegramIntegrationHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + sendErrorWithCORS(w, "Bot token is now configured via TELEGRAM_BOT_TOKEN environment variable", http.StatusBadRequest) +} + +// OAuthStateClaims структура для OAuth state JWT +type OAuthStateClaims struct { + UserID int `json:"user_id"` + Type string `json:"type"` + jwt.RegisteredClaims +} + +// generateOAuthState генерирует JWT state для OAuth +func generateOAuthState(userID int, jwtSecret []byte) (string, error) { + claims := OAuthStateClaims{ + UserID: userID, + Type: "todoist_oauth", + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), // 1 день + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString(jwtSecret) +} + +// validateOAuthState проверяет и извлекает user_id из JWT state +func validateOAuthState(stateString string, jwtSecret []byte) (int, error) { + token, err := jwt.ParseWithClaims(stateString, &OAuthStateClaims{}, func(token *jwt.Token) (interface{}, error) { + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) + } + return jwtSecret, nil + }) + if err != nil { + return 0, err + } + + claims, ok := token.Claims.(*OAuthStateClaims) + if !ok || !token.Valid { + return 0, fmt.Errorf("invalid token") + } + + if claims.Type != "todoist_oauth" { + return 0, fmt.Errorf("wrong token type") + } + + return claims.UserID, nil +} + +// exchangeCodeForToken обменивает OAuth code на access_token +func exchangeCodeForToken(code, redirectURI, clientID, clientSecret string) (string, error) { + data := url.Values{} + data.Set("client_id", clientID) + data.Set("client_secret", clientSecret) + data.Set("code", code) + data.Set("redirect_uri", redirectURI) + + resp, err := http.PostForm("https://todoist.com/oauth/access_token", data) + if err != nil { + return "", fmt.Errorf("failed to exchange code: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + body, _ := io.ReadAll(resp.Body) + return "", fmt.Errorf("token exchange failed: %s", string(body)) + } + + var result struct { + AccessToken string `json:"access_token"` + Error string `json:"error"` + } + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { + return "", fmt.Errorf("failed to decode response: %w", err) + } + + if result.Error != "" { + return "", fmt.Errorf("token exchange error: %s", result.Error) + } + + return result.AccessToken, nil +} + +// getTodoistUserInfo получает информацию о пользователе через Sync API +func getTodoistUserInfo(accessToken string) (struct { + ID int64 + Email string +}, error) { + var userInfo struct { + ID int64 + Email string + } + + // Формируем правильный запрос к Sync API + data := url.Values{} + data.Set("sync_token", "*") + data.Set("resource_types", `["user"]`) + + req, err := http.NewRequest("POST", "https://api.todoist.com/sync/v9/sync", strings.NewReader(data.Encode())) + if err != nil { + log.Printf("Todoist API: failed to create request: %v", err) + return userInfo, err + } + req.Header.Set("Authorization", "Bearer "+accessToken) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + req.Header.Set("User-Agent", "PlayLife") + + log.Printf("Todoist API: requesting user info from sync/v9/sync") + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + log.Printf("Todoist API: request failed: %v", err) + return userInfo, fmt.Errorf("failed to get user info: %w", err) + } + defer resp.Body.Close() + + bodyBytes, _ := io.ReadAll(resp.Body) + log.Printf("Todoist API: response status=%d, body=%s", resp.StatusCode, string(bodyBytes)) + + if resp.StatusCode != http.StatusOK { + return userInfo, fmt.Errorf("get user info failed (status %d): %s", resp.StatusCode, string(bodyBytes)) + } + + // Парсим ответ - в Sync API user может быть объектом или массивом + var result map[string]interface{} + if err := json.Unmarshal(bodyBytes, &result); err != nil { + log.Printf("Todoist API: failed to parse JSON: %v, body: %s", err, string(bodyBytes)) + return userInfo, fmt.Errorf("failed to decode user info: %w", err) + } + + log.Printf("Todoist API: parsed response keys: %v", getMapKeys(result)) + + // Функция для извлечения ID из разных типов + extractID := func(idValue interface{}) int64 { + switch v := idValue.(type) { + case float64: + return int64(v) + case int64: + return v + case int: + return int64(v) + case string: + if id, err := strconv.ParseInt(v, 10, 64); err == nil { + return id + } + } + return 0 + } + + // Проверяем разные варианты структуры ответа + if userObj, ok := result["user"].(map[string]interface{}); ok { + // Один объект user + userInfo.ID = extractID(userObj["id"]) + if email, ok := userObj["email"].(string); ok { + userInfo.Email = email + } + } else if usersArr, ok := result["user"].([]interface{}); ok && len(usersArr) > 0 { + // Массив users, берем первый + if userObj, ok := usersArr[0].(map[string]interface{}); ok { + userInfo.ID = extractID(userObj["id"]) + if email, ok := userObj["email"].(string); ok { + userInfo.Email = email + } + } + } else { + log.Printf("Todoist API: user not found in response, available keys: %v", getMapKeys(result)) + return userInfo, fmt.Errorf("user not found in response") + } + + if userInfo.ID == 0 || userInfo.Email == "" { + log.Printf("Todoist API: incomplete user info: ID=%d, Email=%s", userInfo.ID, userInfo.Email) + return userInfo, fmt.Errorf("incomplete user info: ID=%d, Email=%s", userInfo.ID, userInfo.Email) + } + + log.Printf("Todoist API: successfully got user info: ID=%d, Email=%s", userInfo.ID, userInfo.Email) + return userInfo, nil +} + +// todoistOAuthConnectHandler инициирует OAuth flow +func (a *App) todoistOAuthConnectHandler(w http.ResponseWriter, r *http.Request) { + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + clientID := getEnv("TODOIST_CLIENT_ID", "") + clientSecret := getEnv("TODOIST_CLIENT_SECRET", "") + baseURL := getEnv("WEBHOOK_BASE_URL", "") + + if clientID == "" || clientSecret == "" { + sendErrorWithCORS(w, "TODOIST_CLIENT_ID and TODOIST_CLIENT_SECRET must be configured", http.StatusInternalServerError) + return + } + if baseURL == "" { + sendErrorWithCORS(w, "WEBHOOK_BASE_URL must be configured", http.StatusInternalServerError) + return + } + + redirectURI := strings.TrimRight(baseURL, "/") + "/api/integrations/todoist/oauth/callback" + + state, err := generateOAuthState(userID, a.jwtSecret) + if err != nil { + log.Printf("Todoist OAuth: failed to generate state: %v", err) + sendErrorWithCORS(w, "Failed to generate OAuth state", http.StatusInternalServerError) + return + } + + authURL := fmt.Sprintf( + "https://todoist.com/oauth/authorize?client_id=%s&scope=data:read_write&state=%s&redirect_uri=%s", + url.QueryEscape(clientID), + url.QueryEscape(state), + url.QueryEscape(redirectURI), + ) + + log.Printf("Todoist OAuth: returning auth URL for user_id=%d", userID) + + // Возвращаем JSON с URL для редиректа (frontend сделает редирект) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "auth_url": authURL, + }) +} + +// todoistOAuthCallbackHandler обрабатывает OAuth callback +func (a *App) todoistOAuthCallbackHandler(w http.ResponseWriter, r *http.Request) { + frontendURL := getEnv("WEBHOOK_BASE_URL", "") + redirectSuccess := frontendURL + "/?integration=todoist&status=connected" + redirectError := frontendURL + "/?integration=todoist&status=error" + + clientID := getEnv("TODOIST_CLIENT_ID", "") + clientSecret := getEnv("TODOIST_CLIENT_SECRET", "") + baseURL := getEnv("WEBHOOK_BASE_URL", "") + + if clientID == "" || clientSecret == "" || baseURL == "" { + log.Printf("Todoist OAuth: missing configuration") + http.Redirect(w, r, redirectError+"&message=config_error", http.StatusTemporaryRedirect) + return + } + + redirectURI := strings.TrimRight(baseURL, "/") + "/api/integrations/todoist/oauth/callback" + + // Проверяем state + state := r.URL.Query().Get("state") + userID, err := validateOAuthState(state, a.jwtSecret) + if err != nil { + log.Printf("Todoist OAuth: invalid state: %v", err) + http.Redirect(w, r, redirectError+"&message=invalid_state", http.StatusTemporaryRedirect) + return + } + + // Получаем code + code := r.URL.Query().Get("code") + if code == "" { + log.Printf("Todoist OAuth: no code in callback") + http.Redirect(w, r, redirectError+"&message=no_code", http.StatusTemporaryRedirect) + return + } + + // Обмениваем code на access_token + accessToken, err := exchangeCodeForToken(code, redirectURI, clientID, clientSecret) + if err != nil { + log.Printf("Todoist OAuth: token exchange failed: %v", err) + http.Redirect(w, r, redirectError+"&message=token_exchange_failed", http.StatusTemporaryRedirect) + return + } + + // Получаем информацию о пользователе + todoistUser, err := getTodoistUserInfo(accessToken) + if err != nil { + log.Printf("Todoist OAuth: get user info failed: %v", err) + http.Redirect(w, r, redirectError+"&message=user_info_failed", http.StatusTemporaryRedirect) + return + } + + log.Printf("Todoist OAuth: user_id=%d connected todoist_user_id=%d email=%s", userID, todoistUser.ID, todoistUser.Email) + + // Сохраняем в БД + _, err = a.DB.Exec(` + INSERT INTO todoist_integrations (user_id, todoist_user_id, todoist_email, access_token) + VALUES ($1, $2, $3, $4) + ON CONFLICT (user_id) DO UPDATE SET + todoist_user_id = $2, + todoist_email = $3, + access_token = $4, + updated_at = CURRENT_TIMESTAMP + `, userID, todoistUser.ID, todoistUser.Email, accessToken) + + if err != nil { + log.Printf("Todoist OAuth: DB error: %v", err) + http.Redirect(w, r, redirectError+"&message=db_error", http.StatusTemporaryRedirect) + return + } + + // Редирект на страницу интеграций + http.Redirect(w, r, redirectSuccess, http.StatusTemporaryRedirect) +} + +// getTodoistStatusHandler возвращает статус подключения Todoist +func (a *App) getTodoistStatusHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var todoistEmail sql.NullString + err := a.DB.QueryRow(` + SELECT todoist_email FROM todoist_integrations + WHERE user_id = $1 AND access_token IS NOT NULL + `, userID).Scan(&todoistEmail) + + if err == sql.ErrNoRows || !todoistEmail.Valid { + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "connected": false, + }) + return + } + if err != nil { + sendErrorWithCORS(w, fmt.Sprintf("Failed to get status: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "connected": true, + "todoist_email": todoistEmail.String, + }) +} + +// ============================================ +// Tasks handlers +// ============================================ + +// getTasksHandler возвращает список задач пользователя +func (a *App) getTasksHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Запрос с получением всех необходимых данных для группировки и отображения + query := ` + SELECT + t.id, + t.name, + t.completed, + t.last_completed_at, + t.next_show_at, + t.repetition_period::text, + t.repetition_date, + t.progression_base, + t.wishlist_id, + t.config_id, + t.reward_policy, + t.group_name, + COALESCE(( + SELECT COUNT(*) + FROM tasks st + WHERE st.parent_task_id = t.id AND st.deleted = FALSE + ), 0) as subtasks_count, + COALESCE( + (SELECT array_agg(DISTINCT p.name) FILTER (WHERE p.name IS NOT NULL) + FROM reward_configs rc + JOIN projects p ON rc.project_id = p.id + WHERE rc.task_id = t.id), + ARRAY[]::text[] + ) as project_names, + COALESCE( + (SELECT array_agg(DISTINCT p.name) FILTER (WHERE p.name IS NOT NULL) + FROM tasks st + JOIN reward_configs rc ON rc.task_id = st.id + JOIN projects p ON rc.project_id = p.id + WHERE st.parent_task_id = t.id AND st.deleted = FALSE), + ARRAY[]::text[] + ) as subtask_project_names, + COALESCE(td.auto_complete, FALSE) as auto_complete + FROM tasks t + LEFT JOIN task_drafts td ON td.task_id = t.id AND td.user_id = $1 + WHERE t.user_id = $1 AND t.parent_task_id IS NULL AND t.deleted = FALSE + ORDER BY + -- Сначала разделяем на невыполненные (0) и выполненные (1) + CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN 0 ELSE 1 END, + -- Для невыполненных: сортируем по completed DESC (больше завершений выше), затем по id ASC (раньше добавленные выше) + CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN -t.completed ELSE 0 END, + CASE WHEN t.last_completed_at IS NULL OR t.last_completed_at::date < CURRENT_DATE THEN t.id ELSE 0 END, + -- Для выполненных: сортируем по next_show_at ASC (ранние в начале), NULL значения в начале через COALESCE + CASE WHEN t.last_completed_at IS NOT NULL AND t.last_completed_at::date >= CURRENT_DATE + THEN COALESCE(t.next_show_at, '1970-01-01'::timestamp with time zone) + ELSE '1970-01-01'::timestamp with time zone + END + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying tasks: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying tasks: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + tasks := make([]Task, 0) + for rows.Next() { + var task Task + var lastCompletedAt sql.NullString + var nextShowAt sql.NullString + var repetitionPeriod sql.NullString + var repetitionDate sql.NullString + var progressionBase sql.NullFloat64 + var wishlistID sql.NullInt64 + var configID sql.NullInt64 + var rewardPolicy sql.NullString + var groupName sql.NullString + var projectNames pq.StringArray + var subtaskProjectNames pq.StringArray + var autoComplete bool + + err := rows.Scan( + &task.ID, + &task.Name, + &task.Completed, + &lastCompletedAt, + &nextShowAt, + &repetitionPeriod, + &repetitionDate, + &progressionBase, + &wishlistID, + &configID, + &rewardPolicy, + &groupName, + &task.SubtasksCount, + &projectNames, + &subtaskProjectNames, + &autoComplete, + ) + if err != nil { + log.Printf("Error scanning task: %v", err) + continue + } + + if lastCompletedAt.Valid { + task.LastCompletedAt = &lastCompletedAt.String + } + if nextShowAt.Valid { + task.NextShowAt = &nextShowAt.String + } + if repetitionPeriod.Valid { + task.RepetitionPeriod = &repetitionPeriod.String + } + if repetitionDate.Valid { + task.RepetitionDate = &repetitionDate.String + } + if progressionBase.Valid { + task.HasProgression = true + task.ProgressionBase = &progressionBase.Float64 + } else { + task.HasProgression = false + } + if wishlistID.Valid { + wishlistIDInt := int(wishlistID.Int64) + task.WishlistID = &wishlistIDInt + } + if configID.Valid { + configIDInt := int(configID.Int64) + task.ConfigID = &configIDInt + } + if rewardPolicy.Valid { + task.RewardPolicy = &rewardPolicy.String + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + task.GroupName = &groupNameVal + } + task.AutoComplete = autoComplete + + // Объединяем проекты из основной задачи и подзадач + allProjects := make(map[string]bool) + for _, pn := range projectNames { + if pn != "" { + allProjects[pn] = true + } + } + for _, pn := range subtaskProjectNames { + if pn != "" { + allProjects[pn] = true + } + } + + task.ProjectNames = make([]string, 0, len(allProjects)) + for pn := range allProjects { + task.ProjectNames = append(task.ProjectNames, pn) + } + + tasks = append(tasks, task) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(tasks) +} + +// getTaskDetailHandler возвращает детальную информацию о задаче +func (a *App) getTaskDetailHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Получаем основную задачу + var task Task + var rewardMessage sql.NullString + var progressionBase sql.NullFloat64 + var lastCompletedAt sql.NullString + var nextShowAt sql.NullString + var repetitionPeriod sql.NullString + var repetitionDate sql.NullString + var wishlistID sql.NullInt64 + var configID sql.NullInt64 + var rewardPolicy sql.NullString + var groupName sql.NullString + + // Сначала получаем значение как строку напрямую, чтобы избежать проблем с NULL + var repetitionPeriodStr string + var repetitionDateStr string + err = a.DB.QueryRow(` + SELECT id, name, completed, last_completed_at, next_show_at, reward_message, progression_base, + CASE WHEN repetition_period IS NULL THEN '' ELSE repetition_period::text END as repetition_period, + COALESCE(repetition_date, '') as repetition_date, + wishlist_id, + config_id, + reward_policy, + group_name + FROM tasks + WHERE id = $1 AND user_id = $2 AND deleted = FALSE + `, taskID, userID).Scan( + &task.ID, &task.Name, &task.Completed, &lastCompletedAt, &nextShowAt, &rewardMessage, &progressionBase, &repetitionPeriodStr, &repetitionDateStr, &wishlistID, &configID, &rewardPolicy, &groupName, + ) + + log.Printf("Scanned repetition_period for task %d: String='%s', repetition_date='%s'", taskID, repetitionPeriodStr, repetitionDateStr) + + // Преобразуем в sql.NullString для совместимости + if repetitionPeriodStr != "" { + repetitionPeriod = sql.NullString{String: repetitionPeriodStr, Valid: true} + } else { + repetitionPeriod = sql.NullString{Valid: false} + } + if repetitionDateStr != "" { + repetitionDate = sql.NullString{String: repetitionDateStr, Valid: true} + } else { + repetitionDate = sql.NullString{Valid: false} + } + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error querying task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying task: %v", err), http.StatusInternalServerError) + return + } + + if rewardMessage.Valid { + task.RewardMessage = &rewardMessage.String + } + if progressionBase.Valid { + task.ProgressionBase = &progressionBase.Float64 + } + if lastCompletedAt.Valid { + task.LastCompletedAt = &lastCompletedAt.String + } + if nextShowAt.Valid { + task.NextShowAt = &nextShowAt.String + } + if repetitionPeriod.Valid && repetitionPeriod.String != "" { + task.RepetitionPeriod = &repetitionPeriod.String + log.Printf("Task %d has repetition_period: %s", task.ID, repetitionPeriod.String) + } else { + log.Printf("Task %d has no repetition_period (Valid: %v, String: '%s')", task.ID, repetitionPeriod.Valid, repetitionPeriod.String) + } + if repetitionDate.Valid && repetitionDate.String != "" { + task.RepetitionDate = &repetitionDate.String + log.Printf("Task %d has repetition_date: %s", task.ID, repetitionDate.String) + } + if wishlistID.Valid { + wishlistIDInt := int(wishlistID.Int64) + task.WishlistID = &wishlistIDInt + } + if configID.Valid { + configIDInt := int(configID.Int64) + task.ConfigID = &configIDInt + } + if rewardPolicy.Valid { + task.RewardPolicy = &rewardPolicy.String + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + task.GroupName = &groupNameVal + } + + // Получаем награды основной задачи + rewards := make([]Reward, 0) + rewardRows, err := a.DB.Query(` + SELECT rc.id, rc.position, p.name AS project_name, rc.value, rc.use_progression + FROM reward_configs rc + JOIN projects p ON rc.project_id = p.id + WHERE rc.task_id = $1 + ORDER BY rc.position + `, taskID) + + if err != nil { + log.Printf("Error querying rewards: %v", err) + } else { + defer rewardRows.Close() + for rewardRows.Next() { + var reward Reward + err := rewardRows.Scan(&reward.ID, &reward.Position, &reward.ProjectName, &reward.Value, &reward.UseProgression) + if err != nil { + log.Printf("Error scanning reward: %v", err) + continue + } + rewards = append(rewards, reward) + } + } + + // Получаем подзадачи + subtasks := make([]Subtask, 0) + subtaskRows, err := a.DB.Query(` + SELECT id, name, completed, last_completed_at, reward_message, progression_base, position + FROM tasks + WHERE parent_task_id = $1 AND deleted = FALSE + ORDER BY COALESCE(position, id) + `, taskID) + + if err != nil { + log.Printf("Error querying subtasks: %v", err) + } else { + defer subtaskRows.Close() + subtaskMap := make(map[int]*Subtask) + subtaskIDs := make([]int, 0) + + for subtaskRows.Next() { + var subtaskTask Task + var subtaskRewardMessage sql.NullString + var subtaskProgressionBase sql.NullFloat64 + var subtaskLastCompletedAt sql.NullString + var subtaskPosition sql.NullInt64 + + err := subtaskRows.Scan( + &subtaskTask.ID, &subtaskTask.Name, &subtaskTask.Completed, + &subtaskLastCompletedAt, &subtaskRewardMessage, &subtaskProgressionBase, + &subtaskPosition, + ) + if err != nil { + log.Printf("Error scanning subtask: %v", err) + continue + } + + if subtaskRewardMessage.Valid { + subtaskTask.RewardMessage = &subtaskRewardMessage.String + } + if subtaskProgressionBase.Valid { + subtaskTask.ProgressionBase = &subtaskProgressionBase.Float64 + } + if subtaskLastCompletedAt.Valid { + subtaskTask.LastCompletedAt = &subtaskLastCompletedAt.String + } + if subtaskPosition.Valid { + pos := int(subtaskPosition.Int64) + subtaskTask.Position = &pos + } + + subtaskIDs = append(subtaskIDs, subtaskTask.ID) + subtask := Subtask{ + Task: subtaskTask, + Rewards: make([]Reward, 0), + } + subtaskMap[subtaskTask.ID] = &subtask + } + + // Загружаем все награды всех подзадач одним запросом + if len(subtaskIDs) > 0 { + // Используем параметризованный запрос с ANY(ARRAY[...]) + query := ` + SELECT rc.task_id, rc.id, rc.position, p.name AS project_name, rc.value, rc.use_progression + FROM reward_configs rc + JOIN projects p ON rc.project_id = p.id + WHERE rc.task_id = ANY($1::int[]) + ORDER BY rc.task_id, rc.position + ` + + subtaskRewardRows, err := a.DB.Query(query, pq.Array(subtaskIDs)) + if err != nil { + log.Printf("Error querying subtask rewards: %v", err) + } else { + defer subtaskRewardRows.Close() + for subtaskRewardRows.Next() { + var taskID int + var reward Reward + err := subtaskRewardRows.Scan(&taskID, &reward.ID, &reward.Position, &reward.ProjectName, &reward.Value, &reward.UseProgression) + if err != nil { + log.Printf("Error scanning subtask reward: %v", err) + continue + } + if subtask, exists := subtaskMap[taskID]; exists { + subtask.Rewards = append(subtask.Rewards, reward) + } + } + } + } + + // Преобразуем map в slice, сохраняя порядок по ID + for _, id := range subtaskIDs { + if subtask, exists := subtaskMap[id]; exists { + subtasks = append(subtasks, *subtask) + } + } + } + + // Инициализируем auto_complete значением по умолчанию + task.AutoComplete = false + + // Загружаем данные из драфта, если он существует + var draftProgressionValue sql.NullFloat64 + var draftAutoComplete sql.NullBool + var draftProgressionValuePtr *float64 + var draftSubtasks []DraftSubtask + err = a.DB.QueryRow(` + SELECT progression_value, auto_complete + FROM task_drafts + WHERE task_id = $1 AND user_id = $2 + `, taskID, userID).Scan(&draftProgressionValue, &draftAutoComplete) + + if err == nil { + // Драфт существует, загружаем данные + if draftProgressionValue.Valid { + draftProgressionValuePtr = &draftProgressionValue.Float64 + } + // Устанавливаем auto_complete из драфта (если Valid, иначе остается false) + if draftAutoComplete.Valid { + task.AutoComplete = draftAutoComplete.Bool + log.Printf("Task %d: auto_complete set to %v from draft", taskID, task.AutoComplete) + } else { + log.Printf("Task %d: draft exists but auto_complete is NULL, keeping default false", taskID) + } + + // Загружаем подзадачи из драфта + draftSubtaskRows, err := a.DB.Query(` + SELECT subtask_id + FROM task_draft_subtasks + WHERE task_draft_id = (SELECT id FROM task_drafts WHERE task_id = $1 AND user_id = $2) + `, taskID, userID) + if err == nil { + defer draftSubtaskRows.Close() + draftSubtasks = make([]DraftSubtask, 0) + validSubtaskIDs := make(map[int]bool) + // Создаем map валидных подзадач для фильтрации + for _, subtask := range subtasks { + validSubtaskIDs[subtask.Task.ID] = true + } + + for draftSubtaskRows.Next() { + var subtaskID int + if err := draftSubtaskRows.Scan(&subtaskID); err == nil { + // Игнорируем подзадачи, которых больше нет в основной задаче + if validSubtaskIDs[subtaskID] { + draftSubtasks = append(draftSubtasks, DraftSubtask{ + SubtaskID: subtaskID, + }) + } + } + } + } else if err != sql.ErrNoRows { + log.Printf("Error loading draft subtasks for task %d: %v", taskID, err) + } + } else if err != sql.ErrNoRows { + log.Printf("Error loading draft for task %d: %v", taskID, err) + } else { + log.Printf("Task %d: no draft found, auto_complete remains false", taskID) + } + // Если драфта нет (err == sql.ErrNoRows), auto_complete остается false + log.Printf("Task %d: final auto_complete value = %v", taskID, task.AutoComplete) + + response := TaskDetail{ + Task: task, + Rewards: rewards, + Subtasks: subtasks, + } + + // Устанавливаем DraftProgressionValue если он был загружен + if draftProgressionValuePtr != nil { + response.DraftProgressionValue = draftProgressionValuePtr + } + + // Устанавливаем DraftSubtasks если они были загружены + if len(draftSubtasks) > 0 { + response.DraftSubtasks = draftSubtasks + } + + // Если задача связана с wishlist, загружаем базовую информацию о wishlist + if wishlistID.Valid { + var wishlistName string + err := a.DB.QueryRow(` + SELECT name + FROM wishlist_items + WHERE id = $1 AND deleted = FALSE + `, wishlistID.Int64).Scan(&wishlistName) + + if err == nil { + unlocked, err := a.checkWishlistUnlock(int(wishlistID.Int64), userID) + if err != nil { + log.Printf("Error checking wishlist unlock status: %v", err) + unlocked = false + } + + response.WishlistInfo = &WishlistInfo{ + ID: int(wishlistID.Int64), + Name: wishlistName, + Unlocked: unlocked, + } + } else if err != sql.ErrNoRows { + log.Printf("Error loading wishlist info for task %d: %v", taskID, err) + } + } + + // Если задача - тест (есть config_id), загружаем данные конфигурации + if configID.Valid { + var wordsCount int + var maxCards sql.NullInt64 + err := a.DB.QueryRow(` + SELECT words_count, max_cards + FROM configs + WHERE id = $1 + `, configID.Int64).Scan(&wordsCount, &maxCards) + + if err == nil { + response.WordsCount = &wordsCount + if maxCards.Valid { + maxCardsInt := int(maxCards.Int64) + response.MaxCards = &maxCardsInt + } + + // Загружаем связанные словари + dictRows, err := a.DB.Query(` + SELECT dictionary_id + FROM config_dictionaries + WHERE config_id = $1 + `, configID.Int64) + if err == nil { + defer dictRows.Close() + dictionaryIDs := make([]int, 0) + for dictRows.Next() { + var dictID int + if err := dictRows.Scan(&dictID); err == nil { + dictionaryIDs = append(dictionaryIDs, dictID) + } + } + if len(dictionaryIDs) > 0 { + response.DictionaryIDs = dictionaryIDs + } + } + } else { + log.Printf("Error loading config for task %d: %v", taskID, err) + } + } + + log.Printf("Task %d: Sending response with auto_complete = %v (task.AutoComplete = %v)", taskID, response.Task.AutoComplete, task.AutoComplete) + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// findProjectByName находит проект по имени (регистронезависимо) или возвращает ошибку +func (a *App) findProjectByName(projectName string, userID int) (int, error) { + var projectID int + err := a.DB.QueryRow(` + SELECT id FROM projects + WHERE LOWER(name) = LOWER($1) AND user_id = $2 AND deleted = FALSE + `, projectName, userID).Scan(&projectID) + + if err == sql.ErrNoRows { + return 0, fmt.Errorf("project not found: %s", projectName) + } + if err != nil { + return 0, fmt.Errorf("error finding project: %w", err) + } + + return projectID, nil +} + +// findProjectByNameTx находит проект по имени в транзакции +func (a *App) findProjectByNameTx(tx *sql.Tx, projectName string, userID int) (int, error) { + var projectID int + err := tx.QueryRow(` + SELECT id FROM projects + WHERE LOWER(name) = LOWER($1) AND user_id = $2 AND deleted = FALSE + `, projectName, userID).Scan(&projectID) + + if err == sql.ErrNoRows { + return 0, fmt.Errorf("project not found: %s", projectName) + } + if err != nil { + return 0, fmt.Errorf("error finding project: %w", err) + } + + return projectID, nil +} + +// createTaskHandler создает новую задачу +func (a *App) createTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req TaskRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding task request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Валидация + if len(strings.TrimSpace(req.Name)) < 1 { + sendErrorWithCORS(w, "Task name is required and must be at least 1 character", http.StatusBadRequest) + return + } + + // Проверяем, что все rewards имеют project_name + for _, reward := range req.Rewards { + if strings.TrimSpace(reward.ProjectName) == "" { + sendErrorWithCORS(w, "Project name is required for all rewards", http.StatusBadRequest) + return + } + } + + // Валидация wishlist_id: если указан, проверяем что желание существует и пользователь имеет доступ + var wishlistName string + if req.WishlistID != nil { + var wishlistOwnerID int + var authorID sql.NullInt64 + var boardID sql.NullInt64 + err := a.DB.QueryRow(` + SELECT user_id, name, author_id, board_id FROM wishlist_items + WHERE id = $1 AND deleted = FALSE + `, *req.WishlistID).Scan(&wishlistOwnerID, &wishlistName, &authorID, &boardID) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusBadRequest) + return + } + if err != nil { + log.Printf("Error checking wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist item: %v", err), http.StatusInternalServerError) + return + } + + hasAccess := wishlistOwnerID == userID + // Проверяем, является ли пользователь автором желания + if !hasAccess && authorID.Valid && authorID.Int64 == int64(userID) { + hasAccess = true + } + // Проверяем доступ к доске, если желание принадлежит доске + if !hasAccess && boardID.Valid { + var boardOwnerID int + err := a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID.Int64).Scan(&boardOwnerID) + if err == nil && boardOwnerID == userID { + hasAccess = true + } else if err == nil { + var isMember bool + a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, boardID.Int64, userID).Scan(&isMember) + if isMember { + hasAccess = true + } + } + } + + if !hasAccess { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + + // Проверяем, что нет другой активной (не удаленной и не выполненной) задачи с таким wishlist_id для этого пользователя + // Если задача была выполнена (completed > 0) или удалена, можно создать новую + var existingTaskID int + var existingTaskCompleted int + err = a.DB.QueryRow(` + SELECT id, completed FROM tasks + WHERE wishlist_id = $1 AND user_id = $2 AND deleted = FALSE + `, *req.WishlistID, userID).Scan(&existingTaskID, &existingTaskCompleted) + + if err != sql.ErrNoRows { + if err != nil { + log.Printf("Error checking existing task for wishlist: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking existing task: %v", err), http.StatusInternalServerError) + return + } + // Если задача была выполнена (completed > 0), можно создать новую + if existingTaskCompleted > 0 { + log.Printf("Existing task %d for wishlist %d was completed (%d times), marking as deleted and allowing new task creation", existingTaskID, *req.WishlistID, existingTaskCompleted) + // Помечаем старую выполненную задачу как удаленную, чтобы избежать конфликта с уникальным индексом + _, err = a.DB.Exec(` + UPDATE tasks + SET deleted = TRUE + WHERE id = $1 + `, existingTaskID) + if err != nil { + log.Printf("Error marking existing completed task as deleted: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error marking existing task as deleted: %v", err), http.StatusInternalServerError) + return + } + } else { + sendErrorWithCORS(w, "Task already exists for this wishlist item", http.StatusBadRequest) + return + } + } + + // Если название задачи не указано или пустое, используем название желания + if strings.TrimSpace(req.Name) == "" { + req.Name = wishlistName + } + + // Если сообщение награды не указано или пустое, устанавливаем "Выполнить желание: {TITLE}" + if req.RewardMessage == nil || strings.TrimSpace(*req.RewardMessage) == "" { + rewardMsg := fmt.Sprintf("Выполнить желание: %s", wishlistName) + req.RewardMessage = &rewardMsg + } + + // Задачи, привязанные к желанию, не могут быть периодическими + if (req.RepetitionPeriod != nil && strings.TrimSpace(*req.RepetitionPeriod) != "") || + (req.RepetitionDate != nil && strings.TrimSpace(*req.RepetitionDate) != "") { + // Проверяем, что это не бесконечная задача (оба поля = 0) + isPeriodZero := req.RepetitionPeriod != nil && (strings.TrimSpace(*req.RepetitionPeriod) == "0 day" || strings.HasPrefix(strings.TrimSpace(*req.RepetitionPeriod), "0 ")) + isDateZero := req.RepetitionDate != nil && (strings.TrimSpace(*req.RepetitionDate) == "0 week" || strings.HasPrefix(strings.TrimSpace(*req.RepetitionDate), "0 ")) + if !isPeriodZero || !isDateZero { + sendErrorWithCORS(w, "Tasks linked to wishlist items cannot be periodic", http.StatusBadRequest) + return + } + } + + // Задачи, привязанные к желанию, не могут иметь прогрессию + if req.ProgressionBase != nil { + sendErrorWithCORS(w, "Tasks linked to wishlist items cannot have progression", http.StatusBadRequest) + return + } + } + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Создаем основную задачу + var taskID int + var rewardMessage sql.NullString + var progressionBase sql.NullFloat64 + var repetitionPeriod sql.NullString + var repetitionDate sql.NullString + if req.RewardMessage != nil { + rewardMessage = sql.NullString{String: *req.RewardMessage, Valid: true} + } + if req.ProgressionBase != nil { + progressionBase = sql.NullFloat64{Float64: *req.ProgressionBase, Valid: true} + } + if req.RepetitionPeriod != nil && strings.TrimSpace(*req.RepetitionPeriod) != "" { + repetitionPeriod = sql.NullString{String: strings.TrimSpace(*req.RepetitionPeriod), Valid: true} + log.Printf("Creating task with repetition_period: %s", repetitionPeriod.String) + } else { + log.Printf("Creating task without repetition_period (req.RepetitionPeriod: %v)", req.RepetitionPeriod) + } + if req.RepetitionDate != nil && strings.TrimSpace(*req.RepetitionDate) != "" { + repetitionDate = sql.NullString{String: strings.TrimSpace(*req.RepetitionDate), Valid: true} + log.Printf("Creating task with repetition_date: %s", repetitionDate.String) + } + + // Используем CAST для преобразования строки в INTERVAL + var repetitionPeriodValue interface{} + if repetitionPeriod.Valid { + repetitionPeriodValue = repetitionPeriod.String + } else { + repetitionPeriodValue = nil + } + + // Подготовка wishlist_id для INSERT + var wishlistIDValue interface{} + if req.WishlistID != nil { + wishlistIDValue = *req.WishlistID + log.Printf("Creating task with wishlist_id: %d", *req.WishlistID) + } else { + wishlistIDValue = nil + log.Printf("Creating task without wishlist_id") + } + + // Подготовка reward_policy: если задача связана с желанием и политика не указана, используем "personal" по умолчанию + var rewardPolicyValue interface{} + if req.WishlistID != nil { + if req.RewardPolicy != nil && (*req.RewardPolicy == "personal" || *req.RewardPolicy == "general") { + rewardPolicyValue = *req.RewardPolicy + } else { + rewardPolicyValue = "personal" // Значение по умолчанию для задач, связанных с желаниями + } + } else { + rewardPolicyValue = nil // NULL для задач, не связанных с желаниями + } + + // Используем условный SQL для обработки NULL значений + var insertSQL string + var insertArgs []interface{} + if repetitionPeriod.Valid { + // Для repetition_period выставляем сегодняшнюю дату + + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + } + + now := time.Now().In(loc) + insertSQL = ` + INSERT INTO tasks (user_id, name, reward_message, progression_base, repetition_period, repetition_date, next_show_at, completed, deleted, wishlist_id, reward_policy, group_name) + VALUES ($1, $2, $3, $4, $5::INTERVAL, NULL, $6, 0, FALSE, $7, $8, $9) + RETURNING id + ` + insertArgs = []interface{}{userID, strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionPeriodValue, now, wishlistIDValue, rewardPolicyValue, req.GroupName} + } else if repetitionDate.Valid { + // Вычисляем next_show_at для задачи с repetition_date + + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + } + + nextShowAt := calculateNextShowAtFromRepetitionDate(repetitionDate.String, time.Now().In(loc)) + if nextShowAt != nil { + insertSQL = ` + INSERT INTO tasks (user_id, name, reward_message, progression_base, repetition_period, repetition_date, next_show_at, completed, deleted, wishlist_id, reward_policy, group_name) + VALUES ($1, $2, $3, $4, NULL, $5, $6, 0, FALSE, $7, $8, $9) + RETURNING id + ` + insertArgs = []interface{}{userID, strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionDate.String, nextShowAt, wishlistIDValue, rewardPolicyValue, req.GroupName} + } else { + insertSQL = ` + INSERT INTO tasks (user_id, name, reward_message, progression_base, repetition_period, repetition_date, completed, deleted, wishlist_id, reward_policy, group_name) + VALUES ($1, $2, $3, $4, NULL, $5, 0, FALSE, $6, $7, $8) + RETURNING id + ` + insertArgs = []interface{}{userID, strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionDate.String, wishlistIDValue, rewardPolicyValue, req.GroupName} + } + } else { + insertSQL = ` + INSERT INTO tasks (user_id, name, reward_message, progression_base, repetition_period, repetition_date, completed, deleted, wishlist_id, reward_policy, group_name) + VALUES ($1, $2, $3, $4, NULL, NULL, 0, FALSE, $5, $6, $7) + RETURNING id + ` + insertArgs = []interface{}{userID, strings.TrimSpace(req.Name), rewardMessage, progressionBase, wishlistIDValue, rewardPolicyValue, req.GroupName} + } + + err = tx.QueryRow(insertSQL, insertArgs...).Scan(&taskID) + + if err != nil { + log.Printf("Error creating task: %v", err) + // Проверяем, не является ли это ошибкой уникального индекса + if strings.Contains(err.Error(), "unique") || strings.Contains(err.Error(), "duplicate") { + sendErrorWithCORS(w, "Task already exists for this wishlist item", http.StatusBadRequest) + return + } + sendErrorWithCORS(w, fmt.Sprintf("Error creating task: %v", err), http.StatusInternalServerError) + return + } + + // Создаем награды для основной задачи + for _, rewardReq := range req.Rewards { + projectID, err := a.findProjectByNameTx(tx, rewardReq.ProjectName, userID) + if err != nil { + log.Printf("Error finding project %s: %v", rewardReq.ProjectName, err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + _, err = tx.Exec(` + INSERT INTO reward_configs (position, task_id, project_id, value, use_progression) + VALUES ($1, $2, $3, $4, $5) + `, rewardReq.Position, taskID, projectID, rewardReq.Value, rewardReq.UseProgression) + + if err != nil { + log.Printf("Error creating reward: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating reward: %v", err), http.StatusInternalServerError) + return + } + } + + // Создаем подзадачи + for index, subtaskReq := range req.Subtasks { + var subtaskName sql.NullString + var subtaskRewardMessage sql.NullString + var subtaskProgressionBase sql.NullFloat64 + var subtaskPosition sql.NullInt64 + + if subtaskReq.Name != nil && strings.TrimSpace(*subtaskReq.Name) != "" { + subtaskName = sql.NullString{String: strings.TrimSpace(*subtaskReq.Name), Valid: true} + } + if subtaskReq.RewardMessage != nil { + subtaskRewardMessage = sql.NullString{String: *subtaskReq.RewardMessage, Valid: true} + } + if req.ProgressionBase != nil { + subtaskProgressionBase = sql.NullFloat64{Float64: *req.ProgressionBase, Valid: true} + } + // Используем position из запроса, если указан, иначе используем индекс в массиве + if subtaskReq.Position != nil { + subtaskPosition = sql.NullInt64{Int64: int64(*subtaskReq.Position), Valid: true} + } else { + subtaskPosition = sql.NullInt64{Int64: int64(index), Valid: true} + } + + var subtaskID int + err = tx.QueryRow(` + INSERT INTO tasks (user_id, name, parent_task_id, reward_message, progression_base, completed, deleted, position) + VALUES ($1, $2, $3, $4, $5, 0, FALSE, $6) + RETURNING id + `, userID, subtaskName, taskID, subtaskRewardMessage, subtaskProgressionBase, subtaskPosition).Scan(&subtaskID) + + if err != nil { + log.Printf("Error creating subtask: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating subtask: %v", err), http.StatusInternalServerError) + return + } + + // Создаем награды для подзадачи + for _, rewardReq := range subtaskReq.Rewards { + if strings.TrimSpace(rewardReq.ProjectName) == "" { + sendErrorWithCORS(w, "Project name is required for all rewards", http.StatusBadRequest) + return + } + + projectID, err := a.findProjectByNameTx(tx, rewardReq.ProjectName, userID) + if err != nil { + log.Printf("Error finding project %s for subtask: %v", rewardReq.ProjectName, err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + _, err = tx.Exec(` + INSERT INTO reward_configs (position, task_id, project_id, value, use_progression) + VALUES ($1, $2, $3, $4, $5) + `, rewardReq.Position, subtaskID, projectID, rewardReq.Value, rewardReq.UseProgression) + + if err != nil { + log.Printf("Error creating subtask reward: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating subtask reward: %v", err), http.StatusInternalServerError) + return + } + } + } + + // Если это тест, создаем конфигурацию + if req.IsTest { + // Валидация: для теста должны быть указаны words_count и хотя бы один словарь + if req.WordsCount == nil || *req.WordsCount < 1 { + sendErrorWithCORS(w, "Words count is required for test tasks and must be at least 1", http.StatusBadRequest) + return + } + if len(req.DictionaryIDs) == 0 { + sendErrorWithCORS(w, "At least one dictionary is required for test tasks", http.StatusBadRequest) + return + } + + // Создаем конфигурацию теста + var configID int + if req.MaxCards != nil { + err = tx.QueryRow(` + INSERT INTO configs (user_id, words_count, max_cards) + VALUES ($1, $2, $3) + RETURNING id + `, userID, *req.WordsCount, *req.MaxCards).Scan(&configID) + } else { + err = tx.QueryRow(` + INSERT INTO configs (user_id, words_count) + VALUES ($1, $2) + RETURNING id + `, userID, *req.WordsCount).Scan(&configID) + } + + if err != nil { + log.Printf("Error creating config: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating config: %v", err), http.StatusInternalServerError) + return + } + + // Связываем конфигурацию со словарями + for _, dictID := range req.DictionaryIDs { + _, err = tx.Exec(` + INSERT INTO config_dictionaries (config_id, dictionary_id) + VALUES ($1, $2) + `, configID, dictID) + if err != nil { + log.Printf("Error linking dictionary %d to config: %v", dictID, err) + sendErrorWithCORS(w, fmt.Sprintf("Error linking dictionary to config: %v", err), http.StatusInternalServerError) + return + } + } + + // Обновляем задачу, привязывая config_id + _, err = tx.Exec(` + UPDATE tasks SET config_id = $1 WHERE id = $2 + `, configID, taskID) + if err != nil { + log.Printf("Error linking config to task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error linking config to task: %v", err), http.StatusInternalServerError) + return + } + + log.Printf("Created test config %d for task %d", configID, taskID) + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов + if req.GroupName != nil && *req.GroupName != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Возвращаем созданную задачу + var createdTask Task + var lastCompletedAt sql.NullString + var createdRepetitionPeriod sql.NullString + var createdRepetitionDate sql.NullString + err = a.DB.QueryRow(` + SELECT id, name, completed, last_completed_at, reward_message, progression_base, repetition_period::text, repetition_date + FROM tasks + WHERE id = $1 + `, taskID).Scan( + &createdTask.ID, &createdTask.Name, &createdTask.Completed, + &lastCompletedAt, &rewardMessage, &progressionBase, &createdRepetitionPeriod, &createdRepetitionDate, + ) + + if err != nil { + log.Printf("Error fetching created task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error fetching created task: %v", err), http.StatusInternalServerError) + return + } + + if rewardMessage.Valid { + createdTask.RewardMessage = &rewardMessage.String + } + if progressionBase.Valid { + createdTask.ProgressionBase = &progressionBase.Float64 + } + if lastCompletedAt.Valid { + createdTask.LastCompletedAt = &lastCompletedAt.String + } + if createdRepetitionPeriod.Valid { + createdTask.RepetitionPeriod = &createdRepetitionPeriod.String + } + if createdRepetitionDate.Valid { + createdTask.RepetitionDate = &createdRepetitionDate.String + } + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + json.NewEncoder(w).Encode(createdTask) +} + +// updateTaskHandler обновляет существующую задачу +func (a *App) updateTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Проверяем владельца + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM tasks WHERE id = $1", taskID).Scan(&ownerID) + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking task ownership: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking task ownership: %v", err), http.StatusInternalServerError) + return + } + + var req TaskRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding task request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Валидация + if len(strings.TrimSpace(req.Name)) < 1 { + sendErrorWithCORS(w, "Task name is required and must be at least 1 character", http.StatusBadRequest) + return + } + + // Проверяем, что все rewards имеют project_name + for _, reward := range req.Rewards { + if strings.TrimSpace(reward.ProjectName) == "" { + sendErrorWithCORS(w, "Project name is required for all rewards", http.StatusBadRequest) + return + } + } + + // Обработка wishlist_id: можно только отвязать (установить в NULL), нельзя привязать + // Если req.WishlistID == nil, значит пользователь хочет отвязать (или не трогать) + // Если req.WishlistID != nil, игнорируем (нельзя привязать при редактировании) + // Получаем текущий wishlist_id задачи + var currentWishlistID sql.NullInt64 + err = a.DB.QueryRow("SELECT wishlist_id FROM tasks WHERE id = $1", taskID).Scan(¤tWishlistID) + if err != nil { + log.Printf("Error getting current wishlist_id: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting task: %v", err), http.StatusInternalServerError) + return + } + + // Определяем новое значение wishlist_id + // Если задача была привязана и req.WishlistID == nil, значит отвязываем + // Если req.WishlistID != nil, игнорируем (нельзя привязать) + var newWishlistID interface{} + if currentWishlistID.Valid && req.WishlistID == nil { + // Отвязываем от желания + newWishlistID = nil + } else if currentWishlistID.Valid { + // Оставляем текущее значение (нельзя привязать) + newWishlistID = currentWishlistID.Int64 + } else { + // Задача не была привязана, оставляем NULL + newWishlistID = nil + } + + // Если задача привязана к желанию, не позволяем устанавливать повторения и прогрессию + if currentWishlistID.Valid { + if (req.RepetitionPeriod != nil && strings.TrimSpace(*req.RepetitionPeriod) != "") || + (req.RepetitionDate != nil && strings.TrimSpace(*req.RepetitionDate) != "") { + // Проверяем, что это не бесконечная задача (оба поля = 0) + isPeriodZero := req.RepetitionPeriod != nil && (strings.TrimSpace(*req.RepetitionPeriod) == "0 day" || strings.HasPrefix(strings.TrimSpace(*req.RepetitionPeriod), "0 ")) + isDateZero := req.RepetitionDate != nil && (strings.TrimSpace(*req.RepetitionDate) == "0 week" || strings.HasPrefix(strings.TrimSpace(*req.RepetitionDate), "0 ")) + if !isPeriodZero || !isDateZero { + sendErrorWithCORS(w, "Tasks linked to wishlist items cannot be periodic", http.StatusBadRequest) + return + } + } + + // Задачи, привязанные к желанию, не могут иметь прогрессию + if req.ProgressionBase != nil { + sendErrorWithCORS(w, "Tasks linked to wishlist items cannot have progression", http.StatusBadRequest) + return + } + } + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Обновляем основную задачу + var rewardMessage sql.NullString + var progressionBase sql.NullFloat64 + var repetitionPeriod sql.NullString + var repetitionDate sql.NullString + if req.RewardMessage != nil { + rewardMessage = sql.NullString{String: *req.RewardMessage, Valid: true} + } + if req.ProgressionBase != nil { + progressionBase = sql.NullFloat64{Float64: *req.ProgressionBase, Valid: true} + } + if req.RepetitionPeriod != nil && strings.TrimSpace(*req.RepetitionPeriod) != "" { + repetitionPeriod = sql.NullString{String: strings.TrimSpace(*req.RepetitionPeriod), Valid: true} + log.Printf("Updating task %d with repetition_period: %s", taskID, repetitionPeriod.String) + } else { + log.Printf("Updating task %d without repetition_period (req.RepetitionPeriod: %v)", taskID, req.RepetitionPeriod) + } + if req.RepetitionDate != nil && strings.TrimSpace(*req.RepetitionDate) != "" { + repetitionDate = sql.NullString{String: strings.TrimSpace(*req.RepetitionDate), Valid: true} + log.Printf("Updating task %d with repetition_date: %s", taskID, repetitionDate.String) + } + + // Подготовка reward_policy: если задача связана с желанием и политика не указана, используем "personal" по умолчанию + var rewardPolicyValue interface{} + if newWishlistID != nil { + // Если reward_policy явно указан в запросе, используем его + if req.RewardPolicy != nil && (*req.RewardPolicy == "personal" || *req.RewardPolicy == "general") { + rewardPolicyValue = *req.RewardPolicy + } else if req.RewardPolicy == nil { + // Если reward_policy не указан в запросе (undefined), сохраняем текущее значение из БД + // Это важно для случаев, когда обновляются другие поля, но reward_policy не должен меняться + var currentRewardPolicy sql.NullString + err = a.DB.QueryRow("SELECT reward_policy FROM tasks WHERE id = $1", taskID).Scan(¤tRewardPolicy) + if err == nil && currentRewardPolicy.Valid { + rewardPolicyValue = currentRewardPolicy.String + } else { + // Если в БД нет значения, используем "personal" по умолчанию + rewardPolicyValue = "personal" + } + } + } else { + rewardPolicyValue = nil // NULL для задач, не связанных с желаниями + } + + // Получаем текущие значения repetition_period, repetition_date и next_show_at из БД + // для проверки, изменились ли поля повторения + var currentRepetitionPeriod sql.NullString + var currentRepetitionDate sql.NullString + var currentNextShowAt sql.NullTime + err = a.DB.QueryRow("SELECT repetition_period, repetition_date, next_show_at FROM tasks WHERE id = $1", taskID).Scan( + ¤tRepetitionPeriod, + ¤tRepetitionDate, + ¤tNextShowAt, + ) + if err != nil { + log.Printf("Error getting current repetition values: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting task: %v", err), http.StatusInternalServerError) + return + } + + // Проверяем, изменились ли поля повторения + repetitionChanged := false + if repetitionPeriod.Valid { + // Новое значение есть - проверяем, отличается ли от текущего + if !currentRepetitionPeriod.Valid || currentRepetitionPeriod.String != repetitionPeriod.String { + repetitionChanged = true + } + // Также проверяем, что текущее repetition_date было не NULL (если было, значит изменился тип повторения) + if currentRepetitionDate.Valid { + repetitionChanged = true + } + } else if repetitionDate.Valid { + // Новое значение есть - проверяем, отличается ли от текущего + if !currentRepetitionDate.Valid || currentRepetitionDate.String != repetitionDate.String { + repetitionChanged = true + } + // Также проверяем, что текущее repetition_period было не NULL (если было, значит изменился тип повторения) + if currentRepetitionPeriod.Valid { + repetitionChanged = true + } + } else { + // Оба поля NULL - проверяем, были ли они NULL до этого + if currentRepetitionPeriod.Valid || currentRepetitionDate.Valid { + repetitionChanged = true + } + } + + // Используем условный SQL для обработки NULL значений + var updateSQL string + var updateArgs []interface{} + + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + } + + if repetitionPeriod.Valid { + // Для repetition_period выставляем сегодняшнюю дату только если поле изменилось + var nextShowAtValue interface{} + if repetitionChanged { + now := time.Now().In(loc) + nextShowAtValue = now + } else { + // Поле не изменилось - сохраняем текущее значение next_show_at + if currentNextShowAt.Valid { + nextShowAtValue = currentNextShowAt.Time + } else { + nextShowAtValue = nil + } + } + updateSQL = ` + UPDATE tasks + SET name = $1, reward_message = $2, progression_base = $3, repetition_period = $4::INTERVAL, repetition_date = NULL, next_show_at = $5, wishlist_id = $6, reward_policy = $7, group_name = $8 + WHERE id = $9 + ` + updateArgs = []interface{}{strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionPeriod.String, nextShowAtValue, newWishlistID, rewardPolicyValue, req.GroupName, taskID} + } else if repetitionDate.Valid { + // Вычисляем next_show_at для задачи с repetition_date только если поле изменилось + var nextShowAtValue interface{} + if repetitionChanged { + nextShowAt := calculateNextShowAtFromRepetitionDate(repetitionDate.String, time.Now().In(loc)) + nextShowAtValue = nextShowAt + } else { + // Поле не изменилось - сохраняем текущее значение next_show_at + if currentNextShowAt.Valid { + nextShowAtValue = currentNextShowAt.Time + } else { + nextShowAtValue = nil + } + } + if nextShowAtValue != nil { + updateSQL = ` + UPDATE tasks + SET name = $1, reward_message = $2, progression_base = $3, repetition_period = NULL, repetition_date = $4, next_show_at = $5, wishlist_id = $6, reward_policy = $7, group_name = $8 + WHERE id = $9 + ` + updateArgs = []interface{}{strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionDate.String, nextShowAtValue, newWishlistID, rewardPolicyValue, req.GroupName, taskID} + } else { + updateSQL = ` + UPDATE tasks + SET name = $1, reward_message = $2, progression_base = $3, repetition_period = NULL, repetition_date = $4, wishlist_id = $5, reward_policy = $6, group_name = $7 + WHERE id = $8 + ` + updateArgs = []interface{}{strings.TrimSpace(req.Name), rewardMessage, progressionBase, repetitionDate.String, newWishlistID, rewardPolicyValue, req.GroupName, taskID} + } + } else { + // Оба поля NULL - устанавливаем next_show_at в NULL только если поля повторения изменились + var nextShowAtValue interface{} + if repetitionChanged { + nextShowAtValue = nil + } else { + // Поля не изменились - сохраняем текущее значение next_show_at + if currentNextShowAt.Valid { + nextShowAtValue = currentNextShowAt.Time + } else { + nextShowAtValue = nil + } + } + updateSQL = ` + UPDATE tasks + SET name = $1, reward_message = $2, progression_base = $3, repetition_period = NULL, repetition_date = NULL, next_show_at = $4, wishlist_id = $5, reward_policy = $6, group_name = $7 + WHERE id = $8 + ` + updateArgs = []interface{}{strings.TrimSpace(req.Name), rewardMessage, progressionBase, nextShowAtValue, newWishlistID, rewardPolicyValue, req.GroupName, taskID} + } + + _, err = tx.Exec(updateSQL, updateArgs...) + + if err != nil { + log.Printf("Error updating task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating task: %v", err), http.StatusInternalServerError) + return + } + + // Удаляем старые награды основной задачи + _, err = tx.Exec("DELETE FROM reward_configs WHERE task_id = $1", taskID) + if err != nil { + log.Printf("Error deleting old rewards: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting old rewards: %v", err), http.StatusInternalServerError) + return + } + + // Вставляем новые награды + for _, rewardReq := range req.Rewards { + projectID, err := a.findProjectByNameTx(tx, rewardReq.ProjectName, userID) + if err != nil { + log.Printf("Error finding project %s: %v", rewardReq.ProjectName, err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + _, err = tx.Exec(` + INSERT INTO reward_configs (position, task_id, project_id, value, use_progression) + VALUES ($1, $2, $3, $4, $5) + `, rewardReq.Position, taskID, projectID, rewardReq.Value, rewardReq.UseProgression) + + if err != nil { + log.Printf("Error creating reward: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating reward: %v", err), http.StatusInternalServerError) + return + } + } + + // Получаем список текущих подзадач + currentSubtaskIDs := make(map[int]bool) + rows, err := tx.Query("SELECT id FROM tasks WHERE parent_task_id = $1 AND deleted = FALSE", taskID) + if err == nil { + for rows.Next() { + var id int + if err := rows.Scan(&id); err == nil { + currentSubtaskIDs[id] = true + } + } + rows.Close() + } + + // Обрабатываем подзадачи из запроса + subtaskIDsInRequest := make(map[int]bool) + for index, subtaskReq := range req.Subtasks { + if subtaskReq.ID != nil { + subtaskIDsInRequest[*subtaskReq.ID] = true + + // Обновляем существующую подзадачу + var subtaskName sql.NullString + var subtaskRewardMessage sql.NullString + var subtaskProgressionBase sql.NullFloat64 + var subtaskPosition sql.NullInt64 + + if subtaskReq.Name != nil && strings.TrimSpace(*subtaskReq.Name) != "" { + subtaskName = sql.NullString{String: strings.TrimSpace(*subtaskReq.Name), Valid: true} + } + if subtaskReq.RewardMessage != nil { + subtaskRewardMessage = sql.NullString{String: *subtaskReq.RewardMessage, Valid: true} + } + if req.ProgressionBase != nil { + subtaskProgressionBase = sql.NullFloat64{Float64: *req.ProgressionBase, Valid: true} + } + // Используем position из запроса, если указан, иначе используем индекс в массиве + if subtaskReq.Position != nil { + subtaskPosition = sql.NullInt64{Int64: int64(*subtaskReq.Position), Valid: true} + } else { + subtaskPosition = sql.NullInt64{Int64: int64(index), Valid: true} + } + + _, err = tx.Exec(` + UPDATE tasks + SET name = $1, reward_message = $2, progression_base = $3, position = $4 + WHERE id = $5 AND parent_task_id = $6 + `, subtaskName, subtaskRewardMessage, subtaskProgressionBase, subtaskPosition, *subtaskReq.ID, taskID) + + if err != nil { + log.Printf("Error updating subtask: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating subtask: %v", err), http.StatusInternalServerError) + return + } + + // Удаляем старые награды подзадачи + _, err = tx.Exec("DELETE FROM reward_configs WHERE task_id = $1", *subtaskReq.ID) + if err != nil { + log.Printf("Error deleting old subtask rewards: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting old subtask rewards: %v", err), http.StatusInternalServerError) + return + } + + // Вставляем новые награды подзадачи + for _, rewardReq := range subtaskReq.Rewards { + if strings.TrimSpace(rewardReq.ProjectName) == "" { + sendErrorWithCORS(w, "Project name is required for all rewards", http.StatusBadRequest) + return + } + + projectID, err := a.findProjectByNameTx(tx, rewardReq.ProjectName, userID) + if err != nil { + log.Printf("Error finding project %s for subtask: %v", rewardReq.ProjectName, err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + _, err = tx.Exec(` + INSERT INTO reward_configs (position, task_id, project_id, value, use_progression) + VALUES ($1, $2, $3, $4, $5) + `, rewardReq.Position, *subtaskReq.ID, projectID, rewardReq.Value, rewardReq.UseProgression) + + if err != nil { + log.Printf("Error creating subtask reward: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating subtask reward: %v", err), http.StatusInternalServerError) + return + } + } + } else { + // Создаем новую подзадачу + var subtaskName sql.NullString + var subtaskRewardMessage sql.NullString + var subtaskProgressionBase sql.NullFloat64 + var subtaskPosition sql.NullInt64 + + if subtaskReq.Name != nil && strings.TrimSpace(*subtaskReq.Name) != "" { + subtaskName = sql.NullString{String: strings.TrimSpace(*subtaskReq.Name), Valid: true} + } + if subtaskReq.RewardMessage != nil { + subtaskRewardMessage = sql.NullString{String: *subtaskReq.RewardMessage, Valid: true} + } + if req.ProgressionBase != nil { + subtaskProgressionBase = sql.NullFloat64{Float64: *req.ProgressionBase, Valid: true} + } + // Используем position из запроса, если указан, иначе используем индекс в массиве + if subtaskReq.Position != nil { + subtaskPosition = sql.NullInt64{Int64: int64(*subtaskReq.Position), Valid: true} + } else { + subtaskPosition = sql.NullInt64{Int64: int64(index), Valid: true} + } + + var subtaskID int + err = tx.QueryRow(` + INSERT INTO tasks (user_id, name, parent_task_id, reward_message, progression_base, completed, deleted, position) + VALUES ($1, $2, $3, $4, $5, 0, FALSE, $6) + RETURNING id + `, userID, subtaskName, taskID, subtaskRewardMessage, subtaskProgressionBase, subtaskPosition).Scan(&subtaskID) + + if err != nil { + log.Printf("Error creating subtask: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating subtask: %v", err), http.StatusInternalServerError) + return + } + + // Создаем награды для новой подзадачи + for _, rewardReq := range subtaskReq.Rewards { + if strings.TrimSpace(rewardReq.ProjectName) == "" { + sendErrorWithCORS(w, "Project name is required for all rewards", http.StatusBadRequest) + return + } + + projectID, err := a.findProjectByNameTx(tx, rewardReq.ProjectName, userID) + if err != nil { + log.Printf("Error finding project %s for new subtask: %v", rewardReq.ProjectName, err) + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + return + } + + _, err = tx.Exec(` + INSERT INTO reward_configs (position, task_id, project_id, value, use_progression) + VALUES ($1, $2, $3, $4, $5) + `, rewardReq.Position, subtaskID, projectID, rewardReq.Value, rewardReq.UseProgression) + + if err != nil { + log.Printf("Error creating subtask reward: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating subtask reward: %v", err), http.StatusInternalServerError) + return + } + } + } + } + + // Помечаем подзадачи, которые были в БД, но не пришли в запросе, как deleted + for subtaskID := range currentSubtaskIDs { + if !subtaskIDsInRequest[subtaskID] { + _, err = tx.Exec("UPDATE tasks SET deleted = TRUE WHERE id = $1", subtaskID) + if err != nil { + log.Printf("Error marking subtask as deleted: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error marking subtask as deleted: %v", err), http.StatusInternalServerError) + return + } + } + } + + // Получаем текущий config_id задачи + var currentConfigID sql.NullInt64 + err = tx.QueryRow("SELECT config_id FROM tasks WHERE id = $1", taskID).Scan(¤tConfigID) + if err != nil { + log.Printf("Error getting current config_id: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting task config: %v", err), http.StatusInternalServerError) + return + } + + // Обработка конфигурации теста + if req.IsTest { + // Валидация: для теста должны быть указаны words_count и хотя бы один словарь + if req.WordsCount == nil || *req.WordsCount < 1 { + sendErrorWithCORS(w, "Words count is required for test tasks and must be at least 1", http.StatusBadRequest) + return + } + if len(req.DictionaryIDs) == 0 { + sendErrorWithCORS(w, "At least one dictionary is required for test tasks", http.StatusBadRequest) + return + } + + if currentConfigID.Valid { + // Обновляем существующую конфигурацию + if req.MaxCards != nil { + _, err = tx.Exec(` + UPDATE configs SET words_count = $1, max_cards = $2 WHERE id = $3 + `, *req.WordsCount, *req.MaxCards, currentConfigID.Int64) + } else { + _, err = tx.Exec(` + UPDATE configs SET words_count = $1, max_cards = NULL WHERE id = $2 + `, *req.WordsCount, currentConfigID.Int64) + } + if err != nil { + log.Printf("Error updating config: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating config: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем связи со словарями + _, err = tx.Exec("DELETE FROM config_dictionaries WHERE config_id = $1", currentConfigID.Int64) + if err != nil { + log.Printf("Error deleting config dictionaries: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating config dictionaries: %v", err), http.StatusInternalServerError) + return + } + + for _, dictID := range req.DictionaryIDs { + _, err = tx.Exec(` + INSERT INTO config_dictionaries (config_id, dictionary_id) VALUES ($1, $2) + `, currentConfigID.Int64, dictID) + if err != nil { + log.Printf("Error linking dictionary %d to config: %v", dictID, err) + sendErrorWithCORS(w, fmt.Sprintf("Error linking dictionary to config: %v", err), http.StatusInternalServerError) + return + } + } + } else { + // Создаем новую конфигурацию для существующей задачи + var newConfigID int + if req.MaxCards != nil { + err = tx.QueryRow(` + INSERT INTO configs (user_id, words_count, max_cards) VALUES ($1, $2, $3) RETURNING id + `, userID, *req.WordsCount, *req.MaxCards).Scan(&newConfigID) + } else { + err = tx.QueryRow(` + INSERT INTO configs (user_id, words_count) VALUES ($1, $2) RETURNING id + `, userID, *req.WordsCount).Scan(&newConfigID) + } + if err != nil { + log.Printf("Error creating config: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating config: %v", err), http.StatusInternalServerError) + return + } + + for _, dictID := range req.DictionaryIDs { + _, err = tx.Exec(` + INSERT INTO config_dictionaries (config_id, dictionary_id) VALUES ($1, $2) + `, newConfigID, dictID) + if err != nil { + log.Printf("Error linking dictionary %d to config: %v", dictID, err) + sendErrorWithCORS(w, fmt.Sprintf("Error linking dictionary to config: %v", err), http.StatusInternalServerError) + return + } + } + + _, err = tx.Exec("UPDATE tasks SET config_id = $1 WHERE id = $2", newConfigID, taskID) + if err != nil { + log.Printf("Error linking config to task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error linking config to task: %v", err), http.StatusInternalServerError) + return + } + } + } else if currentConfigID.Valid { + // Задача перестала быть тестом - удаляем конфигурацию + _, err = tx.Exec("DELETE FROM config_dictionaries WHERE config_id = $1", currentConfigID.Int64) + if err != nil { + log.Printf("Error deleting config dictionaries: %v", err) + } + _, err = tx.Exec("DELETE FROM configs WHERE id = $1", currentConfigID.Int64) + if err != nil { + log.Printf("Error deleting config: %v", err) + } + _, err = tx.Exec("UPDATE tasks SET config_id = NULL WHERE id = $1", taskID) + if err != nil { + log.Printf("Error unlinking config from task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error unlinking config from task: %v", err), http.StatusInternalServerError) + return + } + } + + // Коммитим транзакцию + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов + if req.GroupName != nil && *req.GroupName != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Возвращаем обновленную задачу + var updatedTask Task + var lastCompletedAt sql.NullString + var updatedRepetitionPeriod sql.NullString + var updatedRepetitionDate sql.NullString + err = a.DB.QueryRow(` + SELECT id, name, completed, last_completed_at, reward_message, progression_base, repetition_period::text, repetition_date + FROM tasks + WHERE id = $1 + `, taskID).Scan( + &updatedTask.ID, &updatedTask.Name, &updatedTask.Completed, + &lastCompletedAt, &rewardMessage, &progressionBase, &updatedRepetitionPeriod, &updatedRepetitionDate, + ) + + if err != nil { + log.Printf("Error fetching updated task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error fetching updated task: %v", err), http.StatusInternalServerError) + return + } + + if rewardMessage.Valid { + updatedTask.RewardMessage = &rewardMessage.String + } + if progressionBase.Valid { + updatedTask.ProgressionBase = &progressionBase.Float64 + } + if lastCompletedAt.Valid { + updatedTask.LastCompletedAt = &lastCompletedAt.String + } + if updatedRepetitionPeriod.Valid { + updatedTask.RepetitionPeriod = &updatedRepetitionPeriod.String + } + if updatedRepetitionDate.Valid { + updatedTask.RepetitionDate = &updatedRepetitionDate.String + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(updatedTask) +} + +// saveTaskDraftHandler сохраняет или обновляет драфт задачи +func (a *App) saveTaskDraftHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Проверяем владельца задачи + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM tasks WHERE id = $1 AND deleted = FALSE", taskID).Scan(&ownerID) + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking task ownership: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking task ownership: %v", err), http.StatusInternalServerError) + return + } + + var req SaveDraftRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding save draft request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Проверяем, существует ли драфт + var draftID int + err = tx.QueryRow("SELECT id FROM task_drafts WHERE task_id = $1", taskID).Scan(&draftID) + + var progressionValue sql.NullFloat64 + if req.ProgressionValue != nil { + progressionValue = sql.NullFloat64{Float64: *req.ProgressionValue, Valid: true} + } + + if err == sql.ErrNoRows { + // Создаем новый драфт + err = tx.QueryRow(` + INSERT INTO task_drafts (task_id, user_id, progression_value, auto_complete, created_at, updated_at) + VALUES ($1, $2, $3, $4, NOW(), NOW()) + RETURNING id + `, taskID, userID, progressionValue, req.AutoComplete).Scan(&draftID) + + if err != nil { + log.Printf("Error creating draft: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating draft: %v", err), http.StatusInternalServerError) + return + } + } else if err != nil { + log.Printf("Error checking draft existence: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking draft existence: %v", err), http.StatusInternalServerError) + return + } else { + // Обновляем существующий драфт + // При обновлении очищаем auto_complete если параметр false + autoComplete := req.AutoComplete + _, err = tx.Exec(` + UPDATE task_drafts + SET progression_value = $1, auto_complete = $2, updated_at = NOW() + WHERE id = $3 + `, progressionValue, autoComplete, draftID) + + if err != nil { + log.Printf("Error updating draft: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating draft: %v", err), http.StatusInternalServerError) + return + } + + // Удаляем все старые записи подзадач + _, err = tx.Exec("DELETE FROM task_draft_subtasks WHERE task_draft_id = $1", draftID) + if err != nil { + log.Printf("Error deleting old draft subtasks: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting old draft subtasks: %v", err), http.StatusInternalServerError) + return + } + } + + // Вставляем новые записи подзадач (только checked подзадачи) + if len(req.ChildrenTaskIDs) > 0 { + // Проверяем, что все подзадачи принадлежат этой задаче + placeholders := make([]string, len(req.ChildrenTaskIDs)) + args := make([]interface{}, len(req.ChildrenTaskIDs)+1) + args[0] = taskID + for i, id := range req.ChildrenTaskIDs { + placeholders[i] = fmt.Sprintf("$%d", i+2) + args[i+1] = id + } + + query := fmt.Sprintf(` + SELECT id FROM tasks + WHERE parent_task_id = $1 AND id IN (%s) AND deleted = FALSE + `, strings.Join(placeholders, ",")) + + validSubtaskRows, err := tx.Query(query, args...) + if err != nil { + log.Printf("Error validating subtasks: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error validating subtasks: %v", err), http.StatusInternalServerError) + return + } + defer validSubtaskRows.Close() + + validSubtaskIDs := make(map[int]bool) + for validSubtaskRows.Next() { + var id int + if err := validSubtaskRows.Scan(&id); err == nil { + validSubtaskIDs[id] = true + } + } + + // Вставляем только валидные подзадачи + for _, subtaskID := range req.ChildrenTaskIDs { + if validSubtaskIDs[subtaskID] { + _, err = tx.Exec(` + INSERT INTO task_draft_subtasks (task_draft_id, subtask_id) + VALUES ($1, $2) + ON CONFLICT (task_draft_id, subtask_id) DO NOTHING + `, draftID, subtaskID) + if err != nil { + log.Printf("Error inserting draft subtask: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error inserting draft subtask: %v", err), http.StatusInternalServerError) + return + } + } + } + } + + // Коммитим транзакцию + if err = tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Draft saved successfully", + }) +} + +// deleteTaskHandler удаляет задачу (помечает как deleted) +func (a *App) deleteTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Проверяем владельца + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM tasks WHERE id = $1", taskID).Scan(&ownerID) + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking task ownership: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking task ownership: %v", err), http.StatusInternalServerError) + return + } + + // Помечаем задачу как удаленную + _, err = a.DB.Exec("UPDATE tasks SET deleted = TRUE WHERE id = $1 AND user_id = $2", taskID, userID) + if err != nil { + log.Printf("Error deleting task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting task: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Task deleted successfully", + }) +} + +// executeTask выполняет задачу (вынесенная логика) +// Удаляет драфт перед выполнением и выполняет всю логику выполнения задачи +func (a *App) executeTask(taskID int, userID int, req CompleteTaskRequest) error { + // Удаляем драфт перед выполнением (если есть) + _, err := a.DB.Exec(`DELETE FROM task_drafts WHERE task_id = $1`, taskID) + if err != nil { + log.Printf("Error deleting draft for task %d: %v", taskID, err) + // Не возвращаем ошибку, продолжаем выполнение + } + + // Получаем задачу и проверяем владельца + var task Task + var rewardMessage sql.NullString + var progressionBase sql.NullFloat64 + var repetitionPeriod sql.NullString + var repetitionDate sql.NullString + var ownerID int + var wishlistID sql.NullInt64 + + err = a.DB.QueryRow(` + SELECT id, name, reward_message, progression_base, repetition_period::text, repetition_date, user_id, wishlist_id + FROM tasks + WHERE id = $1 AND deleted = FALSE + `, taskID).Scan(&task.ID, &task.Name, &rewardMessage, &progressionBase, &repetitionPeriod, &repetitionDate, &ownerID, &wishlistID) + + if err == sql.ErrNoRows { + return fmt.Errorf("task not found") + } + if err != nil { + log.Printf("Error querying task: %v", err) + return fmt.Errorf("error querying task: %v", err) + } + + if ownerID != userID { + return fmt.Errorf("task not found") + } + + // Проверяем, что желание разблокировано (если задача связана с желанием) + if wishlistID.Valid { + unlocked, err := a.checkWishlistUnlock(int(wishlistID.Int64), userID) + if err != nil { + log.Printf("Error checking wishlist unlock status: %v", err) + return fmt.Errorf("error checking wishlist unlock status: %v", err) + } + if !unlocked { + return fmt.Errorf("cannot complete task: wishlist item is not unlocked") + } + } + + // Валидация: если progression_base != null, то value обязателен + if progressionBase.Valid && req.Value == nil { + return fmt.Errorf("value is required when progression_base is set") + } + + if rewardMessage.Valid { + task.RewardMessage = &rewardMessage.String + } + if progressionBase.Valid { + task.ProgressionBase = &progressionBase.Float64 + } + + // Получаем награды основной задачи + rewardRows, err := a.DB.Query(` + SELECT rc.position, p.name AS project_name, rc.value, rc.use_progression + FROM reward_configs rc + JOIN projects p ON rc.project_id = p.id + WHERE rc.task_id = $1 + ORDER BY rc.position + `, taskID) + + if err != nil { + log.Printf("Error querying rewards: %v", err) + return fmt.Errorf("error querying rewards: %v", err) + } + defer rewardRows.Close() + + rewards := make([]Reward, 0) + for rewardRows.Next() { + var reward Reward + err := rewardRows.Scan(&reward.Position, &reward.ProjectName, &reward.Value, &reward.UseProgression) + if err != nil { + log.Printf("Error scanning reward: %v", err) + continue + } + rewards = append(rewards, reward) + } + + // Вычисляем score для каждой награды и формируем строки для подстановки + rewardStrings := make(map[int]string) + for _, reward := range rewards { + var score float64 + if reward.UseProgression && progressionBase.Valid && req.Value != nil { + score = (*req.Value / progressionBase.Float64) * reward.Value + } else { + score = reward.Value + } + + // Формируем строку награды + var rewardStr string + if score >= 0 { + rewardStr = fmt.Sprintf("**%s+%.4g**", reward.ProjectName, score) + } else { + // Убираем знак минуса из числа (используем абсолютное значение) + rewardStr = fmt.Sprintf("**%s-%.4g**", reward.ProjectName, math.Abs(score)) + } + rewardStrings[reward.Position] = rewardStr + } + + // Функция для замены плейсхолдеров в сообщении награды + replaceRewardPlaceholders := func(message string, rewardStrings map[int]string) string { + result := message + // Сначала сохраняем экранированные плейсхолдеры \$0, \$1 и т.д. во временные маркеры + escapedMarkers := make(map[string]string) + for i := 0; i < 100; i++ { + escaped := fmt.Sprintf(`\$%d`, i) + marker := fmt.Sprintf(`__ESCAPED_DOLLAR_%d__`, i) + if strings.Contains(result, escaped) { + escapedMarkers[marker] = escaped + result = strings.ReplaceAll(result, escaped, marker) + } + } + // Заменяем ${0}, ${1}, и т.д. + for i := 0; i < 100; i++ { // Максимум 100 плейсхолдеров + placeholder := fmt.Sprintf("${%d}", i) + if rewardStr, ok := rewardStrings[i]; ok { + result = strings.ReplaceAll(result, placeholder, rewardStr) + } + } + // Затем заменяем $0, $1, и т.д. (экранированные уже защищены маркерами) + // Ищем $N, где после N не идет еще одна цифра (чтобы не заменить $10 при поиске $1) + // Go regexp не поддерживает lookahead, поэтому заменяем с конца (от больших чисел к меньшим) + for i := 99; i >= 0; i-- { + if rewardStr, ok := rewardStrings[i]; ok { + searchStr := fmt.Sprintf("$%d", i) + // Ищем все вхождения с конца строки + for { + idx := strings.LastIndex(result, searchStr) + if idx == -1 { + break + } + // Проверяем, что после $N не идет еще одна цифра + afterIdx := idx + len(searchStr) + if afterIdx >= len(result) || result[afterIdx] < '0' || result[afterIdx] > '9' { + // Можно заменить + result = result[:idx] + rewardStr + result[afterIdx:] + } else { + // После $N идет еще цифра (например, $10), пропускаем + break + } + } + } + } + // Восстанавливаем экранированные доллары из временных маркеров + for marker, escaped := range escapedMarkers { + result = strings.ReplaceAll(result, marker, escaped) + } + return result + } + + // Подставляем в reward_message основной задачи + var mainTaskMessage string + if task.RewardMessage != nil && *task.RewardMessage != "" { + mainTaskMessage = replaceRewardPlaceholders(*task.RewardMessage, rewardStrings) + } else { + // Если reward_message пустой, используем имя задачи + mainTaskMessage = task.Name + } + + // Получаем выбранные подзадачи (только с непустым reward_message и deleted = FALSE) + subtaskMessages := make([]string, 0) + if len(req.ChildrenTaskIDs) > 0 { + placeholders := make([]string, len(req.ChildrenTaskIDs)) + args := make([]interface{}, len(req.ChildrenTaskIDs)+1) + args[0] = taskID + for i, id := range req.ChildrenTaskIDs { + placeholders[i] = fmt.Sprintf("$%d", i+2) + args[i+1] = id + } + + query := fmt.Sprintf(` + SELECT id, name, reward_message, progression_base + FROM tasks + WHERE parent_task_id = $1 AND id IN (%s) AND deleted = FALSE + `, strings.Join(placeholders, ",")) + + subtaskRows, err := a.DB.Query(query, args...) + if err != nil { + log.Printf("Error querying subtasks: %v", err) + } else { + defer subtaskRows.Close() + for subtaskRows.Next() { + var subtaskID int + var subtaskName string + var subtaskRewardMessage sql.NullString + var subtaskProgressionBase sql.NullFloat64 + + err := subtaskRows.Scan(&subtaskID, &subtaskName, &subtaskRewardMessage, &subtaskProgressionBase) + if err != nil { + log.Printf("Error scanning subtask: %v", err) + continue + } + + // Пропускаем подзадачи с пустым reward_message + if !subtaskRewardMessage.Valid || subtaskRewardMessage.String == "" { + continue + } + + // Получаем награды подзадачи + subtaskRewardRows, err := a.DB.Query(` + SELECT rc.position, p.name AS project_name, rc.value, rc.use_progression + FROM reward_configs rc + JOIN projects p ON rc.project_id = p.id + WHERE rc.task_id = $1 + ORDER BY rc.position + `, subtaskID) + + if err != nil { + log.Printf("Error querying subtask rewards: %v", err) + continue + } + + subtaskRewards := make([]Reward, 0) + for subtaskRewardRows.Next() { + var reward Reward + err := subtaskRewardRows.Scan(&reward.Position, &reward.ProjectName, &reward.Value, &reward.UseProgression) + if err != nil { + log.Printf("Error scanning subtask reward: %v", err) + continue + } + subtaskRewards = append(subtaskRewards, reward) + } + subtaskRewardRows.Close() + + // Вычисляем score для наград подзадачи + subtaskRewardStrings := make(map[int]string) + for _, reward := range subtaskRewards { + var score float64 + if reward.UseProgression && subtaskProgressionBase.Valid && req.Value != nil { + score = (*req.Value / subtaskProgressionBase.Float64) * reward.Value + } else if reward.UseProgression && progressionBase.Valid && req.Value != nil { + // Если у подзадачи нет progression_base, используем основной + score = (*req.Value / progressionBase.Float64) * reward.Value + } else { + score = reward.Value + } + + var rewardStr string + if score >= 0 { + rewardStr = fmt.Sprintf("**%s+%.4g**", reward.ProjectName, score) + } else { + rewardStr = fmt.Sprintf("**%s-%.4g**", reward.ProjectName, math.Abs(score)) + } + subtaskRewardStrings[reward.Position] = rewardStr + } + + // Подставляем в reward_message подзадачи + subtaskMessage := replaceRewardPlaceholders(subtaskRewardMessage.String, subtaskRewardStrings) + + subtaskMessages = append(subtaskMessages, subtaskMessage) + } + } + } + + // Формируем итоговое сообщение + var finalMessage strings.Builder + finalMessage.WriteString(mainTaskMessage) + for _, subtaskMsg := range subtaskMessages { + finalMessage.WriteString("\n + ") + finalMessage.WriteString(subtaskMsg) + } + + // Отправляем сообщение через processMessage + userIDPtr := &userID + _, err = a.processMessage(finalMessage.String(), userIDPtr) + if err != nil { + // Логируем ошибку, но не откатываем транзакцию + log.Printf("Error sending message to Telegram: %v", err) + } + + // Обновляем completed и last_completed_at для основной задачи + // Если repetition_date установлен, вычисляем next_show_at + // Если repetition_period не установлен и repetition_date не установлен, помечаем задачу как удаленную + // Если repetition_period = "0 day" (или любое значение с 0), не обновляем last_completed_at + + // Проверяем наличие repetition_date (используем COALESCE, поэтому пустая строка означает отсутствие) + hasRepetitionDate := repetitionDate.Valid && strings.TrimSpace(repetitionDate.String) != "" + + if hasRepetitionDate { + // Есть repetition_date - вычисляем следующую дату показа + + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + } + + nextShowAt := calculateNextShowAtFromRepetitionDate(repetitionDate.String, time.Now().In(loc)) + if nextShowAt != nil { + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW(), next_show_at = $2 + WHERE id = $1 + `, taskID, nextShowAt) + } else { + // Если не удалось вычислить дату, обновляем как обычно + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW(), next_show_at = NULL + WHERE id = $1 + `, taskID) + } + } else if repetitionPeriod.Valid { + // Проверяем, является ли период нулевым (начинается с "0 ") + periodStr := strings.TrimSpace(repetitionPeriod.String) + isZeroPeriod := strings.HasPrefix(periodStr, "0 ") || periodStr == "0" + + if isZeroPeriod { + // Период = 0: обновляем только счетчик, но не last_completed_at + // Задача никогда не будет переноситься в выполненные + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, next_show_at = NULL + WHERE id = $1 + `, taskID) + } else { + // Обычный период: обновляем счетчик и last_completed_at, вычисляем next_show_at + // next_show_at = last_completed_at + repetition_period + + // Получаем часовой пояс из переменной окружения (по умолчанию UTC) + timezoneStr := getEnv("TIMEZONE", "UTC") + loc, err := time.LoadLocation(timezoneStr) + if err != nil { + log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err) + loc = time.UTC + } + + now := time.Now().In(loc) + log.Printf("Calculating next_show_at for task %d: repetition_period='%s', fromDate=%v (timezone: %s)", taskID, repetitionPeriod.String, now, timezoneStr) + nextShowAt := calculateNextShowAtFromRepetitionPeriod(repetitionPeriod.String, now) + if nextShowAt != nil { + log.Printf("Calculated next_show_at for task %d: %v", taskID, *nextShowAt) + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW(), next_show_at = $2 + WHERE id = $1 + `, taskID, nextShowAt) + } else { + log.Printf("Failed to calculate next_show_at for task %d: repetition_period='%s' returned nil", taskID, repetitionPeriod.String) + // Если не удалось вычислить дату, обновляем как обычно + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW(), next_show_at = NULL + WHERE id = $1 + `, taskID) + } + } + } else { + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW(), next_show_at = NULL, deleted = TRUE + WHERE id = $1 + `, taskID) + } + + if err != nil { + log.Printf("Error updating task completion: %v", err) + return fmt.Errorf("error updating task completion: %v", err) + } + + // Обновляем выбранные подзадачи + if len(req.ChildrenTaskIDs) > 0 { + placeholders := make([]string, len(req.ChildrenTaskIDs)) + args := make([]interface{}, len(req.ChildrenTaskIDs)) + for i, id := range req.ChildrenTaskIDs { + placeholders[i] = fmt.Sprintf("$%d", i+1) + args[i] = id + } + + query := fmt.Sprintf(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW() + WHERE id IN (%s) AND deleted = FALSE + `, strings.Join(placeholders, ",")) + + _, err = a.DB.Exec(query, args...) + if err != nil { + log.Printf("Error updating subtasks completion: %v", err) + // Не возвращаем ошибку, основная задача уже обновлена + } + } + + // Если задача связана с желанием, завершаем желание и обрабатываем политику награждения + if wishlistID.Valid { + // Завершаем желание + _, completeErr := a.DB.Exec(` + UPDATE wishlist_items + SET completed = TRUE, updated_at = NOW() + WHERE id = $1 AND completed = FALSE + `, wishlistID.Int64) + if completeErr != nil { + log.Printf("Error completing wishlist item %d: %v", wishlistID.Int64, completeErr) + // Не возвращаем ошибку, задача уже выполнена + } else { + log.Printf("Wishlist item %d completed automatically after task %d completion", wishlistID.Int64, taskID) + // Обрабатываем политику награждения для всех задач, связанных с этим желанием + // Исключаем задачу, которая была закрыта (taskID), чтобы не обрабатывать её повторно + a.processWishlistRewardPolicy(int(wishlistID.Int64), taskID) + } + } + + return nil +} + +// completeTaskAtEndOfDayHandler устанавливает автовыполнение задачи в конце дня +func (a *App) completeTaskAtEndOfDayHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Проверяем владельца задачи + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM tasks WHERE id = $1 AND deleted = FALSE", taskID).Scan(&ownerID) + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking task ownership: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking task ownership: %v", err), http.StatusInternalServerError) + return + } + + var req SaveDraftRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding save draft request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Устанавливаем auto_complete = true + req.AutoComplete = true + + // Используем ту же логику что и saveTaskDraftHandler + // Начинаем транзакцию + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Проверяем, существует ли драфт + var draftID int + err = tx.QueryRow("SELECT id FROM task_drafts WHERE task_id = $1", taskID).Scan(&draftID) + + var progressionValue sql.NullFloat64 + if req.ProgressionValue != nil { + progressionValue = sql.NullFloat64{Float64: *req.ProgressionValue, Valid: true} + } + + if err == sql.ErrNoRows { + // Создаем новый драфт + err = tx.QueryRow(` + INSERT INTO task_drafts (task_id, user_id, progression_value, auto_complete, created_at, updated_at) + VALUES ($1, $2, $3, $4, NOW(), NOW()) + RETURNING id + `, taskID, userID, progressionValue, req.AutoComplete).Scan(&draftID) + + if err != nil { + log.Printf("Error creating draft: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating draft: %v", err), http.StatusInternalServerError) + return + } + } else if err != nil { + log.Printf("Error checking draft existence: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking draft existence: %v", err), http.StatusInternalServerError) + return + } else { + // Обновляем существующий драфт с auto_complete = true + _, err = tx.Exec(` + UPDATE task_drafts + SET progression_value = $1, auto_complete = $2, updated_at = NOW() + WHERE id = $3 + `, progressionValue, req.AutoComplete, draftID) + + if err != nil { + log.Printf("Error updating draft: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating draft: %v", err), http.StatusInternalServerError) + return + } + + // Удаляем все старые записи подзадач + _, err = tx.Exec("DELETE FROM task_draft_subtasks WHERE task_draft_id = $1", draftID) + if err != nil { + log.Printf("Error deleting old draft subtasks: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting old draft subtasks: %v", err), http.StatusInternalServerError) + return + } + } + + // Вставляем новые записи подзадач (только checked подзадачи) + if len(req.ChildrenTaskIDs) > 0 { + // Проверяем, что все подзадачи принадлежат этой задаче + placeholders := make([]string, len(req.ChildrenTaskIDs)) + args := make([]interface{}, len(req.ChildrenTaskIDs)+1) + args[0] = taskID + for i, id := range req.ChildrenTaskIDs { + placeholders[i] = fmt.Sprintf("$%d", i+2) + args[i+1] = id + } + + query := fmt.Sprintf(` + SELECT id FROM tasks + WHERE parent_task_id = $1 AND id IN (%s) AND deleted = FALSE + `, strings.Join(placeholders, ",")) + + validSubtaskRows, err := tx.Query(query, args...) + if err != nil { + log.Printf("Error validating subtasks: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error validating subtasks: %v", err), http.StatusInternalServerError) + return + } + defer validSubtaskRows.Close() + + validSubtaskIDs := make(map[int]bool) + for validSubtaskRows.Next() { + var id int + if err := validSubtaskRows.Scan(&id); err == nil { + validSubtaskIDs[id] = true + } + } + + // Вставляем только валидные подзадачи + for _, subtaskID := range req.ChildrenTaskIDs { + if validSubtaskIDs[subtaskID] { + _, err = tx.Exec(` + INSERT INTO task_draft_subtasks (task_draft_id, subtask_id) + VALUES ($1, $2) + ON CONFLICT (task_draft_id, subtask_id) DO NOTHING + `, draftID, subtaskID) + if err != nil { + log.Printf("Error inserting draft subtask: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error inserting draft subtask: %v", err), http.StatusInternalServerError) + return + } + } + } + } + + // Коммитим транзакцию + if err = tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Task will be completed at end of day", + }) +} + +// completeTaskHandler выполняет задачу +func (a *App) completeTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + var req CompleteTaskRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding complete task request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Используем executeTask для выполнения задачи + err = a.executeTask(taskID, userID, req) + if err != nil { + if strings.Contains(err.Error(), "not found") { + sendErrorWithCORS(w, err.Error(), http.StatusNotFound) + } else if strings.Contains(err.Error(), "unlocked") { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + } else if strings.Contains(err.Error(), "required") { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + } else { + log.Printf("Error executing task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error executing task: %v", err), http.StatusInternalServerError) + } + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Task completed successfully", + }) +} + +// completeAndDeleteTaskHandler выполняет задачу и затем удаляет её +func (a *App) completeAndDeleteTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + // Сначала выполняем задачу используя executeTask + var req CompleteTaskRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding complete task request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Используем executeTask для выполнения задачи + err = a.executeTask(taskID, userID, req) + if err != nil { + if strings.Contains(err.Error(), "not found") { + sendErrorWithCORS(w, err.Error(), http.StatusNotFound) + } else if strings.Contains(err.Error(), "unlocked") { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + } else if strings.Contains(err.Error(), "required") { + sendErrorWithCORS(w, err.Error(), http.StatusBadRequest) + } else { + log.Printf("Error executing task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error executing task: %v", err), http.StatusInternalServerError) + } + return + } + + // Помечаем задачу как удаленную + _, err = a.DB.Exec("UPDATE tasks SET deleted = TRUE WHERE id = $1 AND user_id = $2", taskID, userID) + if err != nil { + log.Printf("Error deleting task: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting task: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Task completed and deleted successfully", + }) +} + +// postponeTaskHandler переносит задачу на указанную дату +func (a *App) postponeTaskHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + taskID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid task ID", http.StatusBadRequest) + return + } + + var req PostponeTaskRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding postpone task request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Проверяем владельца + var ownerID int + err = a.DB.QueryRow("SELECT user_id FROM tasks WHERE id = $1 AND deleted = FALSE", taskID).Scan(&ownerID) + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Task not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking task ownership: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking task ownership: %v", err), http.StatusInternalServerError) + return + } + + // Если NextShowAt == nil, устанавливаем next_show_at в NULL + // Иначе парсим дату и устанавливаем значение + var nextShowAtValue interface{} + if req.NextShowAt == nil || *req.NextShowAt == "" { + nextShowAtValue = nil + } else { + nextShowAt, err := time.Parse(time.RFC3339, *req.NextShowAt) + if err != nil { + log.Printf("Error parsing next_show_at: %v", err) + sendErrorWithCORS(w, "Invalid date format. Use RFC3339 format", http.StatusBadRequest) + return + } + nextShowAtValue = nextShowAt + } + + // Обновляем next_show_at + _, err = a.DB.Exec(` + UPDATE tasks + SET next_show_at = $1 + WHERE id = $2 AND user_id = $3 + `, nextShowAtValue, taskID, userID) + if err != nil { + log.Printf("Error updating next_show_at: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating next_show_at: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Task postponed successfully", + }) +} + +// todoistDisconnectHandler отключает интеграцию Todoist +func (a *App) todoistDisconnectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + _, err := a.DB.Exec(` + DELETE FROM todoist_integrations WHERE user_id = $1 + `, userID) + + if err != nil { + log.Printf("Todoist disconnect: DB error: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Failed to disconnect: %v", err), http.StatusInternalServerError) + return + } + + log.Printf("Todoist disconnected for user_id=%d", userID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Todoist disconnected", + }) +} + +// ============================================ +// Fitbit OAuth handlers +// ============================================ + +// generateFitbitOAuthState генерирует JWT state для Fitbit OAuth +func generateFitbitOAuthState(userID int, jwtSecret []byte) (string, error) { + claims := OAuthStateClaims{ + UserID: userID, + Type: "fitbit_oauth", + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), // 1 день + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString(jwtSecret) +} + +// validateFitbitOAuthState проверяет и извлекает user_id из JWT state для Fitbit +func validateFitbitOAuthState(stateString string, jwtSecret []byte) (int, error) { + token, err := jwt.ParseWithClaims(stateString, &OAuthStateClaims{}, func(token *jwt.Token) (interface{}, error) { + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) + } + return jwtSecret, nil + }) + if err != nil { + return 0, err + } + + claims, ok := token.Claims.(*OAuthStateClaims) + if !ok || !token.Valid { + return 0, fmt.Errorf("invalid token") + } + + if claims.Type != "fitbit_oauth" { + return 0, fmt.Errorf("wrong token type") + } + + return claims.UserID, nil +} + +// exchangeFitbitCodeForToken обменивает OAuth code на access_token и refresh_token для Fitbit +func exchangeFitbitCodeForToken(code, redirectURI, clientID, clientSecret string) (accessToken, refreshToken string, expiresIn int, err error) { + data := url.Values{} + data.Set("grant_type", "authorization_code") + data.Set("code", code) + data.Set("redirect_uri", redirectURI) + + req, err := http.NewRequest("POST", "https://api.fitbit.com/oauth2/token", strings.NewReader(data.Encode())) + if err != nil { + return "", "", 0, fmt.Errorf("failed to create request: %w", err) + } + + // Fitbit требует Basic Auth для Server приложений + auth := base64.StdEncoding.EncodeToString([]byte(clientID + ":" + clientSecret)) + req.Header.Set("Authorization", "Basic "+auth) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return "", "", 0, fmt.Errorf("failed to exchange code: %w", err) + } + defer resp.Body.Close() + + bodyBytes, _ := io.ReadAll(resp.Body) + + if resp.StatusCode != http.StatusOK { + return "", "", 0, fmt.Errorf("token exchange failed (status %d): %s", resp.StatusCode, string(bodyBytes)) + } + + var result struct { + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + ExpiresIn int `json:"expires_in"` + TokenType string `json:"token_type"` + UserID string `json:"user_id"` + Error string `json:"error"` + ErrorDesc string `json:"error_description"` + } + + if err := json.Unmarshal(bodyBytes, &result); err != nil { + return "", "", 0, fmt.Errorf("failed to decode response: %w", err) + } + + if result.Error != "" { + return "", "", 0, fmt.Errorf("token exchange error: %s - %s", result.Error, result.ErrorDesc) + } + + return result.AccessToken, result.RefreshToken, result.ExpiresIn, nil +} + +// getFitbitUserInfo получает информацию о пользователе Fitbit +func getFitbitUserInfo(accessToken string) (string, error) { + req, err := http.NewRequest("GET", "https://api.fitbit.com/1/user/-/profile.json", nil) + if err != nil { + return "", fmt.Errorf("failed to create request: %w", err) + } + + req.Header.Set("Authorization", "Bearer "+accessToken) + req.Header.Set("Accept", "application/json") + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return "", fmt.Errorf("failed to get user info: %w", err) + } + defer resp.Body.Close() + + bodyBytes, _ := io.ReadAll(resp.Body) + + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("get user info failed (status %d): %s", resp.StatusCode, string(bodyBytes)) + } + + var result struct { + User struct { + EncodedID string `json:"encodedId"` + } `json:"user"` + } + + if err := json.Unmarshal(bodyBytes, &result); err != nil { + return "", fmt.Errorf("failed to decode response: %w", err) + } + + if result.User.EncodedID == "" { + return "", fmt.Errorf("user ID not found in response") + } + + return result.User.EncodedID, nil +} + +// refreshFitbitToken обновляет access_token используя refresh_token +func refreshFitbitToken(refreshToken, clientID, clientSecret string) (accessToken, newRefreshToken string, expiresIn int, err error) { + data := url.Values{} + data.Set("grant_type", "refresh_token") + data.Set("refresh_token", refreshToken) + + req, err := http.NewRequest("POST", "https://api.fitbit.com/oauth2/token", strings.NewReader(data.Encode())) + if err != nil { + return "", "", 0, fmt.Errorf("failed to create request: %w", err) + } + + auth := base64.StdEncoding.EncodeToString([]byte(clientID + ":" + clientSecret)) + req.Header.Set("Authorization", "Basic "+auth) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return "", "", 0, fmt.Errorf("failed to refresh token: %w", err) + } + defer resp.Body.Close() + + bodyBytes, _ := io.ReadAll(resp.Body) + + if resp.StatusCode != http.StatusOK { + return "", "", 0, fmt.Errorf("token refresh failed (status %d): %s", resp.StatusCode, string(bodyBytes)) + } + + var result struct { + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + ExpiresIn int `json:"expires_in"` + Error string `json:"error"` + ErrorDesc string `json:"error_description"` + } + + if err := json.Unmarshal(bodyBytes, &result); err != nil { + return "", "", 0, fmt.Errorf("failed to decode response: %w", err) + } + + if result.Error != "" { + return "", "", 0, fmt.Errorf("token refresh error: %s - %s", result.Error, result.ErrorDesc) + } + + return result.AccessToken, result.RefreshToken, result.ExpiresIn, nil +} + +// fitbitOAuthConnectHandler инициирует OAuth flow для Fitbit +func (a *App) fitbitOAuthConnectHandler(w http.ResponseWriter, r *http.Request) { + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + clientID := getEnv("FITBIT_CLIENT_ID", "") + clientSecret := getEnv("FITBIT_CLIENT_SECRET", "") + baseURL := getEnv("WEBHOOK_BASE_URL", "") + + if clientID == "" || clientSecret == "" { + sendErrorWithCORS(w, "FITBIT_CLIENT_ID and FITBIT_CLIENT_SECRET must be configured", http.StatusInternalServerError) + return + } + if baseURL == "" { + sendErrorWithCORS(w, "WEBHOOK_BASE_URL must be configured", http.StatusInternalServerError) + return + } + + redirectURI := strings.TrimRight(baseURL, "/") + "/api/integrations/fitbit/oauth/callback" + + state, err := generateFitbitOAuthState(userID, a.jwtSecret) + if err != nil { + log.Printf("Fitbit OAuth: failed to generate state: %v", err) + sendErrorWithCORS(w, "Failed to generate OAuth state", http.StatusInternalServerError) + return + } + + // Fitbit OAuth URL с необходимыми scopes + authURL := fmt.Sprintf( + "https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=%s&redirect_uri=%s&scope=activity%%20profile&state=%s", + url.QueryEscape(clientID), + url.QueryEscape(redirectURI), + url.QueryEscape(state), + ) + + log.Printf("Fitbit OAuth: returning auth URL for user_id=%d", userID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "auth_url": authURL, + }) +} + +// fitbitOAuthCallbackHandler обрабатывает OAuth callback от Fitbit +func (a *App) fitbitOAuthCallbackHandler(w http.ResponseWriter, r *http.Request) { + log.Printf("Fitbit OAuth callback: received request, URL=%s", r.URL.String()) + + frontendURL := getEnv("WEBHOOK_BASE_URL", "") + redirectSuccess := frontendURL + "/?integration=fitbit&status=connected" + redirectError := frontendURL + "/?integration=fitbit&status=error" + + clientID := getEnv("FITBIT_CLIENT_ID", "") + clientSecret := getEnv("FITBIT_CLIENT_SECRET", "") + baseURL := getEnv("WEBHOOK_BASE_URL", "") + + log.Printf("Fitbit OAuth callback: WEBHOOK_BASE_URL=%s, FITBIT_CLIENT_ID set=%v, FITBIT_CLIENT_SECRET set=%v", + baseURL, clientID != "", clientSecret != "") + + if clientID == "" || clientSecret == "" || baseURL == "" { + log.Printf("Fitbit OAuth: missing configuration (clientID=%v, clientSecret=%v, baseURL=%v)", + clientID != "", clientSecret != "", baseURL != "") + http.Redirect(w, r, redirectError+"&message=config_error", http.StatusTemporaryRedirect) + return + } + + redirectURI := strings.TrimRight(baseURL, "/") + "/api/integrations/fitbit/oauth/callback" + log.Printf("Fitbit OAuth callback: redirectURI=%s", redirectURI) + + // Проверяем state + state := r.URL.Query().Get("state") + userID, err := validateFitbitOAuthState(state, a.jwtSecret) + if err != nil { + log.Printf("Fitbit OAuth: invalid state: %v (state length=%d)", err, len(state)) + http.Redirect(w, r, redirectError+"&message=invalid_state", http.StatusTemporaryRedirect) + return + } + + log.Printf("Fitbit OAuth callback: validated state, user_id=%d", userID) + + // Получаем code + code := r.URL.Query().Get("code") + if code == "" { + // Проверяем наличие ошибки от Fitbit + fitbitError := r.URL.Query().Get("error") + fitbitErrorDesc := r.URL.Query().Get("error_description") + log.Printf("Fitbit OAuth: no code in callback, error=%s, error_description=%s", fitbitError, fitbitErrorDesc) + http.Redirect(w, r, redirectError+"&message=no_code", http.StatusTemporaryRedirect) + return + } + + log.Printf("Fitbit OAuth callback: got code, exchanging for tokens...") + + // Обмениваем code на токены + accessToken, refreshToken, expiresIn, err := exchangeFitbitCodeForToken(code, redirectURI, clientID, clientSecret) + if err != nil { + log.Printf("Fitbit OAuth: token exchange failed for user_id=%d: %v", userID, err) + http.Redirect(w, r, redirectError+"&message=token_exchange_failed", http.StatusTemporaryRedirect) + return + } + + log.Printf("Fitbit OAuth callback: token exchange successful, expiresIn=%d", expiresIn) + + // Получаем информацию о пользователе + fitbitUserID, err := getFitbitUserInfo(accessToken) + if err != nil { + log.Printf("Fitbit OAuth: get user info failed for user_id=%d: %v", userID, err) + http.Redirect(w, r, redirectError+"&message=user_info_failed", http.StatusTemporaryRedirect) + return + } + + log.Printf("Fitbit OAuth: user_id=%d connected fitbit_user_id=%s", userID, fitbitUserID) + + // Вычисляем время истечения токена + tokenExpiresAt := time.Now().Add(time.Duration(expiresIn) * time.Second) + + // Сохраняем в БД + _, err = a.DB.Exec(` + INSERT INTO fitbit_integrations (user_id, fitbit_user_id, access_token, refresh_token, token_expires_at) + VALUES ($1, $2, $3, $4, $5) + ON CONFLICT (user_id) DO UPDATE SET + fitbit_user_id = $2, + access_token = $3, + refresh_token = $4, + token_expires_at = $5, + updated_at = CURRENT_TIMESTAMP + `, userID, fitbitUserID, accessToken, refreshToken, tokenExpiresAt) + + if err != nil { + log.Printf("Fitbit OAuth: DB error for user_id=%d: %v", userID, err) + http.Redirect(w, r, redirectError+"&message=db_error", http.StatusTemporaryRedirect) + return + } + + log.Printf("Fitbit OAuth: successfully saved integration for user_id=%d, redirecting to %s", userID, redirectSuccess) + + // Редирект на страницу интеграций + http.Redirect(w, r, redirectSuccess, http.StatusTemporaryRedirect) +} + +// getFitbitStatusHandler возвращает статус подключения Fitbit +func (a *App) getFitbitStatusHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var fitbitUserID sql.NullString + var goalStepsMin, goalStepsMax, goalFloorsMin, goalFloorsMax, goalAzmMin, goalAzmMax sql.NullInt64 + err := a.DB.QueryRow(` + SELECT fitbit_user_id, goal_steps_min, goal_steps_max, goal_floors_min, goal_floors_max, goal_azm_min, goal_azm_max + FROM fitbit_integrations + WHERE user_id = $1 AND access_token IS NOT NULL + `, userID).Scan(&fitbitUserID, &goalStepsMin, &goalStepsMax, &goalFloorsMin, &goalFloorsMax, &goalAzmMin, &goalAzmMax) + + if err == sql.ErrNoRows || !fitbitUserID.Valid { + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "connected": false, + }) + return + } + if err != nil { + sendErrorWithCORS(w, fmt.Sprintf("Failed to get status: %v", err), http.StatusInternalServerError) + return + } + + response := map[string]interface{}{ + "connected": true, + "goals": map[string]interface{}{ + "steps": map[string]interface{}{ + "min": goalStepsMin.Int64, + "max": goalStepsMax.Int64, + }, + "floors": map[string]interface{}{ + "min": goalFloorsMin.Int64, + "max": goalFloorsMax.Int64, + }, + "azm": map[string]interface{}{ + "min": goalAzmMin.Int64, + "max": goalAzmMax.Int64, + }, + }, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// fitbitDisconnectHandler отключает интеграцию Fitbit +func (a *App) fitbitDisconnectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + _, err := a.DB.Exec(` + DELETE FROM fitbit_integrations WHERE user_id = $1 + `, userID) + + if err != nil { + log.Printf("Fitbit disconnect: DB error: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Failed to disconnect: %v", err), http.StatusInternalServerError) + return + } + + log.Printf("Fitbit disconnected for user_id=%d", userID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Fitbit disconnected", + }) +} + +// updateFitbitGoalsHandler обновляет цели пользователя +func (a *App) updateFitbitGoalsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req struct { + Steps map[string]int64 `json:"steps"` + Floors map[string]int64 `json:"floors"` + Azm map[string]int64 `json:"azm"` + } + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + _, err := a.DB.Exec(` + UPDATE fitbit_integrations + SET goal_steps_min = $1, goal_steps_max = $2, + goal_floors_min = $3, goal_floors_max = $4, + goal_azm_min = $5, goal_azm_max = $6, + updated_at = CURRENT_TIMESTAMP + WHERE user_id = $7 + `, req.Steps["min"], req.Steps["max"], + req.Floors["min"], req.Floors["max"], + req.Azm["min"], req.Azm["max"], + userID) + + if err != nil { + log.Printf("Fitbit update goals: DB error: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Failed to update goals: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Goals updated", + }) +} + +// getFitbitAccessToken получает актуальный access_token (обновляет если нужно) +func (a *App) getFitbitAccessToken(userID int) (string, error) { + var accessToken, refreshToken sql.NullString + var tokenExpiresAt sql.NullTime + + err := a.DB.QueryRow(` + SELECT access_token, refresh_token, token_expires_at + FROM fitbit_integrations + WHERE user_id = $1 + `, userID).Scan(&accessToken, &refreshToken, &tokenExpiresAt) + + if err == sql.ErrNoRows { + return "", fmt.Errorf("fitbit integration not found") + } + if err != nil { + return "", fmt.Errorf("failed to get tokens: %w", err) + } + + if !accessToken.Valid { + return "", fmt.Errorf("access token not found") + } + + // Проверяем, не истек ли токен (с запасом 5 минут) + if tokenExpiresAt.Valid && time.Now().Add(5*time.Minute).After(tokenExpiresAt.Time) { + // Токен истек или скоро истечет, обновляем + if !refreshToken.Valid { + return "", fmt.Errorf("refresh token not found") + } + + clientID := getEnv("FITBIT_CLIENT_ID", "") + clientSecret := getEnv("FITBIT_CLIENT_SECRET", "") + if clientID == "" || clientSecret == "" { + return "", fmt.Errorf("FITBIT_CLIENT_ID and FITBIT_CLIENT_SECRET must be configured") + } + + newAccessToken, newRefreshToken, expiresIn, err := refreshFitbitToken(refreshToken.String, clientID, clientSecret) + if err != nil { + return "", fmt.Errorf("failed to refresh token: %w", err) + } + + // Обновляем токены в БД + tokenExpiresAtNew := time.Now().Add(time.Duration(expiresIn) * time.Second) + _, err = a.DB.Exec(` + UPDATE fitbit_integrations + SET access_token = $1, refresh_token = $2, token_expires_at = $3, updated_at = CURRENT_TIMESTAMP + WHERE user_id = $4 + `, newAccessToken, newRefreshToken, tokenExpiresAtNew, userID) + + if err != nil { + return "", fmt.Errorf("failed to update tokens: %w", err) + } + + log.Printf("Fitbit token refreshed for user_id=%d", userID) + return newAccessToken, nil + } + + return accessToken.String, nil +} + +// syncFitbitData синхронизирует данные из Fitbit API для указанной даты +func (a *App) syncFitbitData(userID int, date time.Time) error { + accessToken, err := a.getFitbitAccessToken(userID) + if err != nil { + return fmt.Errorf("failed to get access token: %w", err) + } + + dateStr := date.Format("2006-01-02") + + // Получаем данные активности за день + activityURL := fmt.Sprintf("https://api.fitbit.com/1/user/-/activities/date/%s.json", dateStr) + req, err := http.NewRequest("GET", activityURL, nil) + if err != nil { + return fmt.Errorf("failed to create request: %w", err) + } + + req.Header.Set("Authorization", "Bearer "+accessToken) + req.Header.Set("Accept", "application/json") + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return fmt.Errorf("failed to get activity data: %w", err) + } + defer resp.Body.Close() + + bodyBytes, _ := io.ReadAll(resp.Body) + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("get activity data failed (status %d): %s", resp.StatusCode, string(bodyBytes)) + } + + var activityData struct { + Summary struct { + Steps int `json:"steps"` + Floors int `json:"floors"` + } `json:"summary"` + } + + if err := json.Unmarshal(bodyBytes, &activityData); err != nil { + return fmt.Errorf("failed to decode activity data: %w", err) + } + + // Получаем Active Zone Minutes + azmURL := fmt.Sprintf("https://api.fitbit.com/1/user/-/activities/active-zone-minutes/date/%s/1d.json", dateStr) + reqAZM, err := http.NewRequest("GET", azmURL, nil) + if err != nil { + return fmt.Errorf("failed to create AZM request: %w", err) + } + + reqAZM.Header.Set("Authorization", "Bearer "+accessToken) + reqAZM.Header.Set("Accept", "application/json") + + respAZM, err := client.Do(reqAZM) + if err != nil { + return fmt.Errorf("failed to get AZM data: %w", err) + } + defer respAZM.Body.Close() + + bodyBytesAZM, _ := io.ReadAll(respAZM.Body) + + var azmValue int + if respAZM.StatusCode == http.StatusOK { + var azmData struct { + ActivitiesActiveZoneMinutes []struct { + Value struct { + ActiveZoneMinutes int `json:"activeZoneMinutes"` + } `json:"value"` + } `json:"activities-active-zone-minutes"` + } + + if err := json.Unmarshal(bodyBytesAZM, &azmData); err == nil { + if len(azmData.ActivitiesActiveZoneMinutes) > 0 { + azmValue = azmData.ActivitiesActiveZoneMinutes[0].Value.ActiveZoneMinutes + } + } + } + + // Сохраняем данные в БД + _, err = a.DB.Exec(` + INSERT INTO fitbit_daily_stats (user_id, date, steps, floors, active_zone_minutes, updated_at) + VALUES ($1, $2, $3, $4, $5, CURRENT_TIMESTAMP) + ON CONFLICT (user_id, date) DO UPDATE SET + steps = $3, + floors = $4, + active_zone_minutes = $5, + updated_at = CURRENT_TIMESTAMP + `, userID, dateStr, activityData.Summary.Steps, activityData.Summary.Floors, azmValue) + + if err != nil { + return fmt.Errorf("failed to save stats: %w", err) + } + + log.Printf("Fitbit data synced for user_id=%d, date=%s: steps=%d, floors=%d, azm=%d", + userID, dateStr, activityData.Summary.Steps, activityData.Summary.Floors, azmValue) + + return nil +} + +// fitbitSyncHandler выполняет ручную синхронизацию данных Fitbit +func (a *App) fitbitSyncHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Синхронизируем данные за сегодня + err := a.syncFitbitData(userID, time.Now()) + if err != nil { + log.Printf("Fitbit sync error: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Sync failed: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Data synced successfully", + }) +} + +// getFitbitStatsHandler возвращает статистику Fitbit за указанную дату +func (a *App) getFitbitStatsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Получаем дату из query параметра (по умолчанию сегодня) + dateStr := r.URL.Query().Get("date") + if dateStr == "" { + dateStr = time.Now().Format("2006-01-02") + } + + var steps, floors, azm sql.NullInt64 + err := a.DB.QueryRow(` + SELECT steps, floors, active_zone_minutes + FROM fitbit_daily_stats + WHERE user_id = $1 AND date = $2 + `, userID, dateStr).Scan(&steps, &floors, &azm) + + if err == sql.ErrNoRows { + // Данных нет, возвращаем нули + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "date": dateStr, + "steps": 0, + "floors": 0, + "azm": 0, + }) + return + } + + if err != nil { + sendErrorWithCORS(w, fmt.Sprintf("Failed to get stats: %v", err), http.StatusInternalServerError) + return + } + + // Получаем цели пользователя + var goalStepsMin, goalStepsMax, goalFloorsMin, goalFloorsMax, goalAzmMin, goalAzmMax sql.NullInt64 + err = a.DB.QueryRow(` + SELECT goal_steps_min, goal_steps_max, goal_floors_min, goal_floors_max, goal_azm_min, goal_azm_max + FROM fitbit_integrations + WHERE user_id = $1 + `, userID).Scan(&goalStepsMin, &goalStepsMax, &goalFloorsMin, &goalFloorsMax, &goalAzmMin, &goalAzmMax) + + if err != nil { + // Если целей нет, используем значения по умолчанию + goalStepsMin = sql.NullInt64{Int64: 8000, Valid: true} + goalStepsMax = sql.NullInt64{Int64: 10000, Valid: true} + goalFloorsMin = sql.NullInt64{Int64: 8, Valid: true} + goalFloorsMax = sql.NullInt64{Int64: 10, Valid: true} + goalAzmMin = sql.NullInt64{Int64: 22, Valid: true} + goalAzmMax = sql.NullInt64{Int64: 44, Valid: true} + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "date": dateStr, + "steps": map[string]interface{}{ + "value": steps.Int64, + "goal": map[string]interface{}{ + "min": goalStepsMin.Int64, + "max": goalStepsMax.Int64, + }, + }, + "floors": map[string]interface{}{ + "value": floors.Int64, + "goal": map[string]interface{}{ + "min": goalFloorsMin.Int64, + "max": goalFloorsMax.Int64, + }, + }, + "azm": map[string]interface{}{ + "value": azm.Int64, + "goal": map[string]interface{}{ + "min": goalAzmMin.Int64, + "max": goalAzmMax.Int64, + }, + }, + }) +} + +// ============================================ +// Wishlist handlers +// ============================================ + +// calculateProjectPointsFromDate считает баллы проекта с указанной даты до текущего момента +// Считает напрямую из таблицы nodes, используя денормализованное поле created_date +func (a *App) calculateProjectPointsFromDate( + projectID int, + startDate sql.NullTime, + userID int, +) (float64, error) { + var totalScore float64 + var err error + + if !startDate.Valid { + // За всё время - считаем все nodes этого пользователя для указанного проекта + err = a.DB.QueryRow(` + SELECT COALESCE(SUM(n.score), 0) + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE n.project_id = $1 AND n.user_id = $2 AND p.user_id = $2 + `, projectID, userID).Scan(&totalScore) + } else { + // С указанной даты до текущего момента + // Считаем все nodes этого пользователя, где дата created_date >= startDate + // Используем DATE() для сравнения только по дате (без времени) + // Теперь используем nodes.created_date напрямую (без JOIN с entries) + err = a.DB.QueryRow(` + SELECT COALESCE(SUM(n.score), 0) + FROM nodes n + JOIN projects p ON n.project_id = p.id + WHERE n.project_id = $1 + AND n.user_id = $2 + AND p.user_id = $2 + AND DATE(n.created_date) >= DATE($3) + `, projectID, userID, startDate.Time).Scan(&totalScore) + } + + if err != nil { + log.Printf("Error calculating project points from date: %v", err) + return 0, err + } + + return totalScore, nil +} + +// getProjectMedian получает медиану проекта из materialized view projects_median_mv +// Если медиана отсутствует, возвращает ошибку +func (a *App) getProjectMedian(projectID int) (float64, error) { + var median float64 + err := a.DB.QueryRow(` + SELECT median_score + FROM projects_median_mv + WHERE project_id = $1 + `, projectID).Scan(&median) + if err != nil { + if err == sql.ErrNoRows { + return 0, fmt.Errorf("median not found for project %d", projectID) + } + return 0, err + } + return median, nil +} + +// calculateProjectUnlockWeeks рассчитывает срок разблокировки проекта в неделях +// projectID - ID проекта +// requiredPoints - необходимое количество баллов +// startDate - дата начала подсчета (может быть nil - за всё время) +// userID - ID пользователя (владельца условия) +// Возвращает количество недель (float64): +// - > 0: условие не выполнено, возвращает количество недель +// - 0: условие уже выполнено (remaining <= 0) +// - 99999: медиана отсутствует или равна 0 (нельзя рассчитать) или ошибка расчета +func (a *App) calculateProjectUnlockWeeks(projectID int, requiredPoints float64, startDate sql.NullTime, userID int) float64 { + // 1. Получаем текущие баллы от startDate + currentPoints, err := a.calculateProjectPointsFromDate(projectID, startDate, userID) + if err != nil { + log.Printf("Error calculating project points for project %d, user %d: %v", projectID, userID, err) + return 99999 // Ошибка расчета - возвращаем 99999 + } + + // 2. Вычисляем остаток + remaining := requiredPoints - currentPoints + if remaining <= 0 { + // Условие уже выполнено + return 0 + } + + // 3. Получаем медиану проекта + median, err := a.getProjectMedian(projectID) + if err != nil || median <= 0 { + // Если медиана отсутствует или равна 0, возвращаем 99999 (нельзя рассчитать) + // Это нормальная ситуация, не логируем + return 99999 + } + + // 4. Рассчитываем недели + weeks := remaining / median + return weeks +} + +// formatWeeksText форматирует количество недель в текстовый формат +// weeks - количество недель (float64) +// Возвращает строку: "2 недели", "<1 недели", "5 недель", "∞ недель" и т.д. +func formatWeeksText(weeks float64) string { + // Если weeks == 0, условие уже выполнено - не показываем срок + if weeks == 0 { + return "" + } + + // Если weeks >= 99999, это означает что медиана отсутствует или нельзя рассчитать + if weeks >= 99999 { + return "∞ недель" + } + + if weeks < 0 { + return "" + } + + if weeks < 1 { + return "<1 недели" + } + + weeksRounded := math.Round(weeks) + weeksInt := int(weeksRounded) + + // Правильное склонение для русского языка + var weekWord string + lastDigit := weeksInt % 10 + lastTwoDigits := weeksInt % 100 + + if lastTwoDigits >= 11 && lastTwoDigits <= 14 { + weekWord = "недель" + } else if lastDigit == 1 { + weekWord = "неделя" + } else if lastDigit >= 2 && lastDigit <= 4 { + weekWord = "недели" + } else { + weekWord = "недель" + } + + return fmt.Sprintf("%d %s", weeksInt, weekWord) +} + +// checkWishlistUnlock проверяет ВСЕ условия для желания +// Все условия должны выполняться (AND логика) +func (a *App) checkWishlistUnlock(itemID int, userID int) (bool, error) { + // Получаем все условия разблокировки + rows, err := a.DB.Query(` + SELECT + wc.id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id AS condition_user_id, + tc.task_id, + sc.project_id, + sc.required_points, + sc.start_date + FROM wishlist_conditions wc + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + WHERE wc.wishlist_item_id = $1 + ORDER BY wc.display_order, wc.id + `, itemID) + + if err != nil { + return false, err + } + defer rows.Close() + + var hasConditions bool + var allConditionsMet = true + + for rows.Next() { + hasConditions = true + + var wcID, displayOrder int + var taskConditionID, scoreConditionID sql.NullInt64 + var conditionUserID sql.NullInt64 + var taskID sql.NullInt64 + var projectID sql.NullInt64 + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + + err := rows.Scan( + &wcID, &displayOrder, + &taskConditionID, &scoreConditionID, &conditionUserID, + &taskID, &projectID, &requiredPoints, &startDate, + ) + if err != nil { + return false, err + } + + // Используем user_id из условия, если он есть, иначе используем текущего пользователя + conditionOwnerID := userID + if conditionUserID.Valid { + conditionOwnerID = int(conditionUserID.Int64) + } + + var conditionMet bool + + if taskConditionID.Valid { + // Проверяем условие по задаче + if !taskID.Valid { + return false, fmt.Errorf("task_id is missing for task_condition_id=%d", taskConditionID.Int64) + } + + var completed int + err := a.DB.QueryRow(` + SELECT completed + FROM tasks + WHERE id = $1 AND user_id = $2 AND deleted = FALSE + `, taskID.Int64, conditionOwnerID).Scan(&completed) + + if err == sql.ErrNoRows { + // Задача удалена или не существует - не блокируем желание + conditionMet = true + } else if err != nil { + return false, err + } else { + conditionMet = completed > 0 + } + + } else if scoreConditionID.Valid { + // Проверяем условие по баллам + if !projectID.Valid || !requiredPoints.Valid { + return false, fmt.Errorf("project_id or required_points missing for score_condition_id=%d", scoreConditionID.Int64) + } + + totalScore, err := a.calculateProjectPointsFromDate( + int(projectID.Int64), + startDate, + conditionOwnerID, + ) + if err != nil { + return false, err + } + + conditionMet = totalScore >= requiredPoints.Float64 + } else { + return false, fmt.Errorf("invalid condition: neither task nor score condition") + } + + if !conditionMet { + allConditionsMet = false + } + } + + // Если нет условий - желание разблокировано по умолчанию + if !hasConditions { + return true, nil + } + + return allConditionsMet, nil +} + +// isConditionLocked определяет, заблокировано ли условие +func isConditionLocked(cond UnlockConditionDisplay) bool { + if cond.Type == "task_completion" { + return cond.TaskCompleted == nil || !*cond.TaskCompleted + } else if cond.Type == "project_points" { + return cond.CurrentPoints == nil || cond.RequiredPoints == nil || *cond.CurrentPoints < *cond.RequiredPoints + } + return false +} + +// getConditionUnlockWeeks возвращает количество недель для разблокировки условия +// Используется для сортировки заблокированных условий по баллам +func (a *App) getConditionUnlockWeeks(cond UnlockConditionDisplay, userID int) float64 { + if cond.Type != "project_points" { + return 0 + } + if cond.ProjectID == nil || cond.RequiredPoints == nil { + return 99999.0 + } + + var startDate sql.NullTime + if cond.StartDate != nil { + date, err := time.Parse("2006-01-02", *cond.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + conditionOwnerID := userID + if cond.UserID != nil { + conditionOwnerID = *cond.UserID + } + + return a.calculateProjectUnlockWeeks(*cond.ProjectID, *cond.RequiredPoints, startDate, conditionOwnerID) +} + +// sortUnlockConditions сортирует условия в следующем порядке: +// 1. Заблокированные задачи (по алфавиту) +// 2. Заблокированные баллы (по сроку от меньшего к большему) +// 3. Разблокированные задачи (по алфавиту) +// 4. Разблокированные баллы (по алфавиту) +func (a *App) sortUnlockConditions(conditions []UnlockConditionDisplay, userID int) { + sort.Slice(conditions, func(i, j int) bool { + condI := conditions[i] + condJ := conditions[j] + + lockedI := isConditionLocked(condI) + lockedJ := isConditionLocked(condJ) + + // 1. Заблокированные идут перед разблокированными + if lockedI != lockedJ { + return lockedI // lockedI == true идет первым + } + + // Если оба заблокированы или оба разблокированы, сортируем по типу + if lockedI { + // Заблокированные: задачи идут перед баллами + if condI.Type == "task_completion" && condJ.Type == "project_points" { + return true + } + if condI.Type == "project_points" && condJ.Type == "task_completion" { + return false + } + + // Если оба одного типа + if condI.Type == "task_completion" { + // Заблокированные задачи: по алфавиту + taskNameI := "" + taskNameJ := "" + if condI.TaskName != nil { + taskNameI = *condI.TaskName + } + if condJ.TaskName != nil { + taskNameJ = *condJ.TaskName + } + if taskNameI != taskNameJ { + return taskNameI < taskNameJ + } + return condI.ID < condJ.ID + } else { + // Заблокированные баллы: по сроку от меньшего к большему + weeksI := a.getConditionUnlockWeeks(condI, userID) + weeksJ := a.getConditionUnlockWeeks(condJ, userID) + if weeksI != weeksJ { + return weeksI < weeksJ + } + // Если сроки равны, сортируем по алфавиту по названию проекта + projectNameI := "" + projectNameJ := "" + if condI.ProjectName != nil { + projectNameI = *condI.ProjectName + } + if condJ.ProjectName != nil { + projectNameJ = *condJ.ProjectName + } + if projectNameI != projectNameJ { + return projectNameI < projectNameJ + } + return condI.ID < condJ.ID + } + } else { + // Разблокированные: задачи идут перед баллами + if condI.Type == "task_completion" && condJ.Type == "project_points" { + return true + } + if condI.Type == "project_points" && condJ.Type == "task_completion" { + return false + } + + // Если оба одного типа, сортируем по алфавиту + if condI.Type == "task_completion" { + // Разблокированные задачи: по алфавиту + taskNameI := "" + taskNameJ := "" + if condI.TaskName != nil { + taskNameI = *condI.TaskName + } + if condJ.TaskName != nil { + taskNameJ = *condJ.TaskName + } + if taskNameI != taskNameJ { + return taskNameI < taskNameJ + } + return condI.ID < condJ.ID + } else { + // Разблокированные баллы: по алфавиту + projectNameI := "" + projectNameJ := "" + if condI.ProjectName != nil { + projectNameI = *condI.ProjectName + } + if condJ.ProjectName != nil { + projectNameJ = *condJ.ProjectName + } + if projectNameI != projectNameJ { + return projectNameI < projectNameJ + } + return condI.ID < condJ.ID + } + } + }) +} + +// getWishlistItemsWithConditions загружает желания с их условиями +func (a *App) getWishlistItemsWithConditions(userID int, includeCompleted bool) ([]WishlistItem, error) { + query := ` + SELECT + wi.id, + wi.name, + wi.price, + wi.image_path, + wi.link, + wi.completed, + wi.group_name, + wc.id AS condition_id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id AS condition_user_id, + tc.task_id, + t.name AS task_name, + sc.project_id, + p.name AS project_name, + sc.required_points, + sc.start_date + FROM wishlist_items wi + LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + LEFT JOIN projects p ON sc.project_id = p.id AND p.deleted = FALSE + WHERE wi.user_id = $1 + AND wi.deleted = FALSE + AND ($2 = TRUE OR wi.completed = FALSE) + ORDER BY wi.completed, wi.id, wc.display_order, wc.id + ` + + rows, err := a.DB.Query(query, userID, includeCompleted) + if err != nil { + return nil, err + } + defer rows.Close() + + // Группируем по wishlist_item_id + itemsMap := make(map[int]*WishlistItem) + + for rows.Next() { + var itemID int + var name string + var price sql.NullFloat64 + var imagePath, link sql.NullString + var completed bool + var groupName sql.NullString + + var conditionID, displayOrder sql.NullInt64 + var taskConditionID, scoreConditionID sql.NullInt64 + var conditionUserID sql.NullInt64 + var taskID sql.NullInt64 + var taskName sql.NullString + var projectID sql.NullInt64 + var projectName sql.NullString + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + + err := rows.Scan( + &itemID, &name, &price, &imagePath, &link, &completed, + &groupName, + &conditionID, &displayOrder, + &taskConditionID, &scoreConditionID, &conditionUserID, + &taskID, &taskName, + &projectID, &projectName, &requiredPoints, &startDate, + ) + if err != nil { + return nil, err + } + + // Получаем или создаём item + item, exists := itemsMap[itemID] + if !exists { + item = &WishlistItem{ + ID: itemID, + Name: name, + Completed: completed, + UnlockConditions: []UnlockConditionDisplay{}, + } + if price.Valid { + p := price.Float64 + item.Price = &p + } + if imagePath.Valid { + url := imagePath.String + item.ImageURL = &url + } + if link.Valid { + l := link.String + item.Link = &l + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + item.GroupName = &groupNameVal + } + itemsMap[itemID] = item + } + + // Добавляем условие, если есть + if conditionID.Valid { + // Определяем владельца условия + conditionOwnerID := userID + if conditionUserID.Valid { + conditionOwnerID = int(conditionUserID.Int64) + } + + // Если это условие по задаче, проверяем существует ли задача + if taskConditionID.Valid && taskID.Valid { + // Проверяем, существует ли задача (не удалена) + var taskExists bool + err := a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE)`, taskID.Int64, conditionOwnerID).Scan(&taskExists) + if err != nil || !taskExists { + // Задача удалена - не добавляем условие в список, но при проверке блокировки оно считается выполненным + continue + } + } + + condition := UnlockConditionDisplay{ + ID: int(conditionID.Int64), + DisplayOrder: int(displayOrder.Int64), + } + + // Заполняем UserID для условия + if conditionUserID.Valid { + conditionOwnerID := int(conditionUserID.Int64) + condition.UserID = &conditionOwnerID + } else { + condition.UserID = &userID + } + + if taskConditionID.Valid { + condition.Type = "task_completion" + if taskName.Valid { + condition.TaskName = &taskName.String + } + if taskID.Valid { + taskIDVal := int(taskID.Int64) + condition.TaskID = &taskIDVal + } + } else if scoreConditionID.Valid { + condition.Type = "project_points" + if projectName.Valid { + condition.ProjectName = &projectName.String + } + if projectID.Valid { + projectIDVal := int(projectID.Int64) + condition.ProjectID = &projectIDVal + } + if requiredPoints.Valid { + condition.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + // Форматируем дату в YYYY-MM-DD + dateStr := startDate.Time.Format("2006-01-02") + condition.StartDate = &dateStr + } + } + + item.UnlockConditions = append(item.UnlockConditions, condition) + } + } + + // Конвертируем map в slice и проверяем разблокировку + items := make([]WishlistItem, 0, len(itemsMap)) + for _, item := range itemsMap { + unlocked, err := a.checkWishlistUnlock(item.ID, userID) + if err != nil { + log.Printf("Error checking unlock for wishlist %d: %v", item.ID, err) + unlocked = false + } + item.Unlocked = unlocked + + // Сортируем условия в нужном порядке + a.sortUnlockConditions(item.UnlockConditions, userID) + + // Определяем первое заблокированное условие и количество остальных, а также рассчитываем прогресс + if !unlocked && !item.Completed { + lockedCount := 0 + var firstLocked *UnlockConditionDisplay + for i := range item.UnlockConditions { + // Проверяем каждое условие отдельно + condition := &item.UnlockConditions[i] + var conditionMet bool + var err error + + if condition.Type == "task_completion" { + // Находим task_id и user_id для этого условия + var taskID int + var conditionOwnerID int + err = a.DB.QueryRow(` + SELECT tc.task_id, COALESCE(wc.user_id, $2) + FROM wishlist_conditions wc + JOIN task_conditions tc ON wc.task_condition_id = tc.id + WHERE wc.id = $1 + `, condition.ID, userID).Scan(&taskID, &conditionOwnerID) + if err == nil { + var completed int + err = a.DB.QueryRow(` + SELECT completed FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE + `, taskID, conditionOwnerID).Scan(&completed) + if err == sql.ErrNoRows { + // Задача удалена или не существует - не блокируем желание + conditionMet = true + completedBool := true + condition.TaskCompleted = &completedBool + } else if err == nil { + conditionMet = completed > 0 + completedBool := conditionMet + condition.TaskCompleted = &completedBool + } + } + } else if condition.Type == "project_points" { + // Находим project_id, required_points и user_id для этого условия + var projectID int + var requiredPoints float64 + var startDate sql.NullTime + var conditionOwnerID int + err = a.DB.QueryRow(` + SELECT sc.project_id, sc.required_points, sc.start_date, COALESCE(wc.user_id, $2) + FROM wishlist_conditions wc + JOIN score_conditions sc ON wc.score_condition_id = sc.id + WHERE wc.id = $1 + `, condition.ID, userID).Scan(&projectID, &requiredPoints, &startDate, &conditionOwnerID) + if err == nil { + totalScore, err := a.calculateProjectPointsFromDate(projectID, startDate, conditionOwnerID) + if err != nil { + // Если ошибка при расчете, устанавливаем 0 + zeroScore := 0.0 + condition.CurrentPoints = &zeroScore + conditionMet = false + } else { + condition.CurrentPoints = &totalScore + conditionMet = totalScore >= requiredPoints + } + } + } + + if !conditionMet { + lockedCount++ + if firstLocked == nil { + firstLocked = condition + } + } + } + if firstLocked != nil { + item.FirstLockedCondition = firstLocked + item.MoreLockedConditions = lockedCount - 1 + item.LockedConditionsCount = lockedCount + } + } else { + // Даже если желание разблокировано, рассчитываем прогресс для всех условий + for i := range item.UnlockConditions { + condition := &item.UnlockConditions[i] + if condition.Type == "task_completion" { + var taskID int + var conditionOwnerID int + err := a.DB.QueryRow(` + SELECT tc.task_id, COALESCE(wc.user_id, $2) + FROM wishlist_conditions wc + JOIN task_conditions tc ON wc.task_condition_id = tc.id + WHERE wc.id = $1 + `, condition.ID, userID).Scan(&taskID, &conditionOwnerID) + if err == nil { + var completed int + err = a.DB.QueryRow(` + SELECT completed FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE + `, taskID, conditionOwnerID).Scan(&completed) + if err == sql.ErrNoRows { + // Задача удалена или не существует - не блокируем желание + completedBool := true + condition.TaskCompleted = &completedBool + } else if err == nil { + completedBool := completed > 0 + condition.TaskCompleted = &completedBool + } + } + } else if condition.Type == "project_points" { + var projectID int + var requiredPoints float64 + var startDate sql.NullTime + var conditionOwnerID int + err := a.DB.QueryRow(` + SELECT sc.project_id, sc.required_points, sc.start_date, COALESCE(wc.user_id, $2) + FROM wishlist_conditions wc + JOIN score_conditions sc ON wc.score_condition_id = sc.id + WHERE wc.id = $1 + `, condition.ID, userID).Scan(&projectID, &requiredPoints, &startDate, &conditionOwnerID) + if err == nil { + totalScore, err := a.calculateProjectPointsFromDate(projectID, startDate, conditionOwnerID) + if err != nil { + // Если ошибка при расчете, устанавливаем 0 + zeroScore := 0.0 + condition.CurrentPoints = &zeroScore + } else { + condition.CurrentPoints = &totalScore + } + // Рассчитываем и форматируем срок разблокировки + if condition.ProjectID != nil && condition.RequiredPoints != nil { + weeks := a.calculateProjectUnlockWeeks( + projectID, + requiredPoints, + startDate, + conditionOwnerID, + ) + weeksText := formatWeeksText(weeks) + condition.WeeksText = &weeksText + } + } + } + } + } + + // Загружаем связанную задачу текущего пользователя, если есть + var linkedTaskID, linkedTaskCompleted, linkedTaskUserID sql.NullInt64 + var linkedTaskName sql.NullString + var linkedTaskNextShowAt sql.NullTime + linkedTaskErr := a.DB.QueryRow(` + SELECT t.id, t.name, t.completed, t.next_show_at, t.user_id + FROM tasks t + WHERE t.wishlist_id = $1 AND t.user_id = $2 AND t.deleted = FALSE + LIMIT 1 + `, item.ID, userID).Scan(&linkedTaskID, &linkedTaskName, &linkedTaskCompleted, &linkedTaskNextShowAt, &linkedTaskUserID) + + if linkedTaskErr == nil && linkedTaskID.Valid { + linkedTask := &LinkedTask{ + ID: int(linkedTaskID.Int64), + Name: linkedTaskName.String, + Completed: int(linkedTaskCompleted.Int64), + } + if linkedTaskNextShowAt.Valid { + nextShowAtStr := linkedTaskNextShowAt.Time.Format(time.RFC3339) + linkedTask.NextShowAt = &nextShowAtStr + } + if linkedTaskUserID.Valid { + userIDVal := int(linkedTaskUserID.Int64) + linkedTask.UserID = &userIDVal + } + item.LinkedTask = linkedTask + } else if linkedTaskErr != sql.ErrNoRows { + log.Printf("Error loading linked task for wishlist %d: %v", item.ID, linkedTaskErr) + // Не возвращаем ошибку, просто не устанавливаем linked_task + } + + // Подсчитываем общее количество не закрытых задач для этого желания (всех пользователей) + // Исключаем linked_task из подсчета, если она есть + // Учитываем только не закрытые задачи (completed = 0) + var tasksCount int + if linkedTaskID.Valid { + // Если есть linked_task, исключаем её из подсчета + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 AND t.id != $2 + `, item.ID, linkedTaskID.Int64).Scan(&tasksCount) + } else { + // Если нет linked_task, считаем все не закрытые задачи + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 + `, item.ID).Scan(&tasksCount) + } + if err != nil { + log.Printf("Error counting tasks for wishlist %d: %v", item.ID, err) + tasksCount = 0 + } + item.TasksCount = tasksCount + + items = append(items, *item) + } + + return items, nil +} + +// saveWishlistConditions сохраняет условия для желания +// userID - автор условий (пользователь, который создает/обновляет условия) +func (a *App) saveWishlistConditions( + tx *sql.Tx, + wishlistItemID int, + userID int, + conditions []UnlockConditionRequest, +) error { + // Получаем все существующие условия с их user_id перед удалением + existingConditions := make(map[int]int) // map[conditionID]userID + rows, err := tx.Query(` + SELECT id, user_id + FROM wishlist_conditions + WHERE wishlist_item_id = $1 + `, wishlistItemID) + if err != nil { + return fmt.Errorf("error getting existing conditions: %w", err) + } + defer rows.Close() + + for rows.Next() { + var condID int + var condUserID sql.NullInt64 + if err := rows.Scan(&condID, &condUserID); err != nil { + return fmt.Errorf("error scanning existing condition: %w", err) + } + if condUserID.Valid { + existingConditions[condID] = int(condUserID.Int64) + } + } + + // Удаляем только условия текущего пользователя + _, err = tx.Exec(` + DELETE FROM wishlist_conditions + WHERE wishlist_item_id = $1 AND user_id = $2 + `, wishlistItemID, userID) + if err != nil { + return fmt.Errorf("error deleting user conditions: %w", err) + } + + if len(conditions) == 0 { + return nil + } + + // Подготавливаем statement для вставки условий + stmt, err := tx.Prepare(` + INSERT INTO wishlist_conditions + (wishlist_item_id, user_id, task_condition_id, score_condition_id, display_order) + VALUES ($1, $2, $3, $4, $5) + `) + if err != nil { + return err + } + defer stmt.Close() + + for i, condition := range conditions { + displayOrder := i + if condition.DisplayOrder != nil { + displayOrder = *condition.DisplayOrder + } + + var taskConditionID interface{} + var scoreConditionID interface{} + + if condition.Type == "task_completion" { + if condition.TaskID == nil { + return fmt.Errorf("task_id is required for task_completion") + } + + // Получаем или создаём task_condition + var tcID int + err := tx.QueryRow(` + SELECT id FROM task_conditions WHERE task_id = $1 + `, *condition.TaskID).Scan(&tcID) + + if err == sql.ErrNoRows { + // Создаём новое условие + err = tx.QueryRow(` + INSERT INTO task_conditions (task_id) + VALUES ($1) + ON CONFLICT (task_id) DO UPDATE SET task_id = EXCLUDED.task_id + RETURNING id + `, *condition.TaskID).Scan(&tcID) + if err != nil { + return err + } + } else if err != nil { + return err + } + + taskConditionID = tcID + + } else if condition.Type == "project_points" { + if condition.ProjectID == nil || condition.RequiredPoints == nil { + return fmt.Errorf("project_id and required_points are required for project_points") + } + + startDateStr := condition.StartDate + + // Получаем или создаём score_condition + var scID int + var startDateVal interface{} + if startDateStr != nil && *startDateStr != "" { + // Парсим дату из строки YYYY-MM-DD + startDateVal = *startDateStr + } else { + // Пустая строка или nil = NULL для "за всё время" + startDateVal = nil + } + + err := tx.QueryRow(` + SELECT id FROM score_conditions + WHERE project_id = $1 + AND required_points = $2 + AND (start_date = $3::DATE OR (start_date IS NULL AND $3 IS NULL)) + `, *condition.ProjectID, *condition.RequiredPoints, startDateVal).Scan(&scID) + + if err == sql.ErrNoRows { + // Создаём новое условие + err = tx.QueryRow(` + INSERT INTO score_conditions (project_id, required_points, start_date) + VALUES ($1, $2, $3::DATE) + ON CONFLICT (project_id, required_points, start_date) + DO UPDATE SET project_id = EXCLUDED.project_id + RETURNING id + `, *condition.ProjectID, *condition.RequiredPoints, startDateVal).Scan(&scID) + if err != nil { + return err + } + } else if err != nil { + return err + } + + scoreConditionID = scID + } + + // Определяем user_id для условия: + // - Если условие имеет id и это условие существовало - проверяем, принадлежит ли оно текущему пользователю + // - Если условие принадлежит другому пользователю - пропускаем (не сохраняем, так как чужие условия не редактируются) + // - Если условие имеет id, но не существовало (например, было только что добавлено) - это новое условие, используем userID текущего пользователя + // - Если условие без id - это новое условие, используем userID текущего пользователя + conditionUserID := userID + if condition.ID != nil { + if originalUserID, exists := existingConditions[*condition.ID]; exists { + // Если условие принадлежит другому пользователю - пропускаем (не сохраняем, так как чужие условия не редактируются) + if originalUserID != userID { + continue + } + // Условие принадлежит текущему пользователю - обновляем его + conditionUserID = originalUserID + } else { + // Условие имеет id, но не существует в базе - это новое условие, используем userID текущего пользователя + conditionUserID = userID + } + } + + // Создаём связь + _, err = stmt.Exec( + wishlistItemID, + conditionUserID, + taskConditionID, + scoreConditionID, + displayOrder, + ) + if err != nil { + return err + } + } + + return nil +} + +// getWishlistHandler возвращает список незавершённых желаний и счётчик завершённых +func (a *App) getWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Загружаем только незавершённые + items, err := a.getWishlistItemsWithConditions(userID, false) + if err != nil { + log.Printf("Error getting wishlist items: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting wishlist items: %v", err), http.StatusInternalServerError) + return + } + + // Получаем количество завершённых + var completedCount int + err = a.DB.QueryRow(` + SELECT COUNT(*) FROM wishlist_items + WHERE user_id = $1 AND deleted = FALSE AND completed = TRUE + `, userID).Scan(&completedCount) + if err != nil { + log.Printf("Error counting completed wishlist items: %v", err) + completedCount = 0 + } + + // Группируем и сортируем + unlocked := make([]WishlistItem, 0) + locked := make([]WishlistItem, 0) + + for _, item := range items { + if item.Unlocked { + unlocked = append(unlocked, item) + } else { + locked = append(locked, item) + } + } + + // Сортируем разблокированные по цене от меньшего к большему + sort.Slice(unlocked, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if unlocked[i].Price != nil { + priceI = *unlocked[i].Price + } + if unlocked[j].Price != nil { + priceJ = *unlocked[j].Price + } + if priceI == priceJ { + return unlocked[i].ID < unlocked[j].ID + } + return priceI < priceJ // Сортировка по цене от меньшего к большему (заменяет calculateUnlockedSortValue) + }) + + // Разделяем заблокированные на группы + lockedWithoutTasks := []WishlistItem{} + lockedWithTasks := []WishlistItem{} + + for _, item := range locked { + hasUncompletedTasks := false + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" && (cond.TaskCompleted == nil || !*cond.TaskCompleted) { + hasUncompletedTasks = true + break + } + } + if hasUncompletedTasks { + lockedWithTasks = append(lockedWithTasks, item) + } else { + lockedWithoutTasks = append(lockedWithoutTasks, item) + } + } + + // Сортируем каждую группу по времени разблокировки (от меньшего срока к большему) + sort.Slice(lockedWithoutTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) + if valueI == valueJ { + return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID + } + return valueI < valueJ + }) + + sort.Slice(lockedWithTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithTasks[j], userID) + if valueI == valueJ { + return lockedWithTasks[i].ID < lockedWithTasks[j].ID + } + return valueI < valueJ + }) + + // Объединяем: сначала без задач, потом с задачами + locked = append(lockedWithoutTasks, lockedWithTasks...) + + response := WishlistResponse{ + Unlocked: unlocked, + Locked: locked, + CompletedCount: completedCount, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// getWishlistCompletedHandler возвращает список завершённых желаний +func (a *App) getWishlistCompletedHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Загружаем все желания включая завершённые + items, err := a.getWishlistItemsWithConditions(userID, true) + if err != nil { + log.Printf("Error getting completed wishlist items: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting completed wishlist items: %v", err), http.StatusInternalServerError) + return + } + + // Фильтруем только завершённые + completed := make([]WishlistItem, 0) + for _, item := range items { + if item.Completed { + completed = append(completed, item) + } + } + + // Сортируем по цене (дорогие → дешёвые) + sort.Slice(completed, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if completed[i].Price != nil { + priceI = *completed[i].Price + } + if completed[j].Price != nil { + priceJ = *completed[j].Price + } + return priceI > priceJ + }) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(completed) +} + +// createWishlistHandler создаёт новое желание +func (a *App) createWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + log.Printf("createWishlistHandler: Unauthorized") + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + log.Printf("createWishlistHandler: userID=%d", userID) + + var req WishlistRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("createWishlistHandler: Error decoding wishlist request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + log.Printf("createWishlistHandler: decoded request - name='%s', price=%v, link='%s', conditions=%d", + req.Name, req.Price, req.Link, len(req.UnlockConditions)) + + if req.UnlockConditions == nil { + log.Printf("createWishlistHandler: WARNING - UnlockConditions is nil, initializing empty slice") + req.UnlockConditions = []UnlockConditionRequest{} + } + + for i, cond := range req.UnlockConditions { + log.Printf("createWishlistHandler: condition %d - type='%s', task_id=%v, project_id=%v, required_points=%v, start_date='%v'", + i, cond.Type, cond.TaskID, cond.ProjectID, cond.RequiredPoints, cond.StartDate) + } + + if strings.TrimSpace(req.Name) == "" { + log.Printf("createWishlistHandler: Name is required") + sendErrorWithCORS(w, "Name is required", http.StatusBadRequest) + return + } + + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + var wishlistID int + err = tx.QueryRow(` + INSERT INTO wishlist_items (user_id, author_id, name, price, link, group_name, completed, deleted) + VALUES ($1, $1, $2, $3, $4, $5, FALSE, FALSE) + RETURNING id + `, userID, strings.TrimSpace(req.Name), req.Price, req.Link, req.GroupName).Scan(&wishlistID) + + if err != nil { + log.Printf("Error creating wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating wishlist item: %v", err), http.StatusInternalServerError) + return + } + + // Сохраняем условия + if len(req.UnlockConditions) > 0 { + log.Printf("createWishlistHandler: saving %d conditions", len(req.UnlockConditions)) + err = a.saveWishlistConditionsWithUserID(tx, wishlistID, userID, req.UnlockConditions) + if err != nil { + log.Printf("createWishlistHandler: Error saving wishlist conditions: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error saving wishlist conditions: %v", err), http.StatusInternalServerError) + return + } + log.Printf("createWishlistHandler: conditions saved successfully") + } else { + log.Printf("createWishlistHandler: no conditions to save") + } + + log.Printf("createWishlistHandler: committing transaction") + if err := tx.Commit(); err != nil { + log.Printf("createWishlistHandler: Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + log.Printf("createWishlistHandler: transaction committed successfully") + + // Обновляем MV для групповых саджестов + if req.GroupName != nil && *req.GroupName != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Получаем созданное желание с условиями + items, err := a.getWishlistItemsWithConditions(userID, false) + if err != nil { + log.Printf("Error getting created wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting created wishlist item: %v", err), http.StatusInternalServerError) + return + } + + var createdItem *WishlistItem + for i := range items { + if items[i].ID == wishlistID { + createdItem = &items[i] + break + } + } + + if createdItem == nil { + log.Printf("createWishlistHandler: Created item not found") + sendErrorWithCORS(w, "Created item not found", http.StatusInternalServerError) + return + } + + log.Printf("createWishlistHandler: Successfully created wishlist item id=%d, name='%s'", + createdItem.ID, createdItem.Name) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(createdItem) +} + +// checkWishlistAccess проверяет доступ пользователя к желанию +// Возвращает (hasAccess, itemUserID, boardID, error) +func (a *App) checkWishlistAccess(itemID int, userID int) (bool, int, sql.NullInt64, error) { + var itemUserID int + var boardID sql.NullInt64 + err := a.DB.QueryRow(` + SELECT user_id, board_id + FROM wishlist_items + WHERE id = $1 AND deleted = FALSE + `, itemID).Scan(&itemUserID, &boardID) + + if err == sql.ErrNoRows { + return false, 0, sql.NullInt64{}, err + } + if err != nil { + return false, 0, sql.NullInt64{}, err + } + + // Проверяем доступ: владелец ИЛИ участник доски + hasAccess := itemUserID == userID + if !hasAccess && boardID.Valid { + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID.Int64).Scan(&ownerID) + if err == nil { + hasAccess = ownerID == userID + if !hasAccess { + var isMember bool + err = a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, + int(boardID.Int64), userID).Scan(&isMember) + if err == nil { + hasAccess = isMember + } + } + } + } + + return hasAccess, itemUserID, boardID, nil +} + +// CalculateWeeksRequest структура запроса для расчета недель +type CalculateWeeksRequest struct { + ProjectID int `json:"project_id"` + RequiredPoints float64 `json:"required_points"` + StartDate string `json:"start_date,omitempty"` + ConditionUserID *int `json:"condition_user_id,omitempty"` // Владелец условия (если условие существует) +} + +// calculateWeeksHandler обрабатывает запрос на расчет недель для разблокировки условия +func (a *App) calculateWeeksHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req CalculateWeeksRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Определяем владельца условия: + // 1. Если передан condition_user_id в запросе - используем его (для существующего условия) + // 2. Иначе используем текущего пользователя (для нового условия) + conditionOwnerID := userID // userID из контекста (текущий пользователь) + if req.ConditionUserID != nil && *req.ConditionUserID > 0 { + conditionOwnerID = *req.ConditionUserID + } + + var startDate sql.NullTime + if req.StartDate != "" { + date, err := time.Parse("2006-01-02", req.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + // Используем владельца условия, а не текущего пользователя + weeks := a.calculateProjectUnlockWeeks(req.ProjectID, req.RequiredPoints, startDate, conditionOwnerID) + + response := map[string]interface{}{ + "weeks_text": formatWeeksText(weeks), // Отформатированная строка для отображения + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// getWishlistItemHandler возвращает одно желание +func (a *App) getWishlistItemHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, itemUserID, boardID, err := a.checkWishlistAccess(itemID, userID) + if err == sql.ErrNoRows { + log.Printf("Wishlist item not found: id=%d, userID=%d", itemID, userID) + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting wishlist item (id=%d, userID=%d): %v", itemID, userID, err) + sendErrorWithCORS(w, "Error getting wishlist item", http.StatusInternalServerError) + return + } + + log.Printf("Wishlist item found: id=%d, itemUserID=%d, boardID=%v, currentUserID=%d", itemID, itemUserID, boardID, userID) + + if !hasAccess { + log.Printf("Access denied for wishlist item: id=%d, itemUserID=%d, boardID=%v, currentUserID=%d", itemID, itemUserID, boardID, userID) + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + log.Printf("Access granted for wishlist item: id=%d, itemUserID=%d, boardID=%v, currentUserID=%d", itemID, itemUserID, boardID, userID) + + // Сохраняем itemUserID для использования в качестве fallback, если conditionUserID NULL + itemOwnerID := itemUserID + + // Загружаем полную информацию о желании + query := ` + SELECT + wi.id, + wi.name, + wi.price, + wi.image_path, + wi.link, + wi.completed, + wi.group_name, + wc.id AS condition_id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id AS condition_user_id, + tc.task_id, + t.name AS task_name, + t.next_show_at AS task_next_show_at, + sc.project_id, + p.name AS project_name, + sc.required_points, + sc.start_date + FROM wishlist_items wi + LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + LEFT JOIN projects p ON sc.project_id = p.id AND p.deleted = FALSE + WHERE wi.id = $1 + AND wi.deleted = FALSE + ORDER BY wc.display_order, wc.id + ` + + rows, err := a.DB.Query(query, itemID) + if err != nil { + log.Printf("Error querying wishlist item: %v", err) + sendErrorWithCORS(w, "Error getting wishlist item", http.StatusInternalServerError) + return + } + defer rows.Close() + + itemsMap := make(map[int]*WishlistItem) + for rows.Next() { + var itemID int + var name string + var price sql.NullFloat64 + var imagePath sql.NullString + var link sql.NullString + var completed bool + var groupName sql.NullString + var conditionID sql.NullInt64 + var displayOrder sql.NullInt64 + var taskConditionID sql.NullInt64 + var scoreConditionID sql.NullInt64 + var conditionUserID sql.NullInt64 + var taskID sql.NullInt64 + var taskName sql.NullString + var taskNextShowAt sql.NullTime + var projectID sql.NullInt64 + var projectName sql.NullString + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + + err := rows.Scan( + &itemID, &name, &price, &imagePath, &link, &completed, &groupName, + &conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &conditionUserID, + &taskID, &taskName, &taskNextShowAt, &projectID, &projectName, &requiredPoints, &startDate, + ) + if err != nil { + log.Printf("Error scanning wishlist item: %v", err) + continue + } + + item, exists := itemsMap[itemID] + if !exists { + item = &WishlistItem{ + ID: itemID, + Name: name, + Completed: completed, + UnlockConditions: []UnlockConditionDisplay{}, + } + if price.Valid { + item.Price = &price.Float64 + } + if imagePath.Valid && imagePath.String != "" { + url := imagePath.String + if !strings.HasPrefix(url, "http") { + url = url + "?t=" + strconv.FormatInt(time.Now().Unix(), 10) + } + item.ImageURL = &url + } + if link.Valid { + item.Link = &link.String + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + item.GroupName = &groupNameVal + } + itemsMap[itemID] = item + } + + if conditionID.Valid { + // Используем user_id из условия, если он есть, иначе используем владельца желания + // Это важно для старых условий, созданных до добавления user_id в wishlist_conditions + conditionOwnerID := itemOwnerID + if conditionUserID.Valid { + conditionOwnerID = int(conditionUserID.Int64) + } + + // Если это условие по задаче, проверяем существует ли задача + if taskConditionID.Valid && taskID.Valid { + // Проверяем, существует ли задача (не удалена) + var taskExists bool + err := a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE)`, taskID.Int64, conditionOwnerID).Scan(&taskExists) + if err != nil || !taskExists { + // Задача удалена - не добавляем условие в список, но при проверке блокировки оно считается выполненным + continue + } + } + + condition := UnlockConditionDisplay{ + ID: int(conditionID.Int64), + DisplayOrder: int(displayOrder.Int64), + } + + if conditionUserID.Valid { + conditionOwnerID := int(conditionUserID.Int64) + condition.UserID = &conditionOwnerID + } else { + condition.UserID = &itemOwnerID + } + + if taskConditionID.Valid { + condition.Type = "task_completion" + if taskName.Valid { + condition.TaskName = &taskName.String + } + if taskID.Valid { + taskIDVal := int(taskID.Int64) + condition.TaskID = &taskIDVal + var taskCompleted int + err := a.DB.QueryRow(`SELECT completed FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE`, taskID.Int64, conditionOwnerID).Scan(&taskCompleted) + if err == nil { + isCompleted := taskCompleted > 0 + condition.TaskCompleted = &isCompleted + } + } + if taskNextShowAt.Valid { + nextShowAtStr := taskNextShowAt.Time.Format(time.RFC3339) + condition.TaskNextShowAt = &nextShowAtStr + } + } else if scoreConditionID.Valid { + condition.Type = "project_points" + if projectName.Valid { + condition.ProjectName = &projectName.String + } + if projectID.Valid { + projectIDVal := int(projectID.Int64) + condition.ProjectID = &projectIDVal + points, _ := a.calculateProjectPointsFromDate(int(projectID.Int64), startDate, conditionOwnerID) + condition.CurrentPoints = &points + } + if requiredPoints.Valid { + condition.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + dateStr := startDate.Time.Format("2006-01-02") + condition.StartDate = &dateStr + } + // Рассчитываем и форматируем срок разблокировки + if condition.ProjectID != nil && condition.RequiredPoints != nil { + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, + ) + weeksText := formatWeeksText(weeks) + condition.WeeksText = &weeksText + } + } + + item.UnlockConditions = append(item.UnlockConditions, condition) + } + } + + // Получаем желание из map + var item *WishlistItem + for _, it := range itemsMap { + if it.ID == itemID { + item = it + break + } + } + + if item == nil { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + + // Проверяем разблокировку + item.Unlocked = true + if len(item.UnlockConditions) > 0 { + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" { + if cond.TaskCompleted == nil || !*cond.TaskCompleted { + item.Unlocked = false + break + } + } else if cond.Type == "project_points" { + if cond.CurrentPoints == nil || cond.RequiredPoints == nil || *cond.CurrentPoints < *cond.RequiredPoints { + item.Unlocked = false + break + } + } + } + } + + // Также проверяем через checkWishlistUnlock для совместимости + unlocked, err := a.checkWishlistUnlock(itemID, userID) + if err == nil { + item.Unlocked = unlocked + } + + // Сортируем условия в нужном порядке + a.sortUnlockConditions(item.UnlockConditions, userID) + + // Загружаем связанную задачу текущего пользователя, если есть + var linkedTaskID, linkedTaskCompleted, linkedTaskUserID sql.NullInt64 + var linkedTaskName sql.NullString + var linkedTaskNextShowAt sql.NullTime + err = a.DB.QueryRow(` + SELECT t.id, t.name, t.completed, t.next_show_at, t.user_id + FROM tasks t + WHERE t.wishlist_id = $1 AND t.user_id = $2 AND t.deleted = FALSE + LIMIT 1 + `, itemID, userID).Scan(&linkedTaskID, &linkedTaskName, &linkedTaskCompleted, &linkedTaskNextShowAt, &linkedTaskUserID) + + if err == nil && linkedTaskID.Valid { + linkedTask := &LinkedTask{ + ID: int(linkedTaskID.Int64), + Name: linkedTaskName.String, + Completed: int(linkedTaskCompleted.Int64), + } + if linkedTaskNextShowAt.Valid { + nextShowAtStr := linkedTaskNextShowAt.Time.Format(time.RFC3339) + linkedTask.NextShowAt = &nextShowAtStr + } + if linkedTaskUserID.Valid { + userIDVal := int(linkedTaskUserID.Int64) + linkedTask.UserID = &userIDVal + } + item.LinkedTask = linkedTask + } else if err != sql.ErrNoRows { + log.Printf("Error loading linked task for wishlist %d: %v", itemID, err) + // Не возвращаем ошибку, просто не устанавливаем linked_task + } + + // Подсчитываем общее количество не закрытых задач для этого желания (всех пользователей) + // Исключаем linked_task из подсчета, если она есть + // Учитываем только не закрытые задачи (completed = 0) + var tasksCount int + if linkedTaskID.Valid { + // Если есть linked_task, исключаем её из подсчета + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 AND t.id != $2 + `, itemID, linkedTaskID.Int64).Scan(&tasksCount) + } else { + // Если нет linked_task, считаем все не закрытые задачи + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 + `, itemID).Scan(&tasksCount) + } + if err != nil { + log.Printf("Error counting tasks for wishlist %d: %v", itemID, err) + tasksCount = 0 + } + item.TasksCount = tasksCount + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(item) +} + +// updateWishlistHandler обновляет желание +func (a *App) updateWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + log.Printf("updateWishlistHandler called: method=%s, path=%s", r.Method, r.URL.Path) + + userID, ok := getUserIDFromContext(r) + if !ok { + log.Printf("updateWishlistHandler: Unauthorized") + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + log.Printf("updateWishlistHandler: Invalid wishlist ID: %v", err) + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + log.Printf("updateWishlistHandler: itemID=%d, userID=%d", itemID, userID) + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(itemID, userID) + if err == sql.ErrNoRows { + log.Printf("updateWishlistHandler: Wishlist item not found: id=%d, userID=%d", itemID, userID) + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("updateWishlistHandler: Error getting wishlist item (id=%d, userID=%d): %v", itemID, userID, err) + sendErrorWithCORS(w, "Error getting wishlist item", http.StatusInternalServerError) + return + } + + if !hasAccess { + log.Printf("updateWishlistHandler: Access denied: id=%d, userID=%d", itemID, userID) + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + log.Printf("updateWishlistHandler: Access granted: id=%d, userID=%d", itemID, userID) + + var req WishlistRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding wishlist request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if strings.TrimSpace(req.Name) == "" { + sendErrorWithCORS(w, "Name is required", http.StatusBadRequest) + return + } + + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Обновляем желание (не проверяем user_id в WHERE, так как доступ уже проверен выше) + _, err = tx.Exec(` + UPDATE wishlist_items + SET name = $1, price = $2, link = $3, group_name = $4, updated_at = NOW() + WHERE id = $5 + `, strings.TrimSpace(req.Name), req.Price, req.Link, req.GroupName, itemID) + + if err != nil { + log.Printf("Error updating wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error updating wishlist item: %v", err), http.StatusInternalServerError) + return + } + + // Сохраняем условия + err = a.saveWishlistConditions(tx, itemID, userID, req.UnlockConditions) + if err != nil { + log.Printf("Error saving wishlist conditions: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error saving wishlist conditions: %v", err), http.StatusInternalServerError) + return + } + + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов + if req.GroupName != nil && *req.GroupName != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Получаем обновлённое желание через getWishlistItemHandler логику + // Используем тот же запрос, что и в getWishlistItemHandler + query := ` + SELECT + wi.id, + wi.name, + wi.price, + wi.image_path, + wi.link, + wi.completed, + wi.group_name, + wc.id AS condition_id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id AS condition_user_id, + tc.task_id, + t.name AS task_name, + sc.project_id, + p.name AS project_name, + sc.required_points, + sc.start_date + FROM wishlist_items wi + LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + LEFT JOIN projects p ON sc.project_id = p.id AND p.deleted = FALSE + WHERE wi.id = $1 + AND wi.deleted = FALSE + ORDER BY wc.display_order, wc.id + ` + + rows, err := a.DB.Query(query, itemID) + if err != nil { + log.Printf("Error querying updated wishlist item: %v", err) + sendErrorWithCORS(w, "Error getting updated wishlist item", http.StatusInternalServerError) + return + } + defer rows.Close() + + itemsMap := make(map[int]*WishlistItem) + var itemOwnerID int + for rows.Next() { + var itemID int + var name string + var price sql.NullFloat64 + var imagePath sql.NullString + var link sql.NullString + var completed bool + var groupName sql.NullString + var conditionID sql.NullInt64 + var displayOrder sql.NullInt64 + var taskConditionID sql.NullInt64 + var scoreConditionID sql.NullInt64 + var conditionUserID sql.NullInt64 + var taskID sql.NullInt64 + var taskName sql.NullString + var projectID sql.NullInt64 + var projectName sql.NullString + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + + err := rows.Scan( + &itemID, &name, &price, &imagePath, &link, &completed, &groupName, + &conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &conditionUserID, + &taskID, &taskName, &projectID, &projectName, &requiredPoints, &startDate, + ) + if err != nil { + log.Printf("Error scanning updated wishlist item: %v", err) + continue + } + + item, exists := itemsMap[itemID] + if !exists { + // Получаем user_id для этого желания + err = a.DB.QueryRow(`SELECT user_id FROM wishlist_items WHERE id = $1`, itemID).Scan(&itemOwnerID) + if err != nil { + log.Printf("Error getting item owner: %v", err) + continue + } + + item = &WishlistItem{ + ID: itemID, + Name: name, + Completed: completed, + UnlockConditions: []UnlockConditionDisplay{}, + } + if price.Valid { + item.Price = &price.Float64 + } + if imagePath.Valid && imagePath.String != "" { + url := imagePath.String + if !strings.HasPrefix(url, "http") { + url = url + "?t=" + strconv.FormatInt(time.Now().Unix(), 10) + } + item.ImageURL = &url + } + if link.Valid { + item.Link = &link.String + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + item.GroupName = &groupNameVal + } + itemsMap[itemID] = item + } + + if conditionID.Valid { + // Определяем владельца условия + conditionOwnerID := itemOwnerID + if conditionUserID.Valid { + conditionOwnerID = int(conditionUserID.Int64) + } + + // Если это условие по задаче, проверяем существует ли задача + if taskConditionID.Valid && taskID.Valid { + // Проверяем, существует ли задача (не удалена) + var taskExists bool + err := a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE)`, taskID.Int64, conditionOwnerID).Scan(&taskExists) + if err != nil || !taskExists { + // Задача удалена - не добавляем условие в список, но при проверке блокировки оно считается выполненным + continue + } + } + + condition := UnlockConditionDisplay{ + ID: int(conditionID.Int64), + DisplayOrder: int(displayOrder.Int64), + } + + if conditionUserID.Valid { + conditionOwnerID := int(conditionUserID.Int64) + condition.UserID = &conditionOwnerID + } else { + condition.UserID = &itemOwnerID + } + + if taskConditionID.Valid { + condition.Type = "task_completion" + if taskName.Valid { + condition.TaskName = &taskName.String + } + if taskID.Valid { + taskIDVal := int(taskID.Int64) + condition.TaskID = &taskIDVal + var taskCompleted int + err := a.DB.QueryRow(`SELECT completed FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE`, taskID.Int64, conditionOwnerID).Scan(&taskCompleted) + if err == nil { + isCompleted := taskCompleted > 0 + condition.TaskCompleted = &isCompleted + } + } + } else if scoreConditionID.Valid { + condition.Type = "project_points" + if projectName.Valid { + condition.ProjectName = &projectName.String + } + if projectID.Valid { + projectIDVal := int(projectID.Int64) + condition.ProjectID = &projectIDVal + points, _ := a.calculateProjectPointsFromDate(int(projectID.Int64), startDate, conditionOwnerID) + condition.CurrentPoints = &points + } + if requiredPoints.Valid { + condition.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + dateStr := startDate.Time.Format("2006-01-02") + condition.StartDate = &dateStr + } + // Рассчитываем и форматируем срок разблокировки + if condition.ProjectID != nil && condition.RequiredPoints != nil { + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, + ) + weeksText := formatWeeksText(weeks) + condition.WeeksText = &weeksText + } + } + + item.UnlockConditions = append(item.UnlockConditions, condition) + } + } + + var updatedItem *WishlistItem + for _, it := range itemsMap { + if it.ID == itemID { + updatedItem = it + break + } + } + + if updatedItem == nil { + log.Printf("Updated item not found: id=%d", itemID) + sendErrorWithCORS(w, "Updated item not found", http.StatusInternalServerError) + return + } + + // Проверяем разблокировку + updatedItem.Unlocked = true + if len(updatedItem.UnlockConditions) > 0 { + for _, cond := range updatedItem.UnlockConditions { + if cond.Type == "task_completion" { + if cond.TaskCompleted == nil || !*cond.TaskCompleted { + updatedItem.Unlocked = false + break + } + } else if cond.Type == "project_points" { + if cond.CurrentPoints == nil || cond.RequiredPoints == nil || *cond.CurrentPoints < *cond.RequiredPoints { + updatedItem.Unlocked = false + break + } + } + } + } + + unlocked, err := a.checkWishlistUnlock(itemID, userID) + if err == nil { + updatedItem.Unlocked = unlocked + } + + // Сортируем условия в нужном порядке + a.sortUnlockConditions(updatedItem.UnlockConditions, userID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(updatedItem) +} + +// deleteWishlistHandler удаляет желание (soft delete) +func (a *App) deleteWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(itemID, userID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking wishlist access: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist access: %v", err), http.StatusInternalServerError) + return + } + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + _, err = a.DB.Exec(` + UPDATE wishlist_items + SET deleted = TRUE, updated_at = NOW() + WHERE id = $1 + `, itemID) + + if err != nil { + log.Printf("Error deleting wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error deleting wishlist item: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Wishlist item deleted successfully", + }) +} + +// uploadWishlistImageHandler загружает картинку для желания +func (a *App) uploadWishlistImageHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + wishlistID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(wishlistID, userID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking wishlist access: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist access: %v", err), http.StatusInternalServerError) + return + } + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + // Парсим multipart form (макс 5MB) + err = r.ParseMultipartForm(5 << 20) + if err != nil { + sendErrorWithCORS(w, "File too large (max 5MB)", http.StatusBadRequest) + return + } + + file, _, err := r.FormFile("image") + if err != nil { + sendErrorWithCORS(w, "Error retrieving file", http.StatusBadRequest) + return + } + defer file.Close() + + // Декодируем изображение + img, err := imaging.Decode(file) + if err != nil { + sendErrorWithCORS(w, "Invalid image format", http.StatusBadRequest) + return + } + + // Сжимаем до максимальной ширины 1200px (сохраняя пропорции) + if img.Bounds().Dx() > 1200 { + img = imaging.Resize(img, 1200, 0, imaging.Lanczos) + } + + // Создаём директорию + uploadDir := fmt.Sprintf("/app/uploads/wishlist/%d", userID) + err = os.MkdirAll(uploadDir, 0755) + if err != nil { + log.Printf("Error creating directory: %v", err) + sendErrorWithCORS(w, "Error creating directory", http.StatusInternalServerError) + return + } + + // Генерируем уникальное имя файла + randomBytes := make([]byte, 8) + rand.Read(randomBytes) + filename := fmt.Sprintf("%d_%x.jpg", wishlistID, randomBytes) + filepath := filepath.Join(uploadDir, filename) + + dst, err := os.Create(filepath) + if err != nil { + log.Printf("Error creating file: %v", err) + sendErrorWithCORS(w, "Error saving file", http.StatusInternalServerError) + return + } + defer dst.Close() + + // Кодируем в JPEG с качеством 85% + err = jpeg.Encode(dst, img, &jpeg.Options{Quality: 85}) + if err != nil { + log.Printf("Error encoding image: %v", err) + sendErrorWithCORS(w, "Error encoding image", http.StatusInternalServerError) + return + } + + // Обновляем путь в БД (уникальное имя файла уже обеспечивает сброс кэша) + imagePath := fmt.Sprintf("/uploads/wishlist/%d/%s", userID, filename) + _, err = a.DB.Exec(` + UPDATE wishlist_items + SET image_path = $1, updated_at = NOW() + WHERE id = $2 + `, imagePath, wishlistID) + if err != nil { + log.Printf("Error updating database: %v", err) + sendErrorWithCORS(w, "Error updating database", http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{ + "image_url": imagePath, + }) +} + +// deleteWishlistImageHandler удаляет картинку желания +func (a *App) deleteWishlistImageHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + wishlistID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(wishlistID, userID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking wishlist access: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist access: %v", err), http.StatusInternalServerError) + return + } + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + // Получаем текущий путь к изображению из БД + var currentImagePath sql.NullString + err = a.DB.QueryRow(` + SELECT image_path + FROM wishlist_items + WHERE id = $1 + `, wishlistID).Scan(¤tImagePath) + + if err != nil { + log.Printf("Error getting image path: %v", err) + sendErrorWithCORS(w, "Error getting image path", http.StatusInternalServerError) + return + } + + // Удаляем файл, если он существует + if currentImagePath.Valid && currentImagePath.String != "" { + filePath := filepath.Join("/app", currentImagePath.String) + err = os.Remove(filePath) + if err != nil && !os.IsNotExist(err) { + log.Printf("Error deleting image file: %v", err) + // Продолжаем выполнение даже если файл не найден + } + } + + // Обновляем БД, устанавливая image_path в NULL + _, err = a.DB.Exec(` + UPDATE wishlist_items + SET image_path = NULL, updated_at = NOW() + WHERE id = $1 + `, wishlistID) + + if err != nil { + log.Printf("Error updating database: %v", err) + sendErrorWithCORS(w, "Error updating database", http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Image deleted successfully", + }) +} + +// completeWishlistHandler помечает желание как завершённое +func (a *App) completeWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(itemID, userID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking wishlist access: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist access: %v", err), http.StatusInternalServerError) + return + } + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + _, err = a.DB.Exec(` + UPDATE wishlist_items + SET completed = TRUE, updated_at = NOW() + WHERE id = $1 + `, itemID) + + if err != nil { + log.Printf("Error completing wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error completing wishlist item: %v", err), http.StatusInternalServerError) + return + } + + // Находим задачу пользователя для этого желания, чтобы исключить её из обработки + // (так же, как при закрытии через задачу) + var userTaskID int + err = a.DB.QueryRow(` + SELECT id FROM tasks + WHERE wishlist_id = $1 AND user_id = $2 AND deleted = FALSE + LIMIT 1 + `, itemID, userID).Scan(&userTaskID) + + // Если задача не найдена, используем 0 (не будет исключена, но это нормально, если задачи нет) + if err == sql.ErrNoRows { + userTaskID = 0 + } else if err != nil { + log.Printf("Error finding user task for wishlist item %d: %v", itemID, err) + userTaskID = 0 + } + + // Обрабатываем политику награждения для всех задач, связанных с этим желанием + // Исключаем задачу пользователя, который закрыл желание (если она есть) + a.processWishlistRewardPolicy(itemID, userTaskID) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Wishlist item completed successfully", + }) +} + +// processWishlistRewardPolicy обрабатывает политику награждения для всех задач, связанных с желанием +// completedTaskID - ID задачи, которая была закрыта (исключается из обработки). Если 0, задача не найдена, но это нормально +func (a *App) processWishlistRewardPolicy(wishlistItemID int, completedTaskID int) { + var rows *sql.Rows + var err error + if completedTaskID == 0 { + // Если задача не найдена (желание закрывается напрямую, но у пользователя нет задачи), + // обрабатываем все задачи + rows, err = a.DB.Query(` + SELECT id, user_id, reward_policy + FROM tasks + WHERE wishlist_id = $1 AND deleted = FALSE + `, wishlistItemID) + } else { + // Исключаем задачу, которая была закрыта (через задачу или найдена при прямом закрытии желания) + rows, err = a.DB.Query(` + SELECT id, user_id, reward_policy + FROM tasks + WHERE wishlist_id = $1 AND deleted = FALSE AND id != $2 + `, wishlistItemID, completedTaskID) + } + if err != nil { + log.Printf("Error querying tasks for wishlist item %d: %v", wishlistItemID, err) + return + } + defer rows.Close() + + for rows.Next() { + var taskID, taskUserID int + var rewardPolicy sql.NullString + err := rows.Scan(&taskID, &taskUserID, &rewardPolicy) + if err != nil { + log.Printf("Error scanning task: %v", err) + continue + } + + policy := "personal" // Значение по умолчанию + if rewardPolicy.Valid { + policy = rewardPolicy.String + } + + if policy == "personal" { + // Личная политика: при закрытии задачи-желания другим пользователем, личная задача удаляется + _, err = a.DB.Exec(` + UPDATE tasks + SET deleted = TRUE + WHERE id = $1 + `, taskID) + if err != nil { + log.Printf("Error deleting task %d: %v", taskID, err) + } else { + log.Printf("Task %d deleted because wishlist item %d was completed by another user (personal policy)", taskID, wishlistItemID) + } + } else if policy == "general" { + // Общая политика: при закрытии задачи-желания другим пользователем, общая задача закрывается + _, err = a.DB.Exec(` + UPDATE tasks + SET completed = completed + 1, last_completed_at = NOW() + WHERE id = $1 + `, taskID) + if err != nil { + log.Printf("Error completing task %d: %v", taskID, err) + } else { + log.Printf("Task %d completed automatically after wishlist item %d completion (general policy)", taskID, wishlistItemID) + } + } + } +} + +// uncompleteWishlistHandler снимает отметку завершения +func (a *App) uncompleteWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к желанию + hasAccess, _, _, err := a.checkWishlistAccess(itemID, userID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error checking wishlist access: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error checking wishlist access: %v", err), http.StatusInternalServerError) + return + } + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + _, err = a.DB.Exec(` + UPDATE wishlist_items + SET completed = FALSE, updated_at = NOW() + WHERE id = $1 + `, itemID) + + if err != nil { + log.Printf("Error uncompleting wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error uncompleting wishlist item: %v", err), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{ + "success": true, + "message": "Wishlist item uncompleted successfully", + }) +} + +// copyWishlistHandler копирует желание +func (a *App) copyWishlistHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + itemID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid wishlist ID", http.StatusBadRequest) + return + } + + // Получаем оригинальное желание + var name string + var price sql.NullFloat64 + var link sql.NullString + var imagePath sql.NullString + var ownerID int + var boardID sql.NullInt64 + var authorID sql.NullInt64 + var groupName sql.NullString + err = a.DB.QueryRow(` + SELECT user_id, name, price, link, image_path, board_id, author_id, group_name + FROM wishlist_items + WHERE id = $1 AND deleted = FALSE + `, itemID).Scan(&ownerID, &name, &price, &link, &imagePath, &boardID, &authorID, &groupName) + + if err == sql.ErrNoRows || ownerID != userID { + sendErrorWithCORS(w, "Wishlist item not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting wishlist item: %v", err), http.StatusInternalServerError) + return + } + + // Получаем условия оригинального желания + rows, err := a.DB.Query(` + SELECT + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + tc.task_id, + sc.project_id, + sc.required_points, + sc.start_date + FROM wishlist_conditions wc + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + WHERE wc.wishlist_item_id = $1 + ORDER BY wc.display_order + `, itemID) + if err != nil { + log.Printf("Error getting wishlist conditions: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting wishlist conditions: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + var conditions []UnlockConditionRequest + for rows.Next() { + var displayOrder int + var taskConditionID, scoreConditionID sql.NullInt64 + var taskID, projectID sql.NullInt64 + var requiredPoints sql.NullFloat64 + var startDate sql.NullString + + err := rows.Scan(&displayOrder, &taskConditionID, &scoreConditionID, &taskID, &projectID, &requiredPoints, &startDate) + if err != nil { + log.Printf("Error scanning condition row: %v", err) + continue + } + + cond := UnlockConditionRequest{ + DisplayOrder: &displayOrder, + } + + if taskConditionID.Valid && taskID.Valid { + cond.Type = "task_completion" + tid := int(taskID.Int64) + cond.TaskID = &tid + } else if scoreConditionID.Valid && projectID.Valid { + cond.Type = "project_points" + pid := int(projectID.Int64) + cond.ProjectID = &pid + if requiredPoints.Valid { + cond.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + cond.StartDate = &startDate.String + } + } + + conditions = append(conditions, cond) + } + + // Создаём копию в транзакции + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error beginning transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error beginning transaction: %v", err), http.StatusInternalServerError) + return + } + defer tx.Rollback() + + // Создаём копию желания + var newWishlistID int + var priceVal, linkVal interface{} + if price.Valid { + priceVal = price.Float64 + } + if link.Valid { + linkVal = link.String + } + + // Определяем значения для board_id и author_id + var boardIDVal, authorIDVal, groupNameVal interface{} + if boardID.Valid { + boardIDVal = int(boardID.Int64) + } + if authorID.Valid { + authorIDVal = int(authorID.Int64) + } else { + // Если author_id не был установлен, используем текущего пользователя + authorIDVal = userID + } + if groupName.Valid { + groupNameVal = groupName.String + } + + err = tx.QueryRow(` + INSERT INTO wishlist_items (user_id, board_id, author_id, name, price, link, group_name, completed, deleted) + VALUES ($1, $2, $3, $4, $5, $6, $7, FALSE, FALSE) + RETURNING id + `, ownerID, boardIDVal, authorIDVal, name+" (копия)", priceVal, linkVal, groupNameVal).Scan(&newWishlistID) + if err != nil { + log.Printf("Error creating wishlist copy: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error creating wishlist copy: %v", err), http.StatusInternalServerError) + return + } + + // Сохраняем условия + if len(conditions) > 0 { + err = a.saveWishlistConditions(tx, newWishlistID, userID, conditions) + if err != nil { + log.Printf("Error saving wishlist conditions: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error saving wishlist conditions: %v", err), http.StatusInternalServerError) + return + } + } + + // Копируем изображение, если есть + if imagePath.Valid && imagePath.String != "" { + // Получаем путь к оригинальному файлу + uploadsDir := getEnv("UPLOADS_DIR", "/app/uploads") + + // Очищаем путь от /uploads/ в начале и query параметров + cleanPath := imagePath.String + cleanPath = strings.TrimPrefix(cleanPath, "/uploads/") + if idx := strings.Index(cleanPath, "?"); idx != -1 { + cleanPath = cleanPath[:idx] + } + + originalPath := filepath.Join(uploadsDir, cleanPath) + + log.Printf("Copying image: imagePath=%s, cleanPath=%s, originalPath=%s", imagePath.String, cleanPath, originalPath) + + // Проверяем, существует ли файл + if _, statErr := os.Stat(originalPath); statErr == nil { + // Создаём директорию для нового желания + newImageDir := filepath.Join(uploadsDir, "wishlist", strconv.Itoa(userID)) + if mkdirErr := os.MkdirAll(newImageDir, 0755); mkdirErr != nil { + log.Printf("Error creating image dir: %v", mkdirErr) + } + + // Генерируем уникальное имя файла + ext := filepath.Ext(cleanPath) + randomBytes := make([]byte, 8) + rand.Read(randomBytes) + newFileName := fmt.Sprintf("%d_%s%s", newWishlistID, hex.EncodeToString(randomBytes), ext) + newImagePath := filepath.Join(newImageDir, newFileName) + + log.Printf("New image path: %s", newImagePath) + + // Копируем файл + srcFile, openErr := os.Open(originalPath) + if openErr != nil { + log.Printf("Error opening source file: %v", openErr) + } else { + defer srcFile.Close() + dstFile, createErr := os.Create(newImagePath) + if createErr != nil { + log.Printf("Error creating dest file: %v", createErr) + } else { + defer dstFile.Close() + _, copyErr := io.Copy(dstFile, srcFile) + if copyErr != nil { + log.Printf("Error copying file: %v", copyErr) + } else { + // Обновляем путь к изображению в БД (с /uploads/ в начале для совместимости) + relativePath := "/uploads/" + filepath.Join("wishlist", strconv.Itoa(userID), newFileName) + log.Printf("Updating image_path in DB to: %s", relativePath) + _, updateErr := tx.Exec(`UPDATE wishlist_items SET image_path = $1 WHERE id = $2`, relativePath, newWishlistID) + if updateErr != nil { + log.Printf("Error updating image_path in DB: %v", updateErr) + } + } + } + } + } else { + log.Printf("Original image file not found: %s, error: %v", originalPath, statErr) + } + } else { + log.Printf("No image to copy: imagePath.Valid=%v, imagePath.String=%s", imagePath.Valid, imagePath.String) + } + + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error committing transaction: %v", err), http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов + if groupName.Valid && groupName.String != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Получаем созданное желание с условиями + items, err := a.getWishlistItemsWithConditions(userID, false) + if err != nil { + log.Printf("Error getting created wishlist item: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting created wishlist item: %v", err), http.StatusInternalServerError) + return + } + + var createdItem *WishlistItem + for i := range items { + if items[i].ID == newWishlistID { + createdItem = &items[i] + break + } + } + + if createdItem == nil { + sendErrorWithCORS(w, "Created item not found", http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(createdItem) +} + +// ============================================ +// Wishlist Boards handlers +// ============================================ + +// generateInviteToken генерирует уникальный токен для приглашения +func generateInviteToken() string { + b := make([]byte, 32) + rand.Read(b) + return hex.EncodeToString(b) +} + +// getBoardsHandler возвращает список досок пользователя (свои + присоединённые) +func (a *App) getBoardsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + boards := []WishlistBoard{} + + // Получаем свои доски + доски где пользователь участник + rows, err := a.DB.Query(` + SELECT DISTINCT + wb.id, + wb.owner_id, + COALESCE(u.name, u.email) as owner_name, + wb.name, + wb.invite_enabled, + wb.invite_token, + wb.created_at, + (SELECT COUNT(*) FROM wishlist_board_members wbm WHERE wbm.board_id = wb.id) as member_count, + (wb.owner_id = $1) as is_owner + FROM wishlist_boards wb + JOIN users u ON wb.owner_id = u.id + LEFT JOIN wishlist_board_members wbm ON wb.id = wbm.board_id + WHERE wb.deleted = FALSE + AND (wb.owner_id = $1 OR wbm.user_id = $1) + ORDER BY is_owner DESC, wb.created_at DESC + `, userID) + if err != nil { + log.Printf("Error getting boards: %v", err) + sendErrorWithCORS(w, "Error getting boards", http.StatusInternalServerError) + return + } + defer rows.Close() + + baseURL := getEnv("WEBHOOK_BASE_URL", "") + + for rows.Next() { + var board WishlistBoard + var inviteToken sql.NullString + err := rows.Scan( + &board.ID, + &board.OwnerID, + &board.OwnerName, + &board.Name, + &board.InviteEnabled, + &inviteToken, + &board.CreatedAt, + &board.MemberCount, + &board.IsOwner, + ) + if err != nil { + log.Printf("Error scanning board: %v", err) + continue + } + + // Invite token и URL только для владельца + if board.IsOwner && inviteToken.Valid { + board.InviteToken = &inviteToken.String + if baseURL != "" { + url := baseURL + "/invite/" + inviteToken.String + board.InviteURL = &url + } + } + + boards = append(boards, board) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(boards) +} + +// createBoardHandler создаёт новую доску +func (a *App) createBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + var req BoardRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if strings.TrimSpace(req.Name) == "" { + sendErrorWithCORS(w, "Name is required", http.StatusBadRequest) + return + } + + var boardID int + err := a.DB.QueryRow(` + INSERT INTO wishlist_boards (owner_id, name) + VALUES ($1, $2) + RETURNING id + `, userID, strings.TrimSpace(req.Name)).Scan(&boardID) + + if err != nil { + log.Printf("Error creating board: %v", err) + sendErrorWithCORS(w, "Error creating board", http.StatusInternalServerError) + return + } + + // Возвращаем созданную доску + board := WishlistBoard{ + ID: boardID, + OwnerID: userID, + Name: strings.TrimSpace(req.Name), + InviteEnabled: false, + MemberCount: 0, + IsOwner: true, + CreatedAt: time.Now(), + } + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + json.NewEncoder(w).Encode(board) +} + +// getBoardHandler возвращает детали доски +func (a *App) getBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + var board WishlistBoard + var inviteToken sql.NullString + + err = a.DB.QueryRow(` + SELECT + wb.id, + wb.owner_id, + COALESCE(u.name, u.email) as owner_name, + wb.name, + wb.invite_enabled, + wb.invite_token, + wb.created_at, + (SELECT COUNT(*) FROM wishlist_board_members wbm WHERE wbm.board_id = wb.id) as member_count + FROM wishlist_boards wb + JOIN users u ON wb.owner_id = u.id + WHERE wb.id = $1 AND wb.deleted = FALSE + `, boardID).Scan( + &board.ID, + &board.OwnerID, + &board.OwnerName, + &board.Name, + &board.InviteEnabled, + &inviteToken, + &board.CreatedAt, + &board.MemberCount, + ) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting board: %v", err) + sendErrorWithCORS(w, "Error getting board", http.StatusInternalServerError) + return + } + + board.IsOwner = board.OwnerID == userID + + // Проверяем доступ (владелец или участник) + if !board.IsOwner { + var isMember bool + a.DB.QueryRow(` + SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2) + `, boardID, userID).Scan(&isMember) + + if !isMember { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + } + + // Invite token и URL только для владельца + if board.IsOwner && inviteToken.Valid { + board.InviteToken = &inviteToken.String + baseURL := getEnv("WEBHOOK_BASE_URL", "") + if baseURL != "" { + url := baseURL + "/invite/" + inviteToken.String + board.InviteURL = &url + } + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(board) +} + +// updateBoardHandler обновляет доску (только владелец) +func (a *App) updateBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь - владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Only owner can update board", http.StatusForbidden) + return + } + + var req BoardRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Обновляем поля + if strings.TrimSpace(req.Name) != "" { + _, err = a.DB.Exec(`UPDATE wishlist_boards SET name = $1, updated_at = NOW() WHERE id = $2`, + strings.TrimSpace(req.Name), boardID) + if err != nil { + log.Printf("Error updating board name: %v", err) + } + } + + if req.InviteEnabled != nil { + // Если включаем приглашения и нет токена - генерируем + if *req.InviteEnabled { + var currentToken sql.NullString + a.DB.QueryRow(`SELECT invite_token FROM wishlist_boards WHERE id = $1`, boardID).Scan(¤tToken) + + if !currentToken.Valid || currentToken.String == "" { + token := generateInviteToken() + _, err = a.DB.Exec(`UPDATE wishlist_boards SET invite_enabled = TRUE, invite_token = $1, updated_at = NOW() WHERE id = $2`, + token, boardID) + } else { + _, err = a.DB.Exec(`UPDATE wishlist_boards SET invite_enabled = TRUE, updated_at = NOW() WHERE id = $1`, boardID) + } + } else { + _, err = a.DB.Exec(`UPDATE wishlist_boards SET invite_enabled = FALSE, updated_at = NOW() WHERE id = $1`, boardID) + } + if err != nil { + log.Printf("Error updating board invite_enabled: %v", err) + } + } + + // Возвращаем обновлённую доску + var board WishlistBoard + var inviteToken sql.NullString + + a.DB.QueryRow(` + SELECT + wb.id, wb.owner_id, COALESCE(u.name, u.email), wb.name, wb.invite_enabled, wb.invite_token, wb.created_at, + (SELECT COUNT(*) FROM wishlist_board_members wbm WHERE wbm.board_id = wb.id) + FROM wishlist_boards wb + JOIN users u ON wb.owner_id = u.id + WHERE wb.id = $1 + `, boardID).Scan(&board.ID, &board.OwnerID, &board.OwnerName, &board.Name, &board.InviteEnabled, &inviteToken, &board.CreatedAt, &board.MemberCount) + + board.IsOwner = true + if inviteToken.Valid { + board.InviteToken = &inviteToken.String + baseURL := getEnv("WEBHOOK_BASE_URL", "") + if baseURL != "" { + url := baseURL + "/invite/" + inviteToken.String + board.InviteURL = &url + } + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(board) +} + +// deleteBoardHandler удаляет доску (только владелец) +func (a *App) deleteBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь - владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Only owner can delete board", http.StatusForbidden) + return + } + + // Soft delete доски и всех её желаний + _, err = a.DB.Exec(`UPDATE wishlist_boards SET deleted = TRUE, updated_at = NOW() WHERE id = $1`, boardID) + if err != nil { + log.Printf("Error deleting board: %v", err) + sendErrorWithCORS(w, "Error deleting board", http.StatusInternalServerError) + return + } + + // Soft delete всех желаний на доске + _, err = a.DB.Exec(`UPDATE wishlist_items SET deleted = TRUE, updated_at = NOW() WHERE board_id = $1`, boardID) + if err != nil { + log.Printf("Error deleting board items: %v", err) + } + + w.WriteHeader(http.StatusNoContent) +} + +// regenerateBoardInviteHandler перегенерирует invite token +func (a *App) regenerateBoardInviteHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь - владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Only owner can regenerate invite", http.StatusForbidden) + return + } + + token := generateInviteToken() + _, err = a.DB.Exec(`UPDATE wishlist_boards SET invite_token = $1, invite_enabled = TRUE, updated_at = NOW() WHERE id = $2`, + token, boardID) + if err != nil { + log.Printf("Error regenerating invite token: %v", err) + sendErrorWithCORS(w, "Error regenerating invite", http.StatusInternalServerError) + return + } + + baseURL := getEnv("WEBHOOK_BASE_URL", "") + inviteURL := "" + if baseURL != "" { + inviteURL = baseURL + "/invite/" + token + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]string{ + "invite_token": token, + "invite_url": inviteURL, + }) +} + +// getBoardMembersHandler возвращает список участников доски +func (a *App) getBoardMembersHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь - владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Only owner can view members", http.StatusForbidden) + return + } + + members := []BoardMember{} + rows, err := a.DB.Query(` + SELECT wbm.id, wbm.user_id, COALESCE(u.name, '') as name, u.email, wbm.joined_at + FROM wishlist_board_members wbm + JOIN users u ON wbm.user_id = u.id + WHERE wbm.board_id = $1 + ORDER BY wbm.joined_at DESC + `, boardID) + if err != nil { + log.Printf("Error getting members: %v", err) + sendErrorWithCORS(w, "Error getting members", http.StatusInternalServerError) + return + } + defer rows.Close() + + for rows.Next() { + var member BoardMember + err := rows.Scan(&member.ID, &member.UserID, &member.Name, &member.Email, &member.JoinedAt) + if err != nil { + log.Printf("Error scanning member: %v", err) + continue + } + members = append(members, member) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(members) +} + +// removeBoardMemberHandler удаляет участника из доски +func (a *App) removeBoardMemberHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + memberUserID, err := strconv.Atoi(vars["userId"]) + if err != nil { + sendErrorWithCORS(w, "Invalid user ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь - владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID != userID { + sendErrorWithCORS(w, "Only owner can remove members", http.StatusForbidden) + return + } + + _, err = a.DB.Exec(`DELETE FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2`, boardID, memberUserID) + if err != nil { + log.Printf("Error removing member: %v", err) + sendErrorWithCORS(w, "Error removing member", http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusNoContent) +} + +// leaveBoardHandler позволяет участнику выйти из доски +func (a *App) leaveBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["id"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем что пользователь НЕ владелец + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + if ownerID == userID { + sendErrorWithCORS(w, "Owner cannot leave board, delete it instead", http.StatusBadRequest) + return + } + + _, err = a.DB.Exec(`DELETE FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2`, boardID, userID) + if err != nil { + log.Printf("Error leaving board: %v", err) + sendErrorWithCORS(w, "Error leaving board", http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusNoContent) +} + +// getBoardInviteInfoHandler возвращает информацию о доске по invite token +func (a *App) getBoardInviteInfoHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + vars := mux.Vars(r) + token := vars["token"] + + var info BoardInviteInfo + var ownerName string + err := a.DB.QueryRow(` + SELECT + wb.id, + wb.name, + COALESCE(u.name, u.email) as owner_name, + (SELECT COUNT(*) FROM wishlist_board_members wbm WHERE wbm.board_id = wb.id) as member_count + FROM wishlist_boards wb + JOIN users u ON wb.owner_id = u.id + WHERE wb.invite_token = $1 AND wb.invite_enabled = TRUE AND wb.deleted = FALSE + `, token).Scan(&info.BoardID, &info.Name, &ownerName, &info.MemberCount) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Invalid or expired invite link", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting invite info: %v", err) + sendErrorWithCORS(w, "Error getting invite info", http.StatusInternalServerError) + return + } + + info.OwnerName = ownerName + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(info) +} + +// joinBoardHandler присоединяет пользователя к доске по invite token +func (a *App) joinBoardHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + token := vars["token"] + + // Получаем доску по токену + var boardID, ownerID int + var boardName, ownerName string + err := a.DB.QueryRow(` + SELECT wb.id, wb.owner_id, wb.name, COALESCE(u.name, u.email) + FROM wishlist_boards wb + JOIN users u ON wb.owner_id = u.id + WHERE wb.invite_token = $1 AND wb.invite_enabled = TRUE AND wb.deleted = FALSE + `, token).Scan(&boardID, &ownerID, &boardName, &ownerName) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Invalid or expired invite link", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting board by token: %v", err) + sendErrorWithCORS(w, "Error joining board", http.StatusInternalServerError) + return + } + + // Проверяем что пользователь не владелец + if ownerID == userID { + sendErrorWithCORS(w, "You are the owner of this board", http.StatusBadRequest) + return + } + + // Проверяем что пользователь ещё не участник + var exists bool + a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, + boardID, userID).Scan(&exists) + if exists { + sendErrorWithCORS(w, "You are already a member of this board", http.StatusBadRequest) + return + } + + // Добавляем пользователя как участника + _, err = a.DB.Exec(`INSERT INTO wishlist_board_members (board_id, user_id) VALUES ($1, $2)`, boardID, userID) + if err != nil { + log.Printf("Error joining board: %v", err) + sendErrorWithCORS(w, "Error joining board", http.StatusInternalServerError) + return + } + + // Получаем количество участников + var memberCount int + a.DB.QueryRow(`SELECT COUNT(*) FROM wishlist_board_members WHERE board_id = $1`, boardID).Scan(&memberCount) + + board := WishlistBoard{ + ID: boardID, + OwnerID: ownerID, + OwnerName: ownerName, + Name: boardName, + InviteEnabled: true, + MemberCount: memberCount, + IsOwner: false, + } + + response := JoinBoardResponse{ + Board: board, + Message: "Вы успешно присоединились к доске!", + } + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + json.NewEncoder(w).Encode(response) +} + +// getBoardItemsHandler возвращает желания на доске +func (a *App) getBoardItemsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["boardId"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к доске (владелец или участник) + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + + hasAccess := ownerID == userID + if !hasAccess { + var isMember bool + a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, + boardID, userID).Scan(&isMember) + hasAccess = isMember + } + + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + // Получаем желания на доске (используем существующую логику, но фильтруем по board_id) + items, err := a.getWishlistItemsByBoard(boardID, userID) + if err != nil { + log.Printf("Error getting board items: %v", err) + sendErrorWithCORS(w, "Error getting items", http.StatusInternalServerError) + return + } + + // Разделяем на unlocked/locked + unlocked := []WishlistItem{} + locked := []WishlistItem{} + for _, item := range items { + if item.Unlocked { + unlocked = append(unlocked, item) + } else { + locked = append(locked, item) + } + } + + // Сортируем разблокированные по цене от меньшего к большему + sort.Slice(unlocked, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if unlocked[i].Price != nil { + priceI = *unlocked[i].Price + } + if unlocked[j].Price != nil { + priceJ = *unlocked[j].Price + } + if priceI == priceJ { + return unlocked[i].ID < unlocked[j].ID + } + return priceI < priceJ + }) + + // Разделяем заблокированные на группы (с задачами и без задач) + lockedWithoutTasks := []WishlistItem{} + lockedWithTasks := []WishlistItem{} + + for _, item := range locked { + hasUncompletedTasks := false + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" && (cond.TaskCompleted == nil || !*cond.TaskCompleted) { + hasUncompletedTasks = true + break + } + } + if hasUncompletedTasks { + lockedWithTasks = append(lockedWithTasks, item) + } else { + lockedWithoutTasks = append(lockedWithoutTasks, item) + } + } + + // Сортируем каждую группу по времени разблокировки (от меньшего срока к большему) + sort.Slice(lockedWithoutTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) + if valueI == valueJ { + return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID + } + return valueI < valueJ + }) + + sort.Slice(lockedWithTasks, func(i, j int) bool { + valueI := a.calculateLockedSortValue(lockedWithTasks[i], userID) + valueJ := a.calculateLockedSortValue(lockedWithTasks[j], userID) + if valueI == valueJ { + return lockedWithTasks[i].ID < lockedWithTasks[j].ID + } + return valueI < valueJ + }) + + // Объединяем: сначала без задач, потом с задачами + locked = append(lockedWithoutTasks, lockedWithTasks...) + + // Считаем завершённые + var completedCount int + a.DB.QueryRow(`SELECT COUNT(*) FROM wishlist_items WHERE board_id = $1 AND completed = TRUE AND deleted = FALSE`, + boardID).Scan(&completedCount) + + response := WishlistResponse{ + Unlocked: unlocked, + Locked: locked, + CompletedCount: completedCount, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// getBoardCompletedHandler возвращает завершённые желания на доске +func (a *App) getBoardCompletedHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["boardId"]) + if err != nil { + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к доске (владелец или участник) + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + + hasAccess := ownerID == userID + if !hasAccess { + var isMember bool + a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, + boardID, userID).Scan(&isMember) + hasAccess = isMember + } + + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + // Получаем завершённые желания на доске (отдельный запрос, так как getWishlistItemsByBoard исключает завершённые) + query := ` + SELECT + wi.id, + wi.name, + wi.price, + wi.image_path, + wi.link, + wi.completed, + wi.project_id AS item_project_id, + wp.name AS item_project_name, + wc.id AS condition_id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id, + tc.task_id, + t.name AS task_name, + sc.project_id, + p.name AS project_name, + sc.required_points, + sc.start_date, + COALESCE(u.name, u.email) AS user_name + FROM wishlist_items wi + LEFT JOIN projects wp ON wi.project_id = wp.id AND wp.deleted = FALSE + LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + LEFT JOIN projects p ON sc.project_id = p.id AND p.deleted = FALSE + LEFT JOIN users u ON wc.user_id = u.id + WHERE wi.board_id = $1 + AND wi.deleted = FALSE + AND wi.completed = TRUE + ORDER BY wi.id, wc.display_order, wc.id + ` + + rows, err := a.DB.Query(query, boardID) + if err != nil { + log.Printf("Error executing query for board completed items (boardID=%d): %v", boardID, err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting completed items: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + itemsMap := make(map[int]*WishlistItem) + + for rows.Next() { + var itemID int + var name string + var price sql.NullFloat64 + var imagePath sql.NullString + var link sql.NullString + var completed bool + var itemProjectID sql.NullInt64 + var itemProjectName sql.NullString + var conditionID sql.NullInt64 + var displayOrder sql.NullInt64 + var taskConditionID sql.NullInt64 + var scoreConditionID sql.NullInt64 + var userIDCond sql.NullInt64 + var taskID sql.NullInt64 + var taskName sql.NullString + var projectID sql.NullInt64 + var projectName sql.NullString + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + var userName sql.NullString + + err := rows.Scan( + &itemID, &name, &price, &imagePath, &link, &completed, &itemProjectID, &itemProjectName, + &conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &userIDCond, + &taskID, &taskName, &projectID, &projectName, &requiredPoints, &startDate, &userName, + ) + if err != nil { + log.Printf("Error scanning completed wishlist item: %v", err) + continue + } + + item, exists := itemsMap[itemID] + if !exists { + item = &WishlistItem{ + ID: itemID, + Name: name, + Completed: completed, + UnlockConditions: []UnlockConditionDisplay{}, + } + if price.Valid { + item.Price = &price.Float64 + } + if imagePath.Valid && imagePath.String != "" { + url := imagePath.String + if !strings.HasPrefix(url, "http") { + url = url + "?t=" + strconv.FormatInt(time.Now().Unix(), 10) + } + item.ImageURL = &url + } + if link.Valid { + item.Link = &link.String + } + // Для завершённых желаний не устанавливаем project_id и project_name + // Они отображаются отдельно без группировки по проектам + itemsMap[itemID] = item + } + + if conditionID.Valid { + // Определяем владельца условия + conditionOwnerID := userID + if userIDCond.Valid { + conditionOwnerID = int(userIDCond.Int64) + } + + // Если это условие по задаче, проверяем существует ли задача + if taskConditionID.Valid && taskID.Valid { + // Проверяем, существует ли задача (не удалена) + var taskExists bool + err := a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE)`, taskID.Int64, conditionOwnerID).Scan(&taskExists) + if err != nil || !taskExists { + // Задача удалена - не добавляем условие в список, но при проверке блокировки оно считается выполненным + continue + } + } + + condition := UnlockConditionDisplay{ + ID: int(conditionID.Int64), + DisplayOrder: int(displayOrder.Int64), + } + + if taskConditionID.Valid { + condition.Type = "task_completion" + if taskID.Valid { + taskIDVal := int(taskID.Int64) + condition.TaskID = &taskIDVal + if taskName.Valid { + condition.TaskName = &taskName.String + } + } + } else if scoreConditionID.Valid { + condition.Type = "project_points" + if projectID.Valid { + projectIDVal := int(projectID.Int64) + condition.ProjectID = &projectIDVal + if projectName.Valid { + condition.ProjectName = &projectName.String + } + if requiredPoints.Valid { + condition.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + dateStr := startDate.Time.Format("2006-01-02") + condition.StartDate = &dateStr + } + } + } + + if userIDCond.Valid { + userIDVal := int(userIDCond.Int64) + condition.UserID = &userIDVal + if userName.Valid { + condition.UserName = &userName.String + } + } + + item.UnlockConditions = append(item.UnlockConditions, condition) + } + } + + if err := rows.Err(); err != nil { + log.Printf("Error iterating rows for board completed items (boardID=%d): %v", boardID, err) + sendErrorWithCORS(w, fmt.Sprintf("Error getting completed items: %v", err), http.StatusInternalServerError) + return + } + + // Преобразуем map в slice + completed := make([]WishlistItem, 0, len(itemsMap)) + for _, item := range itemsMap { + completed = append(completed, *item) + } + + // Сортируем по цене (дорогие → дешёвые) + sort.Slice(completed, func(i, j int) bool { + priceI := 0.0 + priceJ := 0.0 + if completed[i].Price != nil { + priceI = *completed[i].Price + } + if completed[j].Price != nil { + priceJ = *completed[j].Price + } + return priceI > priceJ + }) + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(completed) +} + +// calculateUnlockedSortValue считает сумму баллов, которые были нужны для разблокировки +// Задача считается как 1 балл, project_points как required_points +func calculateUnlockedSortValue(item WishlistItem) float64 { + var totalRequired float64 = 0.0 + for _, condition := range item.UnlockConditions { + if condition.Type == "task_completion" { + totalRequired += 1.0 + } else if condition.Type == "project_points" { + if condition.RequiredPoints != nil { + totalRequired += *condition.RequiredPoints + } + } + } + return totalRequired +} + +// calculateLockedSortValue считает сумму оставшихся баллов для разблокировки +// Задача считается как 1 балл (если не выполнена), project_points как remaining баллы +func (a *App) calculateLockedSortValue(item WishlistItem, userID int) float64 { + // Если нет условий, возвращаем большое значение (отсутствие условий = все выполнены) + if len(item.UnlockConditions) == 0 { + return 999999.0 + } + + maxWeeks := 0.0 + hasProjectConditions := false + allCompleted := true + + for _, condition := range item.UnlockConditions { + if condition.Type == "project_points" { + hasProjectConditions = true + if condition.RequiredPoints != nil { + var startDate sql.NullTime + if condition.StartDate != nil { + date, err := time.Parse("2006-01-02", *condition.StartDate) + if err == nil { + startDate = sql.NullTime{Time: date, Valid: true} + } + } + + // ВАЖНО: Используем владельца условия из condition.UserID + // Если condition.UserID есть - это владелец условия + // Если нет - получаем владельца желания из БД (для старых условий) + // НЕ используем текущего пользователя (userID), так как условие может принадлежать другому пользователю + conditionOwnerID := 0 + if condition.UserID != nil { + conditionOwnerID = *condition.UserID + } else { + // Если нет владельца условия, получаем владельца желания из БД + var itemOwnerID int + err := a.DB.QueryRow(`SELECT user_id FROM wishlist_items WHERE id = $1`, item.ID).Scan(&itemOwnerID) + if err != nil { + log.Printf("Error getting wishlist item owner for item %d: %v", item.ID, err) + continue // Пропускаем условие, если не можем получить владельца + } + conditionOwnerID = itemOwnerID + } + + // Получаем projectID из условия + if condition.ProjectID != nil { + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, // Владелец условия, а не текущий пользователь + ) + // weeks > 0 && < 99999 означает, что условие еще не выполнено и расчет успешен + // weeks == 0 означает условие выполнено + // weeks == 99999 означает медиана отсутствует (нельзя рассчитать) или ошибка расчета + if weeks == 0 { + // Условие выполнено - считаем как 0 недель + // Не обновляем maxWeeks, так как 0 < любого положительного значения + } else if weeks > 0 && weeks < 99999 { + // Условие не выполнено - учитываем в maxWeeks + allCompleted = false + if weeks > maxWeeks { + maxWeeks = weeks + } + } else { + // weeks == 99999 - нельзя рассчитать, считаем как невыполненное + allCompleted = false + } + } + } + } + } + + // Если были условия по проектам и все выполнены, возвращаем 0 (закрытые испытания = 0 недель) + if hasProjectConditions && allCompleted { + return 0.0 + } + + // Если не было условий по проектам (только задачи или нет условий) + if !hasProjectConditions { + return 999999.0 + } + + return maxWeeks +} + +// getWishlistItemsByBoard загружает желания конкретной доски + +func (a *App) getWishlistItemsByBoard(boardID int, userID int) ([]WishlistItem, error) { + query := ` + SELECT + wi.id, + wi.name, + wi.price, + wi.image_path, + wi.link, + wi.completed, + wi.group_name, + COALESCE(wi.author_id, wi.user_id) AS item_owner_id, + wc.id AS condition_id, + wc.display_order, + wc.task_condition_id, + wc.score_condition_id, + wc.user_id AS condition_user_id, + tc.task_id, + t.name AS task_name, + sc.project_id, + p.name AS project_name, + sc.required_points, + sc.start_date + FROM wishlist_items wi + LEFT JOIN wishlist_conditions wc ON wi.id = wc.wishlist_item_id + LEFT JOIN task_conditions tc ON wc.task_condition_id = tc.id + LEFT JOIN tasks t ON tc.task_id = t.id AND t.deleted = FALSE + LEFT JOIN score_conditions sc ON wc.score_condition_id = sc.id + LEFT JOIN projects p ON sc.project_id = p.id AND p.deleted = FALSE + WHERE wi.board_id = $1 + AND wi.deleted = FALSE + AND wi.completed = FALSE + ORDER BY wi.id, wc.display_order, wc.id + ` + + rows, err := a.DB.Query(query, boardID) + if err != nil { + return nil, err + } + defer rows.Close() + + itemsMap := make(map[int]*WishlistItem) + + for rows.Next() { + var itemID int + var name string + var price sql.NullFloat64 + var imagePath sql.NullString + var link sql.NullString + var completed bool + var groupName sql.NullString + var itemOwnerID sql.NullInt64 + var conditionID sql.NullInt64 + var displayOrder sql.NullInt64 + var taskConditionID sql.NullInt64 + var scoreConditionID sql.NullInt64 + var conditionUserID sql.NullInt64 + var taskID sql.NullInt64 + var taskName sql.NullString + var projectID sql.NullInt64 + var projectName sql.NullString + var requiredPoints sql.NullFloat64 + var startDate sql.NullTime + + err := rows.Scan( + &itemID, &name, &price, &imagePath, &link, &completed, &groupName, &itemOwnerID, + &conditionID, &displayOrder, &taskConditionID, &scoreConditionID, &conditionUserID, + &taskID, &taskName, &projectID, &projectName, &requiredPoints, &startDate, + ) + if err != nil { + log.Printf("Error scanning wishlist item: %v", err) + continue + } + + item, exists := itemsMap[itemID] + if !exists { + item = &WishlistItem{ + ID: itemID, + Name: name, + Completed: completed, + UnlockConditions: []UnlockConditionDisplay{}, + } + if price.Valid { + item.Price = &price.Float64 + } + if imagePath.Valid && imagePath.String != "" { + url := imagePath.String + if !strings.HasPrefix(url, "http") { + url = url + "?t=" + strconv.FormatInt(time.Now().Unix(), 10) + } + item.ImageURL = &url + } + if link.Valid { + item.Link = &link.String + } + if groupName.Valid && groupName.String != "" { + groupNameVal := groupName.String + item.GroupName = &groupNameVal + } + itemsMap[itemID] = item + } + + if conditionID.Valid { + // Используем user_id из условия, если он есть, иначе используем владельца желания + if !itemOwnerID.Valid { + log.Printf("Warning: item_owner_id is NULL for wishlist item %d, skipping condition", itemID) + continue + } + conditionOwnerID := int(itemOwnerID.Int64) + if conditionUserID.Valid { + conditionOwnerID = int(conditionUserID.Int64) + } + + // Если это условие по задаче, проверяем существует ли задача + if taskConditionID.Valid && taskID.Valid { + // Проверяем, существует ли задача (не удалена) + var taskExists bool + err := a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE)`, taskID.Int64, conditionOwnerID).Scan(&taskExists) + if err != nil || !taskExists { + // Задача удалена - не добавляем условие в список, но при проверке блокировки оно считается выполненным + continue + } + } + + condition := UnlockConditionDisplay{ + ID: int(conditionID.Int64), + DisplayOrder: int(displayOrder.Int64), + } + + if conditionUserID.Valid { + conditionOwnerIDVal := int(conditionUserID.Int64) + condition.UserID = &conditionOwnerIDVal + } else { + itemOwnerIDVal := int(itemOwnerID.Int64) + condition.UserID = &itemOwnerIDVal + } + + if taskConditionID.Valid { + condition.Type = "task_completion" + if taskName.Valid { + condition.TaskName = &taskName.String + } + // Проверяем выполнена ли задача для владельца условия + if taskID.Valid { + taskIDVal := int(taskID.Int64) + condition.TaskID = &taskIDVal + var taskCompleted int + err := a.DB.QueryRow(`SELECT completed FROM tasks WHERE id = $1 AND user_id = $2 AND deleted = FALSE`, taskID.Int64, conditionOwnerID).Scan(&taskCompleted) + if err == nil { + isCompleted := taskCompleted > 0 + condition.TaskCompleted = &isCompleted + } + } + } else if scoreConditionID.Valid { + condition.Type = "project_points" + if projectName.Valid { + condition.ProjectName = &projectName.String + } + if projectID.Valid { + projectIDVal := int(projectID.Int64) + condition.ProjectID = &projectIDVal + // Считаем текущие баллы для владельца условия + points, _ := a.calculateProjectPointsFromDate(int(projectID.Int64), startDate, conditionOwnerID) + condition.CurrentPoints = &points + } + if requiredPoints.Valid { + condition.RequiredPoints = &requiredPoints.Float64 + } + if startDate.Valid { + dateStr := startDate.Time.Format("2006-01-02") + condition.StartDate = &dateStr + } + // Рассчитываем и форматируем срок разблокировки + if condition.ProjectID != nil && condition.RequiredPoints != nil { + weeks := a.calculateProjectUnlockWeeks( + *condition.ProjectID, + *condition.RequiredPoints, + startDate, + conditionOwnerID, + ) + weeksText := formatWeeksText(weeks) + condition.WeeksText = &weeksText + } + } + + item.UnlockConditions = append(item.UnlockConditions, condition) + } + } + + // Преобразуем map в slice и определяем unlocked + items := make([]WishlistItem, 0, len(itemsMap)) + for _, item := range itemsMap { + // Сортируем условия в нужном порядке + a.sortUnlockConditions(item.UnlockConditions, userID) + + // Проверяем все условия + item.Unlocked = true + if len(item.UnlockConditions) > 0 { + for _, cond := range item.UnlockConditions { + if cond.Type == "task_completion" { + if cond.TaskCompleted == nil || !*cond.TaskCompleted { + item.Unlocked = false + break + } + } else if cond.Type == "project_points" { + if cond.CurrentPoints == nil || cond.RequiredPoints == nil || *cond.CurrentPoints < *cond.RequiredPoints { + item.Unlocked = false + break + } + } + } + } + + // Определяем первое заблокированное условие и количество остальных + if !item.Unlocked && !item.Completed { + lockedCount := 0 + var firstLocked *UnlockConditionDisplay + for i := range item.UnlockConditions { + condition := &item.UnlockConditions[i] + if isConditionLocked(*condition) { + lockedCount++ + if firstLocked == nil { + firstLocked = condition + } + } + } + if firstLocked != nil { + item.FirstLockedCondition = firstLocked + item.MoreLockedConditions = lockedCount - 1 + item.LockedConditionsCount = lockedCount + } + } + + // Загружаем связанную задачу текущего пользователя, если есть + var linkedTaskID, linkedTaskCompleted, linkedTaskUserID sql.NullInt64 + var linkedTaskName sql.NullString + var linkedTaskNextShowAt sql.NullTime + linkedTaskErr := a.DB.QueryRow(` + SELECT t.id, t.name, t.completed, t.next_show_at, t.user_id + FROM tasks t + WHERE t.wishlist_id = $1 AND t.user_id = $2 AND t.deleted = FALSE + LIMIT 1 + `, item.ID, userID).Scan(&linkedTaskID, &linkedTaskName, &linkedTaskCompleted, &linkedTaskNextShowAt, &linkedTaskUserID) + + if linkedTaskErr == nil && linkedTaskID.Valid { + linkedTask := &LinkedTask{ + ID: int(linkedTaskID.Int64), + Name: linkedTaskName.String, + Completed: int(linkedTaskCompleted.Int64), + } + if linkedTaskNextShowAt.Valid { + nextShowAtStr := linkedTaskNextShowAt.Time.Format(time.RFC3339) + linkedTask.NextShowAt = &nextShowAtStr + } + if linkedTaskUserID.Valid { + userIDVal := int(linkedTaskUserID.Int64) + linkedTask.UserID = &userIDVal + } + item.LinkedTask = linkedTask + } else if linkedTaskErr != sql.ErrNoRows { + log.Printf("Error loading linked task for wishlist %d: %v", item.ID, linkedTaskErr) + // Не возвращаем ошибку, просто не устанавливаем linked_task + } + + // Подсчитываем общее количество не закрытых задач для этого желания (всех пользователей) + // Исключаем linked_task из подсчета, если она есть + // Учитываем только не закрытые задачи (completed = 0) + var tasksCount int + if linkedTaskID.Valid { + // Если есть linked_task, исключаем её из подсчета + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 AND t.id != $2 + `, item.ID, linkedTaskID.Int64).Scan(&tasksCount) + } else { + // Если нет linked_task, считаем все не закрытые задачи + err = a.DB.QueryRow(` + SELECT COUNT(*) + FROM tasks t + WHERE t.wishlist_id = $1 AND t.deleted = FALSE AND t.completed = 0 + `, item.ID).Scan(&tasksCount) + } + if err != nil { + log.Printf("Error counting tasks for wishlist %d: %v", item.ID, err) + tasksCount = 0 + } + item.TasksCount = tasksCount + + items = append(items, *item) + } + + return items, nil +} + +// createBoardItemHandler создаёт желание на доске +func (a *App) createBoardItemHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + boardID, err := strconv.Atoi(vars["boardId"]) + if err != nil { + log.Printf("createBoardItemHandler: Error parsing boardId from URL: %v, vars['boardId']='%s'", err, vars["boardId"]) + sendErrorWithCORS(w, "Invalid board ID", http.StatusBadRequest) + return + } + + // Проверяем доступ к доске + var ownerID int + err = a.DB.QueryRow(`SELECT owner_id FROM wishlist_boards WHERE id = $1 AND deleted = FALSE`, boardID).Scan(&ownerID) + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Board not found", http.StatusNotFound) + return + } + + hasAccess := ownerID == userID + if !hasAccess { + var isMember bool + a.DB.QueryRow(`SELECT EXISTS(SELECT 1 FROM wishlist_board_members WHERE board_id = $1 AND user_id = $2)`, + boardID, userID).Scan(&isMember) + hasAccess = isMember + } + + if !hasAccess { + sendErrorWithCORS(w, "Access denied", http.StatusForbidden) + return + } + + var req WishlistRequest + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("createBoardItemHandler: Error decoding wishlist request: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + log.Printf("createBoardItemHandler: decoded request - name='%s', price=%v, link='%s', conditions=%d", + req.Name, req.Price, req.Link, len(req.UnlockConditions)) + + if req.UnlockConditions == nil { + log.Printf("createBoardItemHandler: WARNING - UnlockConditions is nil, initializing empty slice") + req.UnlockConditions = []UnlockConditionRequest{} + } + + if strings.TrimSpace(req.Name) == "" { + log.Printf("createBoardItemHandler: Name is required") + sendErrorWithCORS(w, "Name is required", http.StatusBadRequest) + return + } + + tx, err := a.DB.Begin() + if err != nil { + log.Printf("Error starting transaction: %v", err) + sendErrorWithCORS(w, "Error creating item", http.StatusInternalServerError) + return + } + defer tx.Rollback() + + var itemID int + err = tx.QueryRow(` + INSERT INTO wishlist_items (user_id, board_id, author_id, name, price, link, group_name, completed, deleted) + VALUES ($1, $2, $3, $4, $5, $6, $7, FALSE, FALSE) + RETURNING id + `, ownerID, boardID, userID, strings.TrimSpace(req.Name), req.Price, req.Link, req.GroupName).Scan(&itemID) + + if err != nil { + log.Printf("createBoardItemHandler: Error creating board item: %v", err) + sendErrorWithCORS(w, "Error creating item", http.StatusInternalServerError) + return + } + + log.Printf("createBoardItemHandler: created wishlist item id=%d", itemID) + + // Сохраняем условия с user_id текущего пользователя + if len(req.UnlockConditions) > 0 { + log.Printf("createBoardItemHandler: saving %d conditions", len(req.UnlockConditions)) + err = a.saveWishlistConditionsWithUserID(tx, itemID, userID, req.UnlockConditions) + if err != nil { + log.Printf("createBoardItemHandler: Error saving wishlist conditions: %v", err) + sendErrorWithCORS(w, "Error saving conditions", http.StatusInternalServerError) + return + } + log.Printf("createBoardItemHandler: conditions saved successfully") + } else { + log.Printf("createBoardItemHandler: no conditions to save") + } + + if err := tx.Commit(); err != nil { + log.Printf("Error committing transaction: %v", err) + sendErrorWithCORS(w, "Error creating item", http.StatusInternalServerError) + return + } + + // Обновляем MV для групповых саджестов + if req.GroupName != nil && *req.GroupName != "" { + if err := a.refreshGroupSuggestionsMV(); err != nil { + log.Printf("Warning: Failed to refresh group suggestions MV: %v", err) + } + } + + // Возвращаем созданное желание + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + json.NewEncoder(w).Encode(map[string]int{"id": itemID}) +} + +// saveWishlistConditionsWithUserID сохраняет условия с указанием user_id +func (a *App) saveWishlistConditionsWithUserID(tx *sql.Tx, wishlistItemID int, userID int, conditions []UnlockConditionRequest) error { + log.Printf("saveWishlistConditionsWithUserID: wishlistItemID=%d, userID=%d, conditions=%d", + wishlistItemID, userID, len(conditions)) + + for i, cond := range conditions { + displayOrder := i + if cond.DisplayOrder != nil { + displayOrder = *cond.DisplayOrder + } + + log.Printf("saveWishlistConditionsWithUserID: processing condition %d - type='%s', taskID=%v, projectID=%v", + i, cond.Type, cond.TaskID, cond.ProjectID) + + switch cond.Type { + case "task_completion": + if cond.TaskID == nil { + continue + } + // Создаём task_condition + var taskConditionID int + err := tx.QueryRow(` + INSERT INTO task_conditions (task_id) + VALUES ($1) + ON CONFLICT (task_id) DO UPDATE SET task_id = EXCLUDED.task_id + RETURNING id + `, *cond.TaskID).Scan(&taskConditionID) + if err != nil { + log.Printf("saveWishlistConditionsWithUserID: error creating task condition: %v", err) + return fmt.Errorf("error creating task condition: %w", err) + } + // Связываем с wishlist_item + _, err = tx.Exec(` + INSERT INTO wishlist_conditions (wishlist_item_id, user_id, task_condition_id, display_order) + VALUES ($1, $2, $3, $4) + `, wishlistItemID, userID, taskConditionID, displayOrder) + if err != nil { + log.Printf("saveWishlistConditionsWithUserID: error linking task condition: %v", err) + return fmt.Errorf("error linking task condition: %w", err) + } + + case "project_points": + if cond.ProjectID == nil || cond.RequiredPoints == nil { + continue + } + // Создаём score_condition + var scoreConditionID int + var startDateVal interface{} = nil + if cond.StartDate != nil && *cond.StartDate != "" { + startDateVal = *cond.StartDate + } + err := tx.QueryRow(` + INSERT INTO score_conditions (project_id, required_points, start_date) + VALUES ($1, $2, $3) + ON CONFLICT (project_id, required_points, start_date) DO UPDATE SET required_points = EXCLUDED.required_points + RETURNING id + `, *cond.ProjectID, *cond.RequiredPoints, startDateVal).Scan(&scoreConditionID) + if err != nil { + log.Printf("saveWishlistConditionsWithUserID: error creating score condition: %v", err) + return fmt.Errorf("error creating score condition: %w", err) + } + // Связываем с wishlist_item + _, err = tx.Exec(` + INSERT INTO wishlist_conditions (wishlist_item_id, user_id, score_condition_id, display_order) + VALUES ($1, $2, $3, $4) + `, wishlistItemID, userID, scoreConditionID, displayOrder) + if err != nil { + log.Printf("saveWishlistConditionsWithUserID: error linking score condition: %v", err) + return fmt.Errorf("error linking score condition: %w", err) + } + } + } + return nil +} + +// LinkMetadataResponse структура ответа с метаданными ссылки +type LinkMetadataResponse struct { + Title string `json:"title,omitempty"` + Image string `json:"image,omitempty"` + Price *float64 `json:"price,omitempty"` + Description string `json:"description,omitempty"` +} + +// extractMetadataViaHTTP извлекает метаданные через HTTP-запрос и парсинг HTML +// Это стандартный метод, используемый Telegram, Facebook и другими сервисами +func extractMetadataViaHTTP(targetURL string) (*LinkMetadataResponse, error) { + // Валидация URL + parsedURL, err := url.Parse(targetURL) + if err != nil || parsedURL.Scheme == "" || parsedURL.Host == "" { + return nil, fmt.Errorf("invalid URL format: %s", targetURL) + } + + // HTTP клиент с увеличенным таймаутом и поддержкой редиректов + transport := &http.Transport{ + DisableKeepAlives: false, + MaxIdleConns: 10, + IdleConnTimeout: 90 * time.Second, + } + + client := &http.Client{ + Timeout: 30 * time.Second, + Transport: transport, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + if len(via) >= 10 { + return fmt.Errorf("stopped after 10 redirects") + } + return nil + }, + } + + httpReq, err := http.NewRequest("GET", targetURL, nil) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + + // Устанавливаем заголовки, максимально имитирующие реальный браузер Chrome + httpReq.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36") + httpReq.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7") + httpReq.Header.Set("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7") + httpReq.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd") + httpReq.Header.Set("Connection", "keep-alive") + httpReq.Header.Set("Upgrade-Insecure-Requests", "1") + httpReq.Header.Set("Sec-Fetch-Dest", "document") + httpReq.Header.Set("Sec-Fetch-Mode", "navigate") + httpReq.Header.Set("Sec-Fetch-Site", "none") + httpReq.Header.Set("Sec-Fetch-User", "?1") + httpReq.Header.Set("Sec-Ch-Ua", `"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"`) + httpReq.Header.Set("Sec-Ch-Ua-Mobile", "?0") + httpReq.Header.Set("Sec-Ch-Ua-Platform", `"macOS"`) + httpReq.Header.Set("Cache-Control", "max-age=0") + httpReq.Header.Set("DNT", "1") + + if parsedURL.Host != "" { + referer := fmt.Sprintf("%s://%s/", parsedURL.Scheme, parsedURL.Host) + httpReq.Header.Set("Referer", referer) + } + + time.Sleep(100 * time.Millisecond) + + resp, err := client.Do(httpReq) + if err != nil { + return nil, fmt.Errorf("error fetching URL: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, resp.Status) + } + + limitedReader := io.LimitReader(resp.Body, 512*1024) + bodyBytes, err := io.ReadAll(limitedReader) + if err != nil { + return nil, fmt.Errorf("error reading response: %w", err) + } + + if len(bodyBytes) >= 2 && bodyBytes[0] == 0x1f && bodyBytes[1] == 0x8b { + gzipReader, err := gzip.NewReader(bytes.NewReader(bodyBytes)) + if err == nil { + defer gzipReader.Close() + decompressed, err := io.ReadAll(gzipReader) + if err == nil { + bodyBytes = decompressed + } + } + } + + body := string(bodyBytes) + metadata := &LinkMetadataResponse{} + + // Извлекаем Open Graph теги + ogTitleRe := regexp.MustCompile(`(?i)]*(?:property|name)\s*=\s*["']og:title["'][^>]*content\s*=\s*["']([^"']+)["']`) + ogTitleRe2 := regexp.MustCompile(`(?i)]*content\s*=\s*["']([^"']+)["'][^>]*(?:property|name)\s*=\s*["']og:title["']`) + ogImageRe := regexp.MustCompile(`(?i)]*(?:property|name)\s*=\s*["']og:image["'][^>]*content\s*=\s*["']([^"']+)["']`) + ogImageRe2 := regexp.MustCompile(`(?i)]*content\s*=\s*["']([^"']+)["'][^>]*(?:property|name)\s*=\s*["']og:image["']`) + ogDescRe := regexp.MustCompile(`(?i)]*(?:property|name)\s*=\s*["']og:description["'][^>]*content\s*=\s*["']([^"']+)["']`) + ogDescRe2 := regexp.MustCompile(`(?i)]*content\s*=\s*["']([^"']+)["'][^>]*(?:property|name)\s*=\s*["']og:description["']`) + + if matches := ogTitleRe.FindStringSubmatch(body); len(matches) > 1 { + metadata.Title = strings.TrimSpace(matches[1]) + } else if matches := ogTitleRe2.FindStringSubmatch(body); len(matches) > 1 { + metadata.Title = strings.TrimSpace(matches[1]) + } + + if matches := ogImageRe.FindStringSubmatch(body); len(matches) > 1 { + metadata.Image = strings.TrimSpace(matches[1]) + } else if matches := ogImageRe2.FindStringSubmatch(body); len(matches) > 1 { + metadata.Image = strings.TrimSpace(matches[1]) + } + + if matches := ogDescRe.FindStringSubmatch(body); len(matches) > 1 { + metadata.Description = strings.TrimSpace(matches[1]) + } else if matches := ogDescRe2.FindStringSubmatch(body); len(matches) > 1 { + metadata.Description = strings.TrimSpace(matches[1]) + } + + if metadata.Title == "" { + titleRe := regexp.MustCompile(`(?i)]*>([^<]+)`) + if matches := titleRe.FindStringSubmatch(body); len(matches) > 1 { + metadata.Title = strings.TrimSpace(matches[1]) + if strings.Contains(strings.ToLower(metadata.Title), "робот") || + strings.Contains(strings.ToLower(metadata.Title), "captcha") || + strings.Contains(strings.ToLower(metadata.Title), "вы не робот") { + metadata.Title = "" + metadata.Image = "" + metadata.Description = "" + } + } + } + + if metadata.Image == "" { + twitterImageRe := regexp.MustCompile(`(?i)]*(?:property|name)\s*=\s*["']twitter:image["'][^>]*content\s*=\s*["']([^"']+)["']`) + if matches := twitterImageRe.FindStringSubmatch(body); len(matches) > 1 { + metadata.Image = strings.TrimSpace(matches[1]) + } else { + twitterImageRe2 := regexp.MustCompile(`(?i)]*content\s*=\s*["']([^"']+)["'][^>]*(?:property|name)\s*=\s*["']twitter:image["']`) + if matches := twitterImageRe2.FindStringSubmatch(body); len(matches) > 1 { + metadata.Image = strings.TrimSpace(matches[1]) + } + } + } + + // Поиск цены + jsonLdRe := regexp.MustCompile(`(?i)]*type\s*=\s*["']application/ld\+json["'][^>]*>([^<]+)`) + jsonLdMatches := jsonLdRe.FindAllStringSubmatch(body, -1) + for _, match := range jsonLdMatches { + if len(match) > 1 { + jsonStr := match[1] + priceRe := regexp.MustCompile(`(?i)"price"\s*:\s*"?(\d+(?:[.,]\d+)?)"?`) + if priceMatches := priceRe.FindStringSubmatch(jsonStr); len(priceMatches) > 1 { + priceStr := strings.ReplaceAll(priceMatches[1], ",", ".") + if price, err := strconv.ParseFloat(priceStr, 64); err == nil && price > 0 && price < 100000000 { + metadata.Price = &price + break + } + } + } + } + + if metadata.Price == nil { + priceRe := regexp.MustCompile(`(?i)"price"\s*:\s*"?(\d+(?:[.,]\d+)?)"?`) + if matches := priceRe.FindStringSubmatch(body); len(matches) > 1 { + priceStr := strings.ReplaceAll(matches[1], ",", ".") + if price, err := strconv.ParseFloat(priceStr, 64); err == nil && price > 0 && price < 100000000 { + metadata.Price = &price + } + } + } + + if metadata.Price == nil { + metaPriceRe := regexp.MustCompile(`(?i)]*(?:property|name)\s*=\s*["'](?:price|product:price)["'][^>]*content\s*=\s*["']([^"']+)["']`) + if matches := metaPriceRe.FindStringSubmatch(body); len(matches) > 1 { + priceStr := strings.ReplaceAll(strings.TrimSpace(matches[1]), ",", ".") + priceStr = regexp.MustCompile(`[^\d.]`).ReplaceAllString(priceStr, "") + if price, err := strconv.ParseFloat(priceStr, 64); err == nil && price > 0 && price < 100000000 { + metadata.Price = &price + } + } + } + + // Нормализуем URL изображения + if metadata.Image != "" && !strings.HasPrefix(metadata.Image, "http") { + baseURL := fmt.Sprintf("%s://%s", parsedURL.Scheme, parsedURL.Host) + if strings.HasPrefix(metadata.Image, "//") { + metadata.Image = parsedURL.Scheme + ":" + metadata.Image + } else if strings.HasPrefix(metadata.Image, "/") { + metadata.Image = baseURL + metadata.Image + } else { + metadata.Image = baseURL + "/" + metadata.Image + } + } + + metadata.Title = html.UnescapeString(metadata.Title) + metadata.Description = html.UnescapeString(metadata.Description) + + return metadata, nil +} + +// extractMetadataViaChrome извлекает метаданные через headless Chrome +// Используется как fallback для JavaScript-рендеринга страниц +func extractMetadataViaChrome(targetURL string) (*LinkMetadataResponse, error) { + opts := append(chromedp.DefaultExecAllocatorOptions[:], + chromedp.Flag("headless", true), + chromedp.Flag("disable-gpu", true), + chromedp.Flag("no-sandbox", true), + chromedp.Flag("disable-dev-shm-usage", true), + ) + + allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...) + defer cancel() + + ctx, cancel := chromedp.NewContext(allocCtx, chromedp.WithLogf(log.Printf)) + defer cancel() + + ctx, cancel = context.WithTimeout(ctx, 30*time.Second) + defer cancel() + + metadata := &LinkMetadataResponse{} + + // Используем map для получения данных из JavaScript + var result map[string]interface{} + + err := chromedp.Run(ctx, + chromedp.Navigate(targetURL), + chromedp.WaitVisible("body", chromedp.ByQuery), + chromedp.Sleep(2*time.Second), // Даем время на выполнение JavaScript + chromedp.Evaluate(` + (function() { + const result = { + title: '', + image: '', + description: '', + price: null + }; + + // Извлекаем og:title + const ogTitle = document.querySelector('meta[property="og:title"]'); + if (ogTitle) { + result.title = ogTitle.getAttribute('content') || ''; + } else { + // Fallback на обычный title + const titleEl = document.querySelector('title'); + if (titleEl) { + result.title = titleEl.textContent || ''; + } + } + + // Извлекаем og:image + const ogImage = document.querySelector('meta[property="og:image"]'); + if (ogImage) { + result.image = ogImage.getAttribute('content') || ''; + } else { + // Fallback на twitter:image + const twitterImage = document.querySelector('meta[name="twitter:image"]'); + if (twitterImage) { + result.image = twitterImage.getAttribute('content') || ''; + } + } + + // Извлекаем og:description + const ogDesc = document.querySelector('meta[property="og:description"]'); + if (ogDesc) { + result.description = ogDesc.getAttribute('content') || ''; + } + + // Извлекаем цену из JSON-LD + const jsonLdScripts = document.querySelectorAll('script[type="application/ld+json"]'); + for (const script of jsonLdScripts) { + try { + const data = JSON.parse(script.textContent); + if (data.offers && data.offers.price) { + result.price = parseFloat(data.offers.price); + break; + } + if (data.price) { + result.price = parseFloat(data.price); + break; + } + } catch (e) {} + } + + // Если не нашли в JSON-LD, ищем в meta тегах + if (!result.price) { + const priceMeta = document.querySelector('meta[property="product:price:amount"]'); + if (priceMeta) { + result.price = parseFloat(priceMeta.getAttribute('content')); + } + } + + // Нормализуем URL изображения + if (result.image && !result.image.startsWith('http')) { + const baseURL = window.location.origin; + if (result.image.startsWith('//')) { + result.image = window.location.protocol + result.image; + } else if (result.image.startsWith('/')) { + result.image = baseURL + result.image; + } else { + result.image = baseURL + '/' + result.image; + } + } + + return result; + })(); + `, &result), + ) + + if err != nil { + return nil, fmt.Errorf("error extracting metadata via Chrome: %w", err) + } + + // Преобразуем map в структуру + if title, ok := result["title"].(string); ok { + metadata.Title = strings.TrimSpace(title) + } + if image, ok := result["image"].(string); ok { + metadata.Image = strings.TrimSpace(image) + } + if desc, ok := result["description"].(string); ok { + metadata.Description = strings.TrimSpace(desc) + } + if priceVal := result["price"]; priceVal != nil { + if priceFloat, ok := priceVal.(float64); ok { + if priceFloat > 0 && priceFloat < 100000000 { + metadata.Price = &priceFloat + } + } + } + + // Валидация и очистка данных + if metadata.Title != "" { + metadata.Title = strings.TrimSpace(metadata.Title) + if strings.Contains(strings.ToLower(metadata.Title), "робот") || + strings.Contains(strings.ToLower(metadata.Title), "captcha") || + strings.Contains(strings.ToLower(metadata.Title), "вы не робот") { + metadata.Title = "" + metadata.Image = "" + metadata.Description = "" + } + } + + if metadata.Price != nil && (*metadata.Price <= 0 || *metadata.Price >= 100000000) { + metadata.Price = nil + } + + return metadata, nil +} + +// extractLinkMetadataHandler извлекает метаданные (Open Graph, Title, Image) из URL +// Использует HTTP-метод как основной (стандартный подход), chromedp как fallback +func (a *App) extractLinkMetadataHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + var req struct { + URL string `json:"url"` + } + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + log.Printf("Error decoding metadata request body: %v", err) + sendErrorWithCORS(w, "Invalid request body", http.StatusBadRequest) + return + } + + if req.URL == "" { + log.Printf("Empty URL in metadata request") + sendErrorWithCORS(w, "URL is required", http.StatusBadRequest) + return + } + + // Валидация URL + _, err := url.Parse(req.URL) + if err != nil { + log.Printf("Invalid URL format: %s, error: %v", req.URL, err) + sendErrorWithCORS(w, "Invalid URL", http.StatusBadRequest) + return + } + + log.Printf("Extracting metadata for URL: %s", req.URL) + + // Шаг 1: Пытаемся получить метаданные через HTTP-метод (основной, быстрый метод) + metadata, err := extractMetadataViaHTTP(req.URL) + if err != nil { + log.Printf("HTTP method failed for URL %s: %v", req.URL, err) + metadata = &LinkMetadataResponse{} // Инициализируем пустую структуру для fallback + } + + // Шаг 2: Проверяем, достаточно ли данных из HTTP-метода + // Если нет title и image, используем chromedp fallback + needsFallback := (metadata.Title == "" && metadata.Image == "") + + if needsFallback { + log.Printf("HTTP method didn't return enough data for URL %s, trying Chrome fallback", req.URL) + chromeMetadata, chromeErr := extractMetadataViaChrome(req.URL) + if chromeErr != nil { + log.Printf("Chrome fallback failed for URL %s: %v", req.URL, chromeErr) + // Возвращаем результаты HTTP-метода, даже если они пустые + } else { + // Объединяем результаты: приоритет у HTTP, дополняем из Chrome + if metadata.Title == "" && chromeMetadata.Title != "" { + metadata.Title = chromeMetadata.Title + log.Printf("Chrome fallback provided title: %s", chromeMetadata.Title) + } + if metadata.Image == "" && chromeMetadata.Image != "" { + metadata.Image = chromeMetadata.Image + log.Printf("Chrome fallback provided image: %s", chromeMetadata.Image) + } + if metadata.Description == "" && chromeMetadata.Description != "" { + metadata.Description = chromeMetadata.Description + } + if metadata.Price == nil && chromeMetadata.Price != nil { + metadata.Price = chromeMetadata.Price + } + } + } else { + log.Printf("HTTP method successfully extracted metadata for URL %s", req.URL) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(metadata) +} + +// proxyImageHandler проксирует изображение через бэкенд для обхода CORS +func (a *App) proxyImageHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + imageURL := r.URL.Query().Get("url") + if imageURL == "" { + sendErrorWithCORS(w, "URL parameter is required", http.StatusBadRequest) + return + } + + // Валидация URL + parsedURL, err := url.Parse(imageURL) + if err != nil || parsedURL.Scheme == "" || parsedURL.Host == "" { + log.Printf("Invalid image URL: %s", imageURL) + sendErrorWithCORS(w, "Invalid URL", http.StatusBadRequest) + return + } + + log.Printf("Proxying image for user %d: %s", userID, imageURL) + + // Создаем HTTP запрос к изображению + client := &http.Client{ + Timeout: 30 * time.Second, + } + + req, err := http.NewRequest("GET", imageURL, nil) + if err != nil { + log.Printf("Error creating image request: %v", err) + sendErrorWithCORS(w, "Error creating request", http.StatusInternalServerError) + return + } + + // Устанавливаем User-Agent для имитации браузера + req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36") + req.Header.Set("Referer", parsedURL.Scheme+"://"+parsedURL.Host+"/") + + resp, err := client.Do(req) + if err != nil { + log.Printf("Error fetching image: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error fetching image: %v", err), http.StatusBadGateway) + return + } + defer resp.Body.Close() + + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + log.Printf("Image fetch returned status %d", resp.StatusCode) + sendErrorWithCORS(w, fmt.Sprintf("HTTP %d", resp.StatusCode), http.StatusBadGateway) + return + } + + // Ограничиваем размер (максимум 5MB) + limitedReader := io.LimitReader(resp.Body, 5*1024*1024) + bodyBytes, err := io.ReadAll(limitedReader) + if err != nil { + log.Printf("Error reading image: %v", err) + sendErrorWithCORS(w, "Error reading image", http.StatusInternalServerError) + return + } + + // Определяем Content-Type + contentType := resp.Header.Get("Content-Type") + if contentType == "" { + // Пытаемся определить по содержимому + if len(bodyBytes) >= 2 { + if bodyBytes[0] == 0xFF && bodyBytes[1] == 0xD8 { + contentType = "image/jpeg" + } else if len(bodyBytes) >= 8 && string(bodyBytes[0:8]) == "\x89PNG\r\n\x1a\n" { + contentType = "image/png" + } else if len(bodyBytes) >= 4 && string(bodyBytes[0:4]) == "RIFF" { + contentType = "image/webp" + } else { + contentType = "application/octet-stream" + } + } + } + + // Проверяем, что это изображение + if !strings.HasPrefix(contentType, "image/") { + log.Printf("Invalid content type: %s", contentType) + sendErrorWithCORS(w, "Not an image", http.StatusBadRequest) + return + } + + // Отправляем изображение + w.Header().Set("Content-Type", contentType) + w.Header().Set("Content-Length", strconv.Itoa(len(bodyBytes))) + w.Header().Set("Cache-Control", "public, max-age=3600") + w.WriteHeader(http.StatusOK) + w.Write(bodyBytes) +} + +// ============================================ +// Tracking handlers +// ============================================ + +// getWeeklyStatsDataForUserAndWeek получает данные о проектах для конкретного пользователя и недели +func (a *App) getWeeklyStatsDataForUserAndWeek(userID int, year int, week int) (*WeeklyStatsResponse, error) { + // Определяем, является ли это текущей неделей + now := time.Now() + currentYear, currentWeek := now.ISOWeek() + isCurrentWeek := year == currentYear && week == currentWeek + + var currentWeekScores map[int]float64 + var err error + + if isCurrentWeek { + // Для текущей недели используем realtime данные + currentWeekScores, err = a.getCurrentWeekScores(userID) + if err != nil { + log.Printf("Error getting current week scores: %v", err) + return nil, fmt.Errorf("error getting current week scores: %w", err) + } + } else { + // Для исторических недель используем пустой map (данные из MV) + currentWeekScores = make(map[int]float64) + } + + query := ` + SELECT + p.id AS project_id, + p.name AS project_name, + COALESCE(wr.total_score, 0.0000) AS total_score, + wg.min_goal_score, + wg.max_goal_score, + wg.priority AS priority, + p.color + FROM + projects p + INNER JOIN + weekly_goals wg ON wg.project_id = p.id + AND wg.goal_year = $2 + AND wg.goal_week = $3 + LEFT JOIN + weekly_report_mv wr + ON p.id = wr.project_id + AND $2 = wr.report_year + AND $3 = wr.report_week + WHERE + p.deleted = FALSE AND p.user_id = $1 + AND wg.min_goal_score IS NOT NULL + ORDER BY + total_score DESC + ` + + rows, err := a.DB.Query(query, userID, year, week) + if err != nil { + return nil, fmt.Errorf("error querying weekly stats: %w", err) + } + defer rows.Close() + + projects := make([]WeeklyProjectStats, 0) + groups := make(map[int][]float64) + + for rows.Next() { + var project WeeklyProjectStats + var projectID int + var minGoalScore sql.NullFloat64 + var maxGoalScore sql.NullFloat64 + var priority sql.NullInt64 + + err := rows.Scan( + &projectID, + &project.ProjectName, + &project.TotalScore, + &minGoalScore, + &maxGoalScore, + &priority, + &project.Color, + ) + if err != nil { + return nil, fmt.Errorf("error scanning weekly stats row: %w", err) + } + + // Объединяем данные: если это текущая неделя и есть данные, используем их вместо MV + if isCurrentWeek { + if currentWeekScore, exists := currentWeekScores[projectID]; exists { + project.TotalScore = currentWeekScore + } + } + + if minGoalScore.Valid { + project.MinGoalScore = minGoalScore.Float64 + } else { + project.MinGoalScore = 0 + } + + if maxGoalScore.Valid { + maxGoalVal := maxGoalScore.Float64 + project.MaxGoalScore = &maxGoalVal + } + + var priorityVal int + if priority.Valid { + priorityVal = int(priority.Int64) + project.Priority = &priorityVal + } + + // Расчет calculated_score + totalScore := project.TotalScore + minGoalScoreVal := project.MinGoalScore + var maxGoalScoreVal float64 + if project.MaxGoalScore != nil { + maxGoalScoreVal = *project.MaxGoalScore + } + + // Параметры бонуса в зависимости от priority + var extraBonusLimit float64 = 20 + if priorityVal == 1 { + extraBonusLimit = 50 + } else if priorityVal == 2 { + extraBonusLimit = 35 + } + + // Расчет calculated_score по логике фронтенда + // min_goal -> 100%, max_goal -> 150%/135%/120% в зависимости от приоритета + var resultScore float64 + if minGoalScoreVal <= 0 { + // Если нет minGoal, возвращаем 0 (или можно относительно maxGoal, но обычно 0) + resultScore = 0 + } else if totalScore < minGoalScoreVal { + // До достижения minGoal растем линейно от 0 до 100% + resultScore = (totalScore / minGoalScoreVal) * 100.0 + } else { + // Достигнут minGoal - базовый прогресс = 100% + baseProgress := 100.0 + + // Если maxGoal задан корректно и больше minGoal, добавляем экстра прогресс + if maxGoalScoreVal > minGoalScoreVal { + extraRange := maxGoalScoreVal - minGoalScoreVal + excess := min(totalScore, maxGoalScoreVal) - minGoalScoreVal + extraRatio := min(1.0, max(0.0, excess/extraRange)) + extraProgress := extraRatio * extraBonusLimit + resultScore = min(100.0+extraBonusLimit, baseProgress+extraProgress) + } else { + // Если maxGoal не задан или некорректен, просто 100% + resultScore = baseProgress + } + } + + project.CalculatedScore = roundToTwoDecimals(resultScore) + projects = append(projects, project) + + // Группировка для итогового расчета + if minGoalScoreVal > 0 { + if _, exists := groups[priorityVal]; !exists { + groups[priorityVal] = make([]float64, 0) + } + groups[priorityVal] = append(groups[priorityVal], project.CalculatedScore) + } + } + + // Вычисляем проценты для каждой группы + groupsProgress := calculateGroupsProgress(groups) + + // Вычисляем общий процент выполнения + total := calculateOverallProgress(groupsProgress, groups) + + response := WeeklyStatsResponse{ + Total: total, + GroupProgress1: groupsProgress.Group1, + GroupProgress2: groupsProgress.Group2, + GroupProgress0: groupsProgress.Group0, + Projects: projects, + } + + return &response, nil +} + +// getISOWeek вычисляет номер недели ISO для даты +func getISOWeek(t time.Time) int { + _, week := t.ISOWeek() + return week +} + +// getTrackingStatsHandler возвращает статистику недели для текущего пользователя и отслеживаемых +func (a *App) getTrackingStatsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Получаем year и week из query params + yearStr := r.URL.Query().Get("year") + weekStr := r.URL.Query().Get("week") + + var year, week int + now := time.Now() + + if yearStr == "" || weekStr == "" { + // Если не указаны - текущая неделя + year, week = now.ISOWeek() + } else { + var err error + year, err = strconv.Atoi(yearStr) + if err != nil { + sendErrorWithCORS(w, "Invalid year parameter", http.StatusBadRequest) + return + } + week, err = strconv.Atoi(weekStr) + if err != nil { + sendErrorWithCORS(w, "Invalid week parameter", http.StatusBadRequest) + return + } + } + + // Получаем список отслеживаемых пользователей + rows, err := a.DB.Query(` + SELECT tracked_id + FROM user_tracking + WHERE tracker_id = $1 + `, userID) + if err != nil { + log.Printf("Error getting tracked users: %v", err) + sendErrorWithCORS(w, "Error getting tracked users", http.StatusInternalServerError) + return + } + defer rows.Close() + + trackedUserIDs := []int{userID} // Начинаем с текущего пользователя + for rows.Next() { + var trackedID int + if err := rows.Scan(&trackedID); err != nil { + log.Printf("Error scanning tracked user: %v", err) + continue + } + trackedUserIDs = append(trackedUserIDs, trackedID) + } + + // Получаем данные для каждого пользователя + users := make([]TrackingUserStats, 0) + for _, uid := range trackedUserIDs { + stats, err := a.getWeeklyStatsDataForUserAndWeek(uid, year, week) + if err != nil { + log.Printf("Error getting stats for user %d: %v", uid, err) + continue + } + + // Получаем имя пользователя + var userName string + err = a.DB.QueryRow(`SELECT COALESCE(name, email) FROM users WHERE id = $1`, uid).Scan(&userName) + if err != nil { + log.Printf("Error getting user name: %v", err) + userName = "Unknown" + } + + // Преобразуем проекты в TrackingProjectStats + projects := make([]TrackingProjectStats, 0) + for _, p := range stats.Projects { + projects = append(projects, TrackingProjectStats{ + ProjectName: p.ProjectName, + CalculatedScore: p.CalculatedScore, + Priority: p.Priority, + }) + } + + // Сортируем проекты по priority (1, 2, остальные) + sort.Slice(projects, func(i, j int) bool { + pi, pj := 99, 99 + if projects[i].Priority != nil { + pi = *projects[i].Priority + } + if projects[j].Priority != nil { + pj = *projects[j].Priority + } + return pi < pj + }) + + users = append(users, TrackingUserStats{ + UserID: uid, + UserName: userName, + IsCurrentUser: uid == userID, + Total: stats.Total, + Projects: projects, + }) + } + + // Сортируем: текущий пользователь всегда первый + sortedUsers := make([]TrackingUserStats, 0) + for _, u := range users { + if u.IsCurrentUser { + sortedUsers = append([]TrackingUserStats{u}, sortedUsers...) + } else { + sortedUsers = append(sortedUsers, u) + } + } + + response := TrackingStatsResponse{ + WeekNumber: week, + Year: year, + Users: sortedUsers, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// createTrackingInviteHandler создает токен приглашения +func (a *App) createTrackingInviteHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Генерируем токен + token := generateInviteToken() + + // Сохраняем в базу с истечением через 1 час + _, err := a.DB.Exec(` + INSERT INTO tracking_invite_tokens (user_id, token, expires_at) + VALUES ($1, $2, NOW() + INTERVAL '1 hour') + `, userID, token) + if err != nil { + log.Printf("Error creating tracking invite token: %v", err) + sendErrorWithCORS(w, "Error creating invite token", http.StatusInternalServerError) + return + } + + // Формируем URL + baseURL := getEnv("WEBHOOK_BASE_URL", "") + inviteURL := baseURL + "/tracking/invite/" + token + + response := TrackingInviteResponse{ + InviteURL: inviteURL, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// getTrackingInviteInfoHandler возвращает информацию о приглашении +func (a *App) getTrackingInviteInfoHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + vars := mux.Vars(r) + token := vars["token"] + + var userID int + var expiresAt time.Time + err := a.DB.QueryRow(` + SELECT user_id, expires_at + FROM tracking_invite_tokens + WHERE token = $1 + `, token).Scan(&userID, &expiresAt) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Ссылка недействительна или устарела", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting invite token: %v", err) + sendErrorWithCORS(w, "Error getting invite info", http.StatusInternalServerError) + return + } + + // Проверяем срок действия + if time.Now().After(expiresAt) { + sendErrorWithCORS(w, "Ссылка недействительна или устарела", http.StatusNotFound) + return + } + + // Получаем имя пользователя + var userName string + err = a.DB.QueryRow(`SELECT COALESCE(name, email) FROM users WHERE id = $1`, userID).Scan(&userName) + if err != nil { + log.Printf("Error getting user name: %v", err) + sendErrorWithCORS(w, "Error getting user info", http.StatusInternalServerError) + return + } + + response := TrackingInviteInfo{ + UserID: userID, + UserName: userName, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// acceptTrackingInviteHandler принимает приглашение на отслеживание +func (a *App) acceptTrackingInviteHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + currentUserID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + token := vars["token"] + + // Получаем информацию о токене + var trackedUserID int + var expiresAt time.Time + err := a.DB.QueryRow(` + SELECT user_id, expires_at + FROM tracking_invite_tokens + WHERE token = $1 AND expires_at > NOW() + `, token).Scan(&trackedUserID, &expiresAt) + + if err == sql.ErrNoRows { + sendErrorWithCORS(w, "Ссылка недействительна или устарела", http.StatusNotFound) + return + } + if err != nil { + log.Printf("Error getting invite token: %v", err) + sendErrorWithCORS(w, "Error getting invite info", http.StatusInternalServerError) + return + } + + // Проверяем, что пользователь не пытается отслеживать себя + if trackedUserID == currentUserID { + sendErrorWithCORS(w, "Нельзя отслеживать себя", http.StatusBadRequest) + return + } + + // Создаем запись отслеживания + _, err = a.DB.Exec(` + INSERT INTO user_tracking (tracker_id, tracked_id) + VALUES ($1, $2) + ON CONFLICT (tracker_id, tracked_id) DO NOTHING + `, currentUserID, trackedUserID) + if err != nil { + log.Printf("Error creating tracking relation: %v", err) + sendErrorWithCORS(w, "Error accepting invite", http.StatusInternalServerError) + return + } + + // Удаляем использованный токен (одноразовый) + _, err = a.DB.Exec(`DELETE FROM tracking_invite_tokens WHERE token = $1`, token) + if err != nil { + log.Printf("Error deleting used token: %v", err) + // Не критично, продолжаем + } + + // Получаем имя пользователя для ответа + var userName string + a.DB.QueryRow(`SELECT COALESCE(name, email) FROM users WHERE id = $1`, trackedUserID).Scan(&userName) + + response := map[string]interface{}{ + "success": true, + "tracked_user_name": userName, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// getTrackingAccessHandler возвращает списки трекеров и отслеживаемых +func (a *App) getTrackingAccessHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + // Trackers (кто меня отслеживает) + trackers := make([]TrackingUser, 0) + rows, err := a.DB.Query(` + SELECT ut.id as relation_id, u.id, COALESCE(u.name, u.email) as name, u.email, ut.created_at + FROM user_tracking ut + JOIN users u ON ut.tracker_id = u.id + WHERE ut.tracked_id = $1 + ORDER BY ut.created_at DESC + `, userID) + if err != nil { + log.Printf("Error getting trackers: %v", err) + sendErrorWithCORS(w, "Error getting trackers", http.StatusInternalServerError) + return + } + defer rows.Close() + + for rows.Next() { + var t TrackingUser + if err := rows.Scan(&t.RelationID, &t.ID, &t.Name, &t.Email, &t.CreatedAt); err != nil { + log.Printf("Error scanning tracker: %v", err) + continue + } + trackers = append(trackers, t) + } + + // Tracked (кого я отслеживаю) + tracked := make([]TrackingUser, 0) + rows, err = a.DB.Query(` + SELECT ut.id as relation_id, u.id, COALESCE(u.name, u.email) as name, u.email, ut.created_at + FROM user_tracking ut + JOIN users u ON ut.tracked_id = u.id + WHERE ut.tracker_id = $1 + ORDER BY ut.created_at DESC + `, userID) + if err != nil { + log.Printf("Error getting tracked: %v", err) + sendErrorWithCORS(w, "Error getting tracked", http.StatusInternalServerError) + return + } + defer rows.Close() + + for rows.Next() { + var t TrackingUser + if err := rows.Scan(&t.RelationID, &t.ID, &t.Name, &t.Email, &t.CreatedAt); err != nil { + log.Printf("Error scanning tracked: %v", err) + continue + } + tracked = append(tracked, t) + } + + response := TrackingAccessResponse{ + Trackers: trackers, + Tracked: tracked, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +// deleteTrackingTrackerHandler удаляет того, кто меня отслеживает +func (a *App) deleteTrackingTrackerHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + relationIDStr := vars["id"] + relationID, err := strconv.Atoi(relationIDStr) + if err != nil { + sendErrorWithCORS(w, "Invalid relation ID", http.StatusBadRequest) + return + } + + // Удаляем только если это действительно тот, кто отслеживает меня + result, err := a.DB.Exec(` + DELETE FROM user_tracking + WHERE id = $1 AND tracked_id = $2 + `, relationID, userID) + if err != nil { + log.Printf("Error deleting tracker relation: %v", err) + sendErrorWithCORS(w, "Error deleting relation", http.StatusInternalServerError) + return + } + + rowsAffected, _ := result.RowsAffected() + if rowsAffected == 0 { + sendErrorWithCORS(w, "Relation not found or access denied", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{"success": true}) +} + +// deleteTrackingTrackedHandler прекращает отслеживать пользователя +func (a *App) deleteTrackingTrackedHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + vars := mux.Vars(r) + relationIDStr := vars["id"] + relationID, err := strconv.Atoi(relationIDStr) + if err != nil { + sendErrorWithCORS(w, "Invalid relation ID", http.StatusBadRequest) + return + } + + // Удаляем только если это действительно тот, кого я отслеживаю + result, err := a.DB.Exec(` + DELETE FROM user_tracking + WHERE id = $1 AND tracker_id = $2 + `, relationID, userID) + if err != nil { + log.Printf("Error deleting tracked relation: %v", err) + sendErrorWithCORS(w, "Error deleting relation", http.StatusInternalServerError) + return + } + + rowsAffected, _ := result.RowsAffected() + if rowsAffected == 0 { + sendErrorWithCORS(w, "Relation not found or access denied", http.StatusNotFound) + return + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(map[string]interface{}{"success": true}) +} + +// decodeHTMLEntities декодирует базовые HTML entities +func decodeHTMLEntities(s string) string { + replacements := map[string]string{ + "&": "&", + "<": "<", + ">": ">", + """: "\"", + "'": "'", + "'": "'", + " ": " ", + "—": "—", + "–": "–", + "«": "«", + "»": "»", + } + for entity, char := range replacements { + s = strings.ReplaceAll(s, entity, char) + } + return s +} + +// refreshGroupSuggestionsMV обновляет materialized view для групповых саджестов +func (a *App) refreshGroupSuggestionsMV() error { + _, err := a.DB.Exec("REFRESH MATERIALIZED VIEW CONCURRENTLY user_group_suggestions_mv") + if err != nil { + log.Printf("Error refreshing user_group_suggestions_mv: %v", err) + return err + } + return nil +} + +// getGroupSuggestionsHandler возвращает список уникальных имён групп для текущего пользователя +func (a *App) getGroupSuggestionsHandler(w http.ResponseWriter, r *http.Request) { + if r.Method == "OPTIONS" { + setCORSHeaders(w) + w.WriteHeader(http.StatusOK) + return + } + setCORSHeaders(w) + + userID, ok := getUserIDFromContext(r) + if !ok { + sendErrorWithCORS(w, "Unauthorized", http.StatusUnauthorized) + return + } + + query := ` + SELECT DISTINCT group_name + FROM user_group_suggestions_mv + WHERE user_id = $1 + ORDER BY group_name + ` + + rows, err := a.DB.Query(query, userID) + if err != nil { + log.Printf("Error querying group suggestions: %v", err) + sendErrorWithCORS(w, fmt.Sprintf("Error querying group suggestions: %v", err), http.StatusInternalServerError) + return + } + defer rows.Close() + + groups := make([]string, 0) + for rows.Next() { + var groupName string + if err := rows.Scan(&groupName); err != nil { + log.Printf("Error scanning group name: %v", err) + continue + } + groups = append(groups, groupName) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(groups) +} diff --git a/play-life-backend/migrations/000001_baseline.down.sql b/play-life-backend/migrations/000001_baseline.down.sql new file mode 100644 index 0000000..1e67506 --- /dev/null +++ b/play-life-backend/migrations/000001_baseline.down.sql @@ -0,0 +1,3 @@ +-- Baseline migration cannot be rolled back +-- This is the initial state of the database schema +-- If you need to revert, you must manually drop all tables and recreate from scratch diff --git a/play-life-backend/migrations/000001_baseline.up.sql b/play-life-backend/migrations/000001_baseline.up.sql new file mode 100644 index 0000000..b5300cd --- /dev/null +++ b/play-life-backend/migrations/000001_baseline.up.sql @@ -0,0 +1,497 @@ +-- Baseline Migration: Complete database schema +-- This migration represents the current state of the database schema +-- For existing databases, use: migrate force 1 (do not run this migration) +-- For new databases, this will create the complete schema + +-- ============================================ +-- Core Tables (no dependencies) +-- ============================================ + +-- Users table (base for multi-tenancy) +CREATE TABLE users ( + id SERIAL PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE, + password_hash VARCHAR(255) NOT NULL, + name VARCHAR(255), + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + is_active BOOLEAN DEFAULT TRUE, + last_login_at TIMESTAMP WITH TIME ZONE +); + +CREATE INDEX idx_users_email ON users(email); + +-- Dictionaries table +CREATE TABLE dictionaries ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_dictionaries_user_id ON dictionaries(user_id); + +-- Insert default dictionary with id = 0 +DO $$ +BEGIN + -- Set sequence to -1 so next value will be 0 + PERFORM setval('dictionaries_id_seq', -1, false); + + -- Insert the default dictionary with id = 0 + INSERT INTO dictionaries (id, name) + VALUES (0, 'Все слова') + ON CONFLICT (id) DO NOTHING; + + -- Set the sequence to start from 1 (so next auto-increment will be 1) + PERFORM setval('dictionaries_id_seq', 1, false); +EXCEPTION + WHEN others THEN + -- If sequence doesn't exist or other error, try without sequence manipulation + INSERT INTO dictionaries (id, name) + VALUES (0, 'Все слова') + ON CONFLICT (id) DO NOTHING; +END $$; + +-- Projects table +CREATE TABLE projects ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + priority SMALLINT, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_projects_deleted ON projects(deleted); +CREATE INDEX idx_projects_user_id ON projects(user_id); + +-- Entries table +CREATE TABLE entries ( + id SERIAL PRIMARY KEY, + text TEXT NOT NULL, + created_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_entries_user_id ON entries(user_id); + +-- ============================================ +-- Dependent Tables +-- ============================================ + +-- Words table (depends on dictionaries, users) +CREATE TABLE words ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + translation TEXT NOT NULL, + description TEXT, + dictionary_id INTEGER NOT NULL DEFAULT 0 REFERENCES dictionaries(id), + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_words_dictionary_id ON words(dictionary_id); +CREATE INDEX idx_words_user_id ON words(user_id); + +-- Progress table (depends on words, users) +CREATE TABLE progress ( + id SERIAL PRIMARY KEY, + word_id INTEGER NOT NULL REFERENCES words(id) ON DELETE CASCADE, + success INTEGER DEFAULT 0, + failure INTEGER DEFAULT 0, + last_success_at TIMESTAMP, + last_failure_at TIMESTAMP, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT progress_word_user_unique UNIQUE (word_id, user_id) +); + +CREATE INDEX idx_progress_user_id ON progress(user_id); +CREATE UNIQUE INDEX idx_progress_word_user_unique ON progress(word_id, user_id); + +-- Configs table (depends on users) +CREATE TABLE configs ( + id SERIAL PRIMARY KEY, + words_count INTEGER NOT NULL, + max_cards INTEGER, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_configs_user_id ON configs(user_id); + +-- Config dictionaries table (depends on configs, dictionaries) +CREATE TABLE config_dictionaries ( + config_id INTEGER NOT NULL REFERENCES configs(id) ON DELETE CASCADE, + dictionary_id INTEGER NOT NULL REFERENCES dictionaries(id) ON DELETE CASCADE, + PRIMARY KEY (config_id, dictionary_id) +); + +CREATE INDEX idx_config_dictionaries_config_id ON config_dictionaries(config_id); +CREATE INDEX idx_config_dictionaries_dictionary_id ON config_dictionaries(dictionary_id); + +-- Nodes table (depends on projects, entries, users) +CREATE TABLE nodes ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + entry_id INTEGER NOT NULL REFERENCES entries(id) ON DELETE CASCADE, + score NUMERIC(8,4), + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE +); + +CREATE INDEX idx_nodes_project_id ON nodes(project_id); +CREATE INDEX idx_nodes_entry_id ON nodes(entry_id); +CREATE INDEX idx_nodes_user_id ON nodes(user_id); + +-- Weekly goals table (depends on projects, users) +CREATE TABLE weekly_goals ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + goal_year INTEGER NOT NULL, + goal_week INTEGER NOT NULL, + min_goal_score NUMERIC(10,4) NOT NULL DEFAULT 0, + max_goal_score NUMERIC(10,4), + max_score NUMERIC(10,4), + priority SMALLINT, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT weekly_goals_project_id_goal_year_goal_week_key UNIQUE (project_id, goal_year, goal_week) +); + +CREATE INDEX idx_weekly_goals_project_id ON weekly_goals(project_id); +CREATE INDEX idx_weekly_goals_user_id ON weekly_goals(user_id); + +-- Tasks table (depends on users) +CREATE TABLE tasks ( + id SERIAL PRIMARY KEY, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + completed INTEGER DEFAULT 0, + last_completed_at TIMESTAMP WITH TIME ZONE, + parent_task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + reward_message TEXT, + progression_base NUMERIC(10,4), + deleted BOOLEAN DEFAULT FALSE, + repetition_period INTERVAL, + next_show_at TIMESTAMP WITH TIME ZONE, + repetition_date TEXT, + config_id INTEGER REFERENCES configs(id) ON DELETE SET NULL, + wishlist_id INTEGER, + reward_policy VARCHAR(20) DEFAULT 'personal' +); + +CREATE INDEX idx_tasks_user_id ON tasks(user_id); +CREATE INDEX idx_tasks_parent_task_id ON tasks(parent_task_id); +CREATE INDEX idx_tasks_deleted ON tasks(deleted); +CREATE INDEX idx_tasks_last_completed_at ON tasks(last_completed_at); +CREATE INDEX idx_tasks_config_id ON tasks(config_id); +CREATE UNIQUE INDEX idx_tasks_config_id_unique ON tasks(config_id) WHERE config_id IS NOT NULL AND deleted = FALSE; +CREATE INDEX idx_tasks_wishlist_id ON tasks(wishlist_id); +CREATE UNIQUE INDEX idx_tasks_wishlist_id_unique ON tasks(wishlist_id) WHERE wishlist_id IS NOT NULL AND deleted = FALSE; +CREATE INDEX idx_tasks_id_user_deleted ON tasks(id, user_id, deleted) WHERE deleted = FALSE; +CREATE INDEX idx_tasks_parent_deleted_covering ON tasks(parent_task_id, deleted, id) + INCLUDE (name, completed, last_completed_at, reward_message, progression_base) + WHERE deleted = FALSE; + +COMMENT ON COLUMN tasks.config_id IS 'Link to test config. NULL if task is not a test.'; +COMMENT ON COLUMN tasks.reward_policy IS 'For wishlist tasks: personal = only if user completes, shared = anyone completes'; + +-- Reward configs table (depends on tasks, projects) +CREATE TABLE reward_configs ( + id SERIAL PRIMARY KEY, + position INTEGER NOT NULL, + task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE, + value NUMERIC(10,4) NOT NULL, + use_progression BOOLEAN DEFAULT FALSE +); + +CREATE INDEX idx_reward_configs_task_id ON reward_configs(task_id); +CREATE INDEX idx_reward_configs_project_id ON reward_configs(project_id); +CREATE UNIQUE INDEX idx_reward_configs_task_position ON reward_configs(task_id, position); + +-- Telegram integrations table (depends on users) +CREATE TABLE telegram_integrations ( + id SERIAL PRIMARY KEY, + chat_id VARCHAR(255), + telegram_user_id BIGINT, + start_token VARCHAR(255), + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX idx_telegram_integrations_user_id_unique ON telegram_integrations(user_id) WHERE user_id IS NOT NULL; +CREATE INDEX idx_telegram_integrations_user_id ON telegram_integrations(user_id); +CREATE UNIQUE INDEX idx_telegram_integrations_start_token ON telegram_integrations(start_token) WHERE start_token IS NOT NULL; +CREATE UNIQUE INDEX idx_telegram_integrations_telegram_user_id ON telegram_integrations(telegram_user_id) WHERE telegram_user_id IS NOT NULL; +CREATE INDEX idx_telegram_integrations_chat_id ON telegram_integrations(chat_id) WHERE chat_id IS NOT NULL; + +-- Todoist integrations table (depends on users) +CREATE TABLE todoist_integrations ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + todoist_user_id BIGINT, + todoist_email VARCHAR(255), + access_token TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT todoist_integrations_user_id_unique UNIQUE (user_id) +); + +CREATE INDEX idx_todoist_integrations_user_id ON todoist_integrations(user_id); +CREATE UNIQUE INDEX idx_todoist_integrations_todoist_user_id ON todoist_integrations(todoist_user_id) WHERE todoist_user_id IS NOT NULL; +CREATE UNIQUE INDEX idx_todoist_integrations_todoist_email ON todoist_integrations(todoist_email) WHERE todoist_email IS NOT NULL; + +-- Wishlist boards table (depends on users) +CREATE TABLE wishlist_boards ( + id SERIAL PRIMARY KEY, + owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + invite_token VARCHAR(64) UNIQUE, + invite_enabled BOOLEAN DEFAULT FALSE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN DEFAULT FALSE +); + +CREATE INDEX idx_wishlist_boards_owner_id ON wishlist_boards(owner_id); +CREATE INDEX idx_wishlist_boards_invite_token ON wishlist_boards(invite_token) WHERE invite_token IS NOT NULL; +CREATE INDEX idx_wishlist_boards_owner_deleted ON wishlist_boards(owner_id, deleted); + +-- Wishlist board members table (depends on wishlist_boards, users) +CREATE TABLE wishlist_board_members ( + id SERIAL PRIMARY KEY, + board_id INTEGER NOT NULL REFERENCES wishlist_boards(id) ON DELETE CASCADE, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + joined_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_board_member UNIQUE (board_id, user_id) +); + +CREATE INDEX idx_board_members_board_id ON wishlist_board_members(board_id); +CREATE INDEX idx_board_members_user_id ON wishlist_board_members(user_id); + +-- Wishlist items table (depends on users, wishlist_boards) +CREATE TABLE wishlist_items ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + price NUMERIC(10,2), + image_path VARCHAR(500), + link TEXT, + completed BOOLEAN DEFAULT FALSE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN DEFAULT FALSE, + board_id INTEGER REFERENCES wishlist_boards(id) ON DELETE CASCADE, + author_id INTEGER REFERENCES users(id) ON DELETE SET NULL +); + +CREATE INDEX idx_wishlist_items_user_id ON wishlist_items(user_id); +CREATE INDEX idx_wishlist_items_user_deleted ON wishlist_items(user_id, deleted); +CREATE INDEX idx_wishlist_items_user_completed ON wishlist_items(user_id, completed, deleted); +CREATE INDEX idx_wishlist_items_board_id ON wishlist_items(board_id); +CREATE INDEX idx_wishlist_items_author_id ON wishlist_items(author_id); +CREATE INDEX idx_wishlist_items_id_deleted_covering ON wishlist_items(id, deleted) + INCLUDE (name) + WHERE deleted = FALSE; + +-- Add foreign key for tasks.wishlist_id after wishlist_items is created +ALTER TABLE tasks ADD CONSTRAINT tasks_wishlist_id_fkey + FOREIGN KEY (wishlist_id) REFERENCES wishlist_items(id) ON DELETE SET NULL; + +COMMENT ON TABLE wishlist_items IS 'Wishlist items for users'; +COMMENT ON COLUMN wishlist_items.completed IS 'Flag indicating item was purchased/received'; +COMMENT ON COLUMN wishlist_items.image_path IS 'Path to image file relative to uploads root'; + +-- Task conditions table (depends on tasks) +CREATE TABLE task_conditions ( + id SERIAL PRIMARY KEY, + task_id INTEGER NOT NULL REFERENCES tasks(id) ON DELETE CASCADE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_task_condition UNIQUE (task_id) +); + +CREATE INDEX idx_task_conditions_task_id ON task_conditions(task_id); + +COMMENT ON TABLE task_conditions IS 'Reusable unlock conditions based on task completion'; + +-- Score conditions table (depends on projects, users) +CREATE TABLE score_conditions ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + required_points NUMERIC(10,4) NOT NULL, + start_date DATE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT unique_score_condition UNIQUE (project_id, required_points, start_date) +); + +CREATE INDEX idx_score_conditions_project_id ON score_conditions(project_id); +CREATE INDEX idx_score_conditions_user_id ON score_conditions(user_id); + +COMMENT ON TABLE score_conditions IS 'Reusable unlock conditions based on project points'; +COMMENT ON COLUMN score_conditions.start_date IS 'Date from which to start counting points. NULL means count all time.'; + +-- Wishlist conditions table (depends on wishlist_items, task_conditions, score_conditions, users) +CREATE TABLE wishlist_conditions ( + id SERIAL PRIMARY KEY, + wishlist_item_id INTEGER NOT NULL REFERENCES wishlist_items(id) ON DELETE CASCADE, + task_condition_id INTEGER REFERENCES task_conditions(id) ON DELETE CASCADE, + score_condition_id INTEGER REFERENCES score_conditions(id) ON DELETE CASCADE, + display_order INTEGER DEFAULT 0, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT check_exactly_one_condition CHECK ( + (task_condition_id IS NOT NULL AND score_condition_id IS NULL) OR + (task_condition_id IS NULL AND score_condition_id IS NOT NULL) + ) +); + +CREATE INDEX idx_wishlist_conditions_item_id ON wishlist_conditions(wishlist_item_id); +CREATE INDEX idx_wishlist_conditions_item_order ON wishlist_conditions(wishlist_item_id, display_order); +CREATE INDEX idx_wishlist_conditions_task_condition_id ON wishlist_conditions(task_condition_id); +CREATE INDEX idx_wishlist_conditions_score_condition_id ON wishlist_conditions(score_condition_id); +CREATE INDEX idx_wishlist_conditions_user_id ON wishlist_conditions(user_id); + +COMMENT ON TABLE wishlist_conditions IS 'Links between wishlist items and unlock conditions. Multiple conditions per item use AND logic.'; +COMMENT ON COLUMN wishlist_conditions.display_order IS 'Order for displaying conditions in UI'; +COMMENT ON COLUMN wishlist_conditions.user_id IS 'Owner of this condition. Each user has their own goals on shared boards'; + +-- Refresh tokens table (depends on users) +CREATE TABLE refresh_tokens ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + token_hash VARCHAR(255) NOT NULL, + expires_at TIMESTAMP WITH TIME ZONE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX idx_refresh_tokens_user_id ON refresh_tokens(user_id); +CREATE INDEX idx_refresh_tokens_token_hash ON refresh_tokens(token_hash); + +-- ============================================ +-- Materialized Views +-- ============================================ + +-- Weekly report materialized view +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score, + CASE + WHEN wg.max_score IS NULL THEN COALESCE(agg.total_score, 0.0000) + ELSE LEAST(COALESCE(agg.total_score, 0.0000), wg.max_score) + END AS normalized_total_score +FROM + projects p +LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id +LEFT JOIN + weekly_goals wg + ON wg.project_id = p.id + AND wg.goal_year = agg.report_year + AND wg.goal_week = agg.report_week +WHERE + p.deleted = FALSE +ORDER BY + p.id, agg.report_year, agg.report_week +WITH DATA; + +CREATE INDEX idx_weekly_report_mv_project_year_week ON weekly_report_mv(project_id, report_year, report_week); + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries. Includes all projects via LEFT JOIN. Adds normalized_total_score using weekly_goals.max_score snapshot.'; + +-- ============================================ +-- Comments +-- ============================================ + +COMMENT ON TABLE configs IS 'Test configurations (words_count, max_cards, dictionary associations). Linked to tasks via tasks.config_id.'; +COMMENT ON TABLE wishlist_boards IS 'Wishlist boards for organizing and sharing wishes'; +COMMENT ON COLUMN wishlist_boards.invite_token IS 'Token for invite link, NULL = disabled'; +COMMENT ON COLUMN wishlist_boards.invite_enabled IS 'Whether invite link is active'; +COMMENT ON TABLE wishlist_board_members IS 'Users who joined boards via invite link (not owners)'; +COMMENT ON COLUMN wishlist_items.author_id IS 'User who created this item (may differ from board owner on shared boards)'; +COMMENT ON COLUMN wishlist_items.board_id IS 'Board this item belongs to'; + +-- ============================================ +-- Additional Tables +-- ============================================ + +-- Eateries table +CREATE TABLE eateries ( + id SERIAL PRIMARY KEY, + name VARCHAR(255), + address VARCHAR(255), + type VARCHAR(50), + distance DOUBLE PRECISION +); + +-- Interesting places table +CREATE TABLE interesting_places ( + id INTEGER PRIMARY KEY, + name TEXT, + city TEXT, + description TEXT, + added_at TIMESTAMP WITH TIME ZONE, + is_visited BOOLEAN, + phone_number TEXT, + address TEXT, + updated_at TIMESTAMP WITH TIME ZONE +); + +-- Music groups table +CREATE TABLE music_groups ( + id INTEGER PRIMARY KEY, + name TEXT, + possible_locations TEXT +); + +-- N8N chat histories table +CREATE TABLE n8n_chat_histories ( + id SERIAL PRIMARY KEY, + session_id VARCHAR(255) NOT NULL, + message JSONB NOT NULL +); + +-- Places to visit table +CREATE TABLE places_to_visit ( + id SERIAL PRIMARY KEY, + name TEXT NOT NULL, + city TEXT, + description TEXT, + added_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), + is_visited BOOLEAN DEFAULT FALSE, + phone_number TEXT, + address TEXT, + updated_at TIMESTAMP WITH TIME ZONE +); + +-- Restaurants table +CREATE TABLE restaurants ( + id SERIAL PRIMARY KEY, + name VARCHAR(255), + address VARCHAR(255), + contact_info VARCHAR(255) +); + +-- Upcoming concerts table (depends on music_groups) +CREATE TABLE upcoming_concerts ( + id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + group_id INTEGER NOT NULL REFERENCES music_groups(id), + scheduled_at TIMESTAMP WITH TIME ZONE NOT NULL, + venue TEXT, + city TEXT, + tickets_url TEXT +); + +CREATE UNIQUE INDEX idx_unique_concert ON upcoming_concerts(scheduled_at, city, group_id); diff --git a/play-life-backend/migrations/000002_fix_weekly_goals_user_id.down.sql b/play-life-backend/migrations/000002_fix_weekly_goals_user_id.down.sql new file mode 100644 index 0000000..b0f4783 --- /dev/null +++ b/play-life-backend/migrations/000002_fix_weekly_goals_user_id.down.sql @@ -0,0 +1,4 @@ +-- Rollback migration: This migration cannot be automatically rolled back +-- The user_id values were corrected from projects.user_id, so reverting would +-- require knowing the original incorrect values, which is not possible. +-- If rollback is needed, you would need to manually restore from a backup. diff --git a/play-life-backend/migrations/000002_fix_weekly_goals_user_id.up.sql b/play-life-backend/migrations/000002_fix_weekly_goals_user_id.up.sql new file mode 100644 index 0000000..5c450aa --- /dev/null +++ b/play-life-backend/migrations/000002_fix_weekly_goals_user_id.up.sql @@ -0,0 +1,9 @@ +-- Migration: Fix weekly_goals.user_id by updating it from projects.user_id +-- This migration fixes the issue where weekly_goals.user_id was incorrectly set to NULL or wrong user_id +-- It updates all weekly_goals records to have the correct user_id from their associated project + +UPDATE weekly_goals wg +SET user_id = p.user_id +FROM projects p +WHERE wg.project_id = p.id + AND (wg.user_id IS NULL OR wg.user_id != p.user_id); diff --git a/play-life-backend/migrations/000003_add_reward_configs_covering_index.down.sql b/play-life-backend/migrations/000003_add_reward_configs_covering_index.down.sql new file mode 100644 index 0000000..291e61b --- /dev/null +++ b/play-life-backend/migrations/000003_add_reward_configs_covering_index.down.sql @@ -0,0 +1,3 @@ +-- Rollback migration: Remove covering index for reward_configs + +DROP INDEX IF EXISTS idx_reward_configs_task_id_covering; diff --git a/play-life-backend/migrations/000003_add_reward_configs_covering_index.up.sql b/play-life-backend/migrations/000003_add_reward_configs_covering_index.up.sql new file mode 100644 index 0000000..a22f5dc --- /dev/null +++ b/play-life-backend/migrations/000003_add_reward_configs_covering_index.up.sql @@ -0,0 +1,14 @@ +-- Migration: Add covering index for reward_configs to optimize subtask rewards queries +-- Date: 2026-01-26 +-- +-- This migration adds a covering index to optimize queries that load rewards for multiple subtasks. +-- The index includes all columns needed for the query, allowing PostgreSQL to perform +-- index-only scans without accessing the main table. +-- +-- Covering index for reward_configs query +-- Includes all columns needed for rewards selection to avoid table lookups +CREATE INDEX IF NOT EXISTS idx_reward_configs_task_id_covering +ON reward_configs(task_id, position) +INCLUDE (id, project_id, value, use_progression); + +COMMENT ON INDEX idx_reward_configs_task_id_covering IS 'Covering index for rewards query - includes all selected columns to avoid table lookups. Enables index-only scans for better performance when loading rewards for multiple tasks.'; diff --git a/play-life-backend/migrations/000004_optimize_weekly_report_mv.down.sql b/play-life-backend/migrations/000004_optimize_weekly_report_mv.down.sql new file mode 100644 index 0000000..feedc27 --- /dev/null +++ b/play-life-backend/migrations/000004_optimize_weekly_report_mv.down.sql @@ -0,0 +1,67 @@ +-- Migration: Revert optimization of weekly_report_mv +-- Date: 2026-01-26 +-- +-- This migration reverts: +-- 1. Removes created_date column from nodes table +-- 2. Drops indexes +-- 3. Restores MV to original structure (include current week, use entries.created_date) + +-- ============================================ +-- Step 1: Recreate MV with original structure +-- ============================================ +DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv; + +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score, + CASE + WHEN wg.max_score IS NULL THEN COALESCE(agg.total_score, 0.0000) + ELSE LEAST(COALESCE(agg.total_score, 0.0000), wg.max_score) + END AS normalized_total_score +FROM + projects p +LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id +LEFT JOIN + weekly_goals wg + ON wg.project_id = p.id + AND wg.goal_year = agg.report_year + AND wg.goal_week = agg.report_week +WHERE + p.deleted = FALSE +ORDER BY + p.id, agg.report_year, agg.report_week +WITH DATA; + +CREATE INDEX idx_weekly_report_mv_project_year_week +ON weekly_report_mv(project_id, report_year, report_week); + +-- ============================================ +-- Step 2: Drop indexes +-- ============================================ +DROP INDEX IF EXISTS idx_nodes_project_user_created_date; +DROP INDEX IF EXISTS idx_nodes_created_date_user; + +-- ============================================ +-- Step 3: Remove created_date column from nodes +-- ============================================ +ALTER TABLE nodes +DROP COLUMN IF EXISTS created_date; + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries. Includes all projects via LEFT JOIN. Adds normalized_total_score using weekly_goals.max_score snapshot.'; diff --git a/play-life-backend/migrations/000004_optimize_weekly_report_mv.up.sql b/play-life-backend/migrations/000004_optimize_weekly_report_mv.up.sql new file mode 100644 index 0000000..97ba7be --- /dev/null +++ b/play-life-backend/migrations/000004_optimize_weekly_report_mv.up.sql @@ -0,0 +1,94 @@ +-- Migration: Optimize weekly_report_mv by denormalizing created_date into nodes and excluding current week from MV +-- Date: 2026-01-26 +-- +-- This migration: +-- 1. Adds created_date column to nodes table (denormalization to avoid JOIN with entries) +-- 2. Populates existing data from entries +-- 3. Creates indexes for optimized queries +-- 4. Updates MV to exclude current week and use nodes.created_date instead of entries.created_date + +-- ============================================ +-- Step 1: Add created_date column to nodes +-- ============================================ +ALTER TABLE nodes +ADD COLUMN created_date TIMESTAMP WITH TIME ZONE; + +-- ============================================ +-- Step 2: Populate existing data from entries +-- ============================================ +UPDATE nodes n +SET created_date = e.created_date +FROM entries e +WHERE n.entry_id = e.id; + +-- ============================================ +-- Step 3: Set NOT NULL constraint +-- ============================================ +ALTER TABLE nodes +ALTER COLUMN created_date SET NOT NULL; + +-- ============================================ +-- Step 4: Create indexes for optimized queries +-- ============================================ +-- Index for filtering by date and user (for current week queries) +CREATE INDEX IF NOT EXISTS idx_nodes_created_date_user +ON nodes(created_date, user_id); + +-- Index for queries with grouping by project (for current week queries) +CREATE INDEX IF NOT EXISTS idx_nodes_project_user_created_date +ON nodes(project_id, user_id, created_date); + +COMMENT ON INDEX idx_nodes_created_date_user IS 'Index for filtering nodes by created_date and user_id - optimized for current week queries'; +COMMENT ON INDEX idx_nodes_project_user_created_date IS 'Index for grouping nodes by project, user and created_date - optimized for current week aggregation queries'; + +-- ============================================ +-- Step 5: Recreate MV to exclude current week and use nodes.created_date +-- ============================================ +DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv; + +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score, + CASE + WHEN wg.max_score IS NULL THEN COALESCE(agg.total_score, 0.0000) + ELSE LEAST(COALESCE(agg.total_score, 0.0000), wg.max_score) + END AS normalized_total_score +FROM + projects p +LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM n.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM n.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + WHERE + -- Exclude current week: only include data from previous weeks + (EXTRACT(ISOYEAR FROM n.created_date)::INTEGER < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (EXTRACT(ISOYEAR FROM n.created_date)::INTEGER = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND EXTRACT(WEEK FROM n.created_date)::INTEGER < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id +LEFT JOIN + weekly_goals wg + ON wg.project_id = p.id + AND wg.goal_year = agg.report_year + AND wg.goal_week = agg.report_week +WHERE + p.deleted = FALSE +ORDER BY + p.id, agg.report_year, agg.report_week +WITH DATA; + +-- Recreate index on MV +CREATE INDEX idx_weekly_report_mv_project_year_week +ON weekly_report_mv(project_id, report_year, report_week); + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries. Includes all projects via LEFT JOIN. Adds normalized_total_score using weekly_goals.max_score snapshot. Contains only historical data (excludes current week). Uses nodes.created_date (denormalized) instead of entries.created_date.'; diff --git a/play-life-backend/migrations/000005_add_task_drafts.down.sql b/play-life-backend/migrations/000005_add_task_drafts.down.sql new file mode 100644 index 0000000..59837f6 --- /dev/null +++ b/play-life-backend/migrations/000005_add_task_drafts.down.sql @@ -0,0 +1,7 @@ +-- Migration: Remove task drafts tables +-- Date: 2026-01-26 +-- +-- This migration removes tables created for task drafts + +DROP TABLE IF EXISTS task_draft_subtasks; +DROP TABLE IF EXISTS task_drafts; diff --git a/play-life-backend/migrations/000005_add_task_drafts.up.sql b/play-life-backend/migrations/000005_add_task_drafts.up.sql new file mode 100644 index 0000000..e818a06 --- /dev/null +++ b/play-life-backend/migrations/000005_add_task_drafts.up.sql @@ -0,0 +1,45 @@ +-- Migration: Add task drafts tables +-- Date: 2026-01-26 +-- +-- This migration creates tables for storing task drafts: +-- 1. task_drafts - main table for task drafts with progression value and auto_complete flag +-- 2. task_draft_subtasks - stores only checked subtask IDs for each draft + +-- ============================================ +-- Table: task_drafts +-- ============================================ +CREATE TABLE task_drafts ( + id SERIAL PRIMARY KEY, + task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + progression_value NUMERIC(10,4), + auto_complete BOOLEAN DEFAULT FALSE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), + updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), + UNIQUE(task_id) +); + +CREATE INDEX idx_task_drafts_task_id ON task_drafts(task_id); +CREATE INDEX idx_task_drafts_user_id ON task_drafts(user_id); +CREATE INDEX idx_task_drafts_auto_complete ON task_drafts(auto_complete) WHERE auto_complete = TRUE; + +COMMENT ON TABLE task_drafts IS 'Stores draft states for tasks with progression value and auto-complete flag'; +COMMENT ON COLUMN task_drafts.progression_value IS 'Saved progression value from user input'; +COMMENT ON COLUMN task_drafts.auto_complete IS 'Flag indicating task should be auto-completed at end of day (23:55)'; +COMMENT ON COLUMN task_drafts.task_id IS 'Reference to task. UNIQUE constraint ensures one draft per task'; + +-- ============================================ +-- Table: task_draft_subtasks +-- ============================================ +CREATE TABLE task_draft_subtasks ( + id SERIAL PRIMARY KEY, + task_draft_id INTEGER REFERENCES task_drafts(id) ON DELETE CASCADE, + subtask_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + UNIQUE(task_draft_id, subtask_id) +); + +CREATE INDEX idx_task_draft_subtasks_task_draft_id ON task_draft_subtasks(task_draft_id); +CREATE INDEX idx_task_draft_subtasks_subtask_id ON task_draft_subtasks(subtask_id); + +COMMENT ON TABLE task_draft_subtasks IS 'Stores only checked subtask IDs for each draft. If subtask is not in this table, it means it is unchecked'; +COMMENT ON COLUMN task_draft_subtasks.subtask_id IS 'Reference to subtask task. Only checked subtasks are stored here'; diff --git a/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.down.sql b/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.down.sql new file mode 100644 index 0000000..f8f100a --- /dev/null +++ b/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.down.sql @@ -0,0 +1,13 @@ +-- Migration: Revert wishlist_id unique index fix +-- Date: 2026-01-30 +-- +-- This migration reverts the composite unique index back to the original +-- unique index that only checked wishlist_id. + +-- Drop the composite unique index +DROP INDEX IF EXISTS idx_tasks_wishlist_id_user_id_unique; + +-- Restore the original unique index on wishlist_id only +CREATE UNIQUE INDEX idx_tasks_wishlist_id_unique +ON tasks(wishlist_id) +WHERE wishlist_id IS NOT NULL AND deleted = FALSE; diff --git a/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.up.sql b/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.up.sql new file mode 100644 index 0000000..26d4bb6 --- /dev/null +++ b/play-life-backend/migrations/000006_fix_wishlist_id_unique_index.up.sql @@ -0,0 +1,16 @@ +-- Migration: Fix wishlist_id unique index to allow multiple users +-- Date: 2026-01-30 +-- +-- This migration fixes the unique index on wishlist_id to allow multiple users +-- to create tasks for the same wishlist item. The old index only checked wishlist_id, +-- but now we need a composite unique index on (wishlist_id, user_id). + +-- Drop the old unique index that only checked wishlist_id +DROP INDEX IF EXISTS idx_tasks_wishlist_id_unique; + +-- Create a new composite unique index on (wishlist_id, user_id) +-- This allows multiple users to have tasks for the same wishlist item, +-- but prevents the same user from having multiple tasks for the same wishlist item +CREATE UNIQUE INDEX idx_tasks_wishlist_id_user_id_unique +ON tasks(wishlist_id, user_id) +WHERE wishlist_id IS NOT NULL AND deleted = FALSE; diff --git a/play-life-backend/migrations/000007_add_projects_median_mv.down.sql b/play-life-backend/migrations/000007_add_projects_median_mv.down.sql new file mode 100644 index 0000000..db3cb17 --- /dev/null +++ b/play-life-backend/migrations/000007_add_projects_median_mv.down.sql @@ -0,0 +1,4 @@ +-- Migration: Drop projects_median_mv materialized view +-- Date: 2026-01-30 + +DROP MATERIALIZED VIEW IF EXISTS projects_median_mv; diff --git a/play-life-backend/migrations/000007_add_projects_median_mv.up.sql b/play-life-backend/migrations/000007_add_projects_median_mv.up.sql new file mode 100644 index 0000000..a464531 --- /dev/null +++ b/play-life-backend/migrations/000007_add_projects_median_mv.up.sql @@ -0,0 +1,34 @@ +-- Migration: Add projects_median_mv materialized view +-- Date: 2026-01-30 +-- +-- This migration creates a materialized view that calculates the median score +-- for each project based on the last 12 weeks of historical data from weekly_report_mv. +-- The view includes user_id to support multi-tenant queries. + +CREATE MATERIALIZED VIEW projects_median_mv AS +SELECT + p.id AS project_id, + p.user_id, + PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score +FROM ( + SELECT + project_id, + normalized_total_score, + report_year, + report_week, + ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn + FROM weekly_report_mv + WHERE + (report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) +) sub +JOIN projects p ON p.id = sub.project_id +WHERE rn <= 12 AND p.deleted = FALSE +GROUP BY p.id, p.user_id +WITH DATA; + +CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id); +CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id); + +COMMENT ON MATERIALIZED VIEW projects_median_mv IS 'Materialized view calculating median score for each project based on last 12 weeks of historical data. Includes user_id for multi-tenant support.'; diff --git a/play-life-backend/migrations/000008_change_median_to_4_weeks.down.sql b/play-life-backend/migrations/000008_change_median_to_4_weeks.down.sql new file mode 100644 index 0000000..2dbf843 --- /dev/null +++ b/play-life-backend/migrations/000008_change_median_to_4_weeks.down.sql @@ -0,0 +1,34 @@ +-- Migration: Revert median calculation back to 12 weeks +-- Date: 2026-02-02 +-- +-- This migration reverts projects_median_mv back to using 12 weeks. + +DROP MATERIALIZED VIEW IF EXISTS projects_median_mv; + +CREATE MATERIALIZED VIEW projects_median_mv AS +SELECT + p.id AS project_id, + p.user_id, + PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score +FROM ( + SELECT + project_id, + normalized_total_score, + report_year, + report_week, + ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn + FROM weekly_report_mv + WHERE + (report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) +) sub +JOIN projects p ON p.id = sub.project_id +WHERE rn <= 12 AND p.deleted = FALSE +GROUP BY p.id, p.user_id +WITH DATA; + +CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id); +CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id); + +COMMENT ON MATERIALIZED VIEW projects_median_mv IS 'Materialized view calculating median score for each project based on last 12 weeks of historical data. Includes user_id for multi-tenant support.'; diff --git a/play-life-backend/migrations/000008_change_median_to_4_weeks.up.sql b/play-life-backend/migrations/000008_change_median_to_4_weeks.up.sql new file mode 100644 index 0000000..90dd770 --- /dev/null +++ b/play-life-backend/migrations/000008_change_median_to_4_weeks.up.sql @@ -0,0 +1,35 @@ +-- Migration: Change median calculation from 12 weeks to 4 weeks +-- Date: 2026-02-02 +-- +-- This migration updates projects_median_mv to calculate median based on +-- the last 4 weeks instead of 12 weeks. + +DROP MATERIALIZED VIEW IF EXISTS projects_median_mv; + +CREATE MATERIALIZED VIEW projects_median_mv AS +SELECT + p.id AS project_id, + p.user_id, + PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY normalized_total_score) AS median_score +FROM ( + SELECT + project_id, + normalized_total_score, + report_year, + report_week, + ROW_NUMBER() OVER (PARTITION BY project_id ORDER BY report_year DESC, report_week DESC) as rn + FROM weekly_report_mv + WHERE + (report_year < EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER) + OR (report_year = EXTRACT(ISOYEAR FROM CURRENT_DATE)::INTEGER + AND report_week < EXTRACT(WEEK FROM CURRENT_DATE)::INTEGER) +) sub +JOIN projects p ON p.id = sub.project_id +WHERE rn <= 4 AND p.deleted = FALSE +GROUP BY p.id, p.user_id +WITH DATA; + +CREATE INDEX idx_projects_median_mv_project_id ON projects_median_mv(project_id); +CREATE INDEX idx_projects_median_mv_user_id ON projects_median_mv(user_id); + +COMMENT ON MATERIALIZED VIEW projects_median_mv IS 'Materialized view calculating median score for each project based on last 4 weeks of historical data. Includes user_id for multi-tenant support.'; diff --git a/play-life-backend/migrations/000009_add_is_admin_to_users.down.sql b/play-life-backend/migrations/000009_add_is_admin_to_users.down.sql new file mode 100644 index 0000000..413e897 --- /dev/null +++ b/play-life-backend/migrations/000009_add_is_admin_to_users.down.sql @@ -0,0 +1,9 @@ +-- Migration: Remove is_admin field from users table +-- Date: 2026-02-02 +-- +-- This migration reverts the addition of is_admin field. + +DROP INDEX IF EXISTS idx_users_is_admin; + +ALTER TABLE users +DROP COLUMN IF EXISTS is_admin; diff --git a/play-life-backend/migrations/000009_add_is_admin_to_users.up.sql b/play-life-backend/migrations/000009_add_is_admin_to_users.up.sql new file mode 100644 index 0000000..93909dc --- /dev/null +++ b/play-life-backend/migrations/000009_add_is_admin_to_users.up.sql @@ -0,0 +1,12 @@ +-- Migration: Add is_admin field to users table +-- Date: 2026-02-02 +-- +-- This migration adds is_admin boolean field to users table to identify admin users. +-- Default value is FALSE, so existing users will not become admins automatically. + +ALTER TABLE users +ADD COLUMN is_admin BOOLEAN NOT NULL DEFAULT FALSE; + +CREATE INDEX idx_users_is_admin ON users(is_admin); + +COMMENT ON COLUMN users.is_admin IS 'Indicates if the user has admin privileges'; diff --git a/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.down.sql b/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.down.sql new file mode 100644 index 0000000..3b2e68c --- /dev/null +++ b/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.down.sql @@ -0,0 +1,9 @@ +-- Migration: Remove project_id field from wishlist_items table +-- Date: 2026-02-02 +-- +-- This migration reverts the addition of project_id field. + +DROP INDEX IF EXISTS idx_wishlist_items_project_id; + +ALTER TABLE wishlist_items +DROP COLUMN IF EXISTS project_id; diff --git a/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.up.sql b/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.up.sql new file mode 100644 index 0000000..6c4043e --- /dev/null +++ b/play-life-backend/migrations/000010_add_project_id_to_wishlist_items.up.sql @@ -0,0 +1,13 @@ +-- Migration: Add project_id field to wishlist_items table +-- Date: 2026-02-02 +-- +-- This migration adds project_id field to wishlist_items table to allow +-- grouping wishlist items by project. The field is nullable, so existing +-- items without a project will remain valid. + +ALTER TABLE wishlist_items +ADD COLUMN project_id INTEGER REFERENCES projects(id) ON DELETE SET NULL; + +CREATE INDEX idx_wishlist_items_project_id ON wishlist_items(project_id); + +COMMENT ON COLUMN wishlist_items.project_id IS 'Project this wishlist item belongs to (optional)'; diff --git a/play-life-backend/migrations/000011_add_color_to_projects.down.sql b/play-life-backend/migrations/000011_add_color_to_projects.down.sql new file mode 100644 index 0000000..52c341b --- /dev/null +++ b/play-life-backend/migrations/000011_add_color_to_projects.down.sql @@ -0,0 +1,9 @@ +-- Migration: Remove color field from projects table +-- Date: 2026-02-02 +-- +-- This migration removes the color field from projects table. + +DROP INDEX IF EXISTS idx_projects_color; + +ALTER TABLE projects +DROP COLUMN IF EXISTS color; diff --git a/play-life-backend/migrations/000011_add_color_to_projects.up.sql b/play-life-backend/migrations/000011_add_color_to_projects.up.sql new file mode 100644 index 0000000..2301b24 --- /dev/null +++ b/play-life-backend/migrations/000011_add_color_to_projects.up.sql @@ -0,0 +1,45 @@ +-- Migration: Add color field to projects table +-- Date: 2026-02-02 +-- +-- This migration adds color field to projects table to allow +-- custom color selection for projects. The field is NOT NULL, +-- and existing projects will be assigned colors from a predefined palette. + +-- Добавляем поле color +ALTER TABLE projects +ADD COLUMN color VARCHAR(7) NOT NULL DEFAULT '#3B82F6'; + +-- Палитра из 30 контрастных цветов (синхронизирована с backend и frontend) +-- Заполняем существующие проекты цветами из палитры +DO $$ +DECLARE + colors TEXT[] := ARRAY[ + '#EF4444', '#F97316', '#F59E0B', '#EAB308', '#84CC16', + '#22C55E', '#10B981', '#14B8A6', '#06B6D4', '#0EA5E9', + '#3B82F6', '#6366F1', '#8B5CF6', '#A855F7', '#D946EF', + '#EC4899', '#F43F5E', '#DC2626', '#EA580C', '#CA8A04', + '#65A30D', '#16A34A', '#059669', '#0D9488', '#0891B2', + '#0284C7', '#2563EB', '#4F46E5', '#7C3AED', '#9333EA' + ]; + project_record RECORD; + color_index INTEGER := 0; +BEGIN + -- Обновляем существующие проекты, присваивая им цвета из палитры + FOR project_record IN + SELECT id FROM projects ORDER BY id + LOOP + UPDATE projects + SET color = colors[1 + (color_index % array_length(colors, 1))] + WHERE id = project_record.id; + + color_index := color_index + 1; + END LOOP; +END $$; + +-- Убираем DEFAULT, так как теперь все проекты имеют цвет +ALTER TABLE projects +ALTER COLUMN color DROP DEFAULT; + +CREATE INDEX IF NOT EXISTS idx_projects_color ON projects(color); + +COMMENT ON COLUMN projects.color IS 'Project color in HEX format (e.g., #FF5733)'; diff --git a/play-life-backend/migrations/000012_add_subtask_position.down.sql b/play-life-backend/migrations/000012_add_subtask_position.down.sql new file mode 100644 index 0000000..751fc6d --- /dev/null +++ b/play-life-backend/migrations/000012_add_subtask_position.down.sql @@ -0,0 +1,9 @@ +-- Migration: Remove position field from tasks table +-- Date: 2026-02-02 +-- +-- This migration removes the position field from tasks table. + +DROP INDEX IF EXISTS idx_tasks_parent_position; + +ALTER TABLE tasks +DROP COLUMN IF EXISTS position; diff --git a/play-life-backend/migrations/000012_add_subtask_position.up.sql b/play-life-backend/migrations/000012_add_subtask_position.up.sql new file mode 100644 index 0000000..6617ff8 --- /dev/null +++ b/play-life-backend/migrations/000012_add_subtask_position.up.sql @@ -0,0 +1,49 @@ +-- Migration: Add position field to tasks table for subtasks ordering +-- Date: 2026-02-02 +-- +-- This migration adds position field to tasks table to allow +-- custom ordering of subtasks. The field is NULL for regular tasks +-- and contains position number for subtasks (tasks with parent_task_id). + +-- Добавляем поле position +ALTER TABLE tasks +ADD COLUMN position INTEGER; + +-- Заполняем позиции для всех существующих подзадач +-- Позиции присваиваются по порядку id в рамках каждой родительской задачи +DO $$ +DECLARE + parent_record RECORD; + subtask_record RECORD; + pos INTEGER; +BEGIN + -- Для каждой родительской задачи + FOR parent_record IN + SELECT DISTINCT parent_task_id + FROM tasks + WHERE parent_task_id IS NOT NULL + ORDER BY parent_task_id + LOOP + pos := 0; + -- Обновляем подзадачи этой родительской задачи + FOR subtask_record IN + SELECT id + FROM tasks + WHERE parent_task_id = parent_record.parent_task_id + AND deleted = FALSE + ORDER BY id + LOOP + UPDATE tasks + SET position = pos + WHERE id = subtask_record.id; + + pos := pos + 1; + END LOOP; + END LOOP; +END $$; + +-- Создаем индекс для быстрой сортировки подзадач +CREATE INDEX idx_tasks_parent_position ON tasks(parent_task_id, position) +WHERE parent_task_id IS NOT NULL AND deleted = FALSE; + +COMMENT ON COLUMN tasks.position IS 'Position of subtask within parent task. NULL for regular tasks.'; diff --git a/play-life-backend/migrations/000013_add_user_tracking.down.sql b/play-life-backend/migrations/000013_add_user_tracking.down.sql new file mode 100644 index 0000000..06ebad0 --- /dev/null +++ b/play-life-backend/migrations/000013_add_user_tracking.down.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS tracking_invite_tokens; +DROP TABLE IF EXISTS user_tracking; diff --git a/play-life-backend/migrations/000013_add_user_tracking.up.sql b/play-life-backend/migrations/000013_add_user_tracking.up.sql new file mode 100644 index 0000000..f31db29 --- /dev/null +++ b/play-life-backend/migrations/000013_add_user_tracking.up.sql @@ -0,0 +1,24 @@ +-- Таблица отслеживания между пользователями +CREATE TABLE user_tracking ( + id SERIAL PRIMARY KEY, + tracker_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + tracked_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_tracking_pair UNIQUE (tracker_id, tracked_id), + CONSTRAINT no_self_tracking CHECK (tracker_id != tracked_id) +); + +CREATE INDEX idx_user_tracking_tracker ON user_tracking(tracker_id); +CREATE INDEX idx_user_tracking_tracked ON user_tracking(tracked_id); + +-- Таблица токенов приглашений (живут 1 час) +CREATE TABLE tracking_invite_tokens ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + token VARCHAR(64) NOT NULL UNIQUE, + expires_at TIMESTAMP WITH TIME ZONE NOT NULL, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX idx_tracking_invite_tokens_token ON tracking_invite_tokens(token); +CREATE INDEX idx_tracking_invite_tokens_user ON tracking_invite_tokens(user_id); diff --git a/play-life-backend/migrations/000014_add_group_name.down.sql b/play-life-backend/migrations/000014_add_group_name.down.sql new file mode 100644 index 0000000..d3e3d79 --- /dev/null +++ b/play-life-backend/migrations/000014_add_group_name.down.sql @@ -0,0 +1,36 @@ +-- Migration: Remove group_name field from wishlist_items and tasks tables +-- Date: 2026-02-XX +-- +-- This migration reverses the changes made in 000014_add_group_name.up.sql + +-- Step 1: Drop materialized view +DROP MATERIALIZED VIEW IF EXISTS user_group_suggestions_mv; + +-- Step 2: Drop indexes on group_name +DROP INDEX IF EXISTS idx_tasks_group_name; +DROP INDEX IF EXISTS idx_wishlist_items_group_name; + +-- Step 3: Remove group_name from tasks +ALTER TABLE tasks +DROP COLUMN group_name; + +-- Step 4: Add back project_id to wishlist_items +ALTER TABLE wishlist_items +ADD COLUMN project_id INTEGER REFERENCES projects(id) ON DELETE SET NULL; + +-- Step 5: Try to restore project_id from group_name (if possible) +-- Note: This is best-effort, as group_name might not match project names exactly +UPDATE wishlist_items wi +SET project_id = p.id +FROM projects p +WHERE wi.group_name = p.name + AND wi.group_name IS NOT NULL + AND wi.group_name != '' + AND p.deleted = FALSE; + +-- Step 6: Create index on project_id +CREATE INDEX idx_wishlist_items_project_id ON wishlist_items(project_id); + +-- Step 7: Remove group_name from wishlist_items +ALTER TABLE wishlist_items +DROP COLUMN group_name; diff --git a/play-life-backend/migrations/000014_add_group_name.up.sql b/play-life-backend/migrations/000014_add_group_name.up.sql new file mode 100644 index 0000000..ca9512d --- /dev/null +++ b/play-life-backend/migrations/000014_add_group_name.up.sql @@ -0,0 +1,60 @@ +-- Migration: Add group_name field to wishlist_items and tasks tables +-- Date: 2026-02-XX +-- +-- This migration: +-- 1. Adds group_name field to wishlist_items (replacing project_id) +-- 2. Migrates existing data from project_id to group_name +-- 3. Removes project_id column from wishlist_items +-- 4. Adds group_name field to tasks +-- 5. Creates materialized view for group suggestions + +-- Step 1: Add group_name to wishlist_items +ALTER TABLE wishlist_items +ADD COLUMN group_name VARCHAR(255); + +-- Step 2: Migrate existing data from project_id to group_name +UPDATE wishlist_items wi +SET group_name = p.name +FROM projects p +WHERE wi.project_id = p.id AND wi.project_id IS NOT NULL; + +-- Step 3: Remove project_id column and its index +DROP INDEX IF EXISTS idx_wishlist_items_project_id; +ALTER TABLE wishlist_items +DROP COLUMN project_id; + +-- Step 4: Add group_name to tasks +ALTER TABLE tasks +ADD COLUMN group_name VARCHAR(255); + +-- Step 5: Create indexes on group_name +CREATE INDEX idx_wishlist_items_group_name ON wishlist_items(group_name) WHERE group_name IS NOT NULL; +CREATE INDEX idx_tasks_group_name ON tasks(group_name) WHERE group_name IS NOT NULL; + +-- Step 6: Create materialized view for group suggestions +CREATE MATERIALIZED VIEW user_group_suggestions_mv AS +SELECT DISTINCT user_id, group_name FROM ( + -- Желания пользователя (собственные) + SELECT wi.user_id, wi.group_name FROM wishlist_items wi + WHERE wi.deleted = FALSE AND wi.group_name IS NOT NULL AND wi.group_name != '' + UNION + -- Желания с досок, на которых пользователь участник + SELECT wbm.user_id, wi.group_name FROM wishlist_items wi + JOIN wishlist_board_members wbm ON wi.board_id = wbm.board_id + WHERE wi.deleted = FALSE AND wi.group_name IS NOT NULL AND wi.group_name != '' + UNION + -- Задачи пользователя + SELECT t.user_id, t.group_name FROM tasks t + WHERE t.deleted = FALSE AND t.group_name IS NOT NULL AND t.group_name != '' + UNION + -- Имена проектов пользователя + SELECT p.user_id, p.name FROM projects p + WHERE p.deleted = FALSE +) sub; + +-- Step 7: Create unique index for CONCURRENT refresh +CREATE UNIQUE INDEX idx_user_group_suggestions_mv_user_group ON user_group_suggestions_mv(user_id, group_name); + +COMMENT ON COLUMN wishlist_items.group_name IS 'Group name for wishlist item (free text, replaces project_id)'; +COMMENT ON COLUMN tasks.group_name IS 'Group name for task (free text)'; +COMMENT ON MATERIALIZED VIEW user_group_suggestions_mv IS 'Materialized view for group name suggestions per user'; diff --git a/play-life-backend/migrations/000015_add_fitbit_integration.down.sql b/play-life-backend/migrations/000015_add_fitbit_integration.down.sql new file mode 100644 index 0000000..71f660d --- /dev/null +++ b/play-life-backend/migrations/000015_add_fitbit_integration.down.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS fitbit_daily_stats; +DROP TABLE IF EXISTS fitbit_integrations; diff --git a/play-life-backend/migrations/000015_add_fitbit_integration.up.sql b/play-life-backend/migrations/000015_add_fitbit_integration.up.sql new file mode 100644 index 0000000..82a51e5 --- /dev/null +++ b/play-life-backend/migrations/000015_add_fitbit_integration.up.sql @@ -0,0 +1,38 @@ +-- Fitbit integrations table (depends on users) +CREATE TABLE fitbit_integrations ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + fitbit_user_id VARCHAR(255), + access_token TEXT, + refresh_token TEXT, + token_expires_at TIMESTAMP WITH TIME ZONE, + goal_steps_min INTEGER DEFAULT 8000, + goal_steps_max INTEGER DEFAULT 10000, + goal_floors_min INTEGER DEFAULT 8, + goal_floors_max INTEGER DEFAULT 10, + goal_azm_min INTEGER DEFAULT 22, + goal_azm_max INTEGER DEFAULT 44, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fitbit_integrations_user_id_unique UNIQUE (user_id) +); + +CREATE INDEX idx_fitbit_integrations_user_id ON fitbit_integrations(user_id); +CREATE UNIQUE INDEX idx_fitbit_integrations_fitbit_user_id ON fitbit_integrations(fitbit_user_id) WHERE fitbit_user_id IS NOT NULL; + +-- Fitbit daily stats table (depends on users and fitbit_integrations) +CREATE TABLE fitbit_daily_stats ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + date DATE NOT NULL, + steps INTEGER DEFAULT 0, + floors INTEGER DEFAULT 0, + active_zone_minutes INTEGER DEFAULT 0, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fitbit_daily_stats_user_date_unique UNIQUE (user_id, date) +); + +CREATE INDEX idx_fitbit_daily_stats_user_id ON fitbit_daily_stats(user_id); +CREATE INDEX idx_fitbit_daily_stats_date ON fitbit_daily_stats(date); +CREATE INDEX idx_fitbit_daily_stats_user_date ON fitbit_daily_stats(user_id, date); diff --git a/play-life-backend/migrations/000016_add_project_score_sample_mv.down.sql b/play-life-backend/migrations/000016_add_project_score_sample_mv.down.sql new file mode 100644 index 0000000..29b3458 --- /dev/null +++ b/play-life-backend/migrations/000016_add_project_score_sample_mv.down.sql @@ -0,0 +1,3 @@ +-- Migration: Drop project_score_sample_mv materialized view + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; diff --git a/play-life-backend/migrations/000016_add_project_score_sample_mv.up.sql b/play-life-backend/migrations/000016_add_project_score_sample_mv.up.sql new file mode 100644 index 0000000..7b874c4 --- /dev/null +++ b/play-life-backend/migrations/000016_add_project_score_sample_mv.up.sql @@ -0,0 +1,31 @@ +-- Migration: Add project_score_sample_mv materialized view +-- +-- One row per (project_id, score, user_id): sum of nodes.score per entry, +-- representative entry_message (latest by date). Used for admin display and reporting. + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +) +SELECT DISTINCT ON (es.project_id, es.score, es.user_id) + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date +FROM entry_scores es +JOIN entries e ON e.id = es.entry_id +ORDER BY es.project_id, es.score, es.user_id, es.created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, score, user_id): sum of nodes per entry, representative entry_message (latest by date).'; diff --git a/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.down.sql b/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.down.sql new file mode 100644 index 0000000..998c067 --- /dev/null +++ b/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.down.sql @@ -0,0 +1,30 @@ +-- Revert to previous MV definition (one row per project_id, score, user_id) + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +) +SELECT DISTINCT ON (es.project_id, es.score, es.user_id) + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date +FROM entry_scores es +JOIN entries e ON e.id = es.entry_id +ORDER BY es.project_id, es.score, es.user_id, es.created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, score, user_id): sum of nodes per entry, representative entry_message (latest by date).'; diff --git a/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.up.sql b/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.up.sql new file mode 100644 index 0000000..7b9923b --- /dev/null +++ b/play-life-backend/migrations/000017_project_score_sample_mv_unique_entry_message.up.sql @@ -0,0 +1,42 @@ +-- Migration: Make entry_message unique per (project_id, user_id) in project_score_sample_mv +-- +-- One row per (project_id, user_id, entry_message): choose the row with latest created_date. +-- Ensures the same entry_message does not repeat for different score values. + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +), +with_message AS ( + SELECT + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date + FROM entry_scores es + JOIN entries e ON e.id = es.entry_id +) +SELECT DISTINCT ON (project_id, user_id, entry_message) + project_id, + score, + entry_message, + user_id, + created_date +FROM with_message +ORDER BY project_id, user_id, entry_message, created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, user_id, entry_message): representative row (latest by date). entry_message is unique per project and user.'; diff --git a/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.down.sql b/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.down.sql new file mode 100644 index 0000000..8587384 --- /dev/null +++ b/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.down.sql @@ -0,0 +1,39 @@ +-- Revert to one row per (project_id, user_id, entry_message) + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +), +with_message AS ( + SELECT + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date + FROM entry_scores es + JOIN entries e ON e.id = es.entry_id +) +SELECT DISTINCT ON (project_id, user_id, entry_message) + project_id, + score, + entry_message, + user_id, + created_date +FROM with_message +ORDER BY project_id, user_id, entry_message, created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, user_id, entry_message): representative row (latest by date).'; diff --git a/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.up.sql b/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.up.sql new file mode 100644 index 0000000..aac8f4b --- /dev/null +++ b/play-life-backend/migrations/000018_project_score_sample_mv_one_per_score.up.sql @@ -0,0 +1,32 @@ +-- Migration: One row per (project_id, user_id, score) in project_score_sample_mv +-- +-- For each score value (per project and user) exactly one record; representative entry_message (latest by date). + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +) +SELECT DISTINCT ON (es.project_id, es.score, es.user_id) + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date +FROM entry_scores es +JOIN entries e ON e.id = es.entry_id +ORDER BY es.project_id, es.score, es.user_id, es.created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, score, user_id): one record per score, representative entry_message (latest by date).'; diff --git a/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.down.sql b/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.down.sql new file mode 100644 index 0000000..cdb9a5c --- /dev/null +++ b/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.down.sql @@ -0,0 +1,30 @@ +-- Revert to one row per (project_id, score, user_id) + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +) +SELECT DISTINCT ON (es.project_id, es.score, es.user_id) + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date +FROM entry_scores es +JOIN entries e ON e.id = es.entry_id +ORDER BY es.project_id, es.score, es.user_id, es.created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, score, user_id): one record per score, representative entry_message (latest by date).'; diff --git a/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.up.sql b/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.up.sql new file mode 100644 index 0000000..70d6138 --- /dev/null +++ b/play-life-backend/migrations/000019_project_score_sample_mv_one_entry_message_per_project.up.sql @@ -0,0 +1,42 @@ +-- Migration: One entry_message per (project_id, user_id) in project_score_sample_mv +-- +-- One record per score (per project, user) and one record per entry_message per project. +-- DISTINCT ON (project_id, user_id, entry_message): same message with different scores → one row (latest by date). + +DROP MATERIALIZED VIEW IF EXISTS project_score_sample_mv; + +CREATE MATERIALIZED VIEW project_score_sample_mv AS +WITH entry_scores AS ( + SELECT + n.project_id, + n.entry_id, + n.user_id, + SUM(n.score) AS score, + MAX(n.created_date) AS created_date + FROM nodes n + GROUP BY n.project_id, n.entry_id, n.user_id +), +with_message AS ( + SELECT + es.project_id, + es.score, + e.text AS entry_message, + es.user_id, + es.created_date + FROM entry_scores es + JOIN entries e ON e.id = es.entry_id +) +SELECT DISTINCT ON (project_id, user_id, entry_message) + project_id, + score, + entry_message, + user_id, + created_date +FROM with_message +ORDER BY project_id, user_id, entry_message, created_date DESC +WITH DATA; + +CREATE INDEX idx_project_score_sample_mv_project_score_user ON project_score_sample_mv(project_id, score, user_id); +CREATE INDEX idx_project_score_sample_mv_user_id ON project_score_sample_mv(user_id); + +COMMENT ON MATERIALIZED VIEW project_score_sample_mv IS 'One row per (project_id, user_id, entry_message): one record per score (chosen row), one entry_message per project; representative = latest by date.'; diff --git a/play-life-backend/migrations/README.md b/play-life-backend/migrations/README.md new file mode 100644 index 0000000..ccad621 --- /dev/null +++ b/play-life-backend/migrations/README.md @@ -0,0 +1,115 @@ +# Database Migrations + +Этот каталог содержит SQL миграции для создания структуры базы данных проекта play-life. + +## Использование + +### Создание базы данных с нуля + +Выполните миграцию для создания всех таблиц и представлений: + +```bash +psql -U your_user -d your_database -f 001_create_schema.sql +``` + +Или через docker-compose: + +```bash +docker-compose exec db psql -U playeng -d playeng -f /migrations/001_create_schema.sql +``` + +## Структура базы данных + +### Таблицы + +1. **projects** - Проекты + - `id` (SERIAL PRIMARY KEY) + - `name` (VARCHAR(255) NOT NULL, UNIQUE) + - `priority` (SMALLINT) + +2. **entries** - Записи с текстом и датами создания + - `id` (SERIAL PRIMARY KEY) + - `text` (TEXT NOT NULL) + - `created_date` (TIMESTAMP WITH TIME ZONE NOT NULL, DEFAULT CURRENT_TIMESTAMP) + +3. **nodes** - Узлы, связывающие проекты и записи + - `id` (SERIAL PRIMARY KEY) + - `project_id` (INTEGER NOT NULL, FK -> projects.id ON DELETE CASCADE) + - `entry_id` (INTEGER NOT NULL, FK -> entries.id ON DELETE CASCADE) + - `score` (NUMERIC(8,4)) + +4. **weekly_goals** - Недельные цели для проектов + - `id` (SERIAL PRIMARY KEY) + - `project_id` (INTEGER NOT NULL, FK -> projects.id ON DELETE CASCADE) + - `goal_year` (INTEGER NOT NULL) + - `goal_week` (INTEGER NOT NULL) + - `min_goal_score` (NUMERIC(10,4) NOT NULL, DEFAULT 0) + - `max_goal_score` (NUMERIC(10,4)) + - `max_score` (NUMERIC(10,4), NULL) — snapshot max на неделю (заполняется только для новых недель) + - `priority` (SMALLINT) + - UNIQUE CONSTRAINT: `(project_id, goal_year, goal_week)` + +### Materialized View + +- **weekly_report_mv** - Агрегированные данные по неделям для каждого проекта + - `project_id` (INTEGER) + - `report_year` (INTEGER) + - `report_week` (INTEGER) + - `total_score` (NUMERIC) + - `normalized_total_score` (NUMERIC) + +## Миграции + +### Порядок применения миграций + +1. **001_create_schema.sql** - Создание базовой структуры (таблицы, индексы, materialized view) +2. **002_add_dictionaries.sql** - Добавление таблиц для словарей +3. **003_remove_words_unique_constraint.sql** - Удаление уникального ограничения на words.name +4. **004_add_config_dictionaries.sql** - Добавление связи между конфигурациями и словарями +5. **005_fix_weekly_report_mv.sql** - Исправление использования ISOYEAR вместо YEAR для корректной работы на границе года +6. **006_fix_weekly_report_mv_structure.sql** - Исправление структуры view (добавление LEFT JOIN для включения всех проектов) +7. **026_weekly_goals_max_score.sql** - Добавление snapshot поля weekly_goals.max_score и удаление неиспользуемого actual_score +8. **027_add_normalized_total_score_to_weekly_report_mv.sql** - Добавление normalized_total_score в weekly_report_mv (ограничение total_score по max_score) + +### Применение миграций + +Для существующей базы данных применяйте миграции последовательно: + +```bash +psql -U playeng -d playeng -f migrations/005_fix_weekly_report_mv.sql +psql -U playeng -d playeng -f migrations/006_fix_weekly_report_mv_structure.sql +psql -U playeng -d playeng -f migrations/026_weekly_goals_max_score.sql +psql -U playeng -d playeng -f migrations/027_add_normalized_total_score_to_weekly_report_mv.sql +``` + +Или через docker-compose: + +```bash +docker-compose exec db psql -U playeng -d playeng -f /migrations/005_fix_weekly_report_mv.sql +docker-compose exec db psql -U playeng -d playeng -f /migrations/006_fix_weekly_report_mv_structure.sql +docker-compose exec db psql -U playeng -d playeng -f /migrations/026_weekly_goals_max_score.sql +docker-compose exec db psql -U playeng -d playeng -f /migrations/027_add_normalized_total_score_to_weekly_report_mv.sql +``` + +## Обновление Materialized View + +После изменения данных в таблицах `nodes` или `entries`, необходимо обновить materialized view: + +```sql +REFRESH MATERIALIZED VIEW weekly_report_mv; +``` + +## Связи между таблицами + +- `nodes.project_id` → `projects.id` (ON DELETE CASCADE) +- `nodes.entry_id` → `entries.id` (ON DELETE CASCADE) +- `weekly_goals.project_id` → `projects.id` (ON DELETE CASCADE) + +## Индексы + +Созданы индексы для оптимизации запросов: +- `idx_nodes_project_id` на `nodes(project_id)` +- `idx_nodes_entry_id` на `nodes(entry_id)` +- `idx_weekly_goals_project_id` на `weekly_goals(project_id)` +- `idx_weekly_report_mv_project_year_week` на `weekly_report_mv(project_id, report_year, report_week)` + diff --git a/play-life-backend/migrations_old/001_create_schema.sql b/play-life-backend/migrations_old/001_create_schema.sql new file mode 100644 index 0000000..90c8d26 --- /dev/null +++ b/play-life-backend/migrations_old/001_create_schema.sql @@ -0,0 +1,106 @@ +-- Migration: Create database schema for play-life project +-- This script creates all tables and materialized views needed for the project + +-- ============================================ +-- Table: projects +-- ============================================ +CREATE TABLE IF NOT EXISTS projects ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + priority SMALLINT, + CONSTRAINT unique_project_name UNIQUE (name) +); + +-- ============================================ +-- Table: entries +-- ============================================ +-- This table stores entries with creation dates +-- Used in weekly_report_mv for grouping by week +CREATE TABLE IF NOT EXISTS entries ( + id SERIAL PRIMARY KEY, + text TEXT NOT NULL, + created_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +-- ============================================ +-- Table: nodes +-- ============================================ +-- This table stores nodes linked to projects and entries +-- Contains score information used in weekly reports +CREATE TABLE IF NOT EXISTS nodes ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + entry_id INTEGER NOT NULL REFERENCES entries(id) ON DELETE CASCADE, + score NUMERIC(8,4) +); + +-- Create index on project_id for better join performance +CREATE INDEX IF NOT EXISTS idx_nodes_project_id ON nodes(project_id); +-- Create index on entry_id for better join performance +CREATE INDEX IF NOT EXISTS idx_nodes_entry_id ON nodes(entry_id); + +-- ============================================ +-- Table: weekly_goals +-- ============================================ +-- This table stores weekly goals for projects +CREATE TABLE IF NOT EXISTS weekly_goals ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + goal_year INTEGER NOT NULL, + goal_week INTEGER NOT NULL, + min_goal_score NUMERIC(10,4) NOT NULL DEFAULT 0, + max_goal_score NUMERIC(10,4), + actual_score NUMERIC(10,4) DEFAULT 0, + priority SMALLINT, + CONSTRAINT weekly_goals_project_id_goal_year_goal_week_key UNIQUE (project_id, goal_year, goal_week) +); + +-- Create index on project_id for better join performance +CREATE INDEX IF NOT EXISTS idx_weekly_goals_project_id ON weekly_goals(project_id); + +-- ============================================ +-- Materialized View: weekly_report_mv +-- ============================================ +CREATE MATERIALIZED VIEW IF NOT EXISTS weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + -- Используем COALESCE для установки total_score в 0.0000, если нет данных (NULL) + COALESCE(agg.total_score, 0.0000) AS total_score +FROM + projects p +LEFT JOIN + ( + -- 1. Предварительная агрегация: суммируем score по неделям + -- Используем ISOYEAR для корректной работы на границе года + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + -- 2. Присоединяем агрегированные данные ко ВСЕМ проектам + ON p.id = agg.project_id +ORDER BY + p.id, agg.report_year, agg.report_week; + +-- Create index on materialized view for better query performance +CREATE INDEX IF NOT EXISTS idx_weekly_report_mv_project_year_week + ON weekly_report_mv(project_id, report_year, report_week); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE projects IS 'Projects table storing project information with priority'; +COMMENT ON TABLE entries IS 'Entries table storing entry creation timestamps'; +COMMENT ON TABLE nodes IS 'Nodes table linking projects, entries and storing scores'; +COMMENT ON TABLE weekly_goals IS 'Weekly goals for projects'; +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries'; + diff --git a/play-life-backend/migrations_old/002_add_dictionaries.sql b/play-life-backend/migrations_old/002_add_dictionaries.sql new file mode 100644 index 0000000..8b140b7 --- /dev/null +++ b/play-life-backend/migrations_old/002_add_dictionaries.sql @@ -0,0 +1,53 @@ +-- Migration: Add dictionaries table and dictionary_id to words +-- This script creates the dictionaries table and adds dictionary_id field to words table + +-- ============================================ +-- Table: dictionaries +-- ============================================ +CREATE TABLE IF NOT EXISTS dictionaries ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL +); + +-- Insert default dictionary "Все слова" with id = 0 +-- Note: PostgreSQL SERIAL starts from 1, so we need to use a workaround +-- First, set the sequence to allow inserting 0, then insert, then reset sequence +DO $$ +BEGIN + -- Set sequence to -1 so next value will be 0 + PERFORM setval('dictionaries_id_seq', -1, false); + + -- Insert the default dictionary with id = 0 + INSERT INTO dictionaries (id, name) + VALUES (0, 'Все слова') + ON CONFLICT (id) DO NOTHING; + + -- Set the sequence to start from 1 (so next auto-increment will be 1) + PERFORM setval('dictionaries_id_seq', 1, false); +END $$; + +-- ============================================ +-- Alter words table: Add dictionary_id column +-- ============================================ +ALTER TABLE words +ADD COLUMN IF NOT EXISTS dictionary_id INTEGER DEFAULT 0 REFERENCES dictionaries(id); + +-- Update all existing words to have dictionary_id = 0 +UPDATE words +SET dictionary_id = 0 +WHERE dictionary_id IS NULL; + +-- Make dictionary_id NOT NULL after setting default values +ALTER TABLE words +ALTER COLUMN dictionary_id SET NOT NULL, +ALTER COLUMN dictionary_id SET DEFAULT 0; + +-- Create index on dictionary_id for better join performance +CREATE INDEX IF NOT EXISTS idx_words_dictionary_id ON words(dictionary_id); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE dictionaries IS 'Dictionaries table storing dictionary information'; +COMMENT ON COLUMN words.dictionary_id IS 'Reference to dictionary. Default is 0 (Все слова)'; + diff --git a/play-life-backend/migrations_old/003_remove_words_unique_constraint.sql b/play-life-backend/migrations_old/003_remove_words_unique_constraint.sql new file mode 100644 index 0000000..deed27e --- /dev/null +++ b/play-life-backend/migrations_old/003_remove_words_unique_constraint.sql @@ -0,0 +1,11 @@ +-- Migration: Remove UNIQUE constraint from words.name +-- This script removes the unique constraint on the name column in the words table + +-- Drop the unique constraint on words.name if it exists +ALTER TABLE words +DROP CONSTRAINT IF EXISTS words_name_key; + +-- Also try to drop constraint if it was created with different name +ALTER TABLE words +DROP CONSTRAINT IF EXISTS words_name_unique; + diff --git a/play-life-backend/migrations_old/004_add_config_dictionaries.sql b/play-life-backend/migrations_old/004_add_config_dictionaries.sql new file mode 100644 index 0000000..7d2bc69 --- /dev/null +++ b/play-life-backend/migrations_old/004_add_config_dictionaries.sql @@ -0,0 +1,21 @@ +-- Migration: Add config_dictionaries table (many-to-many relationship) +-- This script creates the config_dictionaries table linking configs and dictionaries + +-- ============================================ +-- Table: config_dictionaries +-- ============================================ +CREATE TABLE IF NOT EXISTS config_dictionaries ( + config_id INTEGER NOT NULL REFERENCES configs(id) ON DELETE CASCADE, + dictionary_id INTEGER NOT NULL REFERENCES dictionaries(id) ON DELETE CASCADE, + PRIMARY KEY (config_id, dictionary_id) +); + +-- Create indexes for better query performance +CREATE INDEX IF NOT EXISTS idx_config_dictionaries_config_id ON config_dictionaries(config_id); +CREATE INDEX IF NOT EXISTS idx_config_dictionaries_dictionary_id ON config_dictionaries(dictionary_id); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE config_dictionaries IS 'Many-to-many relationship table linking configs and dictionaries. If no dictionaries are selected for a config, all dictionaries will be used.'; + diff --git a/play-life-backend/migrations_old/005_fix_weekly_report_mv.sql b/play-life-backend/migrations_old/005_fix_weekly_report_mv.sql new file mode 100644 index 0000000..45ecd4f --- /dev/null +++ b/play-life-backend/migrations_old/005_fix_weekly_report_mv.sql @@ -0,0 +1,29 @@ +-- Migration: Fix weekly_report_mv to use ISOYEAR instead of YEAR +-- This fixes incorrect week calculations at year boundaries +-- Date: 2024 + +-- Drop existing materialized view +DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv; + +-- Recreate materialized view with ISOYEAR +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + n.project_id, + -- 🔑 ГЛАВНОЕ ИСПРАВЛЕНИЕ: Используем ISOYEAR + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score +FROM + nodes n +JOIN + entries e ON n.entry_id = e.id +GROUP BY + 1, 2, 3 +WITH DATA; + +-- Recreate index +CREATE INDEX IF NOT EXISTS idx_weekly_report_mv_project_year_week + ON weekly_report_mv(project_id, report_year, report_week); + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations'; + diff --git a/play-life-backend/migrations_old/006_fix_weekly_report_mv_structure.sql b/play-life-backend/migrations_old/006_fix_weekly_report_mv_structure.sql new file mode 100644 index 0000000..90ddb78 --- /dev/null +++ b/play-life-backend/migrations_old/006_fix_weekly_report_mv_structure.sql @@ -0,0 +1,48 @@ +-- Migration: Fix weekly_report_mv structure to include all projects via LEFT JOIN +-- This ensures the view structure matches the code in main.go +-- Date: 2024-12-29 +-- +-- Issue: Migration 005 created the view without LEFT JOIN to projects table, +-- which means projects without data were not included in the view. +-- This migration fixes the structure to match main.go implementation. + +-- Drop existing materialized view +DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv; + +-- Recreate materialized view with correct structure (LEFT JOIN with projects) +-- This ensures all projects are included, even if they have no data for a given week +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score +FROM + projects p +LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id +WHERE + p.deleted = FALSE +ORDER BY + p.id, agg.report_year, agg.report_week +WITH DATA; + +-- Recreate index +CREATE INDEX IF NOT EXISTS idx_weekly_report_mv_project_year_week + ON weekly_report_mv(project_id, report_year, report_week); + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries. Includes all projects via LEFT JOIN.'; + diff --git a/play-life-backend/migrations_old/007_add_deleted_to_projects.sql b/play-life-backend/migrations_old/007_add_deleted_to_projects.sql new file mode 100644 index 0000000..fd9f824 --- /dev/null +++ b/play-life-backend/migrations_old/007_add_deleted_to_projects.sql @@ -0,0 +1,13 @@ +-- Migration: Add deleted field to projects table +-- This script adds a deleted boolean field to mark projects as deleted (soft delete) + +-- Add deleted column to projects table +ALTER TABLE projects +ADD COLUMN IF NOT EXISTS deleted BOOLEAN NOT NULL DEFAULT FALSE; + +-- Create index on deleted column for better query performance +CREATE INDEX IF NOT EXISTS idx_projects_deleted ON projects(deleted); + +-- Add comment for documentation +COMMENT ON COLUMN projects.deleted IS 'Soft delete flag: TRUE if project is deleted, FALSE otherwise'; + diff --git a/play-life-backend/migrations_old/008_add_telegram_integrations.sql b/play-life-backend/migrations_old/008_add_telegram_integrations.sql new file mode 100644 index 0000000..ac807a2 --- /dev/null +++ b/play-life-backend/migrations_old/008_add_telegram_integrations.sql @@ -0,0 +1,16 @@ +-- Migration: Add telegram_integrations table +-- This script creates a table to store Telegram bot tokens and chat IDs + +-- Create telegram_integrations table +CREATE TABLE IF NOT EXISTS telegram_integrations ( + id SERIAL PRIMARY KEY, + chat_id VARCHAR(255), + bot_token VARCHAR(255) +); + +-- Add comment for documentation +COMMENT ON TABLE telegram_integrations IS 'Stores Telegram bot tokens and chat IDs for integrations'; +COMMENT ON COLUMN telegram_integrations.id IS 'Auto-increment primary key'; +COMMENT ON COLUMN telegram_integrations.chat_id IS 'Telegram chat ID (nullable, set automatically after first message)'; +COMMENT ON COLUMN telegram_integrations.bot_token IS 'Telegram bot token (nullable, set by user)'; + diff --git a/play-life-backend/migrations_old/009_add_users_and_multitenancy.sql b/play-life-backend/migrations_old/009_add_users_and_multitenancy.sql new file mode 100644 index 0000000..dc34ef0 --- /dev/null +++ b/play-life-backend/migrations_old/009_add_users_and_multitenancy.sql @@ -0,0 +1,128 @@ +-- Migration: Add users table and user_id to all tables for multi-tenancy +-- This script adds user authentication and makes all data user-specific +-- All statements use IF NOT EXISTS / IF EXISTS for idempotency + +-- ============================================ +-- Table: users +-- ============================================ +CREATE TABLE IF NOT EXISTS users ( + id SERIAL PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE, + password_hash VARCHAR(255) NOT NULL, + name VARCHAR(255), + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + is_active BOOLEAN DEFAULT TRUE, + last_login_at TIMESTAMP WITH TIME ZONE +); + +CREATE INDEX IF NOT EXISTS idx_users_email ON users(email); + +-- ============================================ +-- Table: refresh_tokens +-- ============================================ +CREATE TABLE IF NOT EXISTS refresh_tokens ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + token_hash VARCHAR(255) NOT NULL, + expires_at TIMESTAMP WITH TIME ZONE NOT NULL, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_refresh_tokens_user_id ON refresh_tokens(user_id); +CREATE INDEX IF NOT EXISTS idx_refresh_tokens_token_hash ON refresh_tokens(token_hash); + +-- ============================================ +-- Add user_id to projects +-- ============================================ +ALTER TABLE projects +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_projects_user_id ON projects(user_id); + +-- Drop old unique constraint (name now unique per user, handled in app) +ALTER TABLE projects DROP CONSTRAINT IF EXISTS unique_project_name; + +-- ============================================ +-- Add user_id to entries +-- ============================================ +ALTER TABLE entries +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_entries_user_id ON entries(user_id); + +-- ============================================ +-- Add user_id to dictionaries +-- ============================================ +ALTER TABLE dictionaries +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_dictionaries_user_id ON dictionaries(user_id); + +-- ============================================ +-- Add user_id to words +-- ============================================ +ALTER TABLE words +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_words_user_id ON words(user_id); + +-- ============================================ +-- Add user_id to progress +-- ============================================ +ALTER TABLE progress +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_progress_user_id ON progress(user_id); + +-- Drop old unique constraint (word_id now unique per user) +ALTER TABLE progress DROP CONSTRAINT IF EXISTS progress_word_id_key; + +-- Create new unique constraint per user +CREATE UNIQUE INDEX IF NOT EXISTS idx_progress_word_user_unique ON progress(word_id, user_id); + +-- ============================================ +-- Add user_id to configs +-- ============================================ +ALTER TABLE configs +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_configs_user_id ON configs(user_id); + +-- ============================================ +-- Add user_id to telegram_integrations +-- ============================================ +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_telegram_integrations_user_id ON telegram_integrations(user_id); + +-- ============================================ +-- Add user_id to weekly_goals +-- ============================================ +ALTER TABLE weekly_goals +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_weekly_goals_user_id ON weekly_goals(user_id); + +-- ============================================ +-- Add user_id to nodes (score data) +-- ============================================ +ALTER TABLE nodes +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_nodes_user_id ON nodes(user_id); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE users IS 'Users table for authentication and multi-tenancy'; +COMMENT ON COLUMN users.email IS 'User email address (unique, used for login)'; +COMMENT ON COLUMN users.password_hash IS 'Bcrypt hashed password'; +COMMENT ON COLUMN users.name IS 'User display name'; +COMMENT ON COLUMN users.is_active IS 'Whether the user account is active'; +COMMENT ON TABLE refresh_tokens IS 'JWT refresh tokens for persistent login'; + +-- Note: The first user who logs in will automatically become the owner of all +-- existing data (projects, entries, dictionaries, words, etc.) that have NULL user_id. +-- This is handled in the application code (claimOrphanedData function). diff --git a/play-life-backend/migrations_old/011_add_webhook_tokens.sql b/play-life-backend/migrations_old/011_add_webhook_tokens.sql new file mode 100644 index 0000000..f871e9f --- /dev/null +++ b/play-life-backend/migrations_old/011_add_webhook_tokens.sql @@ -0,0 +1,17 @@ +-- Migration: Add webhook_token to telegram_integrations +-- This allows identifying user by webhook URL token + +-- Add webhook_token column to telegram_integrations +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS webhook_token VARCHAR(255); + +-- Create unique index on webhook_token for fast lookups +CREATE UNIQUE INDEX IF NOT EXISTS idx_telegram_integrations_webhook_token +ON telegram_integrations(webhook_token) +WHERE webhook_token IS NOT NULL; + +-- Generate webhook tokens for existing integrations +-- This will be handled by application code, but we ensure the column exists + +COMMENT ON COLUMN telegram_integrations.webhook_token IS 'Unique token for webhook URL identification (e.g., /webhook/telegram/{token})'; + diff --git a/play-life-backend/migrations_old/012_refactor_telegram_single_bot.sql b/play-life-backend/migrations_old/012_refactor_telegram_single_bot.sql new file mode 100644 index 0000000..5e9d528 --- /dev/null +++ b/play-life-backend/migrations_old/012_refactor_telegram_single_bot.sql @@ -0,0 +1,103 @@ +-- Migration: Refactor telegram_integrations for single shared bot +-- and move Todoist webhook_token to separate table + +-- ============================================ +-- 1. Создаем таблицу todoist_integrations +-- ============================================ +CREATE TABLE IF NOT EXISTS todoist_integrations ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + webhook_token VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT todoist_integrations_user_id_unique UNIQUE (user_id) +); + +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_webhook_token +ON todoist_integrations(webhook_token); + +CREATE INDEX IF NOT EXISTS idx_todoist_integrations_user_id +ON todoist_integrations(user_id); + +COMMENT ON TABLE todoist_integrations IS 'Todoist webhook integration settings per user'; +COMMENT ON COLUMN todoist_integrations.webhook_token IS 'Unique token for Todoist webhook URL'; + +-- ============================================ +-- 2. Мигрируем webhook_token из telegram_integrations в todoist_integrations +-- ============================================ +INSERT INTO todoist_integrations (user_id, webhook_token, created_at, updated_at) +SELECT user_id, webhook_token, COALESCE(created_at, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP +FROM telegram_integrations +WHERE webhook_token IS NOT NULL + AND webhook_token != '' + AND user_id IS NOT NULL +ON CONFLICT (user_id) DO NOTHING; + +-- ============================================ +-- 3. Модифицируем telegram_integrations +-- ============================================ + +-- Удаляем bot_token (будет в .env) +ALTER TABLE telegram_integrations +DROP COLUMN IF EXISTS bot_token; + +-- Удаляем webhook_token (перенесли в todoist_integrations) +ALTER TABLE telegram_integrations +DROP COLUMN IF EXISTS webhook_token; + +-- Добавляем telegram_user_id +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS telegram_user_id BIGINT; + +-- Добавляем start_token для deep links +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS start_token VARCHAR(255); + +-- Добавляем timestamps если их нет +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE telegram_integrations +ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP; + +-- ============================================ +-- 4. Создаем индексы +-- ============================================ +CREATE UNIQUE INDEX IF NOT EXISTS idx_telegram_integrations_start_token +ON telegram_integrations(start_token) +WHERE start_token IS NOT NULL; + +CREATE UNIQUE INDEX IF NOT EXISTS idx_telegram_integrations_telegram_user_id +ON telegram_integrations(telegram_user_id) +WHERE telegram_user_id IS NOT NULL; + +-- Уникальность user_id +DROP INDEX IF EXISTS idx_telegram_integrations_user_id; +CREATE UNIQUE INDEX IF NOT EXISTS idx_telegram_integrations_user_id_unique +ON telegram_integrations(user_id) +WHERE user_id IS NOT NULL; + +-- Индекс для поиска по chat_id +CREATE INDEX IF NOT EXISTS idx_telegram_integrations_chat_id +ON telegram_integrations(chat_id) +WHERE chat_id IS NOT NULL; + +-- Удаляем старый индекс webhook_token +DROP INDEX IF EXISTS idx_telegram_integrations_webhook_token; + +-- ============================================ +-- 5. Очищаем данные Telegram для переподключения +-- ============================================ +UPDATE telegram_integrations +SET chat_id = NULL, + telegram_user_id = NULL, + start_token = NULL, + updated_at = CURRENT_TIMESTAMP; + +-- ============================================ +-- Комментарии +-- ============================================ +COMMENT ON COLUMN telegram_integrations.telegram_user_id IS 'Telegram user ID (message.from.id)'; +COMMENT ON COLUMN telegram_integrations.chat_id IS 'Telegram chat ID для отправки сообщений'; +COMMENT ON COLUMN telegram_integrations.start_token IS 'Временный токен для deep link при первом подключении'; + diff --git a/play-life-backend/migrations_old/013_refactor_todoist_single_app.sql b/play-life-backend/migrations_old/013_refactor_todoist_single_app.sql new file mode 100644 index 0000000..6103250 --- /dev/null +++ b/play-life-backend/migrations_old/013_refactor_todoist_single_app.sql @@ -0,0 +1,45 @@ +-- Migration: Refactor todoist_integrations for single Todoist app +-- Webhook теперь единый для всего приложения, токены в URL больше не нужны +-- Все пользователи используют одно Todoist приложение + +-- ============================================ +-- 1. Добавляем новые поля +-- ============================================ +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS todoist_user_id BIGINT; + +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS todoist_email VARCHAR(255); + +ALTER TABLE todoist_integrations +ADD COLUMN IF NOT EXISTS access_token TEXT; + +-- ============================================ +-- 2. Удаляем webhook_token (больше не нужен!) +-- ============================================ +ALTER TABLE todoist_integrations +DROP COLUMN IF EXISTS webhook_token; + +-- ============================================ +-- 3. Удаляем старый индекс на webhook_token +-- ============================================ +DROP INDEX IF EXISTS idx_todoist_integrations_webhook_token; + +-- ============================================ +-- 4. Создаем новые индексы +-- ============================================ +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_user_id +ON todoist_integrations(todoist_user_id) +WHERE todoist_user_id IS NOT NULL; + +CREATE UNIQUE INDEX IF NOT EXISTS idx_todoist_integrations_todoist_email +ON todoist_integrations(todoist_email) +WHERE todoist_email IS NOT NULL; + +-- ============================================ +-- 5. Комментарии +-- ============================================ +COMMENT ON COLUMN todoist_integrations.todoist_user_id IS 'Todoist user ID (from OAuth) - used to identify user in webhooks'; +COMMENT ON COLUMN todoist_integrations.todoist_email IS 'Todoist user email (from OAuth)'; +COMMENT ON COLUMN todoist_integrations.access_token IS 'Todoist OAuth access token (permanent)'; + diff --git a/play-life-backend/migrations_old/014_make_refresh_tokens_permanent.sql b/play-life-backend/migrations_old/014_make_refresh_tokens_permanent.sql new file mode 100644 index 0000000..f4e2530 --- /dev/null +++ b/play-life-backend/migrations_old/014_make_refresh_tokens_permanent.sql @@ -0,0 +1,21 @@ +-- Migration: Make refresh tokens permanent (no expiration) +-- Refresh tokens теперь не имеют срока действия (expires_at может быть NULL) +-- Access tokens живут 24 часа вместо 15 минут + +-- ============================================ +-- 1. Изменяем expires_at на NULLABLE +-- ============================================ +ALTER TABLE refresh_tokens +ALTER COLUMN expires_at DROP NOT NULL; + +-- ============================================ +-- 2. Устанавливаем NULL для всех существующих токенов +-- (или можно оставить их как есть, если они еще не истекли) +-- ============================================ +-- UPDATE refresh_tokens SET expires_at = NULL WHERE expires_at > NOW(); + +-- ============================================ +-- 3. Комментарий +-- ============================================ +COMMENT ON COLUMN refresh_tokens.expires_at IS 'Expiration date for refresh token. NULL means token never expires.'; + diff --git a/play-life-backend/migrations_old/015_add_tasks.sql b/play-life-backend/migrations_old/015_add_tasks.sql new file mode 100644 index 0000000..fc4aec4 --- /dev/null +++ b/play-life-backend/migrations_old/015_add_tasks.sql @@ -0,0 +1,58 @@ +-- Migration: Add tasks and reward_configs tables +-- This script creates tables for task management system + +-- ============================================ +-- Table: tasks +-- ============================================ +CREATE TABLE IF NOT EXISTS tasks ( + id SERIAL PRIMARY KEY, + user_id INTEGER REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + completed INTEGER DEFAULT 0, + last_completed_at TIMESTAMP WITH TIME ZONE, + parent_task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + reward_message TEXT, + progression_base NUMERIC(10,4), + deleted BOOLEAN DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_tasks_user_id ON tasks(user_id); +CREATE INDEX IF NOT EXISTS idx_tasks_parent_task_id ON tasks(parent_task_id); +CREATE INDEX IF NOT EXISTS idx_tasks_deleted ON tasks(deleted); +CREATE INDEX IF NOT EXISTS idx_tasks_last_completed_at ON tasks(last_completed_at); + +-- ============================================ +-- Table: reward_configs +-- ============================================ +CREATE TABLE IF NOT EXISTS reward_configs ( + id SERIAL PRIMARY KEY, + position INTEGER NOT NULL, + task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE, + project_id INTEGER REFERENCES projects(id) ON DELETE CASCADE, + value NUMERIC(10,4) NOT NULL, + use_progression BOOLEAN DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_reward_configs_task_id ON reward_configs(task_id); +CREATE INDEX IF NOT EXISTS idx_reward_configs_project_id ON reward_configs(project_id); +CREATE UNIQUE INDEX IF NOT EXISTS idx_reward_configs_task_position ON reward_configs(task_id, position); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE tasks IS 'Tasks table for task management system'; +COMMENT ON COLUMN tasks.name IS 'Task name (required for main tasks, optional for subtasks)'; +COMMENT ON COLUMN tasks.completed IS 'Number of times task was completed'; +COMMENT ON COLUMN tasks.last_completed_at IS 'Date and time of last task completion'; +COMMENT ON COLUMN tasks.parent_task_id IS 'Parent task ID for subtasks (NULL for main tasks)'; +COMMENT ON COLUMN tasks.reward_message IS 'Reward message template with placeholders ${0}, ${1}, etc.'; +COMMENT ON COLUMN tasks.progression_base IS 'Base value for progression calculation (NULL means no progression)'; +COMMENT ON COLUMN tasks.deleted IS 'Soft delete flag'; + +COMMENT ON TABLE reward_configs IS 'Reward configurations for tasks'; +COMMENT ON COLUMN reward_configs.position IS 'Position in reward_message template (0, 1, 2, etc.)'; +COMMENT ON COLUMN reward_configs.task_id IS 'Task this reward belongs to'; +COMMENT ON COLUMN reward_configs.project_id IS 'Project to add reward to'; +COMMENT ON COLUMN reward_configs.value IS 'Default score value (can be negative)'; +COMMENT ON COLUMN reward_configs.use_progression IS 'Whether to use progression multiplier for this reward'; + diff --git a/play-life-backend/migrations_old/016_add_repetition_period.sql b/play-life-backend/migrations_old/016_add_repetition_period.sql new file mode 100644 index 0000000..4af049d --- /dev/null +++ b/play-life-backend/migrations_old/016_add_repetition_period.sql @@ -0,0 +1,14 @@ +-- Migration: Add repetition_period field to tasks table +-- This script adds the repetition_period field for recurring tasks + +-- ============================================ +-- Add repetition_period column +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS repetition_period INTERVAL; + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON COLUMN tasks.repetition_period IS 'Period after which task should be repeated (NULL means task is not recurring)'; + diff --git a/play-life-backend/migrations_old/017_add_next_show_at.sql b/play-life-backend/migrations_old/017_add_next_show_at.sql new file mode 100644 index 0000000..636dc23 --- /dev/null +++ b/play-life-backend/migrations_old/017_add_next_show_at.sql @@ -0,0 +1,14 @@ +-- Migration: Add next_show_at field to tasks table +-- This script adds the next_show_at field for postponing tasks + +-- ============================================ +-- Add next_show_at column +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS next_show_at TIMESTAMP WITH TIME ZONE; + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON COLUMN tasks.next_show_at IS 'Date when task should be shown again (NULL means use last_completed_at + period)'; + diff --git a/play-life-backend/migrations_old/018_add_repetition_date.sql b/play-life-backend/migrations_old/018_add_repetition_date.sql new file mode 100644 index 0000000..ba502e0 --- /dev/null +++ b/play-life-backend/migrations_old/018_add_repetition_date.sql @@ -0,0 +1,16 @@ +-- Migration: Add repetition_date field to tasks table +-- This script adds the repetition_date field for pattern-based recurring tasks +-- Format examples: "2 week" (2nd day of week), "15 month" (15th day of month), "02-01 year" (Feb 1st) + +-- ============================================ +-- Add repetition_date column +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS repetition_date TEXT; + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON COLUMN tasks.repetition_date IS 'Pattern-based repetition: "N week" (day of week 1-7), "N month" (day of month 1-31), "MM-DD year" (specific date). Mutually exclusive with repetition_period.'; + + diff --git a/play-life-backend/migrations_old/019_add_wishlist.sql b/play-life-backend/migrations_old/019_add_wishlist.sql new file mode 100644 index 0000000..59a1f02 --- /dev/null +++ b/play-life-backend/migrations_old/019_add_wishlist.sql @@ -0,0 +1,86 @@ +-- Migration: Add wishlist tables +-- This script creates tables for wishlist management system +-- Supports multiple unlock conditions per wishlist item (AND logic) + +-- ============================================ +-- Table: wishlist_items +-- ============================================ +CREATE TABLE IF NOT EXISTS wishlist_items ( + id SERIAL PRIMARY KEY, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + price NUMERIC(10,2), + image_path VARCHAR(500), + link TEXT, + completed BOOLEAN DEFAULT FALSE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_wishlist_items_user_id ON wishlist_items(user_id); +CREATE INDEX IF NOT EXISTS idx_wishlist_items_user_deleted ON wishlist_items(user_id, deleted); +CREATE INDEX IF NOT EXISTS idx_wishlist_items_user_completed ON wishlist_items(user_id, completed, deleted); + +-- ============================================ +-- Table: task_conditions +-- ============================================ +-- Reusable conditions for task completion +CREATE TABLE IF NOT EXISTS task_conditions ( + id SERIAL PRIMARY KEY, + task_id INTEGER NOT NULL REFERENCES tasks(id) ON DELETE CASCADE, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_task_condition UNIQUE (task_id) +); + +CREATE INDEX IF NOT EXISTS idx_task_conditions_task_id ON task_conditions(task_id); + +-- ============================================ +-- Table: score_conditions +-- ============================================ +-- Reusable conditions for project points +CREATE TABLE IF NOT EXISTS score_conditions ( + id SERIAL PRIMARY KEY, + project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + required_points NUMERIC(10,4) NOT NULL, + period_type VARCHAR(20), -- 'week', 'month', 'year', NULL (all time) + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT unique_score_condition UNIQUE (project_id, required_points, period_type) +); + +CREATE INDEX IF NOT EXISTS idx_score_conditions_project_id ON score_conditions(project_id); + +-- ============================================ +-- Table: wishlist_conditions +-- ============================================ +-- Links wishlist items to unlock conditions +CREATE TABLE IF NOT EXISTS wishlist_conditions ( + id SERIAL PRIMARY KEY, + wishlist_item_id INTEGER NOT NULL REFERENCES wishlist_items(id) ON DELETE CASCADE, + task_condition_id INTEGER REFERENCES task_conditions(id) ON DELETE CASCADE, + score_condition_id INTEGER REFERENCES score_conditions(id) ON DELETE CASCADE, + display_order INTEGER DEFAULT 0, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT check_exactly_one_condition CHECK ( + (task_condition_id IS NOT NULL AND score_condition_id IS NULL) OR + (task_condition_id IS NULL AND score_condition_id IS NOT NULL) + ) +); + +CREATE INDEX IF NOT EXISTS idx_wishlist_conditions_item_id ON wishlist_conditions(wishlist_item_id); +CREATE INDEX IF NOT EXISTS idx_wishlist_conditions_item_order ON wishlist_conditions(wishlist_item_id, display_order); +CREATE INDEX IF NOT EXISTS idx_wishlist_conditions_task_condition_id ON wishlist_conditions(task_condition_id); +CREATE INDEX IF NOT EXISTS idx_wishlist_conditions_score_condition_id ON wishlist_conditions(score_condition_id); + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE wishlist_items IS 'Wishlist items for users'; +COMMENT ON COLUMN wishlist_items.completed IS 'Flag indicating item was purchased/received'; +COMMENT ON COLUMN wishlist_items.image_path IS 'Path to image file relative to uploads root'; + +COMMENT ON TABLE task_conditions IS 'Reusable unlock conditions based on task completion'; +COMMENT ON TABLE score_conditions IS 'Reusable unlock conditions based on project points'; +COMMENT ON TABLE wishlist_conditions IS 'Links between wishlist items and unlock conditions. Multiple conditions per item use AND logic.'; +COMMENT ON COLUMN wishlist_conditions.display_order IS 'Order for displaying conditions in UI'; + diff --git a/play-life-backend/migrations_old/020_change_period_to_start_date.sql b/play-life-backend/migrations_old/020_change_period_to_start_date.sql new file mode 100644 index 0000000..2727b15 --- /dev/null +++ b/play-life-backend/migrations_old/020_change_period_to_start_date.sql @@ -0,0 +1,37 @@ +-- Migration: Change period_type to start_date in score_conditions +-- This allows specifying a start date for counting points instead of period type +-- Date can be in the past or future, NULL means count all time + +-- Добавляем новое поле start_date +ALTER TABLE score_conditions +ADD COLUMN IF NOT EXISTS start_date DATE; + +-- Миграция данных: для существующих записей с period_type устанавливаем start_date +-- Если period_type = 'week', то start_date = начало текущей недели +-- Если period_type = 'month', то start_date = начало текущего месяца +-- Если period_type = 'year', то start_date = начало текущего года +-- Если period_type IS NULL, то start_date = NULL (за всё время) +UPDATE score_conditions +SET start_date = CASE + WHEN period_type = 'week' THEN DATE_TRUNC('week', CURRENT_DATE)::DATE + WHEN period_type = 'month' THEN DATE_TRUNC('month', CURRENT_DATE)::DATE + WHEN period_type = 'year' THEN DATE_TRUNC('year', CURRENT_DATE)::DATE + ELSE NULL +END +WHERE start_date IS NULL; + +-- Обновляем уникальное ограничение (удаляем старое, добавляем новое) +ALTER TABLE score_conditions +DROP CONSTRAINT IF EXISTS unique_score_condition; + +ALTER TABLE score_conditions +ADD CONSTRAINT unique_score_condition +UNIQUE (project_id, required_points, start_date); + +-- Обновляем комментарии +COMMENT ON COLUMN score_conditions.start_date IS 'Date from which to start counting points. NULL means count all time.'; + +-- Примечание: поле period_type оставляем пока для обратной совместимости +-- Его можно будет удалить позже после проверки, что всё работает: +-- ALTER TABLE score_conditions DROP COLUMN period_type; + diff --git a/play-life-backend/migrations_old/021_add_wishlist_id_to_tasks.sql b/play-life-backend/migrations_old/021_add_wishlist_id_to_tasks.sql new file mode 100644 index 0000000..f0a9422 --- /dev/null +++ b/play-life-backend/migrations_old/021_add_wishlist_id_to_tasks.sql @@ -0,0 +1,18 @@ +-- Migration: Add wishlist_id to tasks table for linking tasks to wishlist items +-- This allows creating tasks directly from wishlist items and tracking the relationship + +-- Добавляем поле wishlist_id в таблицу tasks +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS wishlist_id INTEGER REFERENCES wishlist_items(id) ON DELETE SET NULL; + +-- Создаём индекс для быстрого поиска задач по wishlist_id +CREATE INDEX IF NOT EXISTS idx_tasks_wishlist_id ON tasks(wishlist_id); + +-- Уникальный индекс: только одна незавершённая задача на желание +-- Это предотвращает создание нескольких задач для одного желания +CREATE UNIQUE INDEX IF NOT EXISTS idx_tasks_wishlist_id_unique +ON tasks(wishlist_id) WHERE wishlist_id IS NOT NULL AND deleted = FALSE; + +-- Добавляем комментарий для документации +COMMENT ON COLUMN tasks.wishlist_id IS 'Link to wishlist item that this task fulfills. NULL if task is not linked to any wishlist item.'; + diff --git a/play-life-backend/migrations_old/022_refactor_configs_to_tasks.sql b/play-life-backend/migrations_old/022_refactor_configs_to_tasks.sql new file mode 100644 index 0000000..6187187 --- /dev/null +++ b/play-life-backend/migrations_old/022_refactor_configs_to_tasks.sql @@ -0,0 +1,49 @@ +-- Migration: Refactor configs to link via tasks.config_id +-- This migration adds config_id to tasks table and migrates existing configs to tasks +-- After migration: configs only contain words_count, max_cards (name and try_message removed) + +-- ============================================ +-- Step 1: Add config_id to tasks +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS config_id INTEGER REFERENCES configs(id) ON DELETE SET NULL; + +CREATE INDEX IF NOT EXISTS idx_tasks_config_id ON tasks(config_id); + +-- Unique index: only one task per config +CREATE UNIQUE INDEX IF NOT EXISTS idx_tasks_config_id_unique +ON tasks(config_id) WHERE config_id IS NOT NULL AND deleted = FALSE; + +COMMENT ON COLUMN tasks.config_id IS 'Link to test config. NULL if task is not a test.'; + +-- ============================================ +-- Step 2: Migrate existing configs to tasks +-- Create a task for each config that doesn't have one yet +-- ============================================ +INSERT INTO tasks (user_id, name, reward_message, repetition_period, repetition_date, config_id) +SELECT + c.user_id, + c.name, -- Config name -> Task name + c.try_message, -- try_message -> reward_message + '0 day'::INTERVAL, -- repetition_period = 0 (infinite task) + '0 week', -- repetition_date = 0 (infinite task) + c.id -- Link to config +FROM configs c +WHERE c.name IS NOT NULL -- Only configs with names +AND NOT EXISTS ( + SELECT 1 FROM tasks t WHERE t.config_id = c.id AND t.deleted = FALSE +); + +-- ============================================ +-- Step 3: Remove name and try_message from configs +-- These are now stored in the linked task +-- ============================================ +ALTER TABLE configs DROP COLUMN IF EXISTS name; +ALTER TABLE configs DROP COLUMN IF EXISTS try_message; + +-- ============================================ +-- Comments for documentation +-- ============================================ +COMMENT ON TABLE configs IS 'Test configurations (words_count, max_cards, dictionary associations). Linked to tasks via tasks.config_id.'; + + diff --git a/play-life-backend/migrations_old/023_add_wishlist_boards.sql b/play-life-backend/migrations_old/023_add_wishlist_boards.sql new file mode 100644 index 0000000..b690cdc --- /dev/null +++ b/play-life-backend/migrations_old/023_add_wishlist_boards.sql @@ -0,0 +1,116 @@ +-- Migration: Add wishlist boards for multi-user collaboration +-- Each user can have multiple boards, share them via invite links, +-- and collaborate with other users on shared wishes + +-- ============================================ +-- Table: wishlist_boards (доски желаний) +-- ============================================ +CREATE TABLE IF NOT EXISTS wishlist_boards ( + id SERIAL PRIMARY KEY, + owner_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + + -- Настройки доступа по ссылке + invite_token VARCHAR(64) UNIQUE, + invite_enabled BOOLEAN DEFAULT FALSE, + + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted BOOLEAN DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_wishlist_boards_owner_id ON wishlist_boards(owner_id); +CREATE INDEX IF NOT EXISTS idx_wishlist_boards_invite_token ON wishlist_boards(invite_token) + WHERE invite_token IS NOT NULL; +CREATE INDEX IF NOT EXISTS idx_wishlist_boards_owner_deleted ON wishlist_boards(owner_id, deleted); + +-- ============================================ +-- Table: wishlist_board_members (участники доски) +-- ============================================ +CREATE TABLE IF NOT EXISTS wishlist_board_members ( + id SERIAL PRIMARY KEY, + board_id INTEGER NOT NULL REFERENCES wishlist_boards(id) ON DELETE CASCADE, + user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, + joined_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT unique_board_member UNIQUE (board_id, user_id) +); + +CREATE INDEX IF NOT EXISTS idx_board_members_board_id ON wishlist_board_members(board_id); +CREATE INDEX IF NOT EXISTS idx_board_members_user_id ON wishlist_board_members(user_id); + +-- ============================================ +-- Modify: wishlist_items - добавляем board_id и author_id +-- ============================================ +ALTER TABLE wishlist_items +ADD COLUMN IF NOT EXISTS board_id INTEGER REFERENCES wishlist_boards(id) ON DELETE CASCADE; + +ALTER TABLE wishlist_items +ADD COLUMN IF NOT EXISTS author_id INTEGER REFERENCES users(id) ON DELETE SET NULL; + +CREATE INDEX IF NOT EXISTS idx_wishlist_items_board_id ON wishlist_items(board_id); +CREATE INDEX IF NOT EXISTS idx_wishlist_items_author_id ON wishlist_items(author_id); + +-- ============================================ +-- Modify: wishlist_conditions - добавляем user_id для персональных целей +-- ============================================ +ALTER TABLE wishlist_conditions +ADD COLUMN IF NOT EXISTS user_id INTEGER REFERENCES users(id) ON DELETE CASCADE; + +CREATE INDEX IF NOT EXISTS idx_wishlist_conditions_user_id ON wishlist_conditions(user_id); + +-- ============================================ +-- Modify: tasks - добавляем политику награждения для wishlist задач +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS reward_policy VARCHAR(20) DEFAULT 'personal'; + +COMMENT ON COLUMN tasks.reward_policy IS + 'For wishlist tasks: personal = only if user completes, shared = anyone completes'; + +-- ============================================ +-- Миграция данных: Этап 1 - создаём персональные доски +-- ============================================ +-- Создаём доску "Мои желания" для каждого пользователя с желаниями +INSERT INTO wishlist_boards (owner_id, name) +SELECT DISTINCT user_id, 'Мои желания' +FROM wishlist_items +WHERE user_id IS NOT NULL + AND deleted = FALSE + AND NOT EXISTS ( + SELECT 1 FROM wishlist_boards wb + WHERE wb.owner_id = wishlist_items.user_id AND wb.name = 'Мои желания' + ); + +-- ============================================ +-- Миграция данных: Этап 2 - привязываем желания к доскам +-- ============================================ +UPDATE wishlist_items wi +SET + board_id = wb.id, + author_id = COALESCE(wi.author_id, wi.user_id) +FROM wishlist_boards wb +WHERE wi.board_id IS NULL + AND wi.user_id = wb.owner_id + AND wb.name = 'Мои желания'; + +-- ============================================ +-- Миграция данных: Этап 3 - заполняем user_id в условиях +-- ============================================ +UPDATE wishlist_conditions wc +SET user_id = wi.user_id +FROM wishlist_items wi +WHERE wc.wishlist_item_id = wi.id + AND wc.user_id IS NULL; + +-- ============================================ +-- Comments +-- ============================================ +COMMENT ON TABLE wishlist_boards IS 'Wishlist boards for organizing and sharing wishes'; +COMMENT ON COLUMN wishlist_boards.invite_token IS 'Token for invite link, NULL = disabled'; +COMMENT ON COLUMN wishlist_boards.invite_enabled IS 'Whether invite link is active'; +COMMENT ON TABLE wishlist_board_members IS 'Users who joined boards via invite link (not owners)'; +COMMENT ON COLUMN wishlist_conditions.user_id IS 'Owner of this condition. Each user has their own goals on shared boards.'; +COMMENT ON COLUMN wishlist_items.author_id IS 'User who created this item (may differ from board owner on shared boards)'; +COMMENT ON COLUMN wishlist_items.board_id IS 'Board this item belongs to'; + diff --git a/play-life-backend/migrations_old/024_add_reward_policy.sql b/play-life-backend/migrations_old/024_add_reward_policy.sql new file mode 100644 index 0000000..0db06c8 --- /dev/null +++ b/play-life-backend/migrations_old/024_add_reward_policy.sql @@ -0,0 +1,13 @@ +-- Migration: Add reward_policy to tasks table +-- This migration adds reward_policy column for wishlist tasks +-- If the column already exists (from migration 023), this will be a no-op + +-- ============================================ +-- Modify: tasks - добавляем политику награждения для wishlist задач +-- ============================================ +ALTER TABLE tasks +ADD COLUMN IF NOT EXISTS reward_policy VARCHAR(20) DEFAULT 'personal'; + +COMMENT ON COLUMN tasks.reward_policy IS + 'For wishlist tasks: personal = only if user completes, shared = anyone completes'; + diff --git a/play-life-backend/migrations_old/025_remove_conditions_without_user_id.sql b/play-life-backend/migrations_old/025_remove_conditions_without_user_id.sql new file mode 100644 index 0000000..e19b420 --- /dev/null +++ b/play-life-backend/migrations_old/025_remove_conditions_without_user_id.sql @@ -0,0 +1,13 @@ +-- Migration: Remove wishlist conditions without user_id +-- These conditions should not exist as every condition must have an owner +-- This migration removes orphaned conditions that were created before the fix + +-- ============================================ +-- Remove conditions without user_id +-- ============================================ +DELETE FROM wishlist_conditions WHERE user_id IS NULL; + +-- ============================================ +-- Comments +-- ============================================ +COMMENT ON COLUMN wishlist_conditions.user_id IS 'Owner of this condition. Each user has their own goals on shared boards. Required field.'; diff --git a/play-life-backend/migrations_old/026_weekly_goals_max_score.sql b/play-life-backend/migrations_old/026_weekly_goals_max_score.sql new file mode 100644 index 0000000..2c3b630 --- /dev/null +++ b/play-life-backend/migrations_old/026_weekly_goals_max_score.sql @@ -0,0 +1,10 @@ +-- Migration: Add weekly_goals.max_score snapshot column and drop unused actual_score +-- Date: 2026-01-24 + +ALTER TABLE weekly_goals + DROP COLUMN IF EXISTS actual_score; + +-- max_score is a snapshot of max_goal_score for a week, filled only for new weeks by cron +ALTER TABLE weekly_goals + ADD COLUMN IF NOT EXISTS max_score NUMERIC(10,4); + diff --git a/play-life-backend/migrations_old/027_add_normalized_total_score_to_weekly_report_mv.sql b/play-life-backend/migrations_old/027_add_normalized_total_score_to_weekly_report_mv.sql new file mode 100644 index 0000000..b374848 --- /dev/null +++ b/play-life-backend/migrations_old/027_add_normalized_total_score_to_weekly_report_mv.sql @@ -0,0 +1,51 @@ +-- Migration: Add normalized_total_score to weekly_report_mv using weekly_goals.max_score +-- Date: 2026-01-24 +-- +-- normalized_total_score = LEAST(total_score, max_score) if max_score is set, else total_score. +-- Note: max_score is a snapshot field (filled only for new weeks by cron). + +DROP MATERIALIZED VIEW IF EXISTS weekly_report_mv; + +CREATE MATERIALIZED VIEW weekly_report_mv AS +SELECT + p.id AS project_id, + agg.report_year, + agg.report_week, + COALESCE(agg.total_score, 0.0000) AS total_score, + CASE + WHEN wg.max_score IS NULL THEN COALESCE(agg.total_score, 0.0000) + ELSE LEAST(COALESCE(agg.total_score, 0.0000), wg.max_score) + END AS normalized_total_score +FROM + projects p +LEFT JOIN + ( + SELECT + n.project_id, + EXTRACT(ISOYEAR FROM e.created_date)::INTEGER AS report_year, + EXTRACT(WEEK FROM e.created_date)::INTEGER AS report_week, + SUM(n.score) AS total_score + FROM + nodes n + JOIN + entries e ON n.entry_id = e.id + GROUP BY + 1, 2, 3 + ) agg + ON p.id = agg.project_id +LEFT JOIN + weekly_goals wg + ON wg.project_id = p.id + AND wg.goal_year = agg.report_year + AND wg.goal_week = agg.report_week +WHERE + p.deleted = FALSE +ORDER BY + p.id, agg.report_year, agg.report_week +WITH DATA; + +CREATE INDEX IF NOT EXISTS idx_weekly_report_mv_project_year_week + ON weekly_report_mv(project_id, report_year, report_week); + +COMMENT ON MATERIALIZED VIEW weekly_report_mv IS 'Materialized view aggregating weekly scores by project using ISOYEAR for correct week calculations at year boundaries. Includes all projects via LEFT JOIN. Adds normalized_total_score using weekly_goals.max_score snapshot.'; + diff --git a/play-life-backend/migrations_old/028_optimize_task_queries.sql b/play-life-backend/migrations_old/028_optimize_task_queries.sql new file mode 100644 index 0000000..e39f962 --- /dev/null +++ b/play-life-backend/migrations_old/028_optimize_task_queries.sql @@ -0,0 +1,14 @@ +-- Migration: Optimize task queries with composite index +-- Date: 2026-01-24 +-- +-- This migration adds a composite index to optimize the task detail query: +-- WHERE id = $1 AND user_id = $2 AND deleted = FALSE +-- +-- The index uses a partial index with WHERE deleted = FALSE to reduce index size +-- and improve query performance for active (non-deleted) tasks. + +CREATE INDEX IF NOT EXISTS idx_tasks_id_user_deleted +ON tasks(id, user_id, deleted) +WHERE deleted = FALSE; + +COMMENT ON INDEX idx_tasks_id_user_deleted IS 'Composite index for optimizing task detail queries with id, user_id, and deleted filter. Partial index for non-deleted tasks only.'; diff --git a/play-life-backend/migrations_old/029_add_covering_indexes.sql b/play-life-backend/migrations_old/029_add_covering_indexes.sql new file mode 100644 index 0000000..057050e --- /dev/null +++ b/play-life-backend/migrations_old/029_add_covering_indexes.sql @@ -0,0 +1,25 @@ +-- Migration: Add covering indexes for task detail queries +-- Date: 2026-01-25 +-- +-- This migration adds covering indexes to optimize queries by including +-- all needed columns in the index, avoiding table lookups. +-- +-- Covering indexes allow PostgreSQL to perform index-only scans, +-- getting all data directly from the index without accessing the table. + +-- Covering index for subtasks query +-- Includes all columns needed for subtasks selection to avoid table lookups +CREATE INDEX IF NOT EXISTS idx_tasks_parent_deleted_covering +ON tasks(parent_task_id, deleted, id) +INCLUDE (name, completed, last_completed_at, reward_message, progression_base) +WHERE deleted = FALSE; + +-- Covering index for wishlist name lookup +-- Includes name and deleted flag for quick lookup without table access +CREATE INDEX IF NOT EXISTS idx_wishlist_items_id_deleted_covering +ON wishlist_items(id, deleted) +INCLUDE (name) +WHERE deleted = FALSE; + +COMMENT ON INDEX idx_tasks_parent_deleted_covering IS 'Covering index for subtasks query - includes all selected columns to avoid table lookups. Enables index-only scans for better performance.'; +COMMENT ON INDEX idx_wishlist_items_id_deleted_covering IS 'Covering index for wishlist name lookup - includes name to avoid table lookup. Enables index-only scans for better performance.'; diff --git a/play-life-backend/migrations_old/README.md b/play-life-backend/migrations_old/README.md new file mode 100644 index 0000000..d9d7f11 --- /dev/null +++ b/play-life-backend/migrations_old/README.md @@ -0,0 +1,15 @@ +# Архив старых миграций + +Эта директория содержит старые SQL миграции (001-029), которые были заменены baseline миграцией `000001_baseline.up.sql`. + +## Примечание + +Эти миграции сохранены только для справки и истории. Они **не должны применяться** в новых установках или после перехода на golang-migrate. + +## Новые миграции + +Все новые миграции должны создаваться в формате golang-migrate: +- `000002_*.up.sql` - миграция вверх +- `000002_*.down.sql` - миграция вниз (откат) + +Используйте команду `migrate create -ext sql -dir migrations -seq ` для создания новых миграций. diff --git a/play-life-backend/play-eng-backend b/play-life-backend/play-eng-backend new file mode 100755 index 0000000000000000000000000000000000000000..fbfc1ea36b595fd07b746bd97ecb7ddb06364c97 GIT binary patch literal 15250210 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

-taBzmb|y}-|`K2ym~)dXQ6;2!UM@{8~evv*nIS|74YuRh5Y9VQaK-r z`(l$EkFc(mH==@kXXHB$^?pAO->GcV7ox9iCLVKr9zN5yi~YA3vj$LVBGQ46`}qOa z@GO})txWO*uHsDdPUa?v3qOArdk)^DID=i3O9!6?JN*m7Lv?BoyKDl%J`*_jy3Zh7 z(;Gg^xTW`K>>+5}hs!@aGgN1D>mTF^cFp-V;5p4$dpV5VJPv&&=^^r%5m#D$q3~4h zh{zVfTz$L-Ijr-_I%!9-f8zINfN2vpVi)|epEas&@WCM6>G>M;+fEay>3}AGKpnyN z!SP1c4Lx@r)qv9VO=nbvtC(;dn_YrhsXsrVsq7(ex?!id;TZ8i=+;DYX`E!Tbbb`U>Lmqxn zhu#a$fA05!z5WGl4vn{({W9a|dntV%=k;BBhvEQK{}J_FIs@}-V?J!(U0QPY1Q@Rm z9xY#T4DLI({Xrfk`7N50j+F$=b@W8PYdmdCWG}y#*t!s2cgJ~IuH@`vNk=Y|>H)~CJBI^mPjh*Od_RkIz8$P-&!(*d_$y$jz#o4y^|ngHGl zX7%K62#+v(7JK6=fp#WgTdqUCzBtP4Nljyon>-hW`)cCes(9X|8!%dJlA7_|#$WX2 zK9#vY%Y2R>Im^y{%D~(o+Ps&!?_}0d8WP&;Eti1I<&5P7#>b6DS8|EY$;EE z&gPl$ba;-hw0aoyOX^36n`Mysfk>nYVQ#D)wCzsHpnyF_Wl?=Kl3Fw zhUpKZ-a8PlJKmUvSthArui`scFZX5PA^bZ@#LcF|gZC1TTEe_3u2sH+8N`P!D$noJ zoE{>_n{1Kf3-eDk-HNS9P8-QOm0d{u+<3dsBsIPhp1Fu}O~i}}zqEdA<0bfgockA^ zaqOBSyfu~hlT+B=k77G5cmes44&GGhdivnCO9OLytzLzm*_sdkn&a9|)urGbbg+f~ z9i&b9-dtTIso_VgM~jd9yyN5CcjS|w9-bo`Dp+sYhv)abfnGVEd_}`PJgjd$cr(RO zoCJ1LlIiQ51HPf3zhIJU4pYx-_!T<2C)a9o7j` z;H340$j@$dSNN{{#_jOM4*264Y_lh-2IZ^u4a2iK&@WW~8FW3>ue!AdG}z~z_sqBJ zhF!?47w;K{ZKb%Fp?&>2eJv#~K_}n8TIlv|5jnP-_(pw`Og%u~+K@l$lkx+qUy2L+ zsQLwM+Z+d3G2VOqqAu;-mQSJIgnM3xj*gITG;N9IEUhP>Jqg1;t?OYuZN%?~(c2?e z=Jwr;d<*t}2Y9lOIopAKC_E942$zKC!YkE(+N=LX>hFF;b*9?-&pz(9<<_6t+%YD% z@0x`AgKf1aw(A$8;|}qYOP37lL_zu(2Yo=N4O^j)4E(3QengzoRN3jmHR0L+Ev>W! za9FsTh_|DdGx0zlZ@I6I`{^#9zN*z9)=IJ~T za8kH>27HhVm#*-WRp0`+X!T!o1=-COKfwtfKjrre_Av^3icW%|UO=k>18TBJOP-bCP{*DguWxh&%5iPR?!L)kng_ z=ZDEVt++G!HlG16ZQipK#)WU^%jK?Z6ZBVxkw4}5108T$`fB9us*{DtNx`QT-@al* z#D_|cJa#IH_r*t6o~pZ@{6k}A+E{X}=>`2+`c7*_;SIUy zIy)k-rsQ^VBafNYTsk6|I8b7a_@-n;Dsj%vIr)*>kPmq#rFp#LoT!GzE643erYIkp z@<~gVb@$6uBR9yEw!VbDGzB~>Ms^TeZR67Ns8@cBl7VmCGOH*9d`{%@o%FI`-(7uU zaE?knJ+c%SiGTY0jf5ZV;EVKu+wU3FC)?o}(s2}LDY_{kf3WPVTINsVI79g^DfF zuWgWw!VJaECCkyNSn8EJrlW~C)w*n z)>oUf26#i?e!eL(&U(RgKlh5wkjyWU%|<(_KbiXX8>eOhWi^kgOZCFbPLxpQpvhX# zUOPh11+Szbx^)?KosAx0PLt73lWR1#N%SM)kb?w1mzjl>eTS!) zYP_;5T^e)!+<6^OZfxTmz}!3YPmw?4dD)2}zRBa8Svos_xLEv!jcuF}xEEOD(gy1h z@mb@Z+=z|0ROdy6S$7@u!FlzXq?*}`X{$+II+^(ms~^m3$+$zC(T~yJT)2iA>*=e_ z=inU+4pP3{M3x$^(GQlNpX| zx5ijIb3A=X_(Ys|YU^I(#&*LeTbQpWC~M>!takUQJ;(PO_5I#hc8lnedK~mA$#w%R zNwz=iw!Ohb-xJ?PJoFm1jf}gV-+k)S4>LLU z-|_b!{5`IEvB{Z(S5{G<)<^TpBH1y!e_s)ws{wd`WY(ghcOvx{y zLCsGWeeQ%WSB=TXAK~gT)#zICN1tV`UPRx;FL}q}2xqx~$BVhHZZUEBZ9DlE`whQk z()upSO-#WrF&uos4(iM?*=w=Gy0C|wuzBT|o-S85F;<`I$#25b4 zU?>02!{pd%(K^7gE3Hnv2Kur%1Fcty2DMk|WA0vwa=ioB4?#Od-#qT_pIxr!cLN)q z|0nf*p1)er^gT1|9@Y3F+7|tFyXQiEk$cfdaDE5)Wy1a>`3|#?hgv65EKdp7qJu(U zF8(FnunPZWUSWFt*S-DEkA?o^#|oR5PUavhCm}QB)5;l<*Yh-R7avq^!Gpum3Cl94 zw+at{>lpM$J#Pi(nPtV(3#vm__jKXt`toBM(*`#`#X}ksEvGxoxg+RWst28ja}>jNuixMD zo*cH#M}X~F`jIhWZnI)pn^I#N*Wd%5Lfbv8eSFGEZk|8>$D8M89Ng>>LtAZzHK?wG zCM^A=S-7uqJDD32n_azw?^pAE2H(pMas)o8{j`pQ&P48Ba^%*OBeyf8SCL2IAo!|s z+Uv8AYji9-=8~v6QGH?VsSL&~eUbA!7W|O++CM?8P&4J5)mGt%P|bGg1P)hguZq@% zx@kM@y|ImxGY-jTXYCs43N|JfJ?_XKa;7y>*CfiNGA@lr{uZ^Rct-Uv6`c#eS;Hj9 z?N8+5+*4=C{HNv2TN&@$@n_#+-z8grH1KOy?CM#bvzMx; zn=)&n`!-XyCY^rEcQnCCw)tmvFb~od7ikXQv4VkoN$6165J~H+`A*+d^Ne$}tdCXY zyP*rsiRQJFwzU6MIPx*ZJ;9rwCguj2V_}w_;m*&$@_rruQNa%XVnY+-I8FVW-M*lN zzD#1Q!_p3Jp8ZsKi`seE^QF$GJn`G~Y1n$5Q?c)9v&o&y)P^(6(Gl=JHDNB*MylFi zF12?X{20KUyyzhA6c6P2%I%dtEZoqXYi=z~c;nIhYQ0AIB0NYRF}sIcjthiio!FM@ zM-%v4ZHT1?U+Ta)l^ukW=*nprML&E#@CR~jiw_u{U6S7=#IN)t=P5_d2lSzQaCxm$ z-$J~D^vxR81zo3t3yK?>A$@-zIaJ9XpGQ87OxA$xdJ}s`h6C@h#B3B2M_6dgD-JO( zDSVd>&S57n(7IZf`$fO&f8HUUrH%S>WsC6Z@;q1n7B739c7Jx6{^PJ265o`IF5Jo( z1Rwp?dig6Jd6V-@k`S&29|sdrv&~!q#<(-)?(r=sKeM zw2nUMOe7zszWg{#ymK&iMD=H)LuvoxDq>5+z^jz~iL2S?vIe{7G`2@B`*I{_B!gwc z;=kOr19)ofDT=+c`eU(1^>Gn>Y+~OVe)gpq_}R6OQt@nAyel#3@xo|`b&5#C&0({t zLSr?P;{WuN*`z+mpO;UYGk?sUM)phY#J_=G^f}^knokp#&$(v{*#8;N!1k9eqnxPK zih(fgz2p+M`M1WgKCSCe$LYJio7}=&NLBCbqV8#bV9`)LdBIivAp=t`cNzNo`iVl-N6BR%?V) z1J7*#LN%pc-8nyIpCqz31NdYBpD6J83TueS?mb~(5dr?P(+a^M$#TKC1Q?e9H_&a33v!49nW2z?_@jC{23|6BC7VP=nD%G_=c9**(w z&;kFM&kX}{l)z|69Hs7=$6y?#)8c-ke1&!3fcUnLm&we(y-&bRzumiN*TbO=$_3e~ z?`ea0o?X@8(Q5Ep`ha-akmuB==c|2OXFfUis;>w*Fz3)#dR#uiYc=n(Z;`9%(D(s# zypZB$c#jOI8OybBDzDJt{DIt4C7dG|<2)?k`7fVz_1O@%a69%k{+OE3bkp~*+UL#t zpzh}o+kToDF!bTKjfXG4EE#(LbM7r3D2B$1KmLMpkjkbc{w`9VT+4IpzET?ShrBV1_Cj4YP zW6WbMCJ!IbczDJcaBb#Slk7gP4z2|=A3ww=V$pETet44jR2Hx+0d}&vbWWkQ#o#GA z^VNr|>LBi;v6i{ixj6pVVjld&gB8D(@ABXQ`1tf9yE2iF7q~pw(&^`@$H#BkBC^{* znLTv9M7}ris2Sj+&v(Rg+La3zo`bG6z;BjVduq_%Cs`z%^5t#*h12WGjkA;(m<8iF z^IQDbk(~tIwBcj;JI`nK+V8;+?>oi*OHK#%gy1#&s*&~M##3MRd`Jsi-_n1P%M!Y3 zyo29D&pySZB~P>06?= zmD8L}#H8r5|ZeLwn|V%96EBg2bXSD$p<51jiSGXrzVdQGGJ8+lRiaE4+3K<+86iDaab+XLE< z;hT6rd@p9qEAqG7F~SG-6AzO(cJbE;Wj@5%?OH0lpb{9!?+6 zqTh^b-4<*Ry<0=vr|3vBDNH&4TJ*BjIGfHvS&Cior*^%7tEBr z)KETEav7a*O%`pQ%(|+JQOWt)egTGyklw|M?I+T=FQ3IW92arJ@6kO>!xQ zZqTy~Uo(A+;>Sm>4C#Mw{$T&-QYP{J+q_T2cc0cPr{X6>&RKe&Mm*MZkKU*K|4;8N zz?qnO?cLfVe^r4o=UO@U-rAhZR}hzdIq{E`L*>NB$rUa+@!d=02b!E9FEXL4wurf1 zcq%<43%NTJ{2$L;OIE;>Y@WnAiqk$-pnj87DKP zkD8o+QQTpad1<9zvgOlFsHX<~&(>G>zgJ%iG`a%bSNO!}|ChM80k5jM^8fd}H*W|E z3JMi!-atWZ#fm^i+uYm)Uu(5W$9AygCN~I*ty-OG3z|Sc&}hvqnc9(=5X4(g=t-?&OXH7@&4KW8>mlWqK59qWS__cicf+0TR%}3pD zV?7q!ngO_Otf7rzch1=ObJQ7swWW!+3}+v>!{$dC9Dl_%#GnD|FUL+0!q+04RT1kn zPxR`>L)8!u^$NC{2r~97*s#6RjiRk)4Odhc=WKmD&kPcw{3IPXVRGP;va*| z=gH7rZ9l7p=Fp9l6YqIl!*7uhY;5!5HKy@S{tJ|YD9U-E*ybKV_7eY{#BU$Zmh)e! zceE~M!QWXIAJRL>reh_iO+^=TeRL0~ob}>#eru&Cxp^+{<^CS(uw_k7-qsY~v!0|s znC_NO9!1^ww1FMMXa75uv*svvIe_1=R^vQJnr@41)6(yPcGxS+p`V-zp7`>3jWCX6}bO#=rHCAC)$*3!3=xV)NFa7-Q2lHlF|Rvgh)H zfxb7e|Mjm5ru+AqlK%Rj^6@nka#mpS-C#OdJ}#ar9v45_bq;)n{pL@}(Z>;f?fbj2StEn1KGEX{ z=>GW8n&$o;uaK;tfUd6Z{S`NzII)B37+V(@9{i9o#;jD}AaBb)B zmkZ3Lk+K5ujS`~dGJ-UJ_OBI*0N_T%FoJ^LwnWBC0) ze0P`X5suN5-(c?%wzDnCA2Bx12GiY?D^HkosZXncrOSuA{9a0V zH+}CxZmq>O@fyz?srMrO$AEJW55j2EjG&@*uRHGXY7T-^Sa zdy8Av65;k6+<%t-zfIje%H1g%6F&gnPbu@`wnKG-+e)ua7q=RpS9$mU@cjmUr)f<1 zP3$9=7jg*mt-(wphcbJ5fBUsS=fJx^kA|7iJ|vgSE!!_8MSU;EK}n~+!fnYRh#qW($TyYi8n1$?TS3Tn4(#^g>yPCvn?z+}+Y`a%V z@zRPZL@&BGg%@AAnC5*a-DQp}t`c4-dpd+TT| zeclI6t>yoBFCH7q8jmfh3!9o`;~+4E<5I?{g*GjCu=0rB_4XZTPlEDS z$&RHx2tDwVmyyRr3(^yvHaYtP6ze!KP;3r8$cKoI zxJ7HFqk7Xv% zAzO)U2XpVgyB%3q?-ZF}Tz*9PcKq|ff2|nS3gLkHxYEW~h3wwGM{ z-}Q{ia>-4UU(2<0s%~&v&9CO5#!tVpi6LJp&*%$&9#l-5t34h>zt)MK@b5+*tUe-L zue$oCz1h&p6let>Lj5}E=N0I!vigR-u`6%bD_dn9{{OO3W%a30amze-pLd4W(NIxK z@tC7lZ^OQySI53B@{m})O}O#!^M{`Pr;^Zv@LP`jtMX#-JKwc&o{*aayoVVxuZ}P< zO>|`ZAHcKVS1u&(m*1)z850w659^*tE@G0lLd4u|nSJ&&b$-WC8hri88 zFs@qHFS^y6=MG=^h=!0+yLXc!5!mf=C1h8M(Qi4{kj&<*Zca_JXi^>izizCLq2Tr z!!jTJ-(lC+!M$>lLF&NAa5-_cKd~BJPd@#%(8J0HZ%!}3Mj@RqyCA6jOnLb1_dWuS zyz$tI4wns`e~vb7m=JE?k1cxNA#*r|U1xJGwyvcQ?G-|bpdb>tIE$%&P3 znzt`1I-+kB$GmxhX;+=|e}_&0&lXJi_CKBKe@f#w|G~2c^i=81u>uoUy`EiNYe*$$ zbrl+8?dtX(ySnZxJs&D_Qs2xz5PD1ADN>SUfqG7+3M6MCbwXDVY{x{Td>*`SBxvzy=53(R+%+ zvp7L!7VJu3vyNkj77q=zeD#aa1#y`P@Fw1D_k)7dUcOreUVDhQi~H#4OqY)Crc7(8 z{=D_f$*(<>o@^Va`%2mpJdO53KZd>CYMfIi^QFsHbd~9ONiiAn zrQ3Ua2fDuszroA$8_-tPtlhVRXVvHbUbYf^uP-SsMBm$czSlkeSNpxb(ZBHYYxsuZ zL#Moo+(X&QTaX(=lWaWGlvjy;X;{{-`1&agf%e2_;5FMyqz9&7K~F449}y4y>}`R@ zSE)lZ8h{S5W$lg}>E9xLrnZSDUxjv*7sENv*E#20`sEeSWKGC9-&}c`H0Irm`7@09 zKT~Iby0+8LBIqgNqbK~7q9Tte?hq~WyGP(7tZy*1v{{rglKVGMD9%S?L25W4F6W1?Y*jlcjVtl zBDYC?Q(c45X9eu=IedetGSL~FLwBOu;pKT z?NoiLS9PhL9qxM?+n~eWJC$o@C39(x8z&<tEceFQv<{$g7d6VLoY z-xEy3x~2M(%-aBKRl>*blON0PuR9{2sL@$YD=v#KLoYdRp4R)(toLWMTt&&f-+_~lFr;a^-C_lA)1^y}Dhwz|%vO)M}%H^k$TW@1s zwEbd!u@`1{YCL0)e^%!$N`DxEEYVY=GZwP@k$HE_*sjK2f#f znFfci%O{L{F!K?Ugr^5=eB2|Jp9kt6arv?6Np**U$_*Uq@c7yazN_Fn<=#_UiKBs! z2L|}KVngNcmyD~ukbyRgw2|DU<2y_^7C68SOf;a2`(<8ZO8_fOO_EG2Eeht$0mJm z0^MF^!i9dl_1VcsH0a-vo-;sC=*>aekb(Qy63Orn@u-! zD9gqM4k@?uDXV_7i<_(9X}eq*_G)&nE*NBn1ail@$Q$8M7}>S- z-_(vMI!i4yt9UQ1w+DdXT~`xB-GzUBa)@=5a+}Kq-v51Kvz+lgucZ_kyOU?)_nAI7 zM>cozCY62Di4pbYLW;gi|GWzQVP~Q^zRM(!=nOd<_wFwT2P)s?;y`mEm2oE9H?ir% zFAf{C?rHx#$ZU^nBE-*h2p^IWCk@jk@!2xkbV3d>e>rW6pmTX=BnubvrzXLl^wisF zkG~zljsCp(_o%hk4e~F}PO$5PM-x{AzZaYwF#Dm29J{^@lv$b}|AdPV!IsQf&Y5so z(5Q6gPiMgQbmzD4h996i|Cc*nUVC1L2m5hl>obG(oqH1es$QMPB)$CSZr$?9zL!z| zwa}oye);3Yvo#*F4Qedf@5M&#;xL6=r#Nq9$su_3;B_M-2xgNHW;gSp+lA|3dl28( zVpI0pM{TSWZLoCY!&?IXMd@^NxPTY{8*>F5$%=}zSkF9WF1u&RJ8NNMz3Z20bbN)a zPtXV6|1Q6^^6z-(f2o{49eUjQLfE_O?6rGF!gqyGUaPte_cpR?FvHs<2e}R9wE^ml`S#vYCLE%W3%4L zc?P?b-`;S(AU33}*~AnP&%1#0lkRhP*(5U}~4#2>RRCJvpxTtgq6=hjZv zsyy$ToOYAjG@Smi+Kq2q@2K7St%N?2r`~!QA7J!1<;Tr~g~xvT4to#ENKX zlDeP~;h-UQ1?T3fuF-B?=xm8kfluxC!Jnl0b;nK2#gPH{k!dL+?jcegh<6cp;k|c5 zJ2H!7&ujJalPd>a4fTp2cYnrouBg2|L*hr)?yd>)?|-$-6i4nBXX z`{m)`bot>FoC2H|hr)pl8X_;96%RoNKMf~S1JC#K>!*go35vhnR2bhuKIYwm^VINg(!?AL@Pp_nz*#dCPD=4phdvjN z0q36tXU*_%_W9w|o&uaFPk?hM^7iO>9dH^2=gHyWyyl0~bP90lhk-MBjD_tQsDU&PN{@A9L9-d?y1=-B38tK|_QykT-(2 zs|2TRcsLLE;S`(#oSGBhbVlaRh<5?!V!^2y9*)jOALtL~w4caFGy1b+C>-$C8ksO6 z-o?4TX9>=d;o+3~;Y3dX&I3c?K-b7S4jml%8E_sL9?mpBoZ3@>bKg)ncAh@x%+vo8 zoco4{GujWQX*f6;{O#_caO^z2veeGgR|V(p;o=m3_hli8phZ8;pIJcYtry(*b&*~EGf^*C8aNffgJ}}0} z&>zdoZyW|rg9B%s;M_PooK8QS+Tq}2@V@JZ!g)osRy*42lq&`2`T;l%e!lgyK{%}| zww(f;t1X;XM?Wu1J8-h%F?5N=f^+roaQ?v$CvggJ%1?mP5Se~F{tC`Qa2eaQgcvHp{-;-9??)7-VOV-%5V6{p58a zS7VE{*^ux4J#1t>T{-Mgj~>}YY-c}tNOoYSxjDeTm@9_1iMiGpId)~djyZ6a+H}S6 zZ7TP-DSQfjpEVRtmH6b;GcE5pvIRJ^hKDoF4<~vGa4s7Pr%3%-G{fp0|0Ot=4G(9u zA5QHlz`0~7oDG8WV@LmdRd6mD9?qYLb#Ui2IT*aLJl7e^cd64imR|gAA^D>HW7)ki zC%%%g+{{?wZ?R+fAB???)%g_uV&-siWLetw{cWf3>(r);hHq1+zfIfRz7MU3HSL^u zF*?-~)Z@w|L+18Ye;tVv>xgK)k2ve=(v#HjPyRXzTpNwA9YN`klZk7@9=G@;b^N2h zj_`?fRH=?}BP{Rzo0HV>xWA6*iFGX3SU>(*J4dcPNgYf4b=00%2l(iWY;*MP*(a&v zPJbOuC)Q#6@&l(Y7o4PyulVZ#p5;+KoZ5EGp6%%W8Ff_Se>wmi$@g>g27F^L5>JW^ z^7GU=HDuCyHg%n8?){8u?M=)gN1sXSy+tn)!*_%1zn8@q7Q6Y!O~B^p$`6>sU&oGr zaB8@@Z+cnt?`KDv-w&5JANe3l6@5TK(-W*3AfiY2JXc!K38?c*c(-6&yl*H_`Up= zD(vBk-^+7iP8*`^tFrHHjcAX7bImtSnft8nn5BnZvVcL}67_hOtW%#l~d8U3cIbb4TqgcEK#n@o$pLr^=c(zV#;jhRq3NO=n zL;LgbjTSp`;6>~YUHOBu=2f)qMdBb-J{7-#-Yps*Xx95vCI*}J&H4GE=BeZ-THY9F zR!s0CE3D6?p_2Vo;LoRZ=I}=44=46=y{X+J`o<@PZ;Lo9 z_~z+15A{iTKD*}^LC5$Y?cUAt;qx`At2G3u+ z$i-Erzjj)N|JZAfH($^2<|{Oo9PP}NO7Iqgr3#&;Tqs~WsJ|^ z@?7gbe3Tq3AC`|8;y*lwKP$8TzIR;S!F*yIE>FSB6~ihXTKRG~{U-4PDl5u0%_^&U z`NTG!t2VmwN^*1{tvCk3@%p>Rg8?59ZPdUQwi9Qky$na8_saaMhzTD0O*VBZPB=BX z%*H(^M(<+HCrcNX#4XLi`%>68yqMSr6=Td?Px6h%BsG!s0(nzDyd?7AGWbCfc`XwM zEnfQ=gA{ThG5qy*Ucc<{uS)ow{LEz@UxQy}*75I*soE=fuL~JAHL)!HD!f?nq$}Zl zJy$4ZEW1UqkIr83V9N`%aqEMVk06Jq`^UiB#ed+3wb8l_9^#=0_hPW!fBm}aged9;hcyR{#+Y7$T(_lUVaU6h3XG&QhWBJlk^s| z9*!+b9|Xr;c8?6P-L&zv(>eENtl3hEPxI@{W#TX6tRv&*v(_mVGnLOcpkIvSy}P~| zE_wXS@b}hzkr;d8^XCO>OGceZPI`WY^RGjP>|vX6Lm-@<4((k$%QSOtZ~F9XXPx;5 z&%ev_FK|DV=byU5G~bYI(qAtOr+?2LjmJlsE$<;GB#4Vm5)&z3?!#9F8dbOav|7WG ztn1Q|^jpNfhI6P#e&qtzJ`d-@xA1yMXaH?fX3KH`II4 zWv2Oh+An%h8}5WJ{u2K79(!Z2=YDbW%=lfGzGr!mzwGPB=db>8;Ix*zjythSi3e{# z(w|HFMh2Q0v-X3}W=$h5!{*=prkf94^+%~cLH*^#npAMV0v>mieKIS@9JMg~<%)@X zjk5;G?`Gqp^u6@-XTXtk&>qISm+{sb;N5R#pN`57FqaOphoplzhVw%vJ@r|}f%giq z(U|)S<7Maw_umv~>>D3QN2f~{IX509X6_1NXXJ|ykZ&P1zAPPNkAQM`X^uuerI?0s z@tbc9H2#Eo^}L9>wTIKLUB7d3hkuQFC3k7foCl7DTk*pz@UYdFPo+?CLS_sxmVv%n z=(3O)g+lXJagDury4I7zf--0&)Uu4dGDT6*wP{g232TsYnc3Kq81XShi=1m)ewTB- zkvUUzkFWfG=ekSZKImMBSc8j}I@cSHX+3t}ieGwipmG1Sz8Tnm%hSd*gN#?72_YARZVWGb;S22iOsLJXJwd~ff2QP)KA5DRC7Lq&dFQ{Y~nHJ zuB5I_)U_3SR-%_I=Nn|TS>hl1W_g1A;_#QCuY4lqLB5OdU8KUiHNU_dehykGyi9a= zZu|=3^P-{re+w1_;$!qKx{uD12~wB%M=%`VYz%(4p%b~~T6^_8%Y81`!EGj9HHsYm z;D-1_@}CF$!oZOnzV#;h&i>Ao1?1(_nhJfej=vx|Uv+9DR5L5SlZb!a0$p4=EBukNVkL@~ecwHF4?oc_WQ%?n4~ za<0#ZUU$tU?=Q6Q9QzTJ-}6}VlBMzqcfS=ZIzm$iQrewR&IBhg1|+IqpY@_B2%S0aBGe!d_c`M@-O3LY2DsOPr-Wj)iW zXCn1{A)}t_PNAOHY2!5ZN?eC;!QZxW>dc`|@xsCqeq=6v zvtIpq`|S98hfQOe^WX}!C%-c*UPuhupSbsrp@Gk8pJ^068-mYj51jZ#9W=+;C&Yts z&G?1jvjgSuSzYgdhlb#@1Lg2pU5mGd9`s$qXH_mftNqUjYy<{h=`!|AyhVFVG5XJQ zpJAWLciP_Iz6l(dUpcXXuXBIw(m-R-*I&l5bJM?`72nLBE4RO$gU|0nwUbKc*k zweI5VcqQMobFX>ikMWB_L!K`6s6XF;&3`kPZy-WUW(DWaDlcXa`u-ep59lm1*u?!t=859GmFMW_)t>(3>>ssl ze#dF^<8GU^cAiaJ-_bhj`}6d@=8X8zvRvj1dP@PYZl!*^rqd?Y^cmU*AEsP9Wa%}= zo@cMU_KNrS>$`$^q&m>p>x1dRgD!{Ym!)IEhYz4rmBL?p(6QG~U-onWS*<7Z&9+T> z+n-*)G_cm<1-W7q>q_?C2ge{f`)6SP{T=pv z=E40nA;u?0u9YnILTk_Ua_)nph>d3q^~~nLrJX@jR`Lq6oL~ef7cVb{|EPXlJNR_> zeLyc+Q^Vvh4E0qZmxL}3w=2h@qif{1Ji(qP?az#&XH@g7daCr1P)h(A?p(&_Bi4QG znT)^(4Y_{8hMY>gpPWeBcxRwpd>;gk?v-CKNIjYDmYm>kTbs_*&|I8+xt)u@=KQiZ zC^N!qD>*#iK?iSe=MTJBv=J9Rp|hX*=);3!;R-+CuLwE_fIF=j9{r54^J~zamalnP zSJ{?Ce=Q`hA~~N{-!O$Xk<;-$ev=o}w#!y%^;OoU?~`*%^IdCk06DsdITtB7J6`75 zVW7k7iQP@U1HeRapO_ZPeP!)7uB|Qe4faHV}Ib?KQh^!nymwe=(h+}rYuj6~>3UcrC zxaN$Vt9)PS`+iTx_ut}s#o22PFWjp3IM>x&Ykn+IJZ)&&3AyJc)92yx!QKHq`t3yx z)Hfa3G0gZboa*r>XRc}NKZpey4}-figW>dt8%=y&@XS8t9r&==#1W!C_WWyq{kh~Y zb7*m}{@?yD>wnbJ(@^`;PmUX_Q$}y8NGIt>fiWHULk|C#^(@m~w46B~74dF(LiD_Xg6MgPTfKb~gME0N zKAenSUu*fzV0$%QvCtio!)IDq{hqVpF>H0n-S>8}hYPww_7AtQ7CSOOw&#uTM$G{~ z?h3NamVEq70eG>spD|a+`?5MnKGrJPl*7n2+6M?PQ62lh=OyeZ$}<0)&^|$YIF=9JfXtQ9S}Hq}vlqJ>{=a@NxuWJvw_%Ov{hp(y z#9#Nd)Ln3zm4Dce`(3+ti#E+wp9E_w`I&m)pPSfYgsm;T?KdoMu>hxm--?pCS(30(sYj=~czL$3O z!nfETX7?jX4KYMq7VEGt9RvaSW7%R=Zv--5q(l_hS0*Bs@2 zY~dE49jn{f%Y{s7It;S9gX53Kw;i`_=fo3t8+3Q_BH8gfgR^*?@q3Q_Lc`7FZ!(7y zw>WJpa_0=T7n>iA`DS@+%*SJe$0qP->k_RdrpNDf>&~1j^HldK%oXJG3muzT4rkmM za=g^GbKm~{Lq>bg4w+VGkJ(7c#^tr`kJh;5Q?qQ&!E9R|PG3)Xlg?E<_tnt2m zNfx;}9D2C@?yU5Bu049b5L$NRj5$Xn$7?+n{!b=9AIy*^tv(9xOThp4u@|p8u$-mYo;;h#k+FhUHT>e zS#)^Xe}0eE$2%22u$B29;H(?re?iyPc0S*}_v&_g-V(V@dMMvS9%!BYJqLMQ?{@=ZHT0iozt&|7H&$fvShFgtU48B^hbI>YOS0+L zCUlY>?t9RydnkL2xwon5lDKlVa1L&~hkpK)erg;Rtg2{#ZG@BOArtPm=<^P6uljd! zMuuGrpjW|<-j`+f#Baa{UbNK8PMzLqs%u}kq&8%T zA;2$Af1`JwS+WdXTI#l0I^Xj5`)A0na64@-qRl!JU^qJZ4ES*9)5#rT=h>n&wT9-I zN#VV<{r#8A_qgRCHYH#g_&NEOS9|l(%1q4RJgskIZ9L7P8piP&^1crT?;PN%-OrHw zz|I+WZI6{#mQd#*YwxALsjMN%`U>KA@CmRsG@7C9)ZAPHEw1~D)-yIicv=9SCVPzN z{4?z7)wh-KvJ~~penqb7j)C!nmpS-#Y%gl}9NK-d^Vyty*Mse+ZY!5nD!)8-v?TVO za@x)L6BfQ?K+D5eSC#iEg-xxCcE~SvA-pO9uTu_s*$HAXaEd;C1^lXLGCCyrLn7b< zp7lcERP;%%*B|fSqVY*m2Yqn$_QAHFL)(>)%ER}``D?gs)ngyeUxU===dYRe!*cku z^1MZg!&Y~S-Ui-<2l)59^uCQj{lGd9*TkCf89=}%z;hFO3yF{EU$5Sr(`AZu@K{7^$S;4T7ax% z>DnikM(eWDnj6oiS;s|_KDkJ;Pby|4Ut0NSJ-jH8!HZ3L4F2Y(YDqYG1S_pa5OZ=?)mQGw+r4G1wZ{eOo@GmIHK+y zCVn(_rt=QJdgoT&=^7nL*HC|AJTWLPzE^^8={zxXo;sh-qcz~^PX-!UTel=e2GcK} z=d44ik;Hxd59iMauU?+KZgBd4bNc)B^!(5RoIoWLmVpHmM@ukcO|e2!v*APTen+qD?`_`7fyO; zuilTrZ}8b4T44%^|0+Dv2_vSaB!`n+WLsvnvOmFKCg(cG-#!Wp>j zG}|uJnzGxyZ#9X*djnmWf-~%M>gkNKPHaOSS05^K!3TWLxz4jPgX*AdtW!ntt#7({ zGKDwqy-;4eeO^!$fBuKg8s-1ygHCLi*pf``Iq_W=*fp=!>QRgt2~F%c>wW#BH?>9z z&We|#&sHxj+pBYil#lB6Fa6z~tG@KY2d^#7Uc2eoclK`j!NR?pva;(rzqJD!4(IV^ z)nCE4ier3@zAS-GDs0SKXmJmGBbRwI&&Ioj7K^VaFQDSx^lZ+t+?j%%B33qneOj>V zu&Gs3@BeL`E6KNqKHi}7VwnH(|J&=XpPF`fV0-tDu<|O+s=M*XtP0w@;|oV-9xWdo zuc;x;C46Z-3BL4B6q-(4P*#$t8(ors<`aJoSh`ET$aB82&v{RBYU$VT zm;N>W!5P*L&}qWX{3@YbeT&}xU2DtG*)($*|HkD7Lt>Ub%luW$lJJAvi0pW#BS&eT zav#R;nxG8boU_a*yC|4WgwC|E3xGlU+7sr;EbM>Zl&%Y%G#GH4d_LUXInBx|t(CL^ zyTiR-zu3mh9*X8x98dhn96!1XzcTpfADeY#8D~jYT3uWrKGIrwG@^Oev3=$fdzStF zg%8#@{pN$@&O;v*EZw#?@uTqZwdA9yyrlfN!Mc1LN{9FCNcBbr!%{j}?~MTN7c zpxc(tHHX(z&n|qByB1BEy#P4!sp-ClUwv0pioM1>_`|M+CLQAYZoY@V%$^6nW6Yzj zXE}>4YThb7R`(cZu+(=GAG(~rflGKnsO5Wo@W6c5osEnqctBQeFjqP`{O562UgB9~ zj3sXQTqk$=msFn5da^N`zFFt#>6_b}XJ62>h2iwCyl<{?>bi#Vt6e^!3Eaz#D)-%W=#I?0uKSR;Mw!E>N#3e6>F$`b*P`b>V39Xkvc$1(o5ot5J#rH#++Q=Hxxd4~L2TFRcHwAAIcLI>XN4Tr9d%1}w)6PrKCpXtNfFX)qpw|5!C-*Vqw}J!^{w>c8yyM_^ z8}DqTECDRNr}}k1i-X5Pi$`;8?%o9SY|FwWeZ4S1S%CDy?Q8P}-jyxO7jMwPE6 z-%dvPcUArr=c_s8tVPq}k_lIr124mxa7@J7shD{}ul+ z{{4LVCybrw@lQK);=}Rl%ZR}fzZOkNk6Z&?NsleMazzRI0^W+Cf9m__%d zYHSCN@AfM4)4z*ew3A%RD|5Ix7lF(>7CsV6v)7YT+9p`a5Yp?Jid3GZ_cdLE zG2LFhKl?R)+OZMhncV!W@a^QpAi7^T-PgvmiR^6%lhYI49A-?^uis&>cji%k{JWD( zW57JOM?N!*=X34aimgWL`Ss)-RzI-8bQ+)klk~jTPNhWw&xU`X?;s6XsjIm!MTd{hOyJxaEp~QX|YNFBj?gFM-G{#&Rl2*=ZVGP zbU%1z4tAO^J7>i_Pk9^fo{U~s-9AXK(rr9AcfJQ4;1>a(G3bo_@oF1eWPqQ7za*Bx z8?c!zp>F10tGUvlg{Oe`eahr(N#cVlBqtWS`h$sE1K+;KYx9qtHb1U5-&*$VJx-e& z%>B+heT4Fryj#t`=KU`-`t&f*AJVfW&?s#b50p<;wEL7|j@;`;T`NZE*r@n=VxSu4 z5Cf$>AmPj7mBi;h&V7O6GH&~1d_DK8x!2exicLw9IAiJPvTb~tF;AeYvzL%E_RJh} z;)FbV!T(0T|MLpkO&tV+4$?7!N(?!Vd>* z1%oz@|D>)%;K}&@y!OAI5pTr2>a6T4Pe-ULHPTxnvK+Z@zQdD#;?0X~m&AWbKJOGZ z4L{FP9Q=oFxp2z*-dc!_q13T4v{s^rmb(6!q-$d+#UGP&Yz(cH*cjA~=miyufo@Dv zf5Cw5CUV5HlRrzpe(m(4ZcpF#h>aB?; zylB^oc4F)nf1Nd6aSb{rR`HkWV>$C$W$a5xCoY1n3_1gS+X>G}F*d`UDJ%YevU7E1 z<5Rq>-_|C3pVpP__V-`K%W+)9S_C$Q~$rcs8*vx|SU_h@YW(lVgV)?o5fwk2o^}KW))Rxigg$ zbU8GoG4uCJ^NfuIjq8RPk2^BP(;wf0pWuXXEux-Nji2%S6U~z~r-tTNKQ_zBC!1o8 zb8Y7q57-v19r{&bCe;58@W059N5U)NiI;#wGc&#b9Lld*G=Z2*$1Y>{U)1rf>@qL# zt+jQP8qQTfK4dHuTW~U((sRYgC2kF;mvP=?J-2nrT>6SJ6K8T-I9ThSVhNsh==gdarQW z*ZLtmi@B7%g1J~Qf-~B$P0vT3O)@^gtCsJPof+MIckI|hdt=BsJBYE$Iu!oi3RB)D znEJ24CQ^e;BVAPMjr{V0tFs8YKwJp_Yd7oqirW16N^%izV(pXvct|;R1eJUHHY5kg zud~(UEG{5#Jp4PI+G<=q8C|#>ywT6ZsyuA(PJHuM{>I_;OVlU&6QD2F&Xv!%#bM%3 zf*q*~tQ^gF=EvXo1n+GPTbZ$o_p|746q|?Uw_;5L=nFlRZ>Ao+3>GIjbC&PXc|Yo( za;H8^|9US#jy1jHP0h8j4))&WOwFy|?Z!IjedYDt&-FZ`C#n%rtS zoi({m>-~NZ(#Y{8L7qRVtqqZhwyQU3~L3{*fa(&5s>9 z;yctyn;Xm`#Zo`q_ATx;e-dt=KEwO89Ua(_d%mFh=+m#L?|GhGr|0T(?b!Hs>^Zmd zy>KRZQ+)9ZXjQcNw$E3sW!zh@uC?pcpual&WVpGDwZrb6#&*5|+2-GgIh7A(3GJ$; zUC5t@6U^In&?<7=+;z<3O7?Q;T+t{xH|uTNqS2;t7IV)ls|3F>%0A;O(_BlE@A#{f zYaWynE43pFKOV5QyhuM+1=x3Nln;E1`egfs?G)A!fBcuu9^&Lh#GfL=6cY4{9IZoouV!pk`d#qk>4aU(trYxQ`l$SB`JZN; zhV~ebcnW^i#azipC$u&T=AY`X1bzi_e>dx2DeYiC;#}G7R^R5Fg}oLU3anYarxt#{ zkTM&;Lz(ELz_Zuji(?;x^~FUvKc@&^ocwY@%Fdx3{x+&@1G)!oVSnIU!CygqRds*= z7HBk$F>Jj0C%M$>$?)WH6TC6I#*W#S|CTX@&j*M#Ny57)W`*O?9oLp5)|rwo@{Bpy zYG%xci;lm}+)KcV`<%IX$b9JVkA*5<7cTiv-mmuRqc7W`-vZh%UiCSrt_JfTj?Lh2 z^bL4?hq`WczcKVT3_UBBT;E*keM7uKA@FZ-zv<_ zF6}$EWnFF=d_(@&Z0cx|O{Lq>>k8Fg`0b0dH!3{dJVvM-x?JVGf2H$&NagU7WllL~0XgGzocqLh_?c7QU|w>@ z;?F9Fp8l5K+k~V0RWJR(&Y1j+d`~0dAB8==&^bTzG;nPBlFM(EuUh;z&zqUKX-GF#q$Lsn475 zmGb#RU)pP-aViu~a_id$9t^&}9N~-W%JOJQAYf+dx~9CKM8EhZto|ea+!*4&GQXV# zEY<7REfgnE2tO%+pUnF&*@hhcmxQjQmnp8G5BpCyXG-Q1ue%)^#}n{L)$=C5+xnf@ zT@M!gr@`PO3*e_J!besPFVz_$)%eIN@R7;(9K%Nz!$%g&BFBdbbx7Zez#BDQl67|= z+g%}Fs`ZftY+eZY$T&ZWoDc!)BMZ7dGUbFQ$48d9QEl>aF*v$C>r{hzkbS}MiZ7Q9 zrDNqs5FOv_(y>RskJ^0mgZo3Q4iTOn&%;jV_0glFb>55N z;|$>o-6$A*o20F!$W^ja?uJj~Eh?V9F^@bN;8XYA{OViTSq8pE|7Cx3$3}djQDf@K zz1HE3iPy*MmMiI>=GtG`-|Uvz{7QcJw|yP;4%hZw;D2b_v-%DWw0-jII@|W_fwsTy zYkS=ZZO`hHP1I@oHs6oV8k9{#vH zUT8wt>U^PuiC1I)SqCqFobm8-cZpvXGX_}|we3|)v)0NckR4zxlm3P5DE_CmR4QJE zKImHi!eJFStYWPUy60a7Ss(Mklg_`A&0!g|?To9#`)j3VPaS7%0gYat&1Y?&8@xU< zzUu32cWi&@j;p879kl%$3uPy@98f&bgj7I z0r}Qj565af9NeF+{`<%Fci=}nE1U7msU`M@n4p32W88K?19hxV@Uae!p=@8P=-V#N zkm_YVs&BindFk3aHz^yQr8;z$>mz*I8_KcYF5=tOeEXbhGt;-vx%RT>TzgseByv{- z!Rst&8C|yqA7m-^)x~OcW-O#u8 zs`o#;zEq{_WHm#D*#wpUPZv1;mB#fobL3}}Ss%1EE&^xy z)FGdS_MIy(M0GOmTQ(c>g1^pu>eKg`^X1Wu{iYtj_!=az?xYT*w}@ zf&N$d-kr~T!k4g6-V z!-rCw3;AQ04m|v7PO2RtctSNk1zoRXPGo1{f5|KV-U56J8%(fe3S(JH|2Ghu@Cr7U zDU|EoO&?~ph~{NW-wDkhWv*u1^Lj&l+S};rTbu

Z=3~+0eUU67}pV>035dEok!; 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 z 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

TT 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

XL!bk~;+QtTi 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

aaf$Y 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%0A9j{qo|Vc#?SYV)`x^3*N*ydU6bh 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

7g@u__40^Sbd7WQ*xK;@OjpJ)N+>r_U0 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¨Yc?Jtd`xF9b1N6dkS8Bq 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%0AM>wAP8*nR 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

KK|I=|EqoPjz4az zxfl5Qn(j>GsF(e}oOd3F&ZYBwmi5i5hw6z|lFx3iM>&K1g`=#A@achmHfUAhxpz|s z$IC#tGRHMSe0E**xXy@HErJo2FIF_>j3=^u@sG(-aYq)p3T}rFB{H-eVqFO zzFDrF-y4shW1ufsb7c9@Vq=_nw7;iXFzgcysf;}dpKGC&cSrP{k1ZeAQ^>+E)lmb$ z9Cw~c4>88Fn0s-?U>F|qiSSopuZ-JQY5U9U=j{HTwENR}>HWrQ_Sfe>^o|SVAbY0{ z+v@aZ!CgeX2*b#%DJEwsqv&Hbhlp94^kTPPZnu9rsr{F+o!%WWwwGUH$eBvcbuf&Z z&6+Xax^RAT48DvZHyX5GIGt6}AY-SR zaH1bRVZy1s2jt`d)9-rcsle>Vg|}BTDzB~ivV%9y)ew1IClFvD^>)A~Dv!_z|P#d%g=c9a(sg zuR4FC!8zlTYF@kYLO&T`^1ltA?;u z!~1wIjx3*|cvF3K)?2tZML$ma7C-diUwD@sciK!>ZUy|Ix~1u7oUvKBmp-xOK~eEx&fwvi|)16SW0DD<-3OVix`Tb=I9D z<5p#g8Wo{6MXL7 z&!aaL7~XJJc|o|PDzv`>+F#53_{a|mGgk-GziNCrj-M9T%vil}?X=^(pBRO1Lrf?RZDkt1b=!UC zo{5u-lu4WJytI7gTXwrqVY&4(ca(BTu+$z6Ia7Y)h;HiAVfy<$h!R9yfGUoSEFkLjC1JGCReDa$E7jdp7iHUVv=3n#J ziE6)U(0K4k``8NRYxMtiL(}-}+s;-851qXqAMJu~R5l$h_l(W>?v2OeKF{R(^LZy0 zkb}N}9Q0k}ptq5O{$lxyoCQ7O#476T?^vHw%bCjIo&Q$ZR8{U9TUwrfV*LMF-85b2 zNS6m{i$~{iPO)cl27H?loE{#BUhcr<;7c^^d;75y^NA&{{O6jc3FSM_-v3WW&aOOo z{_M{37iz1|f9}Kt+MGd~RqF$_r94;amoLRPdBTIWO)CRiIm0?o+sgN&XX~2UPW&4% z27vKvCw2i(J^#ChE^lfpPZ>LL2j_{?j_R8nEC1|?m+mM!ag;q3r#@5DG-ujR&tCs% zN^Q`S(s%y*4<#hO5EKF{Sd-qP8hJJIa( z_KtabxtB3}FB-GPJF~jzL_Tn@W{#?Zsh5Pi9k^SV!ys@^0`4`yU1IXeXTXV+PpJ{89Q>;_XxJuyCag;_o4nsGiy&N z=Ny$*UXA_jvtxB$+)-K!z0r`9SIZjM3{MZV2AJ}Y^)NX%bNp8mu6(F z|7P}z60-^S>; z&&jjRJ#U>I2VGn1o~4(#ZIK`Buyh{TB0qNNAP#<1e{L}R%m+W!CVu=E;pZHAtD+(4 z2rb~JI%&P2PKCK%NM8t$yE=i~)fdTKCBM1xdhny%<8&jX(?I`h0Y53=XD0Yb1wTFD z=XG$B3Vw90HSyTEP~<2$QY`g5;HCxKxZ9;}7_l^KFTLVF>PLFI>L)73)jpOwC!h7# z_`%&yaQ6bZYXNuUSEI{NtA_YfGdj&+c>G5f9)AcP9sH#w>F@FbkXy5Pp!4nJziXo& z+hBbZxccaD&6Qi467c)+ zkB^s*QR%DQiGO@P{_*Mf$H(IzpI<&5c<$U(2|RxM<5la8+VS|t{rJZH_{RPC#!Z-6 zGpg~iF6X)N_{FP(p2m_(@ZW?>z;F4h`uqbuJzi>#`XcciMh%AOlj)U4*Bbc;*r!xt z7>&M4RGBhvzLkkav54EuXW4_JHq6WfQ06Be(L=^JfqXdJ%X^ z*~4F9q;@`!-Xd7C%r;U@TgzbI%I)~;;OXP(wBu!dw=?$4vT^3v6~A-OPaK;4ck-h4 zFosEtp_Mt&xat{43vDFN%Q0Ya=B1u_5nfbBeVh%0_k7O*;+n@R)HiyKUo-=Zrk+IK z!q+VNn#eur8Y}*6Jzo#LR)VjU;A)uI{~`8m%_3rPnOmzr6RE)aYZq&-kOuxRy^y^@A&&XQ0uqnb+jgbNywm zp;vP9f>G(<+9S9dcvl1OYT#WByk+IbYJ<#g8o9xx{~#K$e)>(7ZJJL}mZQ{V2BX9@Yv@Jq#q`XVd-eqB@k;vb#$zWw4^@8*uP z`K&+r=l^k2zT~|v@2b~(YXkTLq;~|kHv<_+PSfHr_>f%DIwwEWOz=d#EBrCWlAZgi zw>-aZ#TH+6$rIJ(A!?!cqY3(qA*1Dc%cCAhGk&mU{9g%tbkf;nhtEf^uP_3g-=}Tb z>H0bRr0*N}EI{A)vsZ0Ad)0QL*URSA*c12x6SP$djOs%&M|qF2)%lTTYy~&}Iet0G z|7sgo@|9B9x))!k2J&wXO^L|A*|Iq`(uR-m7=EjXz#hk!naMi09k}IBlCQ*zFHQIm z?aGeO{ZCu>n?x@bJl49@#(T#YSCDZ{VqAL|mvWUfhIZOc@Ov4*r}29>zeo5z=t(nw z?|@!-w(%(AF5~~GuEBMXIhxHJrF=NGwoP+w@~u^0ShV>K>9U(?jhdkHT~aHTsT$?bT@dG zZJ|GhK2MqPl>YJ0W_<23^e*|ui@-tmx8L17ju=HJdr=b;EqZCi_r8g-Sp8eEv)6cz z*vYHK75Vsx$rCZWVUOVZN9pz)>AvQuZ@gA}ZoBpzK7R3*?Aqfl zdP$BKHWR;1hW};Yss#QY3w|?iLN$`SW^Lj)a5giRqNK6xNg9j%xf)B6Vf2pWAq(b< z#&YL-jO9hwShRP;Js;M1KHMAMGGpd<6HC8`Ibm$^p~1-iriPbd&}QxOTf}R#BF(ed zuR|Te1fR&ygTxSDEoEPF$6WT>Fh0@kDR}4f-J$Mm@@Q16z7rb1le!L_xuNa_Ukg29 z)r(S{S*;k}&(Cg}`(b^~-Zb}G zBWHGokrTXQ_9pEYXh%kOmh;>MBd4>R=d$(5b2l0}vp&kRA2)JBIY!ROpjG3YoNDZY zl+G2bebzXv{WS^Z#u-Pd#sS=dU$6`AW30o)=&@Qu+Tfx7?^L4rmUA{A zeLhJ(qzxjk_} z3*nZ@n;cl-wcomU&CPFf#`O1RXiZr$+BlF!z5{f<#DH!p!1*EYTr^2J0aI%Zf7qny zeHmwl)MPp|4UUU$Bt(z{xdg*o@EW&SIVA&D#N(dhY#{k z#H_P?#5;pV_mN?TewQCS^ba#w>jT4#NZlFZhszm5I=YblCt#B(|0}<|0zIyq~#-Rg$JE>+_AX=^gLwIz9MSdd-1hq;%j{# z-K5y?HhxAqg`=z*0n4#T^jrzg3AP0K*nHxb(}6MBe=GfRK5<9=UJd-%pxyYj$swGI zzue!MkE{^f^MSh>xaR}+j|BH9BT@oht`*$SoJDuO=vLN?zSgg#5`m@4wO zJCi>1O<%FstlN;>=eJyaI{jJvWYL2|LpMW1u@ zc16v0`~apb9poL=r;792_2e^YoDLsLxBdCQ_VMtiT>RTrKt7mvWM{Q9oV0vRz?Az*eN+?eiQQ7;^ol(dhRP1<1Wq$b#nGH;iVRIg#@zL zEw5gqodoh$=hv7ycD$?HM{NEB#ly4?_@m>D++XJ>?X}5M&T#d|Y8tYUCDIMi#T}ge z`YP~@Y*EZwbEUd0#oF&nu7T{|>zOZIYkzNm`L*c76D@_8d)FrD#+t)9=cHTo&$qJf zx#iB+9Q-18qAvU@pKno8{73Spko|JS;AA}e>|Wga&8C$b_L?@7){dDB|c+Qa0cekwi7UR#mmK>&iDK*c(hpZA`%U>`KyDbmDhW4T6GjFZ%ZUN`=d1zp>^!f zemP9;{)F5AOzO*>Pc+BOr|Q!uo55={JS^Q@I=Y*eOW?Po+${Ep9zm0 z{n^KAW&uwOe%jazlS|(oA%4CtdeDIf`u{@`{agOqKL5Gs-^nd=&P=Ii&IhBpPyGcn zx5^{lIl4KmOi+7Q6b{ zKtHAQvy*<%aZG%MADvzsrp*Uwa|7@^#axuqX0dDCY$?@pnX*qo7T z8y9yyYT|w|?`Cqpw3zeP?n4Gao2}Ay#v0ufMb4ZR)Gngd!DQ7T{VkM{$206j0cCRxj7U!($mk8+w~s|zB^Pj~BW&OLl5PsTP`zmr?Y zenfwCFLhb_KWq89Bn!Xng84Tt8RV>gFPr(~?;qY9k?#rVJT}akz&D;bl>e&%yl0CR zlHgsQ46ptB4*W+N&m+md4~UPxG3L0&_)5}z%)x$f=XWcQJ3f>;l{PKOucCZGx9>I& z8uBtv#mpDAHX0qjay@jLf;>A4ocMp2yl`Oo@3tRU@jKD6d_&H2@(EL$eBJ{1EM+)3 z9LU63$i#Ps9o@2^E~Rz>`&>BV<<{xLj$B<0ec#7tN!T~GT4$H>J)8ENcUB>LXCix3 zki99$-lN*vf)9MphD}W`&Dec*_DlbHw&SI)v%yDwwQ0ukra6WC&MsPe=qzV_go6`a z+H@3Od0Jjw)0{6w&aO2Mozz}P%4rFJ=ZE5RQG%uVEf;&+n&-|-(?x$vcXE^sc0FMR*`iW3dw z@o%H9%8T?{SDDgTKYryF#VvL|soJyYQLR%8X}i_`B7UDda;j3IiYKjsAGQH+1J4He zoM{9aSF<)28Y!LaH&>G*eACu`zW!?T_5Dz{OkB_UevOJ z+?tZqP$U;wvWPfnXz6_HLhVPfa@h~5hFE2GP5B4=*;&0c4J1dUYyXURx~}C%P;NFn z+r3qLEGn<4c_`^!$3~N1NbmlXcXge?yB^tS=%?7e-PDZFi9>tMthIU79{DXcI)0G? z+5fyZZiEpD@vPaGF|y|K^hG{%liEoiXXK=BG?t2fwO*G5eP$bu@1taNsC&EGpf+aF zXu*8uiQ-@&QZh0xg8b=P%iOC^yVmEe#pH~Ai{~>_@j2YgIN@VAt}I*5h~_E32!74w zvzPX5-MNkZWhU*TJAd7#eYd_EG39BWJ|8bIx^tj8PcSc%nL^zKU^q&=*f$9uDRy`d zbH5lk{buf(zjFxJhoH~r!Ox3Dp&Sc7ONZCX+@cDt4@p)*U{P*F1v(}&~BhEZ= zJ@X+Sz?WEO%=p%@yhu8ItbpETj^<3Gj%6oa+8K(3$`+oRxFx194v`H7dy7M;_0!o;n07V~Lh2B+}*YTvHpoEJOvrIF-& zW`uH1@msD3{|;+&_UN>5@Y-c3*1cYSV#?Z3JcYQHuZgM7W9Nseg z(<9rEMe;9q!n?`~QY^LYq>&>X(mD$=HM#)2r4UmSFC@^fWaqS<4CTnr+{v0PdUuag zu??N^t2~KT5SeUQf{&G9ITkDe98Ij3(D{5`S@XI#ml*_ReYBYioa}L-e_MqL-ULv zB~R)2heR{I^JmFa(W~x>E)4t)lHI4FHO|Zmm-22Y`>n09+A=uleSAsB;}?3KDH!cB zpReM1?I-B}jxV~v!GSHquMiGWL*0j5yyfs$SC!ZFf33}={!CT>^TAcWrMZqd-C=Zp z5WRY5x-m5_eRj3@+`?5Y_Y>C{Q`@P9y8^nOWN>cw53L#~@HG3CLeK$cS=VWvEt*!0 z#;j#gU-C zac#l#b>I;!v9J}#u<8`r`x6)AXT8dpN_z(t`^dz;&mTFBT1M1=qMm8{LZf>Q{p14w zR(LA+4eC|#>G-3xpTP2k_@GPGWD8jJXYFxl-lZQ~XPtze2%(4c^rVohl^W@pWpwvc zq(yovI4>GIifJ+%#c z>M-_H9DAyHhn4%BoHIM0^|zY#t2s|h>u-SExC!LOZC~TBZ7wCxw)}AIIC5M+{k9eV zY%ayN;+ZU-$q4#ty(~G8^@*|>hIRf7S>B^h=DXeSgbR$+ zaO&2LO|$OUdbWk{G0ta=BSV`xcTF-WnT7?&X>v|)Fao?gjQT2`@O0WxeOgQQ59Pff z7ri%;=dI^1-Tvj$;QzPJ8PQqW`sAHEDo&dUS!af_^kw1O)?fUdV>4JI4 zSkte~wRxWNnZDX_dGNc|$sx9kwfxuCxwOjhv*e+rt4Z(9Mb2(OMhB=D*KppmL_Py@ zb83QW2VL;Z#pr41eyzj~6g!MT6Y`%ooMZ1VYp32vkDphFJyF2t4EWDobL*&KgeOAZ z3GNf8Z=6lrsTWqSYv#W8=qX1@a>@-?-#iTrcZ}yXuA$)5k&Dg1_uu4?IAeNaurZ-) zKBqCE-zAS}_fzEe5pP=y4(h3Eqnb8ruv1hwPc?`{O~Q|zzg1|{j#J;R%dY3Kh;w7#9r3~5cufp>!uoi?kDOGEH0Wo*^SET| zYfrrLMzxPYb=0(`Xl=!wZgkG`)*0Px>~U#pFmm|4w_dhj6^>@{uIb0U2bpG%;bMAp zXwj+}VaD9)U%54}plA7^$2yxHp{W|JWAari7BENiHw%5~cI00}C`a`IRKqQH544#T z>R!#<^)PpP80SLP8P#;E##XLI=2Y`r-BxechVwo1v`&d99JsaTQ~l?&rfQE_^6#oM zF)5wc3iCXjnqd=|W4~#iQ+I*i26{*Oo70Zyw#aWxHP>kDuvYZLwOUh88B3OdD+*fPi*P$Z| z=l$t9c|Oof?D(;aeph|*oy>>wGOc*&fF}-N865%R(W+T%+DU?C*7W(<+RNn9{YSQ=@!9o9rI%_9@P(_Msjy- zF8*Py<@Q|2chrYxi`GVR&zu|o>fcHJS+$8Te{M?14b!@-Hmd#Aw4u61l9i$T()%r0 zdO33(_%UY***=w}?JzYmE`{2|Z?1Ljo_5rqmvlpQU zdg$p1qU)mL-fMJk3$T7;Hv~mn*;YMS#h0)%8?&j2m`zPY1AOH|TZiEN4rE?zQy)#e zMQz07vHgmB=^wvzTaqKH=cpK#BlDo4(H-!x>ee|l`#sSt@H^in_uOOY>sva%YK1Eo zN;<#xw;@N~sfhG&Zm448s;4D?f%JsE$n_v{J^g~EXUu`d#GB3N`ic9D?h}ikv9Ca5 z=(Zium2#|N*hX>m;vv+}DpdVGcZ207_B8Z#`te{yby?pp zuFyLU453bD;ZKbvA!vO_byd@8=;id&vm>uRGbi%qz2rka?d94Rc@vs4bCw@3h=?Cs z!LjnUl#A!ae+Ka@w>@Ndyx~9Td}yyRHAdSVyJtsEKRqY%I&F9C_Hyluysox)qF2=GA~?1 zKPAjTg&p@v{(UsR3&sx4fSn{d0k`7WIp^1|!|!X-jP#Vj-WT0CZHm4O&NS&@jhU=D zf6meY5)Yd(L+Yb?dh4T(gT{4krkj7YZi&Y4p-t28fG?nf^;kTs-~KwD9YPzL56|H9 zv5a*N8@H{DxmdefG&n z>)u}@7n)7^QnCN^>R_bh@wABW+rc{bHfz!Q&*%c~dHy~&&_(n7VN1VD#?4Et!Oq(MV$!-Te9AYcwSV9_ zmOoTFRERxqX;JOX7^sb>&2?V+e$KP$QRQMu20fx&BtE}xe@e!DmFw-`y{9S&zCGaE z7yb5MiEr&ell*vK0DPM=t_m5q7@DI0k-~WuIA08|v2%KHy$M{i9=dTopp0WZl#FxZ zTI-nfEVqnH{#|;OU=+S3<3#_`d9^kY2Y{y>-6?45S&pnrZby62tsF4r^;){tQ#QUe zzH7j*Tfcg0lcirp?HZNwq41NvHzba(wLHx@VCqBcPs%0VjeN9u%f}lv3(3QoMIO#9 z@^EI6hcmH!R_$u+rgnZ~FWjd1`Q?on>@m;qd)RaDX-q}Wnyp;PM?JNZg8rHad&T-{ z0e7FxCI=@2*^$9-8N8oyeobQ?{k6YZxuuL6A7#||*fZjVFGJrp0SgQHl`gP7Tuvbk?8a2NKRQpds(0p<1uu z4d>HWK7CE3uV!FOM<;8h{nNBRcjP+SA8NM$eSVit*vXlF@19UD~u6xciN3O1HDlKOZ{awD}*^d^mzcX)B)`hA@bjDigcR})X zf)^?q+slKsb@*c@kw*~RR=36H@r8?-zjPy&9Ad%cJ-wXqYCNCj6JJP;<7XAFso7@c z@Hz3{IqXAC-mjsUoO~DeoWl={E#)D1RsIpvhr#@LfgSweYqw;ve{>$XCxOlq^wO2Y zP8JYD+f9w8HDwFVnR_|#yJ;VrZ2q=%)?sW+|;p&ZRYwF372#_OD$#;YA8RR}^gvQmZehxf98`9}+ zCokgu&RN~{SA`<06f>fK>1A2sL-Z5bh1MBADbepJ$6s^`9r)09*%z_TFg~EzQYSIe zdGSo;UreZxALI}1=Qqoqa@vy~l7J>#m|w{S%ibiO1q|v(@Vrb+Y&kf0o^xPSf9m(O zS;od?M^b7^MuZ}|o}UPHUzKV+nTH=;?`RDx9=Uu=f<8({uHeky{x}{8mjm4c_h*** zZsQEakQvLgXw8}@?R`}adm;4x${(qtj*Zhm4fQ;7aOB?jOx}HC7j=dkKVM?IrDB`y?>~ArkBYRI@jy28)`;g z*S`h=aZEElan$Z>uzD{M^E{QldYzmT6R9A7{S|03{k##Wg@&B`2`_Q~&ye$y>4V

=o-pFw_0KfGH#((>Wevxe3ik3CV!ci%=MqJ1Q4&)L&~KfC)=w3o%64xing zRd4mN{e{4=4t%P8(GtIpE;Y{qI`j|z(V<8Kzeim#y4##Uo8xU5^}gs@dZ_%2DZqCW zc-UuWpGEc96ZL!#eA|euWZf2gPELFZ@O_B3COGFZL*J@_U8lZn*aWBA*7{WseD&=fECaFn*3F% z{m)bBLB?~oVDoFdyJ>8sCo46lg8qj9M^8fW*|E?AdK~v18&f)~=BkC?TkyGB@qx#l zP)?HOtYw7tj&cW@8MnrjL4E-_YR|2_Gu$-c=TDujGXjg3qYt-?xi8WX;%s2X+uNV3 zFWGTz@a@qM@g@3e1OG>%kE2F8`G5X!z3z`08_^!JLfY}LrqEB$eD-!o|CBCK_Y$#p z6Q334`Al^`v(9&s-q6!C9RJ)E{EvuezQ^*s$i%J;!aOzM2=8 zjz5RLx~7hEkA@JhY8`u@nQL(pJSF2nG@`hSaNZ6c+C_ulq1~6-ONZ_7he?}b$3_%? zZw2QKwDo}eV&L*pFc+e?eHs{AHs2ko2A`^d*H-tLh+-!#`cB)`!#JzA_S5{HVt!xw zS)-;c{k}*KvP<;ro;S(u4&Y4p1UjpVWxM$sX{RyubA52vb6%Xz|E>Nk{61=|iT6Kv z<&%FDTkf&_)rZJM#J8}Lyhx{?e)Pzgq#~9tlapKpH%1C2!6GF8eA3fobU6-yt$s##!lewG=?;Go)52EOzvp5?oAvU>DbMj zPx)Y^rz()sUWIKqNc(DAeI&QPgLBU>)&42$e0aL1x;(A+)J^wADm?y+=2q~&4!m{z zc4V$GZv%7t2Jo&YuYNse6|BXtGoO2>G^bxdFSFZ8#;y2FepGjRiP;yox1RPE)86Yh zjg53ZOy0t6$O_L;Ge5|UQ=J?1y4~KJz;}{od^3%C4|}d?`~`a`-UP-kUU+=nFE~qK zufE?lHu6T+tel6^jN3ZV%U|D&ueAXD-i|+~4*JMN&g?+8-DY&3s+C^n>5fTG-feWh zal6Ho@Y}m)OovFM4>IzN6F3djr_sLXSJ3A?*H+I`CJE-?zZp|Ni=B^mW$qH>F?oNYBkP>$*B^Yn^kh z-+~UGM#p*cap3)p(f!s!quZEFK3(OF?6)0(O!h>7v79yHkBn)d+DbR`j4vf8F7?~i zvhnANk!R9b)SmqAlkv^9Y@TPzHOV5Af1g%7WHkKFc%fsh&*EXpjJBt(^|g&>`egiL zmW)T{wQU~FI`o)X-$?IQ(B@EVF3$C3uZXpND&F*>@u~gBpwDQZ$XdH0yT~sn+uKZoygRk#G>1vlS9bqSR-`GZ}I!21Efcr zj-20|&VKx@TK5W($IQthuFDidx{o<;wDoA7efk>qTfT)|$lgeu4KyEnO!|z@N4{Ts zB>zZk9bH17yRZ*Wl7BD`-DU;%E=3m_+h6m${L5QSx=n*_z0nNOY$q^sKXDKE$c1OH z2ij`k8Th9I+B*gRsCI;CS~zv=&LQZlh4|8y)71H+|7Fr;-IX?7Hi#}i6zOEXJAEmp zo+Ei8x_qO7I?PuZ$KT+YH+<}Cf=>2&9(&>;&+zbi-T%>t&^;d8&v`9TyUA9hVsQX6pPKTA(bJdV-yIGOi8O5y&-CO}YK^vf^nC9%IQH(Ch|k3CPZn9DV~i z@&n#G$!~A++c&8%@C@^)`|_b`{LC5o-h=8t@9Vcx;w#F1l^zpkT$b+diSC?CP14G= z8lCs7bJf^?(3_7f{%gLM`DU(T$H?8Dg8fL2c_NJ*bLQGZt~YeLPkGn)D?T2FKAVq$ z*B4{tR!r;)8b_PNF%CqL8g zkKDAHHfXn*-^E*^E6Z==HGSywnH%=po|`a|T0_ju6l}W%$V2UoI0VjhR_QUGnMf|Q z{7aLu@stDIaf0@*4Mb8WBZR$sXk+DojHzK+h z_^8o+mwX6;>5*b=Yb%!kT0sWi&A!Q1#QDrz(O(+f&84hq%RD)4^mk-rAaaDf^_ID; zcZ@}~tBwF$R$1ve-;LmzXL@a1m)zht zi1AAIP>iOt!jp4)6aCC$4*v*#p=HGo<+Ex!%sG>b!D%Tt{Uh@=7hYbLXTsP%3m)FY zx>u2hp2wJe8S0*WK6PrLF{IOjPFv;)yn?K5+Vf88RLw;yKD-{uI&79B1fj~>#YUw0y**fi08|0JVIW+eB!K&uWDWVjA#mYJjg(YrtsT*Ji)kI=|7czbUmLo zcF>0IP4F4r<2D%)(X3)%erTzMG5A>{ifF$Ldbe^9Qlm4Kv&Gz~UQK~{tsFS&`I^_3 zkL{CO3rBO!&!OPzis)?fT6LL*MQ6CK^Udp2?hlFPx~@%n*E$T2bIkkJ^;E9^CvA}3 zM(TUnAcM*c*&rVL|5l797##|%j^D$K1&o1yuxq#J+;2N)Qu|WoaE7(x|5(d>C;LB| z(cf~B#}7dl6VV}3%N9QS(hO>74gbN}9wWGT8?-tOAClW&vmCui`h{}aHGk5T5}7)m z<|@`8@mG5E$cI@kxo`TRcusjZkM-6a>c1CUaDT-G_dw@ukU(kGTPVOjFX(^XY0nPE z{$qIf8TjW%@Tc?{YTEQH)0#Dc-03S=f2_QYMGc(Of=?@pJ(gJ`je|aeGsAKX?IqY) zedv=lEsqb4Bof{l<*u8$4ef;NIxL6T&#ke}t^mh%7Oy^U)>rUGcX}(Ih_TkLZO4y| z&eB?^{imVlQXg2`wENK3vnP>hG4LWbcgIc z`CkrR*sK~p0h`|(T_esqB%jFh|H3<5XTW0~_{$k@o_vy9uVF5**@6GhtoI?G&VtGP zbz;41gQOZxlO_Os;@-Zp=ncf@dCpH)N+tzT$6tF2Gz*2yK<$rqeTtXC@h4 zRX30mIjPTQHxqv&XF#n}%%tD@W%n;FEHb)wke@oEi2Pc+ed)c(PVyuJji%4f|L7C= zL7y%BlF^l*kC|UGj-RyKk`F}B_Sy!)$DT+jTd=fnDfB+km^W*wnZs-Lt94D!_WDSM zRXhRjFD--YoVE?NJ^;nwgU^m%14b zc!sRYMQ_x*vSEdvw6X`DJ^ZY7URojp|NgV|!{?pP>fIscyN&j{?M6yC)q{V4=Z6?W z!iu@>Ah&dufj@`mJMrrTFNDpQYv+&gQFHcR{49Q)ds$mc6+G168l2*x?HtVuDZRZnRr`*cUySo z#j(c5`kS+A+R$g);oS~+_o=I(M|1_{i8(Y}m3m?GDc0*Wn|BwXr(j!r+|-xA$B8F- z=kdP{4J+@kgcx8mV|DZCb&vJQDbCro`1B@=PYc^jK0Tn?6_Qnwby>jWmRk!eExA?6 zJX$p_Li=T(?;06;gt&(JuHO5g?%f)CM9)a?D&l$FS6&CXQI;Tw*jdgq zDLkWj+02~y*q_@A54pgD$&8W0H~NzH_&E5U2)?x+SC^7BV9N4oivK z?wl5S#N1N~?v;NfdD)Bq+eB-g=uaPY%>nmJS-H@fgLhk5E66<`Y@ELy1Iz`Cb9LW1 z-$-Gc1p|z8wKdL9YMfmEEygMN9a~2Kz#Xfy*3rvdPaL^gWS;Bxfg0ji8x_ZjrC$D; zWbNnkMt{qg4j~(U&F9bg4{@z^sEO+s^>20kOI=gLS=T?)H9V{9mvx=`sCj*q>k#r+ z_m6O``8u`b!sggA^!WKRC{x7S9+dz?KfbHcP|>sPrm{moZ;L)~vv&$Z5bW#=~Rp0~4%n$ce4 zqVuBWU^Bbx$*W$2_C{6UBcFn8JD)QOXOzu?naK&<^txTH%7|4rfy0*mEAp? z^Wa10w;23&2>CVxJ*u8qtQj9fex78moO>0l@seS((|Nex%+6%*a>f4Nc5-$+I-})N zxvHipH5Acz$wleyraxo~bIEuMSd&Yaj;whB-Ps&FzpwugK4Ohm_?SXI6z?X4Z^o6a z^@X_>j)jjKFF^`w=k(19~Q+MDalpL_o01JgbL`3sWgzw4xH{^vrons?So z;l^o~PjjrMT`>BVnta&>z$%^k3yjUoqnu@~0puJ^t$8rO8o(N4uXP(8yC5;kS_6JU zPKK_tunX{ccViE{Dto}fkrThSXiGSDc-i7%>;6D=IM6+Z*IULwBgiz5i{D$u03$Rl z`8YPXqN%I&_Ra(~B+a^ce2%?pMbq1*w>SRlpK~L1Ue0L9LO;DP2ww-00m1HfQbRQr zJw{H?EUpW@HOut9!ic<+@bq3gcHJL;+-KMMz^8#-7n>Ng?Yiq~-q~TjGv8-KT4<+w ztEZ-gzGTO$pZWB2rpKr;fBOl0tRGvxC*AAs{5gIqXWa5@N!Lk+N4A3lQz?Fv=DTNi zzmsLbD_YiCqOtar-X0b|$0p8(4&<+Z7LXV5n}Yc7g4Fd4nmR-}>rxz8ntfkoABH#j zS=NqpWZF~GtES8*r)hR~>pio(Cjv{lKh(8`T&P$U@81jVZV8h6G#lH~2)FZG5BeB> z#d!&y7oEnD>#}7;d(-W6rDObdY#II<-qZbd`ZV`5X3g$y2evlg5`3Jw5w_qGulb^P zYHj72_${;Pn|EEX8OT%k^I(Nh*0tdrxt0rgZt?8y9P-nX@t2P*%C8(#bXj z=n%6Q-(2tjEQws^sNiCl#4F;FX=|-D@e}Zd!QbWR559kQ*4RG%A%%AS68&Kjd)3|f zcUx6If-^MY)W2N#{hrPF>>1z2S`knzr=xFwBkR3ody;EtKm*I!S8hH-zEmYTiHGm+ zmD3fYj_Z%*Gq-b%bUiKY;t8KM+|(B_wh_om9Jl|WOE-HYe`Q} zAktjwVQnYQ1}(p)n8T0(;K&*nj&#A1H8>op1Hcg*ON?n6c^>$Iv`%G`1Cyv<-&FO* zr_Lr;{`_p>q1VqAlK+>7E|(b$J(sn9LsQj9_UhhZ<$`5i6?$aH-t|rTp27F6MrD&Z z#(RD8$8IbFcU$p;oA>T1=>7ybF5_4OSZg;L-@dZOy6>~(0R3O;-J5tf13uI<#rO2b zVLfzHAF^!V*4jWMruNT|sL4RLcH?vvI7Rn75F>}=QhklI;WX)ydL|B>)_P>+O1kM| zhv);nSI?C)PJ{Qg)(u222U#m)69=ECe}#vW>BYg4CoaK?sSPJ*Z9a90%GCyIfa(&dmPj%2o%^rKi=1RlUBsN} zc_%Mz0dnI@JU@Zh?ft|jOx#e{>He{yNIUvWjG9rr*C|`idGF|d_uRT`Y0 ze`hW%+O=v4Xw4k~jas^v5go?0)(y?wLE>gly5`P3f02hZe|`04gkR}9@~0_hQaJ=S zlFOrf$(gM84L>uwZXk|Ej%3$U=mZV>jINOKSr4#3iaNzJ%>4L3=TKxv!GriGv0?Ts zrY=fZ$+LR`tC~7ec9}kZ4`Vxqy%#{m6O@Xa|Mg+ zcFN3l&YA7Z+Xm@61=9pm(chET)xwzgzv45hDG}&gJI~IAC1>yOTRrn`6rA*3%=J`V-|FeQi&%cce;8eF+{))9 zPuDiqX$J>W-t3uI^;sM5cUw4^oxR?~LEalZn){rdXFW^euLFlkGpQ!cWRV}G9Q!q& zHutJNJBN2(-una9>7%?WHKCxH?7P0%r0<%$qtMLB7V^2L81t?-yp1mmQ*NjqU1BvU z?t$=0^1#R8A6H&)eYNMfaylC38%wfJalVv2j>8?~0NZo7nCpT$7TkMg+jB>5xaJO> zO#SDiKj&E@+|M>?CD|;qEZghzTgJp}R1y_2G2d@pCNWb4$66D^VMe8j3N!axBS#s04 z{*=a0=IL55UJQB6y44O%3~lbCsX2KTO`N>dvm`IxGw<{Ed+``!ckyg#t~K_TK4p&m z+1W!ck7q+kJX?B)-OlZ1JLk-HF2S>vjM2@rJ94b|gM3PMxZ!Z~tjTvSp3S<=dT-5C z*L#ETY!UGaXWqa6Tj&)!mb~h?#e8?E`qaE1{!Jgx7IS@@a98f>LU-xqzfNe;;lId7 z^*;Oy?;N_mkLSX_>f^aNH|ZI8uH3Wa@PAl5w+OyA^UrxNgL`w;&mm9O;SN8zrh$f6StpsdOO2^{pfL?HXPGPdx3781`q1F?us!K{ z6Yc@{Gjkw*8h}3)Cv=a`Y;OSmY$hIY(Q^avXURbQ4uIGEq~~Ut`c-NtMXTY7)Xp7g z=osi8K0bqG3!a?=ou)yjTBnPUjlz?BtmZrbZ-078i6+ylo-a)q9IxJtf#|T_`+;b8@BP$hO7H#D=pTFU2ckyr{Xp~$ z*Zn_pZQ&shZ8z@+qJJ_!Q=+fgpI!F--f`*p7X*>a41!Q&0>hgrSuh+&v(i{e}T=_DoEV8dH)ep>VV?_4|M z-|f18z;)luw=(A=5dDGcey!{IJ+Axz;<~@xb^md$WfM9+!kem@XX1>Hy7IS3qQf5S z+fUY1&OUth_AQ&k`74~$=Rfn!Cja>#ovmh^oJ-cY@_g}$mE>w=m4`O@Ia_EvXA8Z+ z*+L$}A6~|OJe?&ZKdyxfYk$-Pp53|BPwX#mzw?aZ1MX-3lJ;cdo~KUzFI_gS{1aUT zR{ZbOG>vIgZ~QO*70!6M%jgO-zsh}4PK*53mhEiCgXD*|;Q919`O{xEQp|c;sw18P z4b?+$%Ac9c{7=HRNaJ2M`nu|CMToDeO|>1Q-Hv#5(@AWDwe;uQmwnxePht{sRCzMW zVNssK6z#R3UJCgw;W@Nv=6I5Oqke`gS~zVk_ZHKS>Z_=qQ?#Le^zJ0+IQ>Ta4fNyO z&n3S`e!b+q^Fhv-(4HAyPrnCJooQ7@;SEk8r*(d*n3+?f=j-4^ii3Z`$ziQ|$8yCyn7Q#;}2Vdl^H6J%&zu z49e}S@DNv}zY21x_38XJ=?1G0?W<8Ap9VipAM29(7&bs3de6yoD*WFTj+}dwrde$( z*IaFX6S#koc18H-;uqx8KaB453(tskcXRJ%IK|MBe56;TgmQl2!U203=Cu`&3q>rvllb&$V!5vqt9*mpsKhe-Nna<{ zj{pCsj9)w^JwTs|x$9Fraw*f4Ubvxunl=}_z*Dy+Dy0kcUM`_v}4?B$DUDrMDefUe(FcGpZky0 zFb59jo@7J}-dKq};J_dna%w87k0Z1vKV4yOA0-#{Az7wAH1>+uE&6os8AFVzCN8Ko zDI7IWpRyPou6h`?Dv8f{xXz>|U%q)pyf<9HbxF|Mh`(=1{^%9I)7h!$=Z&!{Z_RDL z$KOo;K{GXE@;O7o$2quJoP)cA^&p>m7aC79ITr3SI`ddVV&ug<)nU~@P;5f-O6!#V zmCrEP`ExDz5)bEhoj<4Ch!)yu<*bx?;@5TPkJZFXTkbQ={kMH{>5B&FOKm53w}3M( z<^!wy%oOdlyr^y3)!BC1SKznXtzfhJh_|091b@WzIimo->j-E%Xzmk_Q`0w#oaolMq3$?w_6Bn4XM>lHWjdQR(D>%p zL*2jNGx%xMhq3lRb`^%YM|!Rd|B`!c1?<7eC4c`m@(yoj&)zNUTO*!NZUQg|qTeMi zNH|E2txsNI=>)2^pxF9HT=n+M_yfLPx4&O?a0}(*hE67kr`S7h(h>ErJ;DX{+H%} zb3%Ia>viUX+h4C(VwdmB|Ce63H1*B$=Q zdkoT<3vGL`(6$$y-()YU567;)0sJ_9EK2HQ=m34_J>f}onQPmN&OOQDBf+8)dnb+$zgxM>zXY`*=E8r*ABKXj%idVjkC$F+UH4 za`u96$KIa}UAAH?wqq-vz8#wpThXljfUWq~+KC<5h;L#mBG+FnGiz{J`!ZGcv4wr% zZOGns^lRzAt=Nr;=KtSLblaj@7qmu+=Km+{#J&IdKJ7$opG@|%B*-iKtL#MD!A{)x zUUuTLmiJ{RZhU`sV$ie`U!W#HHS1_KdUl;{Cw5>bzS+-CRNZ*xu(SqGJS z{~_|cde=+)jFfuq@v`lasY&)=Hae_(zpwVAe2JXgIQ}04JtfG#^dac4+GpeB=eLpD z=bWW%)t=T^sLdL8@=vY3yUSXso#C=krJt^F!J>RLb6*QNmfF`+%${^-UrTHd{WT4_ zOd^wJOCtbku5jp2;S$_4K zl3={ehB5BISZeS8ap9@ihS7m<5pw?B5m)#6%FX%o8wZPs0r*CSsCCZx(fP51$i-&g zy}fVQvbD$o>ZL%wZP}UvuH`FUDVQ?zqJ->y!F_@_phjGJt&92fu8EUkrRkPW|op z4)!O#hP)Wq}^sluT=h@$`dUtbS63h#2 zn1Ao!%$745F8)bAPd#GFm%e(Wn(uwc7i@Hsf7JisvFw$h=3@zVVXOA~+VvnGPwNlY z?Md(y*zmL_!{d@UZT1{G^JmGMK6^b29;OB==Vf|3@u|&Iy~peMKZ#E+Pv46|IoI<~ zjk#CwzcuZ|hai1Pw(PNem-Zcu6@07{k~hjbXRocfPRD82J1&%y#eaq2HS<=yF0U+@e;Gh(7)k*WgPd+eJtQhpYHY!<4;g~8T?a|`J!jt{QtKc|LXS`|7*lb z|5oGAVEk@5FC4hsF{XU$D&Q;y@5s)VKOq_O|1kG1a8}oK{{Q#PnX8~+U|3jl;W~n0 z>jhb=Im2)fwQQ5tE!t*aKtSwbR@Txsg9DQV0{Po+%pT}c3=leb1@8|Nqf8L+>`~4Y{k=b$V zVCp>X(5LD>fQK2WY2Gg7Be*mFdeHyzbtSPD@+<1G`5%F&>X6MZ16%40%;@0$YQAgD zshr13bdHlv+OO{XG;-+%><;Ys_`1?qYWS8rQN2x0m?@>H>NB8OnEAi*I(vIlo zM%C}(o%r?0vT2cBJ?(R2@>B1|mvESvyIyi`*DjxUmDKMB7y6k8>z>hqb>{^3%8>U%!1`0by%#)?W4E&x_%+gp;J=yvcl+b*Wo%k6 zRWaWry4T@Ae#|;>kV4lg2Q|*QjEMja!t~Pt?C;pt1`a}l5!(GDGET4;4h;N(TOWG5 zw_|Q>fH4oTmOos>n8Cx=<&&?Ht%%>-^sjNw(Kxx+Z^lYZH2Aurn&;X79s*9H7x#Rj z@s2vpc-zR)%^&anGZ^oRi-^BCgYoW`ADi*sp|dp4aJ>DWDhyxA&hiUS9&g8+jF*^{ z!6funaJ;~E3pf^y$Ty=;`Rw#5IiOFSTPxWoo;ifybR*w&zX~6r?)6b4uMa$J0Z&Qx z1$3`}(;RXT%FWytb3SLk;!=4>xRNhH`?mG8KafLPI%6i(we>Xf-*?{0^KT5yU%3{J z#>|GQ5#41DQ7??f<57(|(epMauMuKT+iG`_b{}*#$s`EKRT^~6O zOebUOT$-$q%lA~q9&ZX8w3`|O> zHNEajKZ;NE-L9={&h=*c*8V^vegBkwmn7}>vX8!%`UP5t^kXw1S9b0_F|=b5pNHYo z^J$Cml9NO|H}Ii8Q|ONIes1pz^e>-G?~TYC^o!1_N-_>}rW)^8z~{?7otIZWcn9w* z*Icxvc3d0Xej9pU=h>+Zt$TFFqGCBzYsaGv(U^r1fcE@RF-8%M9{EE_8u z6c19_^~GixT-0EM(eg;Ot{Z^BIroCwDFXY-D z+5JV}x1$Cahmj?c&x%9TwdA;9|1kU5?zh$aru#+I&Z`L>eWJn0qA*8n5O?7f?Z@x> z0`u9w`1l=|6GiJ2-~@TL%`<*tZMD``JCQ z(WXAaSmolSiqpjYW%54Fz5dzhZsG*Ue~9UNQ9sXUFMV&|y}<(S{dRVGd+@#A`tOA= z$oBWU0`L8CcKVUvdw=xbYY4pedV%+bW~cuy_}-BJUR&V3aLLK@E1Q$PEBIbniJuQ? z{Vb9R@h_if*O^9^T6}rXX5$T2XY#~|w`J_{#42d`b}wDTzOd>?M7+A6n|ce)?A^1U zlf-^&bbPNfxLc?XM?8(>Mv&L{u7uB!Bj${v+o`|9KCkM^RMB2Hd!*yWOQwVe$Dv=P zFI&)QcOgq;d#lcaHnNXcBYD9%B%j?_cM1+XV`{`O4vjI+7*&(Y$cSd{F}Il-Cva+JpImTi z0!~%zq05%tSYYgecmCKOq%Y#iU+6)O6)zummDV8%-q&+kn6O4Ib!+zz`D+lti@KB0 zQIH2e0^LZLd_F)sL3wkyJXhYBT=Fqq`ty6JPo#bRvEUWkuNt^0HpIkkVS85_yC_#4 z==WioQ$`0^*|5~}_HSZN)JoZ33LKP^qL?Q=r`i)Oo@Zj|Tk%m<(${Km>H3M&kK);o zL%R3nXP;SnkoDV2;JQHXNtWp|fgYC*(!R2;??p$iC5B`-@^BF{PiNu8GwU`dvz)H7 z*P=J!aZw%&Lp}_@AAq5gXSE{)zpVcfy4W?;QUnc#sV8gqh&4u|?=R;Z2>f$<@kclR z`km1w)arF-9z%~&(X!&3Wcx{;3f~*?*;ITG-GeRW-V@)L^N&|Xb}8q+k6b3jgby&k zit6Vc9P&a(CcU?VPw(b9a1*aDM(!rsyy*DlHCLe%qQ7P?x|VLr1P=4wWJAW@L?-LlT^8%oCV{e21D> zQvAxjaoqd4e{X>2jV;3cKa@B=vA$l}j*<-niaU|c=lg#LzW*}t{TF;Uyfn<)B^liE zCEghp*@X@rQ|X017pIQ0^OGcoI_?kkKK?55;2zy`^fBM~6SMxwoD3(E(yu4+AH2)+M+Qe{aGLXzrX6eW}>Z%lcpAW!Ap< zON|k~asGaUS3E1`#v0`R=Z(KOn@?ZF*os*H)MGogDRwF{KDy-ip?$MPa)t-~wF+>& z7f9lg^lT@OtTR)H(gQrXbZPUX&v#{2L& zsuqUoNN8{4Df-pfGj2XL{(K77PxbX*t*HT$)qm1`(t$(BXlOdEvqXm)sh!%ur_SYV zDT{f`v6#NrGRMu`m82_sFn&FcT zv%C*Pla0&;-I_qpB~wMwq|smak?0e7w4*2k%LxXSCG>MA{d|so+?bLh%3_MWjF(+a zoqWZqsXv#~VP$-=^h(}X;>;n~?hO@_wO{RJd$mT0dUAcue zw)x}4wz%tR>d??$y4tVJ6e>p!`Y`7n^~0!{7cPql7st?Nk#Ge4srs$+3Xa{`FClEz z2+zsCC>uexOcJ|7F|*B_E!FJ3Gdg}`_b+?Hf3tmy$60n&#PLF(l96SMrN6U;eq~E! z;rc`Dm*n-4bdvEU(d{Yhk0j^$YF(omn!<-0=Pbsl{xwd)S8xu(c&k@>Pe1hD553<- zt?zZj$W(@k486-gRSvz&FRK1UN43zrd}4nuI)^se`8@2E-&6bYSN^TG+Kc{p`HG{@ zlb_wlc^jSZjB+y0Q5(>-XxsY7i@V0C9qf!`3u6XPJ-0{FH_+CE626=HQWKo(-aDyP z(GW3vwi>k-Nx?{5R9w*k}7Fka-9YzOIH$#+x#_%?JhG-dQOv}(@gmYojY z_P~d|*LvwLc&(AMmG2$xE!Z;3+hO8s7KUaFz~B2q-t<2B(_^ovk2Ul~CEf%5@Kqmn zpt1L9$Mw?#A4>MAzdrcH1D<+k6z9m*Vf)GUtc0ia%%i-o_v|>JW$8@D92b2w*3UpT zUzu81Kcj)qI&8@hIO%8Hap*(uJ~g%uk2!+twe+2! z?>g2A75HPfi05gu4;|M#vV`*)yun&(z#XH_*r=iU^{2jNdolJab+$$MJ95V^IGETX`jL<9U5wxGJNE||e}Zw}2Tz%I z-*x(TpG6MFr+euHcvIiy;8g9$u-WC~yBGKk)IlE_M|ECX@L3E{R;=I4xF#aY zYoH73!z}4K#yB&0-wHhDWnpRX*-0hEj%E)41#-0yjpUT+JW$f=+{;8uH_Xhsn6CC>+LzlmTt#UW_Kh59OjQ^E| z)SjK`#imUP#S};Ks23*2)7$USr}pHAGCt#?t^vhxz)zZ2FW)6UoZRneFN*bbgiYPL zd%lp>bv^B~xZeNmp&k_+^w{hCVVkr@MWrO+6v7{j1XS1XXecN+NLbkx#S$>0iP?^OE! z4);Y@_c7Pc^7kHKD4tL~tclcFdu5WBzKQ!^=WjbP1k;pG~keczZ{JP@$G0VM*siYG$tARzd>UJEsSY|9?u5Xi^213 z@cnM#nsrbu=M0^UYv*su#kHxYZfK#X>qorrc8|kI7r{|k0EDk&|RIGBP6<--2wmeUb}@pU3fz?YG4AD;ZsbUF!PH$Y$9nXDOS-H=H2l^-O}mN!2RFz{Zw@N;B6<<>Bks{)88>ui~YjP-iUk# z+SBZ7MAx#8Q7-H{bgTSX(r+d&iF3N|!Os~-pH1Ul9J+Ya!>{l>`RROD+)NCg(*Szm zFz}OIHf3a)v2E^tN3Ly?)j_pK57UP9!>7>?ACew|j-`Wc==93jGc8yz~_GT(e7~L&*d}d$3EE2Se-4) zngjcwZ18SkLIxQ3Va9K5S&hA7a0TnQr+qti5_W6~nKsGTvC9H>Z0`D{cOfc@%jC+$^iT5ONSlpcyqo>X6C>W9kqHUp!4Uix zgFi1O&*%{9>Ti}Sqn&0N3OU_PTS)_LiEVtogo zy*}be=4(xkY&Z<9*V2aCNkH>D&ok8w4?vUJQ|y}u{p!8XMAGl`*YT%(hxKJIG}~8~ zeFxe0K(O6D+UcE%-A~)t*(ad|z%hhC?4Xcn%y( z&OS#SW8+^1w({BOH=P@n0OpE&)fqlor`19`TN%#)cqm)3>}bXLCF?ub7pV{}jidju zUiug^PQD}ga7)h*SziM06s?diK`}-pMn1*K+YlXSPlk0tbgjlfKiZSgeZzP3jczb& zaQUAUxAF|S{yBV7THnATl4sw^}6KXR|2#l8gcsH?r&%PxAM(yg3nv3;AQ-ZsS&J!j?enWoyDc=m$8R1 zz#anUbeTN_`Ca4_oy4B1_LeP8+k6Arn9lEk&m)RoC`#?Q!IxAciT7R{5lLTj#W_E| z=3UqP_?kKA{Fr>%dtRikx=?s9q+7ji^sy8^__({C= z=YqQeev$+7@jU-J>$p)~dIj_%TjB(J)vt`gc0l)N9j84}!SxXXW2<8}7J{+QcXRXM z3tqoN8xEfHv71kf$l6o!d7jyakv)~V0X~A4WK(Sh#=Y>=iwbaY4=|sy{N|%mjnArLFa|Cz z!6wok&3lk1vg@|-_nze!Yt4V)W^mCZTp+ja;r@5|dq}uIo?be|;^IGmqopBd`&b?K zeuEp!3x9qZ+#Dj;NwFNJR*HO8;O0S}?j3%fH}MGB{pMb9B0qe;bkjU=gWNj@xCLzt z$&}WaSt0=;g54&&$mZe1-kII5CAG z&VQ`);~ea`Y&_a~f03InH$(lDVKdOS+2d=rdwhzMb$fg-`Ta^Z>tBXm3+yKzp#N_A zhnIIv{G*GdwEKx~%j;YDf9hN92lp34f&Imo`OWoL0UrnB4^4iYpO2~eCW+%HB95cV zE4n8*=huFoJLlu%$*JE=KBhnC)8%6x@#7T^*J}*9@d~TSpK<%UVdc*>Du0Gpg`o=m zh|wDw78_ayts)QO>xk1`H|)%EY2f=x_{E#37=ZEA^$KfZiCAP=p(s0lC4e3|0EJ^;1 zO=7;=T$rKWRs|n<) zoWXdXXP@Iu#=FhNt&`(%it#G9=IR2uK>OZgyvi%73FZO?$IJKs1jmZSmOoOTC*{^) z6Yaqc6b~I@pL!$TP3$)Q9o?HalH3~bv_-if=qlao-*j~*x8`B?I!?;10av%t-+-kp zf9^K7=0HCQP z(OG=Nf9^~%p9b>&ByZ5qM}Eqjn~`-b#FH-KyK3iYZzG9~0&iq+w^3t zpFj4GG4|BD`LQ_t5~nvf3w{4IV_dSl>MD(;nK7p5E5Ud+D(7eYwXvRMTB8*WK8pR9 z#0C;??B;p^eWCbglXjH&za}! zT5_5BZgYf|_`lyA_`Nak`zQS07xT%Q{sq~~vV-M6wK+obPmv>Z^%>;|%{G169HDyi zop@UR-uwN}ndY;oYli>3=;KPhYrXtFKAoK>+wRxob!jc|V%~YJtUa+Ua@V_B->-RX zsNJK^n|!s2aoE=QyRUs%HQSCpu~4}bZBwI5#$@XfD*s7qd&SWuct>@i6rZZI{cLQR zUDI2dwrgV7&f*c-c7ngl&!e$_#~=H@1#CiRpB;u*gYjj7{Fl7kTNkrk)P?Lkef|r1 zF2VelGtGPHtifhFgS?ksVz7d^`GP+``F&;U>R)Dl$d_O}OU1V--d{cxLC6g@8U`z0c(nHoetbGszMLC}St_hjB`7s{kMy!wBBy|ZrznHKVSLL zxuYE{^!b%1bFWwBUH?tq^_TOmzm#`W)?H!#8olt!J=hpU#jU%>@z>%N zt*qB|IoJH@dJi}%8qPI;=679_Gc=Ar^EQnP~pZczUO&5Xpebb=nRonBQ)$hS~b=|46?jtj!i^%V@&qvIA`c402 zqXqkL_`loeuPl8RVXq{Myy*>IWP3CDGcDKs?W>*Wspe1A-;b@eVF|X@)7V>?)Y|y#5A?d%!nCOm= z_sM@-eQEA9u0;5&_*C~C?79A< z+qEW0VsG>?FYRR}&;=#HbV7+Yz0NCnQM9nd3w1q9dxwDSMy{vO)=eH~ReHrQHX)A% z=VidT-@v(~tJJ``WUwDtstv)!!kU`nykF|W+Wo%nc-fUzTAzTUw*j-bRwmrZ& zAHFGITMUc^OTi!xoOX*g`P|}F-}79R_rh}JIkL|QY>9dIjyyYZ-GdI6&lP}W*=gYT z958I5pHAT02QCH6dBBp~-gNa)$HByi&R46w(tGOg6^frvNqd|*e?b8l9av%MPcUL* zA+sNHciwv2&=_-WWUg`KQUh~)t9 zg8ams;(w9LPv7?EqZlK}8z*0$hYo}5H?12rC#^$QkyFwHUgFT^w)`>pe0rzf?wRga zW!tYb`7f^hZ=It3Prpg~6?yjR&1K#L*zr5nk7zV&Q~P!yb9q?r06N zJ;gIU85_#>>Fh3R8@rmI{&;*iUhdEH$9edvF#MRcKQ*sP?0eQ88)mguMrR#AbXQS` z98>1Q+8;kaWi&BWIjLpQ<_*Yf##2R3+42vaXh)CkP=44xc%~X1iT~-qs)qMO<$qGH zQQcozzq+{}w)eI7RQI*O{k@l%=PhhQU0bd`(Ov`$X8}X`cg2TVzgvE@w3!4}5yid~ zpj+qTdTlxU#u_@`zmPAF6tB=tj&O2ZXvTBQDGu*rj~|)Jd|JV~wTCLZE@a%*$e#GP z`Wc~_=RYko&q~fH-UDq|c-i~8^Yrb> zocY;%2iLsO-VJ?tzaAY;3~Sl`8|9WFqi*5zhP7|BzsT=SW*fX!T^2p^;lLWM*~;vH z^5K(g&Xq^`@j5~HY<)BMAj|$_@X65Aso}#}zz0A@^j}iP+ZSB~e|_!3XbrVel~b*? zfk*DK*LhJiD68+tgWo^;@Vki5Fz|b@0Q@!Dk@XKbE~CIVWGH^A)HLK>0puzv5HDroX@0Yke@z`d@qV(lxRfmSWRx@olbd;{M*M zU9c4$x)wic$-c;p%>lk&IyMrMT{Z!}XAaT1@cpy!z5FS0kH>nUlUNHQ2ll?l)I^G}BWIuAj$MX~3;X`mb+i0@ce{p`Je0p? z6#QuF;rh=v@O+cv1oNKneW-}@jpW^oGnF8@^tJdv$lz&-`}b|^$4_Z2eeQGEj%2c1?fA{LcR_VEjay= zl%H>e@DS8zR%aJMBeS~e@KuIm$-V4xGKVBIl5BxS(6zPg*ac;(X#-urC$qqFM0hT9 zbYa`c$LDQ6KA-ub)e%|~SbX}ng1;YB>*MjUv&7%^1@QNWo6Zh@E6}Mydr@|W@YcxL zDIsWwSl3-oPrdixn(zG6tHj5wlsph@iuQRkHh~M-FGa0dlUZBgS;mCk-l1nw%y;or zZpNr3i zsrXt|cZ4y=8C!($f9az5)oZp+UcW2VyTk&HQ;P=dY#P9j@IXiwIQIOw@whZFgiwFMaj$Y^nF?LB-_Vi<~OqJF< zd?xY=*t`sET8|Iyc!%1-k1g9ybeLF38`vSKW^90Ov1XnIj_cT~^V?M1qs}LgPfh)= zX8&Jn<}2twMgQ)(7M_c|Q8xVm^eSAtJw?G<*P27-JGLaUcxUs|kr{249yY8BkFe(m zf{VnkGsDGepNEIQkJ%TQo{J~9HzxZ3OX%O|3~c#%XUR|BgP!yGspc&BN%=UnrZ#PM ze<10Z} zyCS}8A60v(sRrl*e$m)PH{xlluZfe-*s%WI2e?Q;ck-j88ju6?u$iH8y>}yaQ$n-^ zo|Di#<2ta}_-0B5p$TZcBtv80{t@RYLQ`?tdk1((;6v4(t@K%hb4#iiH}=TR6u*m> zHs#Th=uLYz7JvTO^5pS|4+hrZoVDZZ=;ztPbu^F*lRVHE<7KLON)58xg7WX0So|^v zzw3``??TV^j5){L&y{KR_e>uqho!7bYryBAt$uK`)${h3LsN>wReg>!uiUIN`@y+l zgZEO?e~27~20pd!EN6eA{PJP++0h6ZV4e?Rotz-J0NT+RE5Msqzn4xJ^gh31;G zGD&OEm+7Y$`ly7ae*z!&G9KvMu5bC?2P_WpTPwWROP`W=lDS&no@;14D|3(TLgwc6 zq4v~<@ryBrF!5ylE$kB_gZB|fnUoAh#tIK#0}m1WicV&_clErJmzsy{m_pAG@IFS* z?qLnv{o2sZxAR=0k-p)ze&%?1p5-yc5h@PhxOfe{85i$1=gRczKWe`wE6?{ZH}Tqc z=|eW~s)i9}?W?tMA=(gKB!*q%uYoP@^=x9;nbFbNJbO(Q^t+6U*Y^ zLC@Edzejz(&3BbYCvp}Zd$*iJZsSku<$wCmcSb+(${X$9Y_RbL&K^5oYXD$0lXxe6 zzL!tQr^egRDVp02;N-?!+7IfKJ?y_a`Ebn7sde`K>DJem!T7#DhF z&AJ7-@+>msVab&`YukMh7&oB@d6xL9w?*Y&&mUizk!8ftFxJd(@QUiqdcZdB!#4E| zd}0rsj2q!a_$h=Ny_;BX>FsRaZTlSj2CftEbrLxyo3aP~>z#yLosvrf@iNibyStK$ z;k`2QyP2mK_;)7!HxnMn=fCgL-kI{BsqbQP<+JfRM#qcqS}d<=|32v7YQi6eU3cJ5 zwBFs|*6;p$_ki{|Sic|8`W@cP__r2A6XL}L^o}jWUea)At0b1h=c)XOBs`mB+*(`6 zADp}P_x+2|SOT5o?6+&tDXg)#X)mafIEqF1gA(wRXh82vkHJUVv__Z;4SU*G6Mo^9 zc$rUE;Mehdyli%k9~Jq`{()I9AJBSv>ory`r*DN$;78ej7Jpg)r)c7@MHB2Tscxtv zi8G;xwxcK0!^LMw4;A>bgYm%z7aty_y0&*MDfX_=+G$a_&YovK^bbSr8%wYY#54HG zkO$j5WB+=C8-b;T-L&X`KY{!iW8{zFX|ukfex!Te_?v;N_V~;@-S3MY;2q?E@gF6? zZ4ERri*eNBw}=C`(V^V^gaqv?9zp!C+MtTpTBKUHUz!?y*lRs#;cWLt3h!_F`zAhL z9w(njeEB0E2M+!*Y^&h;dxl>+;1}jEo>5)!LhB(9xQcK7MC&2LH-YsK>khLXI*`8} zVsBxG(Kr71ddE_?eAw)m{O>l_Ki6j;g14%>FT~$j5=+2a3E4rwKfxTuH{_S%yXW4p zVq(9-nZ1O1^j;M{rkCS#EC;tFW z96nBGpX~nQ$^38=ZJdpKwD``hcZXQ#X&tGxquYbB>!HZ@F#UC6cW4cl<1gYmupTnF z3;2uhcNl*WI2;-6Ay?J-i(0E#4;AAt3PqL2Y}P~Iz^sRmQHy<>WHCICF5Z#Z*Fn!@ zVvp(+O+u(TI9{X6~8##EU_`baWzF#Ew>1^;l-|%;~{=ty&j9#&M5}bDjkIS|e zFE``cND1HY$9S&SbWe(|^-@3F>`}K8J(P2wyaC-`>*o!WgpOXR+6q;?=WUw=zuB_{ zjFB>%qOVd72cnSA1SH#rf&+5%4cO zYV1<*>u4f13cGYz&?fb36+ly(mtxYSOD{(^roej&**?@_=k3~RfL59euNQ8sUU&tk z32>jp29oWmdIJ{6et$ksKMZ~(XFCJBPC75c-`JAD{Ts8t7s%Hrig;0ni%sA{`?a&d z!5Uz#m=ALe>~%fchy4=oD0wZ#U1PuI;%l?}gP&wP3C5DMKN!f_$d7kc4TRwN5Rwl@ zE*N=hbwL;#su_M-Qbpc8aaaDH!GWdF&ohkqb$q17CMGXD*qamk7&h^E#eO`Ve%s6* zVHqb^yu4AF2;Qvxt;0UC?Pl@YM@;ou$pf?ho3)Rf4Vr{^#V_*9B^sQs zLb(~@^S{oT_5}&m8ApMvvV_SZ6C+j2m27!b2#Kkl2y*;vfS?g(i zq<*kTqbcOWRN^V*6Z(|el#Z5Ongq;{3pSRal2~q+pJDAw3k%=YgdfG-2~-;kQn7s&J!P)0$Vj%+BkNpMIk~G3+|>u+Xu{$TwbZi4CX2e zv&69Bv5fzb-{o_Z|Dl(5@i!bnW{h^<`Yvzmc@NJeSK_aL zRvnEoE^}@$G*4MB>Ym4Mc=0v}J$gU9aV7#|M>$9f| zyw{5VQqL+TJH=-UW4%{CRK`Rs?%+?+^}?O8aT=L7HqKvyH{qvhIJn~-oyjFSjKkA$ zXz?E4Eqn=Y`8Z=vnK5d7;&(GX)-&HOFuv}*dFh?i_MHROot4r13cOQg*G-vz(EmOR zrbXL$zEv>`%uo1=|AHEyjQOumLnCg?Ddq!w1~*!M2NxGcKSO&F`g3!?_B8F}_Zd0O zvq5-Xc^Y`SelIyqTR}hOeV_E@j&jBVwE>;{G5!wVdy+kYjE$5<(nI7>=j)4))8^Ue zi(2pzTtCn4sE=Je2Kx&gmLg~KDdIt?K{sP2v8;asozD$N(%slnwqLsjmEL^9{`sA27=Akt%=O6D%Q46AnJd7(JkUYSS<~PO6%>iGX;H!YI2j7SB^=y-`XX;#Q z=X_QA2!1T&>v4H%iNDU$?UsPPd^372D?qQ`rLD7}*ZIcZlZ|&Vbcx=mXP#A>C-$P^ za+26GZSaZK1Ii;4t+};AtzZPrBu1e(uqn(Mo;in=gNodYuED3vIwc|9$NQ!aeperQ zPyJ{O&KM^`$EUNwYKDE@VQ`{oK1&+xVWoXZGUM> zw5QC~u=LyX*CSsQE|3MM$~Qf1xd>=oC%a1D@rS_4lqIV~sDyVf6tdH?4$&BzMvp&-I=2hV|>&0!&)bra! z?!LL#(va>X4r2TWFQ)4yE#b6zuOaYWTY>l1HKgwkzPHYQuPyN2`U3CW*N|QleD6O0 zy}g0=zER-4_J;HqgYUKb?}aC4=l4*7_c|KV%Y*NA@QmO>Ot99C1_ql7ytlO>{qf*? zTmARK)3Wb9R^YwwHKeZ#zV|)*Ow-DS^lE$*)sMa}It$)@>^$#*JX{=T{?)wn`+2v@ z;^IKlugcQDn(ZBEnle}K9;n_oCAye*zg_6vL-W$_3BG&Ce|MVy?rZkldkeg~C^au# zsdvi^4RB6vS^CiV-UEWoq9^S5bv{~%y58pA_Ztk2EZNR z8J@og)8M7BS`c(7lO5EEoj+=|i!+=&Sbl^{ky)TbZ~wd;*Fy9B2GNr#?ULIdZT1S!=Lo zOD9*inTo{Lv9^ zZz${cSx$Sub$V};tzWq)p!also%qoGlRi1p7PkJ1x$;+(0iK7*WD)?|tGvYS{}5C<8;XQS&n-u)luk>dM%8B@F!$m!<++oH~lFlBt$KK$zRDeV0XpfeXP5A@4txQ(Dx}}lVhD8WIQWF z{5{?f8_rpgdPip+-NHLBt+MYN;2nLRa+wz!Mojr2cpY{r`8n7mk~`K1srn*1i@lQi zy&)6ZQo)+JcJ^ z$ll=~<9P{wc$xJ>d@Fc`_SIG|K9PRxNY!#zyNWqTETlH-H@x%!yxDu3mp;77OTY9P z>c+1m&TE;Mez^mmN3)my89CWM3ze<^O{14?^v*NqHjwZ8c>NSpCl9~A;%Y4)cH`Uc zL{?Oir%*kPoZ%aZi@J?imraaiWh9+wMs9qAxh-Q{pJ7}bk@O4TKFL_Gg)Xk0guTu9 zrtp0w{Bb7l@8SIk3+!1LAEgFnJp9G&%2iy=T5`$)>iF&QZjJL@d4~z?v?(91|I$x5 zuel{OeB~mp&!mq>MW5o4G2V_A+FnE)+xQPhW^|17Zhe$CI*M(rz~V^fLB$Yvl>66f zIuBl`Yo6Q48oQ@$(e}~0uJUf3toJVTpKI+rc%FY>W766{{?Lxe{_oz#gW4D9xYWO{ z>O6>i9bF8~^iY#E1+6y&v*ryAF|O08c4!P5uz0EL`ei@00l|@x*VIXkw}XquNc!{0 z9LYv2GlAJcV5U8x&Ubq|2f_Oy>N1N4 zRC|#1{Q}W}=A_RQI$_CVd}pm?bp_4kl%$?#QaMfXUkhlLmYzV}J=`G%$e= zGB9Dx1}1z8CdJ6UHLV|r{&^54(@z1D+p{ovP%z;-0~5xqnvlKBImm}WJpLBnQ;=pp z2+gG6-DYaNC2!Oi!v=3Xo9G|7nmWDES)6OdLTJ1_$hkH66V7A2#K;+mSJ~RZbAq3+I;k4m7g-&!LFb??rq2)3Uv-%AKjfu#KCpEBb?7ORCxXxR#fMny zpKtVrJ7f6rYcF8mNaLL5#UdB@a|cF(PYOEjX@>3?Zy)&U2fsQ4<1l$A(iK4+A=%r@ zdwo1_p5y()!0|=i9i*L?c<*J}_)VkL6PF-6&SQ@qI^Cu?{S{NPwG2toP&Nj7dQ_$v53+w!FN1xU+IlJa`S%-EqH8s(^cz-hOUSiI`Q>maL&Bz z^y6W0|6*GtZPxYy-B?hs24SW5T26k?`29w}ldMA;RLjHPTYK8CGa0mhWmi&xWxqee;!%gwq57y_l^((XfOYMuuhdKEx_=t$DbnVAY?sZZ0lmBjL z5uaLh)YwM&ZIWZKUGDN?qI+k%DE3FTOBXQ%`d$M)icXDP3*C6F7x;PFew+_577VR@ z>fh78BXRSB&GEnTVS_JOde!+C^6ML^)>z1^&zy}cTY1*-2yq)N+a)7pAK3MmJzu;* z{wL0UpWN$eIp+GG{zv_mLI3pWaA7`+>(B6f_xjBF?hVj*b2ol8_MiV>o$vnXXHI{< zdzU|-LgyEYz7A7gIOs1IJ!mgeG?BuVi$fEfi@s~=->pBm^xoL39bU=G1Ujz=oUUmd z1y7OF15Z~KH^gKQ%<25b!KEAXpHqBa@!)Fgfhx{mmOU`%g0CN(5ZS8srtHbIcY%4X zp6e>$t^PHRM)pPOdDqb9DDELoCx4f{mf`G;j6!BZZ^FCI7&qfW=Bd9$v@;%kDf>cp z$Rd2_^0y;%Uj zogFOfxTx7NA~UW~-dul98?uAUT(1fpX=1K*JF??btZ&`7?D)jr;#t8{pUP>?;a^~s za~h>&Cx%F2Cn}w&Sxw@A) z5!DD=%o;*Id=LIuMjZ>`Y8Llx4xaOu+jX+hF@YMU3mHoTV^Qp9hv(g@Gk?j&dqHEm zi7`FPm>&8{ydA1CEjKV$#p5GKak&)~->$TCGr^PzV)yPkxn^WlZo^{aB`bhc$(X`;u`Zms72@P(f zPW&UptrByq_4bA(*jj6_wU!`Hju2ll9{sk2IxTDdd1Q2nU#muP$%L9Ve3wQ#-! zIa@<5oG+nx3f81st0J-faTT$x#NR(UzCNZ}*aMT!iS_Xtc@sNp(dY6nDOW~gdsuZ< zu@5b7E-|rcmlMC4s$&kzxX;-YS{pBUU{*|dN48F>&GSq)dxFOcRbQHTv=3hC#tt%T z@_Edg_bZWqFG?oBW369mI{MX8;ti~T-@~rCLB{^qA>j&|>YM*MJvXP%A|80$T zNpuclNopL8;KMw_dIa7SpBdV@o$srdLlEZVdW`+*P&+=59a^I#koBFlvJ)y`CIPjd#zTd<6>QnHZtE0bK>xyqxM1PWG z9SwXMIg3;JFCqLw1KP6-je`EbUo(3J&0m=u?HNWr6W^9vMx02$HRTAuHJ<)M$N)F4jp&nV#?Ukt-2VE!sC)`mci4QvPUdzl<4lJCc6)G~i!{!E z8WVju(6-iUoy=D-_|LcTPT5y;-eGRrs(*4}^qYZq1d|BknaI9DN$9F8MW1c50e@Y` zyjn8nqTIzh7S}dDGQu<7wrSCgnb`H*xXA^=FEa4!K3*L@ZTvx2pGXHh?0Gv!W^|O5 zdzwSHpFfKH-BwK}DQc|Z9WHk;z?#vuO57k@%kXWQ!=?MBm3DiZXHNVi923L3vmQLaoNq4)drCs{TE`3Vg^sB!yi)I#-94wGMd zQa%PTkV8XZ>Z23qg@2X3#0C1k7ulwM!=Lq{g0pg%9%10}VJ-D~h}$kUF~jEC#A_F? zm;Lf2_R9ptYopr|=nAh%^RLvFs3kH^&(kLwth_%re9XBfY} zvi0Qn_3ttk**zw{!{6uHSRj7A2pWs5X~_5#+<2ci@*wM<(Hf|geKi+jBf0l0{0iDz zUP8^29zX6RH-Fyur$DQ2-%GUr&~I2njfH-pN4MW;~dnOy7CVtiU-TqH-{E8!6T7pduUy~E?gr1o$p7Hr$_rId6;9vCm zE7eugqsb8w!wb$%e1hK>sg~wnRY#Nfr3{}S3#x&w^ONStbL<`UUqal9Y{P0|19(R| zYug%lt9baSY(<~OW$&21h}@j5KHypAmF_P)zV4nH>Itw`+~0>CxyLJ8uQMc{CI(P4 z3ZK{xogb|_?8+TZBI~tR>~K`}TXd;M+$*|9F}|YrO4cG3*xzpxTxg>Z-iS$jK<^lN zW5#HGnp$&Z&qcCxxSzR;7K|SIWna6{OHB+v-6dl=%>At>dP7b zLpJ_S>k#d&%bsbH-fW$Wt_eji>b7fGvk!?a;rLN!HK1P)c-{rk>+f^&AX|UU>Ct_G zxdij=S%Q*CHt^mXUBs*&u;*$8}DL&W`~L zStWd^+xGve#?JH&tZFw*5@MmN$4X$->+03 z7-@1xF$N!S>krdT4iEbFouT_+T_pd$zb+I0mpL3Dw>nQjPyd_r-QdPE0{h?;<9Rds z{@lzgeNTH!^o>mceJ`PIaRNLfq4`;@qfKpIM}vmOk(cdXKQ(=i49q2mzD+&itUfCs zCpNe^sT6)2`Jbz)$-G)R1Nu_TfO7fteG4@8D|}+l5|i;PKJ`P;dtX_{gYttx>pQUj zx9MyY)-l^=bxw}%F*HRzD(p1nBctoEbFHpBj@-%UI{L77h1GS=whZ30dk8`K70`>m zt^BXl1$VY`_o?t{jM=Zd|qvSRmXDv8}zL5>xtZm}--|2N;>BfUC@Ibf6eZ$)hM^?51ummbx>^g-$dZ`a3r!Kq|7a5eeiH$-;5 zQA`}28Jok2rBSW%df?Lz?{8o2fiIU_9h#BLOa6M*>3Gi8(fC3RPRPL&=j!|yuyXW! zs{PN)H7?N(dT0?fSuA{fpR&I$7^J4X_%XQu88h{av-}`lP>hz&D#C}bLwq6qulu^E z-^Oach`nmrt1b9Tr5B|~tzM)KiisO4?P}YK3>6LA1@J|XnJO1eTiIx9~NmJXIeO=}w8F9IIf$wHtSN;;(oCUsTeXSt|+{`28*P23pZOQ+P+;GrR*GotAg-D+?Auev*H&nsZoW`zlW%$vLC4HJm?lBQgKgmtG$I z)_=dzKJC4%z4#3q5PPg9`WP_~l3V$NA%o*>Z1WUhkbUEoMR5k z6Oo+TL!5x&ZLTx8I;ETo=sjP~o$ug@oXg)2sx|g`R=y}cc4Ox3hJZZq_x(>$i{0o@ zaHDup&;RG-L80~@KTUftzJ>PooTj~>ze#%)=Dd&We8E$`EpO}{W6MkD!GqoGDR|yH zqhW9tsFMfCPj@T2eAbK)BRqdOO?QZ?{5c-_ut>%-I6moC;Vs5|0i&>AxL5zV74 zlFnbh-);0!)?dv-ccXtjRs)#y;wnVRj(LG2YT zK@RrPpZcB+dUXKm2j{!YTL=kV+E9`MHxdBER?+Ms=?$^V?Y z4<#H=3DD{z0bUYIIet2vS8pf?|9QZlJ;0OT|1sci{4T-xH0GZ#V>I7BAO4T}^Vju+ zv0khM81w@Fk_&zKGbbYhfvMu{1RqPccFx7*+NH>0>jh7nc}DtkBeJEJe%JbNUkcop z0(bdd1oyST{T}+&^+a%frw?~)ljO!OINwFEPp3Bo%l}ke5Pv`K@qoUl&CB0&_QPuG zGU>bQ2xr6nHZj!x6tU;hqx0C49bjB#E0$d~#96e9m`hNvB^2BCE5*77>j+pIvzfDI zTpMdE)ZF$kt6@`z7{(l59%kBFpy?$fc+cWt)5_uUvvsazc6SD=m^G*?MHXD=~(y^OEZ#79&_U*E@m*h={IV(m**MgPck;&$vV?3$XY z)`LY&-j|at*y2@YJ-$tG40m7;^{m7WTctfJ;$Zo{7XG=K*b?2F81~Xt?Ov?(BJ45d zSu#5`1Nu+*wox~RF?rY}yBUkdrfc!TZq7Gb?O(^yp&GA#i;tTxt& z;E_)Gi+>fF(ZrbIyeru^E6}I%SzMpH8Kc%bx?WA2of8$iHauFy=d9LCqni{r&{P@y zVxMs4^u3J>)VPccG_o@kt+<0&rm5tZ;=5KI)M~*H-6y-zk1^Pw8asmz6GN=}Pw2p& z^^q@o#51lP{`vcNS4D1Z5&ytt+Jh1G3mG+^aYaU#Sulf+*H}U;7Vh@c@M!)Lp0M>Kl`3(sE?J@%Yg`)GqI7(!;g)G5AtIp1AAwZalW6nom?m*n~`()^>(ca=xnF2^Uv#&J?8cr z#EZ@sDf-u6QB5cQyvnW(!Ur^;1Rp_M)QcCex&1gYgO6J9(XBYLvETz^Eprl#WaIFzVB`r#{&faMw0&wA*|m@CFtaC2{DkQBj?>^c#U6WM9B0>2vfbbB z!@1CTU3cfzJFKceW?^4??1@QU{o}>tbRowCTlr@8$Xx6MB2%l(`BHouFN3~;dHh;yALi$~KcBZhqPe=52gUFxMnB@i zzAgZJ*$sOI`%#P)`}j+O{U{52?I$(y`&i!9Smk@Yj{F8Y=73Msw=Z^SY<>*hN#}o= zc$?h)j8pMj9kH5je=ewRgztP^^I`CAbj=u_$9(;So-wo~U0BGEPzl{R9$yJhi+2sY z0{SgcpufxM&#aAoIo!ftXs38w>pQ{7^$)$SKI#2SqvLrWyX8vB1MLeLS>w}!+beW5 z8hh6Fk>3@F8!8|l%-)|bAC9uW?XELEa@r5i-!sv^7UywK<3*fa8DcwC!L&;E1rcD|v{EdI;Z%!>7!H43!@>07cj*ng;;8jBa! zllx2kaN;?fA8E-i-e^Y-V5pxkQcf~JYG-RqUHM0#y&UWTO>cRucv2|=kZC#r|Svw6JJQ1KJ4uJJcv(U zelfl*joEvGxx>AC-{LZ$*A@FU#qPguq%OW&b73>=+K65cu3zSVBzOH%rC9#YmPfU& z`b+9*Ameu+3uiRq$AkwLNDm5b?~~jXj##rq@L76IQ_)e8?Ho$;z*G2C5{>)@E@dCf zPw_kM%h%Kc4oleA*xX$kt)Y$JbqBr+V74IHXl+Ezv(mq(-^BO&6igQ3kw_AhYl)!zgu)ff7r!?**1#1T>Gle zmZH69I5X0K3L%%QWH2B$j`(3^B@kZ-2IAB#tOJ4M6# zV-2xkF>%W^tXGrJz$Scr&5`#q#Ux9OxUkG4MdX=DRq(s+VxU=JQx)%<=FgB%=>@)Eb8hfCQDT;}!tu-_{+G5zM6 zn0{R^^JDsZkqte_hOOl0xc+p0(j}iM+^1Q$A}7?=9PO__n~KNnC0^{||DVc@CSuV% z>U2o%J;^wqLhcnK+twi4D&c7(%dpKQx7=Q!a$0xu+iLKmXHvjkznkyS<7(uYey`_q zA~J1RK(1{>mP|yZu^u*Zt(xoL7#vLpX^xmMQy*FNB*(G$)BNvs(LVa@r!Up&QBH9o zxp%62)r!}Csf?Ix@-D7rjfFnD^gr0kLcY4Wi}p27(+@ZuSQasH>2=g-;DAcwn@(Np zrTd|gfo14u=u&yWvIm!P{^Z6oeDpVX=^OpAEz&tLz*#h!x}H8+m-W)7bo(Xr9j6VW zi*AUd-vu5Vt&4VhxChPeNZp8CVf??5^dt0`^y}CCmpB_dwY5hfh*(-{RoP~awg>DFyhs>ULjvQi4L7IpIlhxF8`XqHG z8jyvmoh?}DKKjA<;1>cT*YCgoiTXX7d>1@TtNx@h4}QoL+xtq$HkjH?6gR% zkG-1S>qQIbV(2RgePPRHY_!M!{f+j^!EqV5>Nk8=HW&d{!p8tKCzx8ilnqL+TfFd{ z-$Tlc=69V_S_@9j@$u3as#saAd*I|8{9``_}?)N7HIpmK7^0lA!vT}GNXUe(fWh+VkF8Y3%;;u|?@)GRGIP@-^ zq2HE#Z(e%8_W!w8g)OOjP2Vdse#hWgA3;{D_R<#euh_pbvf5lTCS7mwWpy8Zs;rDI z?RuK=sBMj?cjs}AdrcU-9lwL&2l%8x`|C}Y zM%~)Z*iNl(ZRhV(rUwe5e_BQrtzQmQOo**@Ah=;cHZR~&UpQC#Es^vQt`X9p|zssldVGFCBIk16# zv=&y3WN@6hxH?MDT{;tekH*xLe>EK$zJp1VPS?2ki*Nd%MV&<81pLy#3bN)QH=FG3G>t^OB zpQD-AROLpukdxkGe8EGU*JOOJjKlnXdG7CjdLMjg*=uGjg2W9lT4EwW9%~;e@JdI zHh3L-s8f*rHIh%u7hk3O$eaZ=<^DDD3wgMpwN|`yNwjs3vE#7YMr3PXthBl;$ScWZ zR+s&ReSCcn=&}RaPehlo4>`@~GRr&c^|Y17v}QHFIpn#8hpiENv(8urrUu6B*)8Tw zmM^>v9U~W1LpN7<*msN_z}VW@`!G4$Q@nH%`z(bm?QDad-$CoxZAonUI5xd&znT2N zZ2XDpiWGN!jQ*<1ZQObUJ0DrWnRsKOacqr5_#DpRDvBoLM?p3xsK5Ic=)?pzzxH8n zV$Z&nm_<`p7oA<{Vaq|oiFsang75cC)bT95*35o@^M8&%_(psGJle-r5PX-jH+L62 zlpu!i%fMFr6URot7C0b3uXKlM#Kk)}tCTUQ{%#~3At#TT{p;rXdEFL1=A7C$c}8|@ zd|l~D?-hdgsqoP7QPw%a>r5v{eEj%6=dE)rjn5D8+nL0dEh=!%>E~(dY~#z^dFLx; zN~UDbJCC=3%Qk3Zo#h|#koY{_!d%+G)w)Q=Zj~JPJ+v#D5 zx6U;0Cj;-hJ~!dda&qNn@>uJogMTsxUG=v%XBzm1e7bi&^CWOjF(27LyNC&J*O|Q! z<`=M!4Nq7(VqxUqCR@+>X%eijwKo;S>tb>{LyCh(cACA^8?`^~uQicpl0_bJyBl38 z-@aMb^GqXtf@{c&o<*Hpt?QG>Ux&{n;4>>zio523+s<=1PZ9ayaDv@EC_KuBA5MRk zUM@9tU8BHI&pKLZfwm+o-Mbsnd+uG;@iOmrj@9_Pb z-9ElwDvWRC?6hew7JRGTr||uL`g7MVR$hLTQex%z!XM4ZKdmzzj&tx1julHO9@d}m zpMbv9p1UXfi$_!8FH?V~xGN-no&^5U84l*+=jsCdd@=AfHDo5i&&Yhyhr_%0_{Z#{ za<3rYYG1OGy&4CbtqwM4!VB~z*!+RLdBY1_XLy0JoQ@X~&}$BiplcJeitI2t5tt>Y z^&B1`#vPs6Bi)9ttC@A)SW{1g+%xv(TaZbjJFQ8K?7=7IY@eRLw{k=N49S1_oXs8q zI?=9kD!Xc+TMKt=DPYmdxMnb?7I>)%-^Muff^Z~#-s$sQk~2M3D?#mL;GCCd_9*DqOj3K>JYf@`OPE7uvgYV3ZlrQtp3E(ebAZgvfB<<9?M z?p@%ctggNPXEK>g!bMO}tk@bpm+G3X#*2-+xx&@|i2;$WOM5w=Yrm=IlZq!xUfcbUmVb?IrVqQ9yqibRo<)TyP=Z`|;-r?Zfm$jIo(Oy4SZFT=Oeml*bLJs$iR317S7DcKdu)lRmL|7Spk_S0c%QVfUwm@}gj z{O!zAz6s~Jo%+t{W9+S+CQrAh9e00eNOc#U(0O#7v}5y~tZujcuO|+MpZB2W=RH^s z`~x)}-#kJ8PiZY>awHhP<}oqsy;bgagQB#_d0t*F7-Q0W&0@Z6UY3WOt+K230ZZdM z#3O}k=1=%!&H18qg3F^`eiS^cwMLVdAN6tB>b#?Mf&V=}ot`RB(dp-)VTb?hdUPuA z_}8PXF%N35Cu_{D8v94bx@%0)dnfJq>wVb$2X2j;p8F3HlEK)M(n*p>75Fw9Z)R+_ z0zdrMgnp{2b&hR;R=T@6kC(Mjb5$U!IdWmp9tC%g`_Hc?#~}F~vQsodTg})h;*~

Mo%;G6{Fe5&R96AN4y%Lf5j2nHYa<7 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 ^8)pT*_ZZVh?UUOhzPwdJ7WZMZJcK=2& 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Ν?EcE1Ll#) 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ʜSYQGT;-qVri~=Mjs2ELXdtm+YQl4*dH(@Z0q9)T@&ZgdW!1k?pb_ z8(4V>W%#_eBg3`6r8@mndwaKDV+GpglAq9ptO}_`vppW?94XrGAER>(IFpWzcJTFn8_l(^k5oGQ{Y*~rh`#lh^8YX0q`B(Wt`!f> znNXg-2VRgqGCVcGhi@7Lhxp}AuIw^=t__7D)g&yMC$jQcA$ z#4n0=JdtPL+v%tF4Y33R`~A*&GUV+U9a9{A`xn5BPnRr^Z>!oQ)SN8wfdhXFc@vwJ z8+rfF(@m=jwMJPK{Uh}ZJ9wtEfcW0`ZF|G5-kP7e{y)r@ju-gSi4yRH&Cy$r zFJC)6cKBzEX^1aP@ZR0`ZCQf-Su)4pCIEPbvaFw^- z`zUQ<^Inb3RQ>$a^m{${<%RZHK|buSr58QCf7bW@?P&2YesOfxci%dyb*h<;ePrwY z$d)+viFtq9)N~i`bN?BO8obJho61=c{NAeH(q+|F&%f)tY^yjnjQie9-ixC%b!}k2 z^;mE1+3ZIe!T&jgQ}Dw%n^$=d3F0*DRUwXcb}WINkw}F~lPU6Qi0LGUoD)k@ODhT9 ztmI-Yt4# zm+tE#CZzQ#U?Udulm02YO!nhRe&WXY4&;_|l)lM@2s` z1JAweG0}6nr!#)=X^*JgjnMAJHy++U_1}JUbknj|j*f+PvVE68yA6fxIcV@LtmC`# z8wIO!ihQ)W`T~1jS_SniD=r<14!(cO*`w^*Vg?@cnCXj{iivS!f0&%L1=u7{fxD_m zT72Gtt*X63Khe2sJfqyx$;hGR!oZQ)SCA8T5BKr6;*VJAxc z|9LuZ!@_^FtnO4fG-Ylku>%9x(gF5m?w}pXrxSBo3#DD-|1&pb7e&CcwfPdWMyH(g zI59ZZ)mB<{L!!yrNcwFD_o@xN#<6oNkooa2vH@C{IIi+FkYih4!JZD6r`KW&AqQ5< zPm(=N%r<>4c}IopS6t0{o5?MN&wSWZqv7obhK3ruE`eY8y}{0fFz?=q4Cz{IuX8*w zZ%$7>ZRqz{?DFOFM)!yhPQ?S4!2_bzO!|JeJ})DVScoiAjC-}t-=^MnlKWr3g}q;& zsoOsTpV^E1jo^Ow-tfMS6MCLiZRYm7EVC~!SGxmqv^$k{1!E2EMv5ixuZ;e~Ut_1j zV;aBkBpro}x}xI|(cBvTGI3Ed=pU8uDWL;fDB*t3s=8Aa(qm}qlwf}s) zDgG$B27g|#c9gN62cA06IWD}Lm^)?6opoc73$zsi#$w<~@gE{DdxsTb{!pvzf#Xdx zi;z3?%^csV{ce)a=yCW+`Hu^Y&Gqv(bRFLl$mclnS^HX(w3|Y1)T};_HSKd_+jS;s z9Xh2lFZ$n8;D;<3qdJTov@dxNO_5Kf(I9m6ozFOEi#3sS!()}PPH?%a(B>o8@7{HO zB>g$?HVQju=lSp~bXlhLbNpH(ODwB#C;oT`_}ewgqAkWJpBcYMxZHqTe_cKoXMD`T zAC%ryoyOJlc_XoV<&~>n*@WhtMc(cBB)R}RcizLC1a3ng$!c(J>b!%8Bzj8wx;v3! z?TxB0iH~a5{Lz`n8qK@cN^DtwlDr9c|{BHBz$geLUor$6oON=_uMjBg?vDM8=l zfIagBbkvwT3O?KzJ_>&RUwAf*9FR{R;!{4y6!22Sd|zt&aApnT3#@_tGx}2g{&D6& z0X}NcL1-l2T?gJaW%8u!J2tRKO@97cs>j5i?N2!V7`fc<5BX%DKUNv2h{=zh+!To! z8wMI&Qxhp&j!fBv4b$1oT7v9XeqZ@rd|~KS$@dcEdITM)Ijj80dUPLW*rh|jSwy}= zIXW~x0$#d4V)kyxHtuYWl;*MCN32_CNgeqS_Nb3{-fhjS{c-^~>CaS z!n0x*dKKKWROBKK@X4yfC48179TIUGa$cw~(AE8)yA%mHqLq{NhW};dAABi#KluW_>Rb zpO?Yo@Mol0@17lf_shs(cz?UuGcAAOZsSk1>`6Ce=V{%^e35MLT|hgPz`(PK<@qsS z*;`aMDXKibMB@NrS9Plr!N<$jMIT zVzqqYy3a?SVeBr9YlJVs#(Sx&Z6E6l;f-s;n|r-c{b!^Yo+dCtKW#p1xBQ6D0_-B$ zK5pLPWbv2gC+i&ZJ@b{s;~)kBw4(19Jl%7n3hmhdeOz0bY0K!!qbo&%Ixe zk5G(#vy{1#!P{oevIiKwnsMC&*99K9UUzuEPyYoR{%1d;H$Ndh7u-|^N|Se>L+`TE z3!i0d(5cSQXK3^W4}F$6`l)@c?K`anRappu|D0ScNfQEOGuY^ph8)7|^ zlK)#bF&c+n0oGhKX4j?*pf^_1P9bBqI72p3Sy@_shBZ-gBteX-=%P zS}XtlD+7>c_id^AI=NlsD5q%i>&!3lX9e$|7t?XYws^0I_r9GXe+Pe6dsFL*xK7+h zyfC+j{Y1P|xw69OnGWi%Y$z;@)>zR;fFO?qa{FY_&vXglpxoTeA37 z`t>DbO~(02lDW`9@k-gfMdA@?vf9`iL!xUv5zGO z(PHWs{yyJ6OBbJ(Sh0PUmTcL?Fkk?`Zfw}b;mK=X37Wfa3J~Q?Q{*BijF!H9Z zqEE)0N=^)S+XU}AFUxBm&nHK~YagfJ(c~?R`DR<+*!wZyD|A>M<1qI5&5Y$1WVZMX z{SzV%wQHdDOdhuKZfxtN&iS*NOQXNR8Q#eMRHc1}_p)=Q#+FAo8*kL)Si`tT`nE!1 zrazn#djtMbp46LW{^^|XFl!+B#GMAP9&$#@A#(N)QwJV8Kc=>-(E~F_*|No5r=LxG zi=baI^qa*TD5S2JkN@P=tZOJ{3amchN%DT>MVYdA%B8@u8Mxa(jBi96mUg3jIW&tdqd z>w5J5RK`0IUP9(c#~d1LJ#+9zasr7XEAK>WLc`!G@s{3|9@f6D!OS7q04eCDwP)D@ zvd=oF5@D})uY&nbPYqzpq&wQ(gZv=zeu7#Z?zgBZ!`BX2Rqjqa1 z>3R2ke462Uu7FyV@W^!f>$Ac8<)^*w@ABD9ow?U1TkU(Ibtc{H>&pM?m%D+M?O|sh z3wUttsa&`+F>LxsfV(8Pv-!hrGX-C^Gv_*(bHBUlSW_g>^Y3xd0DKoP{=tmH#0`XR z=&+7HtF?E=d8U>%&H>1hcJ3`BpHcjjr}a!=y2-&;u6_lt$#o*mQKVQrw5D#YSK5Sp2^%)K34~FaJSX->_O@n9O9V*Uuc2$GzpG8;20C=dA7jH>#he@Ke=`t z;Bgo0FuPdSNDv2<{Lq|JpW=f~*-iBEY3SHl0^f+P&;lG&2SjzCyt>}zk(~6?dpzG| zV3wb0wY*}!2U=cs#<7P_uY755^2a)x1F?gfg0aI-hfIFT0_v)}@}|A1g8P-+pUnL! zv35^xk;Px1{4xG`zx=Uf@zChpFt$3ji&@779@%q}HD-+k9^d;3asc?PF?wm@`oPl! zOBi3qk$Y}`sp*~X9BYF9TPs+HN(KI5Oa8ZyHI>5;tCfS0Y}jx2 z;pqC2=pE<1&+}eU)J8~g}jy`}7R}OwRSdm2=H!Rz~&B|M_13tHu zJ9qE!Xo53U-I$qVbJ-7+*OZ-aZtEH0UpA1v9!&0B8L?1oE#*M|Bf3ofwQJ`YxIKCo zKX7_Gx*;VULO-UCE&TTAIP@?6fZ4C(*mqi2YDW*4x+NMDb3pdBe3mBchV4UhKc6}S zpQSH820!!euX%p;0G`ikXBpS6e6E+3ms%nG5$?|>MllI__XeK^}`mI9GRU4h+ z#9)Evuk-Lj1QYLZkGU4vB0Ep9Dl-83B!ZmYA;I7PdwwSQps=b}rL3z_O~x9v3Tx-`nvSvIYOFB7Li zt_F$Mc=_t9CwiNZxw60eY9I&?A$Y^!5#Aj@{!*drZ~Wm*8RWFzH)rkN8e=7MuLl1h z^=LS@UB2MEpN%H4#l7Qc`b)=?<;Rq>kJIbNoD1#x9! z-8hos$F?tE`}nVhY4VD$Lg-c=hWV`kQFp*)ML<*4g7Z@v#BfAsJU(S zVfW$1j*Z#5L_s@0kG%kTR(j+bWP|n_^h!^%r=?eVl26u1;ory>wKWs_{Qx@O1geMngUVPPi z@%7n$e6?~u)yIJ^@)r!gcEek_@TECF8QrVI>_I^cdj5Wl)X8)if*30z(Hpx8f za_vz#6v%JWzT~-uf!J8HM@+&vO=$zi{in#iNrXE2+%$?Wqdn|5m8oq6~+ z8SShN_O;UhtQqa#7ff{9!8gdJr+j4D8S+Iw4IaI86kRp%{>c08_jmaIHvif5z28IM z#vJs$*2Ig?>02ALg6t_k)+;toY-eS~_wCru>>G|X)uAgTr{c(OV_%n0Cqw(<$iY;O zo$UK|?yL47XA`un`#Q0IYT~Ahe)pL@PDRMFqThTjTE{(mOw)SInjLdkdi5s3i(dbY z2Ud$ecm7^$@_EnegEvC{fn}W&UBMn_#e-g#PgsABIUhSk-_m=kg{Hh%*RK~&-x)+M zB66;`HW-UDcN07--FV)QJu*EIjFFSI+4^N)4li*o_7u?Go#cVr@Lyx#XO9%J(BCqP zx_qL6#!|po-2F?&K5*jQ4`$UXQJh=xZpq}y#MnFN1AnnpdtG0Ew=?aaFPi@93W19} zx$89U1-yR`Yb?A^KG@dY+QG3x=(ufjy6FYj-^`~}rQCQl?e zWPsp!$DDOq;*Wl7qkYzC7rt_wb?`3Px6DE0>XC=#&&Z~zwCuA^C1>EvI>VKDqYirw5bULrtC4 zCJ#6-dgOW&o7?NIZME~hzZ|2FXd%JJUm+Jhy1A%0%4*VYv`aLsG)YM-PxJ{2c^ zP@dy_m(j>4#aOGcE0g5K*HH6DHfNmg_wilpuf_0x1loMm^Ib*>Hsr={9l2q{7qZXa zK!?4{SsedztSr{-x1xd}{x&rFBQobW_DtkS=(V90bLUM-lslrn=TY4{GwFikoZw{nqo? zi^W_HviD8xxcTZSY!TUTesKTKw58uA`1rLoRx$d1$hol9rYQ*@U6 zsfW%7tn?$#)A#GPj;SW+KS91*k{sJFM^uyJQ?Z(-(@i^&w?*XNCOFptJ9niO91&e2 zJGVyXI@r1+v5tBW@Pv3ky28sFeA|7DlDys_^(cmvv>#2e6Dyip|H;Je`s_%eex z*1;RhY2p3=veL^Nihs^lOdfgS^2S-B3%_07h{MMT+W3-7msSs5hS)TjUyw4sv%`J^zy4>LTM&{Jbk@S1Ir+EYJ+ za`cV-IqexlR`u;CoDB_b)EKo+k+tqip6oly9q+!@oD=m<(Fx9Uch1+^q1+dHVMb9B~gWz4&}73!VVAEJl+{w+-JD``P%*!m%6o z(f*Ltz$AGyb7*<21Kh3#HpN*I#97wEJ2m`kJTv)y%y)YDzUaXByHmjTU>1BOz^1x2 zYQHE0KE>%nEpL(2TrK#3s~X-EoHf8#iyvR@#DOGJ+j;JEcpK-y^@nVEVB(#*=~o2( zN>)T-R)gTn>~GHp^f%b)FFW3uo$s`ASR{QXehp*X>aQdJ-oy;-II3)|a`-ws_vsL| zQVJ9oaOT$$?UQ4Esor8n{TXr!-z~AC7!m1%r=Z99tnmw;%}%a`_(X96#S7eZB&{cY zeV|+WDRZ7E1}z@_h2U{z7;$IiUm3Vkc1=pvQgPvO@sk*2=RI9B@R*6w_W6$nzJ7Tv z_*6gB=oR47I<{oD7ru7nZ9^Z7S#nl!a`chlT$cr>_6_#cuR^|^u70Kq?`;meqJ^#{ z(XpaU19S|Mo5j3ul<(b4>|zQ08ibx&e~}DsCLS!FmmjHXdS3J3Wu7A*NPhfKdyhJD zNin1VaxKI&bF5IC@)8vTRy*d|)**e*+Ige)x}SV?$%gr!7 zF@N@E&7TnXb@ijxrc>AltFZ^XFu5^4*KR(+ez3kdgdL!BW4$o>JTQ6l8%cUO2_NrZ z4+tOVr4P(&_=Bfk)#&r~neg=a2KQWA=+mV~c0Qw5|M-yo(&>W5)jxk<%sQ*;OELF~ zBau?c_t|`Me#FZa=*wBi{^H5l1N>K@Lv`&1l)3UkXYpU9HB4$PO7<(pCOl{3RdfAG zXI$QVM$ymKNB#1pccS%N0cSX@kZyU+DpkBrv4aG8i?Vwa8{>NPZq+aZ%&b@Z>MG7Rd2U*Vvo(91)sP4IJeKeo5$FuWc%kb^TQ>ULfT&h@B zv*lmdN=&LbKd`WMIG=Tag-fxc%9y*2;F$c9(q)$4)J3}Hv({eKHEO-L=H6|VZ{Z8T zTYrxBGzKmVoU>xT)}j5J$)5Twdj#svjaG98sJ%u|>%^kH`L>FYxH0PN>#n_GUvJ(H zOv-Ci9Xf2*)4~MIf{EJM7uH(m9VsTi)R&Ll#26ab=P%ePMtN}i&BfrCjH}k#^o;*{zRq(lQZ{7Y+c)kzf zyY3J0T+4H=1d1=mk`;6!NC4AR>yV!H>Lg(5zbIqP_sz2_|H)H?nd|vGTu^t=2 zop0k!K5DK@io{ZLNlfx`?PV!{zzzWVFvn=)q0q+nyUh_;6 zo3Dbk@m*K5*TDKjRCN&pgCna1Q|%=Ctj1CNcJHrapOyM@f7fCMTgX@P){bB^POqgN zcO9Q8wToS@JaE|o8FmHmX8!iK94E)bi-$%B4?8^aWqUnVDrY`We>%S zJ$pgldY$CESqsOv`3bc%lY_Lk(BBx0NRF2w$4e&F2mOsRgH~w-8WdRmBTx0!b+q-b z`kO|7@=q}p&0ilsm|WRResI^O<>Sb%tFgk3RoE#vur4s3TB)PZ9Ua)v+pvR*!OODq zYhTL)p54H+GZ<{#MP6A0Hc%J1QQlz+{+W$mF&o|~#P=z;0&R7~N9F(AfL<1z-S?II zC>x`T_?Y$r3IB@KZ-9TcIlR=s_dW1hzV8#!&?1|c+~11VK3KTx@qxj}BJ8arqd(pJ z__aQ2t_7_{4-s=3?;H3~S(N+$_+S9`9QF2Es?MdB3G-t7r@r&r%U4?~uk)P~y>|Zm zol-dxL`8_FrlzD9j; z)*a7N9vE|1Yp)|b^TpNEKYyuTPv4V+U*@w`;H`g!@B5CskKDwc7yA?!TvPuf^7Loz_tVAorvA~&nah3Y z$c(!E=DDkV>2mCvqPk#IzZcgJh|Z+18T#H@YWmRkS(Q`m_3pqx*1OGG%Sx>q`JDb{ zmO1@#{zf7F6$Z$WZ?yZXE@Kb>x19cFnEu`=Vm;aJkM`XDDzEDA?`F5ZK^gt6flu__ z%&PLVU;TugKC0Z>N98^8!8LEc3O&|92Y0^C&z29w#C_G*loA`f@{u6>=kQg}8(N+& z57==l$wRG^mF={U>3O9YcDWP3Di_V2_*J%iI7IHr`$PKk2TWcYJgB(Grl2pan9UC4 zj$$66ozfej?uVF5Wp&mO+3KOezQ!@{eCIWtRkZ<`u#23X4fqtujw9oE?f}oPz>d}$ zg?}*n7*u0o5j!Z0q11i}U&H`f-7lUCK@5IjsqG5Nm%vl20th z<`4H=n=aZ?jo6LB^7KEFr=Z_ssqL|iYyG;(&TX)BO+ziWKwG<>-J&g%`EJJ`7H=u# zyXfM^4-@Q>6aLrbm~Stc`Id=))u7P+1MQn_Z_1B#kt=y{xxe&Kqrddf&=J@7ei*cD`7OJk~9J{=1FKE^;^%gQmt(!=}X! zF0WvW6^yZhF;+0f3dUHzsN;I#JJ79@b+4N^-@bnx!EQtG0o@O%-VY+t zD&{)Rr)qfT9gBSgK5EYu#56aR^WKHb3g0`fC&50VWL1Rcn9t02tsnhpFnNQ-=JU?~ zMl63+RcxSDj=T=X4vx)_9lqX5pSL%Xz6L!J4^PEUpBB?T6v+VXnb=NzG+yH?P0XbZ z+yc%}x`VS(?(&s(+~X_l+-5E6yhQR98LUs_X(v41iR>`HnJ=C1QHR<3)VFjFi)={M zg&RXGF@6iS9(v*cF|}V{(_Dug7+2j}uIo8--@1l({YU1Zd&1~}J;?t()YCmQm3efT za;yh5b_W)1xs@8ks*Rjv%vH#lR`g93XO&FjbDGcJHto+V9(rR2d$xV~jb*;P?lC`p z;BnQ5tww+7d~4MfQEuB5$!7XjJDtc0^`Z9luH<|d^08||dFgIzU}HY8j}2H?g!z=r z3!_)VzJ9ANRLvl`h`06}k_+cYe=6 zXn7EuRJHKmkQD+7j?_HZ%6X4*ZJ_@I0Dz zbk#l(E$i_M4)B@JC-i4O_KJtrSb2@T_#w&7_0TccU570s-SjKww|s@6;JahcWY$i7 z-6h7h@O3|lzEUmkobSt~=KWpH``S~N#8*i+MoI(Fcdg&L!q2CCTR(L6Gp5PVIS8GT z^;T&uHqHyQkr+m<$-O1a@2Z~n!_JzVv9T9#`8@az;qQjHuXTr7`2Kd{__N6wYvz5? zH8eQbxPjOtHqn9yp{v^U()D6PKdr|u-g2Qs%Lt#BINv|V=jGApTBnIw}ifMRuJDmMS`?>^@wlObq# zxBKt&`TY5O!kjsC&i!&-*L_{reZAd{x1fLKFQ0JMPi<=LlRf-i2u?lV)W(_PqoiHI z_=w_H;8$w?a}Fe_SOTpPFs;K_NmAK^j44Bf3WufA2fV7mTnpPw)U51lz!s<8o! ziHu9<>bme*&%D#&!&%$yhk#F|1D}1srysh11^9FUAJqwUeX%x-#7_h#yEe*H;H3CR z!OFx~04pCldH(Xkvy0ekE(9LKVPMaDW6HdDnQOs)Wy=N^2I3!=*)X`)rJKv@TVF}z zAL;%mcmCz*1-|7A&dN3rYrwCv4j&Wx;41b8rSOd)bF5<>uLpsbqn-_0d zbM(sFTHZPENXFI!=N4@yC$0UNzLm!g1T)%q^ZWXXA3wT&!AtM-Jrdj+{BY6cz=!MF zg9WRP2HAHkwldq1Kdt#6dY0{h=1YZB_*@WtD9@+oI;%B4U9b&C|Bl#N6PpDN6_=(l z^jufp+IvGi&(ycdztaYu)JtCD zuiG?f-sYoiRz~|;%W5p-H@7d%PkvEf&BR&8#z@)X5Ehb*ec`nAiLB1!yLy=9NPrT;vwXx_&MfI&~q0vG41`JaD*OFCUV61bh z%fVwccrF6Z6_5C~R)gn-=T^6~hit6?*VRF9dlB@ge)MbuIBx*w!=BBzT7BSsf#q#{ z5nZQia((MgaMPV%-@1Ce@3JEBqu(UIeyraapO5~rx7BU~Pes5~_A>pxo8O1gdI}%< zqUPxEq1RL9S8VKiL-~Y?mGr~^$o!1u3ysWEt!>#I6~Fg^bUk3# z0UdW15ufP5L-46!j&+~6mLYTJ3no5&pKmRjz;~a4H911J)gP@G<-csrvGqs&8Qb1j z$XYaQ5%coLEFWS8qoJ|5}idnjfISQU?f6X`69<76hcW6&?{pzFemG1>AgtGRn?Zb#*-xPX#}gjGCmi;K;5C=2~lcWlMhQ zdT`FGJMgNr7KqIpNq)a>YO4%Ck6vqv_bwEHto(nD?M29S32B%&|N9;Sd9-k19{L>;XB)NEL76_ zt5C^qOZuMo%pB-(pA|^#ffltN*aQFHg+AB^UxOCUJV6^h*qryR@tJz`$FVCvAsWmG zmFyb-*rt8C-en=#qSSsH?YC9%=RMnV5PMYS#WP*HUkwiy-HXm2XO4;=l^q1WJiZcI z*Lv*vKzdqcZO=M;U!&i5`K=o|SyzL3UEm@lx|j{E0~6(#-y~X}UEf-cO~l9F!jQM| zC)Cqea9w$_FvEI&+ox4;Ef8KzodB;@-`ZthY`<$_)g{BxjSa6>o5=Av{s6aq{pLPL zK>kHqhhAt_bC&L@btwCiZ0mN71bC@%cS;)Fn`Ru}N`~M_n99%rUE7|k`v?;sYPWIJ;aWybj{E6!G=zG<5-sC`q z_pEe0)k}2o5Zion@xtK#KWpGGhWypI^yl`GpT(K$(?hMS=T_x7`+n4bP0W{ggSG4_ zkne@_O}G}Xs~%52sJ|eLj@8(MKWQJdz8~Gbx~A%EjJ}l%ohs`-@4!JY_&3gCztDM9 z{qU}IdDWTY$3Dh60LZ)!V*I54{SuqVJpMY^r*y8PW=$hCDxb1Sx;I-TJxx{#Hl-Ev z+sW?Vfls4z3Ho6z@jnlsi{ZoQd6+ebZ)2FeNwJA(oX;`NRQt%UQgG(t>vtXRKQh+* z|K{}dkdcerr2_aQ<0yG{01 zPgY_zHjwN;whqr-H8nhEY0WHFMY40ZRg%;5txdI8lpm}0Jl2wUk#SU7E1vzkwMPf6 zoZ6k}G=WdbE^9R=Soc-Fr(nDMPmpI=%v>)X70>c>{eljw@;v*tvDw9`jB zwLE+3&!0G2=NVmF&0J4Dhfc~^>O7-rz0fviV}&~ypW2&1KeK5o{;XA^y?21N;8}9Cjk~{2i93y^X&~ z?02_Y{>JZ&apTi$JAvZ!BnNANt^3|;o}Y+rG7)?E0^YfP?C^JNKY~A6YUU$8ni0Lp zoeyhNbNQL(f;~Dte*t^aF#d7D@xM6o_)n*e<-GCpUi$d|B6sBRk4+i>sI>9_-~!{n z4OySc|9r&E`;ec4VIONH1Ng52epgxKwB9G`ln#>E(Y&bSn-TFJP& zoN-mU<6`XQx0G=ayIWGpxVoHiNfu)NFyp!;XrEELjq#_CZ5V&&o#Ed_TfXQn#cmnB z!5`hhwOKa~oqg896X)@rC$C-mx6W5hwSRl6%90bvHT9iTytOy+L(zVzT|WU>&hUM? zEcp`g3h>(GPV|lH`n<63%buj3_f>h4vjt;p9|^zM1ot6{DkvZYsG zOP`G`eIB;-J9N%Cw)DHOrT-XPI=Y>)d(ZbIFa0I_16a7{Pk4aE3SjX^0V{GTFesz_ z0@}0j2%4(J6w-fh9Ka$p6Q&jJ(Kt_EXgZ(vLx3^e7VSNAbr>1?u<$Um0a zrhETW;2Yf!-E@L<{kIGEj}E^V8LqSa&CAdSI$J{u4T#R{_(G34V^aFSnKs)WQfzF> zL-n;UE66c5l(k>bp48qOP?MSQ-CDC?)&c*wHXSF{Bt&f>)X-C|H#4Z#uVJT^6-q4pMRUF-!oK?w&P)ZTMkZRv%wcI zH@E`kqKV6afpW8zGp`!3op%GfJNc`&lB%^Oe{OfvDE!*^3D)61ZN%^M6#moA_)nYg zpZ+4WqT^w3NL%Qr$-g1L;55&@#r4acv5n?8wMSc8gQ5e~x$J~)Qv21}c3t!t+dS&R zbg+|kyPI|UEbI2itlQ^Uw=c48kF##UcQ3SMKH){ZwYCrJH1}N}`*F_|51w{>V5b@H z7tRJ|YJ3x^8>3GTYqb+zrnyL#j0ZNCf&aQXD@%mKUHI>r8f5C% z*i(P)+;=v-Ra92;_GJD%xsAD>4jnrKZ@A9uYyXTjrZL~^J+lWHJK)Jp1o<4#UOd-3 zw*5Vi_sClx{>6r;ykmJLFOl1_dCP!jOrnE)_^t{o`Su;?zP>T=gR$_M+~`ut6XxD| z7w~5-st(56cfcR$OZtlFFCV)HwZBR8xV*A;tJ#i!-dS zV(9eDoMqaFSmB`dCG2r(zRn)Ulii;E;f4)7+pa#=^Ld{qyD@$@{DC!k-xb#LR}=pO zuFm`jSzal+_!_=F)=oe4b>b;2d8!gxXFZ*6wvu;1&v%@AYC{Y>d>#J!mS;@kIOd<% z!8t8Ha{Z9qmDadKtX6);afvy6UhBJemlW;o&9zS{p?huO@lhaH}J!`C2`J`&qQAtgI;$W|NKex zK+(C@m#hC|!t<`DKgC2m1HU_fE|>|w(>r5$Hy@p83jOyz1RXp89c-qL%kL)M;hsn~ zIPT?al)lNIjGTCGDBd9+m`}XJ|A=%yM;^cQGdJF$$Xn7mnYwe+yd|;e-jeR?yd^z1 zcuRWoJu7ty|(u-;e~Ut{kvopmvtbrFR3mBOPZ{LOc^RC{@I7 z6xxX!y-aZzoa;i{{ie;##Lo-iTXl?SC1XQZ>SZnTet=DmeMLWgB}BJHT_saA$bM*jDKRj* zhYp~7@$00!WHugRKa?pNgic)=)OoC;!Cuyh(QU8O_$;H_a^CtTJ@4x7k}svupatxe z4@W)p`I*p39J~1dcJnF96@#uGXD^|(3{7ox<;tl#XkaCHLGFG9Iuh;f;k-ua4%+Y9 zXG>+6Iw#^yON)$-v{yP3y8ob#bS?2LQ{fki-OYwatup%-TTl8w&_HTCqS-GqH+YVz zWgz+TG;R6eI~UQ;MB354HMFs&ATR8P_eh7=z1z_lG{z}6P(u>>)ZTs)>uVCe=?r`m zr5-=)YYpowBVlQMLBF=mJUco?^1a!XAE#JL;??VC*lQ?#t{tq&PQzP+!(bq~?_iB| zvQ{=Yb8zETWBeu>)#oDS(v81cb20PSmKR>cJVgJ7KU|}+IXcS+b&-KK8^#VV-m5mX zFK?ioqqL)ac?0m!zPy2U8ldY2){N-AMty?cQ{d3xvd*5{o@vajntgz?j(4Fm?)q@; zhQ-!s&d&2UYV8G)&4-8qvSo81(N+w6J%Pj&KI5DNKb4rSVswNl=o8QqaX^o6p=NAi z8+fqc8jK!Q942#id2~1P`Xplt8rjSF^;g<$_D!bZu{srg(39*MvRxW| z7}}2mFAOPmT~T1Dnq9i5Jc@LD#AxqpsqKM}812QtM+|%@j!$-sF2jd3PH(iH`hE?- zdM&VCi`{ay(Sv-67-!gPpEQS0@;;62QD*|(%AaDir01objnWt*v;qO*?BZzB{6}s>zF0TZizeFQ%>3IqPiqHm5Doj@p`@ z)|U8&+8)q6u!#wF@`$O0{EhNK`wY&437__DJXeG6tTotUVS9wmtH4cl&5~KZZ9(F+gbzQq z1UrAkoYV0U{6O^lrpA`S4>U#(^yh*8e2f)4sxwwkq8c4q@s}}lQg^JA80)RhctvCO zcs+@ohPMV1v~76nM4ssZ<~{J%kEF3Xt>h8KGm6IUv}sJ|s>RG2(7fy#k*P43{&zp? z=x+XWy_C-?=em>ib1&EWyffvVe%HM}HJ^d#=gn`nz4R;Qp6WkjMsH2IulHRVpJT39 zw0t4u_j%6mB`NpxzTUZsPtnw8&2NhF3`9%KZ-MC5Dfj-!xp$4ZH`=VJ>$%2;x7V@Z z9hMExkDt`l_daQ!wROKwa4j0Wm`}+@^=bcZ&uxNv*1pc?I=$V~Put@Rn&+hZj5F`+ z)0c8Dmuub2H21X6UD1+bt~HLVsNUD7V)NgF#uV2ozs(7*#RuKJ@Fvxg3s9rNImb`7 zDg871;R^e_n5F0-za2Yt-dqR!1jV6^x#{jm?#=f^@>ol!OS2PV~b*s+ykG;eHR-P`u{H$lqC=Enp-j! zTgWdKc#?-tg_8N+v5BjRKR9s3-H}6+?uoq74_)SGvoFbsoS?sdKH}^7i*(c8 zYqVqZyEg1k#MpKbV;dvJwwoB+o?l^qdJFs0jmUrc)Sg5-)-##bjMLmp-D?~|-!k{m z{j~phYjau2o9O-{?KNCIZ`fXgJ<92adB@pn4Ab+_?_MUCEnUXFjt_s3Cpa=ryeM6M zwSA>5`P0;AkzZ|J@g&=TSsSpE-UnX_$L_EO?G`@TdByTJ%0{eM6B9!szEV%T12Faz z@6bKXVsCHf7u}4ExEY?+S*QNe zZCe^+pJb!qw~E(vZASJPg_760cfFy1#ZhEN%el7mmIBe~=DxjlZZg+emn&NexlUh~ zLDpq{%DQ<~wfR^#GaVb!puZkCr008SZ}czddn?;MZS3^s+Lv$62T_}a)a@($r7t{m z_In+B{{VacKs3SMN%jP%_^V}&h*rLaKKV7px7=XssQQ$B`bKD>5LsgM^(tFm_plZ_ z!KY$aJK3vr-cVLj$ezQa{TjXv+s1b5+5J9Z>jReY<9^$jTl;zTF|TbOV}JH;n}4`{ z4BcF7zV{*eV63u_Nfz|7uh)Jgz&PU2Vf^9pk|m!kxIy-^Ap16aQ7^>Ve{)7O`o8zf zRjjvc+KH1Z5I_cIBMU3hVNYRW&Gz3D!Kd-OWMJef`OcS^ePp)(Zv2CR#OvtDx)+B& z(GiwOX7_O>Z$Ep);Wmw2c*nSiY#nY6M?COFc*mC_#1ss-X~ftc#@Qbx*dM;d{_xlA z58r2hSjYab61r@LKH(p_7A^NW`@=)%$>yGHM%?Q=ru>Is>a%?@(#Gt^BsCxIZ zPUM-_&~1nzCPqMd*$DbG_JXcjE4fAMybj({3yk3n7uIe3W}htk+JBmM+Mu0-&`vwF z^9yL_7_{>%Xy*ZF=k8Fl1KN@7(Y0V`d?8IX&SeuYHb?kmZ+_W|*~aEb9>z`ZUSo3% z)OO*AFwcmOjxAdehrjKHFUYR!@)E&K_vaw{rN4Hed-qdQp%`2AWUUpGf0&t)e;7=x zXAM#pKCHfuv;R1Ru6@u7wjU%0V+ydAt@>7ShuHfy_CA1}dkO0rTg*UREwJBd=f3X^SZUgk*jUQjUSLYJ0vTY`Z z3p?_{tI+2q-~8CwY@OMrD`V3{KRR8CzA=5cjxb!W%0;gl7x^_X9n`C;fw!*$z3PkT zRbPtq1uDpqtRP3Sq9l=5L5^evIg;dc!pr_n^JE?qi49Bbzh1Fi!2dBmr6b;Nz6Xqs zxWM`CVLlf-*Wci?mOtd;Mn@0cD?PY;huR55=bPsO(Ldo+wCu`~-%y`ia`NjVoY!*3 z(J!AELBISIbUPdl|26$`x!?ePC8H#JWUJHK4#1OS3%MQLXZSiF(l3W(#E^bD%X_0u#n)XMVvx1?-=( z^%ZoIPT*PqAMQZDyM9>dnQic5`A{dKXI7&3-G^=@|Ec2WCgMMpo>>R44)T2wy5gb> z>Y2WFV$F@7Imgj6_n>DM{|(JFRFGg4DxC7mUv3JdekDzO&>zSpm zTJQ$jhk6KE?fM^WoypZPwNG8qV&bigy(=>s0bZ_-`8}>}{d7gkPIGPhB-eADzLp-? zK78#=bJouF=wbGL%#Qzf0$NS4f9~j*hf{P+>MsuIm>%kZ|1LV_QPzq0+n|mKjARED ztj56Sb`a0-8Tj0Hpqn?#^1@@F1;fk0;bpTUeM{IQ5(jYN0rrRwu}6HEJ>ow0h~Q`4+pJ;6ab_^?+ByFv0FH^-JN}Z* zYhD2ff6+=&Xl)?1X;&bc)x{M7C)kkriD@&iKnZFNisI zVn6A6xGZVod}8?dC^Rx1+FL36oHsECyHW=<8hZ$TkmXC%LvOZi)EE6KJhk4O#X2c` z;<~dD*Z09r&R@p&{y~g7@aStU zj0MXNim35{T>GFp%hYP#zd{jY;rH zz5fRE*XhfNzQm`IGsMxk=ZRJd|4t2o`joxPkUhhuhsf_h4~nVi%*h<2g{9L(3)zW< z(1J?`1%q^;dJn3Z?KgFIL&W*YmWn zAKY|M*QPV)7Wmk$ksj!$Lo!9Y;Q{=j(8R-<=iOz=kcCed+Hmpu-e-9iUGUwa;p_S< zE^hClUD_I4*VWFtW_{c1dZDM z9jXPQx1NaZ0DC~ix9I*-d>x88m;k)8(Z7^aK@3uD z2RZo$PQ!BeWs6?Xa=YTK*dxp{pLQPp92Z`W>^}Urw(M3-upxeJ+n?{`TV#8w1ju%bk1K&gV(qz}lXW!uC+Q*)F z0dX6k>!@TO z=L)d?7qWh|##7%DAJ9JV9M2e@K%Zy0K1eR>ElVfQlAV}IM)R4^DQIBQC9<_;CcNw| z788TEi}>P7zOSZ^hV-YNI!}r1Z1$)g`V^OT1>Ob50mpRNg zJNk3;T{=`|^rwu)U02fa7K={c?aME)o{AY)YJNjUzGdRxW2}`daH#d&3BJv|^Etl; z8)z(#acDezmw%ENocXGwRUHULR8vd(`>^$c&Y`hXIAiH#EW`Bki_X{2K93`dw#jzL z`>%s1#S@-k4BgO}V!Jzu3%fKpBH`1?oGDuDfUG%X^MSO9F80NqVWycHb;(q(etUc%_?er_Yw~le^&O)K&|$Mz1ZsF ztP#E^#77jL9smxqgD!A>?=ru8`Q00hv!?nALM80kX7;ge`lbVW_7R7yf|+tspS}#NV z-R0?BJAEbcGk%<1rXzpIE@S5)1fs_GSAk7&Ha5k1*c9);rg$ed#k;U6PRFJQAMItm z^ajdH7H8x42?t{-LM5q z)=5Tv?&LsI6*8=YYteox@5c|dH^pACH_cvf_;;}v95`j$)iicnF1hQ#v5z48wkL>N z6pgYjQ~TF>=&9fJyYP{L-ePQZ$m-+B+f(ox$A^#MxBRSpt8>^>h)3ACvG3W>x$DKgr*j7;$WE$!OXS5w z`f|@gApV@Q5I!4jqpyARwS%z?)#(4!nboY53FI-lV|)3$F%9p(NMjoDtN~ZPeZ)9B ze9OGZ-b&6An1&AgQR7_AJW|JL?7xiDo!5otQ%<|=c`rPlw6VWs^tzGinGc`$Ncb5E z7Z-kRIDDj|SKw2tuD>)~wS3|7blgjS^z5xan)COPwf1!|jjo0_()$-yfQuziVJU5?udq^!$LvltvR5#$nnx|1YHH8~?EMeE8$&`7XtdIrKa~ z<@!tJ+NS3(a6L%RV{QA~do2z3ONyzYX!{(wD4d+DDheYs)Y8pr3oE=3Cd8 z`afly4O7UPD_CB&Je98&zGNM#=lm(FJ}bNf9+&!CXW*MH#qOA}J#^+#xBgCBZu~;y z3LvNQLfi|LsBXU2n*RNFt+$Muti8MHFAi^a&WQQ%lpmS&b%4Iyvs*q^ew;U^;p_ds zOMaw}^JC?Qb2d==e9n^}>GMhB6@N(i(Eu%1*I)FJ@?)jqvYhp{Jmva-nrnN#J;?Ro zdUNE*CGL7-AC|t}e&71g?@G_V5BZT!C+YYGIRxgeq zZ~NIh{B~^qVD0bv+*L=n>TJoK{&1CT>ptwBm7)7pn?uPJ#7$s7Nme26EUPeV-zR3B z+GQ&%ri81o>*{)8-YrS}w$hhjeBs#556f=O-gJiUFK7-W?^9dY&h@>j*{ye5c2;{j z?KNLv4*$ToUHu@!p6s_{hu4dgJ%3=p7kPMNvS~H7KrZtkQ~Nv9=GgDbHRo}IIO=S`j#7uNSK%+Y zbQCdY*q`Lja_dW}2497b^Ki+(wEgDFVNx88Z2s8c>xe(7xVa=So*IUqvu+UlPNWzoLsn*%dfTCaE~&_lOJ7^(1Hl8&xus z`5$=KOMYoxOXlUCi1D*vCsv=m)cJjyc!xDs7Ux6TV;QV{QkRW?IEOfjU?fPpdasvp z+i@WFvt3R*JxlO0VmFH4h5Z@Z66-T@J2nQ5867s9%UL5Ha>+WTg{W_1J>SWD8l%S4 zrGA%$lAorJ9$@hdbEY=@4I@1xdyET%YG9yeJPsTbqqr~y4$plI9Cj$qgL%h*!Ckal z%HBQ)-jG2(#mrxP`{*;fcD=LDqIM(oIP{xrnWlat_MI-~v6^`pKMrG;Eie_IZ!=%b zrHi)zh~IqEt@(wy))AiJOsu-i<#@ zuQ7gxb~=loHSD%(m$}aDVhyRD&G;VG=uxa0XG)c#(-*04>iD@d1`giRc^33j&$uW4UoH;nOHiBxWsYfT=+xD$4?Ht&^w#= z@3NAz!z*ssw8Qtl$#Wv^yJZRc-QptN#dd$3J=FFS1M~ZN?oPc2oK$D+8Rkun+zSKT z7hU5o8Q;Kf?svtH_Xci@EasWs{5g@ag3SZaHFj;~hRF|5bP4&HRab?(fqU%g-!y3r zbzcW9V-w`e57vjhE~+`BAP60=&#-2`Dteb62iYLl$*(n?wuxPSz7K!a>oqmAN?WaE z(1U8vN8|aHslBj--}B$|o%uOD&ZYThrb6@i=hM9E7isPPJ3e?_Ph{=${k*mB(!A!D zJ|^+0^n0S~^m{SQk-6A1@Q$;R4T6o~C#?TCIFs)xO0G{2e!y<*pyB~zp}+hB-#;j3 z@^0GIx>xL&CH`DrOm5?2EeiwCXf^PLmvrK9i@{e?Y4~%r(LG)90oECI0tneCavPO#r^z3RIuADEtM% zmo^-pvRCqv=dPE3LGb-6;H&Et-nucBxAxK({B*C&Pvg*j2ehv`RB>qQplF}?YtjA` zaF35IQTXrBFZUwoE%987*mPq5-Wzy9aEwE%s?VyLA*LO^#{+XB?z?5=KbUuEFV6Wo z1EPJ-l2DDHt-M!G--@~V(fb4QGinxMNA)hN#;>)V--_Um6BI+nnB~uKd3iT*6%SGz zx{J#k6dVVJj{D8 z{{Bz#FqtrfKjtU=eMb1>+Qr|MtmgyUvdntU%=JV>!>RZaY^ZyC(LeIuulTclfmzXC zrd%H}*N?Tt`2^laIE$`54v&vpp-qMOiC4co@cd+K?ZS-(?1Qvt&eM>7PrX&?Rrmk3 zqvv2FiV@4w{o#=AVe!w^xA1=t)2C(6M-O-~1YGQzd*0{^T?0*C=RCzq&cNFaU*Y`a zO$|386kWa6;r@~jn| zIlzy(lxQxdE@s)VdXldG6bTL2pQJl=tz*4601tRWs_vw-rIg>H`a$yhC-{@h>RP9m zp=^BDifi%lTUInd46VtNm`5!E_>s$t6AySwD)H^!jts_bJzq7h;-$zCcvJtK#Gs&S z_2`V63V78G=v35Ct;!E2Z)R`NeFx{IThv=4*M>6%8at5(;^U)+zz{{Mt|BOiK* z+1+JPQ6sHjoyT8=(;16#6PXRt51`p3#YF#@G#?m)uf*r}A*@7y#uQk5!xzJa=OF&1T|^fORi0SDW3)m{ZWm zTf{bW^Uf*WeQUOb4m4`;Jhv~w14U1r&`l-#$DLDI2jD_`$thg-fU{m-M!RYU#2Ht& z{I%e&)4{9an)X5u!mA656SO7x*s_wmOlV>gV^>_0YT-_qta(#2j4{3pU1c%vtaDFn zI7$0Ya9+_V=Dm-zi8OD`Q#7x6t7ehDt8S7z=de3x+ETocYA2bP0-is`TrI|H*8}lI zKgC=Hp9R#u>0;cPujzyLr1#0U8G~lrw!h`HoxvFUKWsXhRa3M)a#8(JHUuRfH{U;{ zz2gOzp&_l+6U@DnF?KMw7<1^olkvifN5j95` zlCw>M<4FB#AGHm+D;v1mm+6E1{ovp2_Z@gIaURRW``mkaZkqaXa1$iY?)Qb8sUzT~ z)4_{yl!}`lBR?)UKVZ-Sz7+SS`MI$Bsbq=Z>dcogi zudw{>_ad*Kgx^1T?n(IlC~|NzOf0D6g~=-yoQRdOV-<&Bwby}FoOvlGrw_W**bK~o zRgWWYbdIE8HUpRq46wf*ATDl+mF&FBUK6oO$tKzWj`52|8M}>gGZtMIBBshZa~tx% zo)}f>(5ly>KKkG@ms3whabmLbtrBgE2LN~J@5U!69MI-Bf6a5kCF9fmmXhR%aB+2s zF2zY9TSarj^?lhZ^P`&-^90P*-)^p-;ZMBgY3FkXpWFG{$e*h_{iV6~nRm8utv$h@ zK7{^I{KFw#=p9E7a`hj(p8rt%u+Lu>sYchdF1Pu$?1u}{Ez8g?y(b?zR#mfb*g0F& zN{;x)YySXm2bLZAR&o+}f1Gu)2L7%yf;1lC_mzzLqmOsI-xSNICKB(gVZXlUVoUng z-z)&ei|9k&7X?F+sx{^295KdXbX*^wUfL|Qtak6Y)f+k5r7!G_~Hma@{l8yZ3sn7rLfHM||&?%-Uq06E3kfma|ul zK_Akouxo58pYofg-pRGuak=S;EPQ^X#rogA-fByx9h6QE*fy>DEr=6d!B!- zdCI;wmOUDBz;gb%__3 zyr1jhS?MlQ8LzG<_{{k>NiVet%FlU$SzU{Flx$^=T)|G1iobXseOaDHx8G7=b35@< zZTxlQ**fGR=mx#4Jp($(aO%)#tvt$Eo8&`04=rxO_Pr?s-4ECz=oktCC&aNhV7 zKc>D|fAcHY_ZAUOA_h5&twpJfSuh~%N z4-K3DKYh#?ibop52f zH+C1baT#-|46ShYzgn}yY5Br*A)8?jXK8e!yQrquDvMlXE70BnZ(9It+&;{@eX+iT zu{~G?-juK9rJu|xbB?WppH*VFi%}b_nNQUSquwQQas7rG4*5&GmBU0`oHu`tpF$|iD_9%o==V6W?H)P5i%u^)cXAv*~Cr4pF$ z0Y3w-|EIyrS+&-9Vo{mrWbCy0(fwP23-9)5?;&0CA@ncky#RWU4!Q?BOE3DlU9V61 z!nPgfX=)40XCga~;gN39 z7&@`?qrOdkZ9j7T1h8%N*B^a^XX>onGZc!QzuUvUo*K6CM?#x#>;A#f*O$Eb&eTT( zTjzebbn|S^c+BKkY9CGQf8@5t$&Z!|K64+qNsM~q(zun=D7Z`kZUf)9uB|V&=07|7 zjZ15&X_Bx`?5G||KvdP(NW%Q@8sj}USEU_gMCZ9 z+G_2)+iI;;UN7r7QE9c>dcNu}n?3)=HQ@JAa4Ua?<{q!E=bidickGGE`qsBrhFVUz zdkFCId7U}D{HmAkCqL@jkA^l^Vy}tO=U-EQ^G(i|d^2nGhFb35?ito#ATowMOuFXxPUM<+(Ne0xi&cT8ddG^l4U1xBiSdjh+i@_kM& zv04+*>W=pwJ7(939~bS=+F=hYI+QM^8cf;`U1%OBcs2nooLpkhr-OOSIWsUnL0_T= z`8c&tQ+>l_H$dy$OQ+A;u!XH*w4nh`Zl3=-`4d0mT)A(*Y#sR#wSD(Z!gj|Tp8Se+ z;EvjQ@6q=g434{rJ7q)#djeI={*P^5k02k#Fl==QsB~AHTVEvA#OmnkhKX z6-*x;z4bfLmT*E%==OcoXugWQ?AJVj_8)otjdjFH+)p2;>05ijw`;6$ohP^Ui@y4! zV|ILJi()E{LnBY(FMAT&{SIxsY1$sM^)zi((%#R{8hy^_Ihh}`7XOrZkpIeBbl3dJ zqK{tlH~pUaIr=gEO!z(Z^U}xk6Z}2(^H(3!&uL;C{ww%NKx_A3@!g|8EBpI*8XwKs zy5z%qH&<^Y_v`Y&va9fI{0iCR;&A21jHUg*IF=4<6Urf62JGDH$IZ3sSY}5XxPImZ z=*aN=jOY@+!=sKA!>eS^=;M9mxt~J6h~MEUd7ZPBOF3g#>tzG$;uEZw&Xu;GK=sMh zj_t$Ej81t3p0EV@=Ey+9EAQa^ky>n;JSYArUZi@wIq=0w^5K+Uj8D4tM75QyE40pB zg{%w^OVDTGlXlLV!HyE{VlNhFy(-Se=FhUh4DshrZoz(*(r^D=^|UE|X4`e*j6;3D zX5JSM3r4>HUNrvC00URIke%Vp-L_tFas+?VnKoO$$SN7R{$1=@`0;MwvJ)GM--kcX z3M&p|U%h4O6qX_z`({dy7)u;UZlt@-7nU8nqZ#|V(IqA_*No_o{ujJ^C;WOh@O&1Y z4P0fn?`W1y$DgPIPTlA+Lv|~FbP+N?^__0PgZIR{-CAJs8;Nh)`MEjKKIC0*oz+^0 zd{F(PIKGP8@Flu9&u09}^Xa*hIo)9;yEhBxf}d<E#_qRN)KerFHKN%e^g01Wc&KQ?|tJ;ih1b#N6rVLi zI54mUpC?vYt%7wNd5%A)mAZwk^6#BQ?x>F2I%F7ykiycPq(8(T$=N!M&r|&VEV{!0 zF#Q>NKefIa)!!`!UOMAX>%bpfIU`MOx7m8-No4lPCecAo;uLH0_L|yR`O(Q=#9#4g-7D6C<=de0{jU)O1J%qlgGY*c!O@>DqVB+kKxx`PsBdO_awUQ;dI@0 zHMKU+(`}u(*5PX!O^iU_W?=jjwAX00#vig;=hZBoRp-oEXRWCISWhMNem8wQ#hzhs z{#nse-%6qRr)ZvbQ*$TV#xf)uHFHz3@5REQ! zY7G41`_7us*r=%i>o|#J3zB@rz5P6WTiB*d0%88L-CI<`7d7x5l<_1YhGg!)Y8o-4AHvq2_Uy zJwWZ^fu%P7-dbzp@7GH?&wVQAaU)yb`pOXgysUxvI;)kl{#xIv^^}~h)gI)0T;7w4 z%XK!L374X^RD7PUMSmx+QsX+)P~V!4U!9A48vgMBI?FH6Sx!GXX6r$87U}M;&hkB; z`N4B%o3`>-<>Xr~U`-WK zTzlg0JO5x3@!Y%WM}2HQ&F>@s;7a;BKwl&0(@Z`;AM+2Ce~>=T;rR!X?RtEv`IsZ- z(@Z||AI+!vL*^gs1UJ?7mtQ!aX4a~syA_v%KI7r~>6Gj3=Gx9b_$#jS)9mE8xHLWX z{QR{i&}mZR`%A}r&(A-YwPrB?U_0Y1WSj-*Ic(#-N2)%j7(D;^`3Jne+#Oc{8I?Db z!}e*7EfC_Kox}G3$NYn9fz34rhj#wK)fa%(F=~3J!fK@agDm82YCUh&xappa?v33g z^QMYp+cI-+z-CL`#mV7&^FtBU{OBjfXFu}qndOU@51?DCei1QLdsjA03oj|ct_!aB zS;0h*I=k|x>nw{sR%ZKcR&cO}P!F*L(p9|3_rA$ivS*rf5b1F`Bh22zxN`mW-u4(2yQ?u|MBOnw<LAqYKT$Mn?Z8=Ghs8e6SivoN?G=u;tqg zj3IU`w4yrr(5AXsp=I^x+6GQ-(@gE1j(pp8bsIWuHTx2cRcD4M9&FET|PIPYt>T8i0p-+|@b^G; zJ=cb>xN(Ac-bl}7z==KR)uKx$UNDwd&izpG9{RH-r~SVxKW%=K;{V6@K5={q-+M-) z5WGzy|00t=(b;z9CjY+eD^|RLKl-=7dcUayf3bY}RY7t}fawB!-+Q?)e}(psseVKG z3pGZ+#)zL3?K=$TxnPF>5JAN9o?%{l%YSgS8PE4G@QfKxhdrLBF7Qmb;B(d0;RRC; znMW`14C8sb{L7y)xcJ5eo-uQOdTe+ne$3jBdgi99%rgrw{LIGklcn@k*YcGMJY(iw zb0v5WwS4gc&oHlzis30@Ub8>yneUG>^ZH!MGuRUjyXU(JM)EbSq}FfMlCtF2iG9$$ zLUIaqZ^06eBNOd-9r3(_JE%pO#!u|{^UDWw-xO=~mAwN^^7G!u{#|QMehjnbE@It{ zBR=El(cvz9;&=V;_nSH|LjJNAJLr2MwomoFi1Fy2azR*wHcsKy#}e;1`H3-j8h$;* zm+kR&ux4#O?RlA_+XcT}jV&vPJcuFR zyOHmTLv2tDII=f}JRx_l-H(sG9{r*Nf2rP)tw`_vhB?Z|9=pNzhpN_5GqSXTbI5Fa zk`-M{d$J+z>}Tw8Xd+@JlwsC1**49zQMkU*0TM`a>=)DWOX<3wQG5AF}|wfJX3|; z{y5JR@Y%_@O0l`V3@&5S?QyC8k;b6@hVU@wtey80FgA2@vF0yE$2fk@wx0(WtLm$F zNEb8vd)ZKZ(LehpI?#0B3LU6j#pp|aQk;VNK2H4624Hr`?>Q305B7S!70$;Oc4heS zEv3x8nBNZI&)-8|S@_Y4c_w=mIW9aiC%k@(-cf8o2pDOswhcW$dJK9H%^czLUT7bk z2e?_o;AVXU+!SX}_0E8N<|D%GNvD0ACT-Yg-V5m~jt)D(*f#*98r2hZ>~6A)<^rQQ zYe@2`3wxMgG!7Vbq1(l-bKnGA3_YONDX!Gm*H}L$<`)~Y;FS$5<}&vjU{MJyYJkN) zbXmbmFgZxSCxEG*NdQwlvn0H3OB`4#m%4*o8o`VDkiaQFs(2{DYoYlJ7#;5-@eDIg zfAn&$MfcK=T-(P_w%cn@xw;d1&(_@R|6P44i}5<^pmfo zcr@iJ={c>@EC2n&CX$aNvG1@N=)E~`cJ@5CNeNiy+T!N0Y{~~-A z#P#0@ZlL3yan{CN=Sn%tsIDc>yM46Vd3CbM@Ic-Xj!X=t@&*g+yg|iG^zz(uJU8f9 zHg#lex*6%7`X7n~`-tZpKKNw^7dsq0xbVM?GlEj%+2FVAxkrarW!n1EE33hwS+n_3 z<=QH~$bL8ARgouI^=ZYM91*nAWDzJF|Z;dt%+tf4@-nGuO zJL7S4;nn|w$z{pi8c)C(&tz9V+A&y?j|1D1P0=*?MvOi?v_B~@cK$KpS(n>>$ZZqQ zPc84Tcty2!lD6JTSu-xaicS55q4vyP1{iEBRQzLZc!Js;__s|StK%I{fn*WqzcDY* z6yr}g?8YK?0()>V{%g!h*M&Z0O`etXTxH9zYk;kAGWdL+9XpO)B{_jyzeR!talHk( z`1(HTS>mL>;yydxZoA9(jg|>B>{yeZ5{t%O&(SsPSZH^T^(-)u?0y+IX#VbbDOuNu zX4C3r=8U24_*iO5_)GFqoaamhyt@-RtyD}LW0r4Cyv!ZvX8JRE$MbAC+5z8FUTFVip_bQcrpyYSqo#+} z@JF<tJ-4oNlKwarOBFe`aR%6;%QL+KO>;&VMze9Oh7krjy=3O6Z zJ$Vz}8%o^Jyk(xpnwe;ZZc|_*pY1;7t1~ClM{`+8h#2=+-WRYB z+!2Wbzfi`lk@6D3J16>OV5!`v!Y48#qT~CBNoRaBCSDs#zCbPJ0&2q-Tx%ISN@^RQ zA8bQ%H3#`SD!PKU)MuH~RxNEc($>wiwZmyEL|grgaiZsz$QtYog;}>oiWo~h`LG^n zM0q;ZGr*%|pKT#IwX$LibvIP&M0PE&V`s4IhL$3$UkAspBB$4MtY~=^U+VVt_FUYv z$exCNSJVHM%;lMD)PIKYC8~z+HLST}@Rof^XwzKJik3HOif08soPDhCM%Ezp%iCzX z(4m7@&;`?J$x5MvK4g~kvXiVs_nndG@7LiW`g7kA?Hq!3e#X0*b`TeC@SHo%ipXnoh2Qd|;4vhm>(fA40)*I0Hlt-;2lTv70 z?U2{Wx*p!nA*UVUGg?hvDD4Pdhk%n{FTQ;U*atl;TMhwxj{|!*KOz9^iv;_8E0PK9 z$1p#^{V4ZFggbNjUEsdM9aqZyJ`V1GF~U3UTvSV3*C#Hv=^%S)@vQi{*~i4Q1~_}@ zd^!jY<0+5Pw)j>mA3J|M!{1pp!aEv6fWFb$&j_}eo)9&&R~mlk!gew1>T%XpCb0b( zaVS$Rvm!xY`=Ehsesm?U%}>!WrF-6jieXTA=eAwvz~vHZS@x+Go5&k3w? z?HBa^Lf$V&4??axIX-Tjc50n$`<~>0y+?4KarEcZx%HDvmOeMFCtH)Y|9AC++gL-X z{ul44ImM-xuXaKGD)vj>+H&@B9@bzN{d$p&f~N;r{I5EH#^{{oXU#q?fL?`PMY_oA z>OTNX@TsT{l6rLe1F!UV>EQlZ``=hz5T2aHS#;hKYF5mYtxG=q8gu=v7U}hhopgCg zm-d#NQ|ZVulegQkk$oX&I!=Oad^MA1#q#Dv(AB>i%eyV|mxDGz$6oKkO!c?Xh1frq z^f@)Sx1_?Zshr=nk0us?I^4fVfuTE}rT8L#JNA;H`LJ$@QGvHoyPh=@%gbVJ*^zjg zx1^Mu>mKZ8z1YQ6YeKm&uNAzu;*;6Q{J9VzRm}?L8 zraeF(@~|ISsy%Qgy2AA@d|)#GH$(U+b=u72OoIcKFPd3X2;AoqFP#w$4Z?i3O&>;PWkkQnIz2@D zQJ25KgLjF)z;AolL+x{TOs^SpW?~1jMt+0TG2g5Cv%WNMlUK@^6X3>uryPEf{?3<2 zc;_JF$beV((7uUv8;LI1TlZJk_1W_-L>rSCOGR19$~5{oQ-QC=o13_eIPUcG$6|NG z-&sp;jVI-~F2SC%{zhwKaMktU0B23=i~!-V88~0X9=030(tEF6&b?8$B*dF^KEkeZ z6~}s5NBhwEBonW6U?*9Y4u?+xhuGchJ)s-3j}%_+BzF#2^r80!fyXZNKE7vCk^m!?=U!c{aWox9Ep)3ttBu z`q8-4>F4p(@yHJ0(2v%i``$=&xBLR{xogmzVdAboQ^Cox5-ea%bn3z?~Te)t1hUZ&TJ(|Jeo<)+G)Zq-9u7eH?b za&Eh~MEws8`1#9-bgY{li82;^h4`r^gu56^$GSO@UBmAABVE+~sw5Y*3qMa;Zu1uW z2yd7F?CNlc>n+2c&4}P@+-q4WHTST?tM=T*gL85CyNkP>wtjU;b8_{oouQHo=^y&8&)gjrUr__u49_&)OPJi9~=bIGxByhiZI z3GtoWY3SJ1ANpBuss78$IKM;lb#tP<1)L#3-^z*hFh`sJ*uG7dR=?`NT5B+MeVl2t z<(tOt%~|8`Ek#!!Wf3FbiCl^8sx#;F!0q;kYD#oAW<+9}Gb55Co@5X8uCnk}5+tGsEwH>TFXXysEJN zGvNvFaZivs0gAKSb~$|48wur$zC7X1omTi{z_ypxE6c zep@?*Kla0q)5op?;)neiiP5xa`e`V3>|VpixN7|^kp^sJvcu02+-P^Cxwtw|>ih)j zMqp)V)>)5|#h0e6!-f&o-|Oc5!6EwfZM;SM%rj45XRpR*+Lk%%hDH8wQIEm1Y#VE} zZq(%uZe!28Xw)N{nnTvIdgyyWaOI{_{HEJkUk3*3?c4MRtsiEa6~4))^}~h#I0}E! zBP|ZCA5Nilp0jEFT8GxFSPSX2u9}El_?9G}QrCceKh&}*{XY9s(ZZ8y_jA*}+iQoI z7#D`lx_N`#BCY%9Q(z~Vr1kIGUfQwS zz?M!Mx;_N2ixWqvHrU_JSNqBxao=yhraThg8RY$}NaDHdi27YZzkR#sL{w*SGWB@k zmepQLz1oQK!010PI?&iRF%&s*RaqoX|9!iCkrO}mN8 zpB9KDkVO-{*34IIKC#iY8y;j$f0Fp6LhObwv!-2plIT}^NBjd0UTr(D>H%euZ?Q_} zmDLB~i#g(pHm$_G;b$^!zBrs#>~|$^wQsWN#JwlqZB}#-V=!yQ!Sfd#Ja0(h?`JA} zX1^ODM&jLyjA7?Tcl;Q>@FM)t#k1in{^(-H@4s02Yj*z9z)E2BV|W4nn6)f~o)@*p zuxp0sdLL`8m)e0H=peoCTP6F+QBSRd1D?HyZ5Gv{18sb@gM~~7z!^Fk9GKly8);vEZvIBn5-GrVr9r{4;$^jm3 z&XLK@uW;vS=V1-IM>`o88+mNb&owq=*4d3al1&q_A^Ww?ptVl==*+nteGi{eTSdvV z4>>PPbKp0fL#DdUJ#E{qVkKK2Pz<8aliZ znOhYIMN(yk@sUE4m$E0h)d#Nz&+h@8nCXH{aA8C@?#q@cYgv77G**kH^4(?gjp>g%r?Sv_>Vkm5NqiTSy86g4>usL#pXav?D=SEBpKE+62x zK6q)M@Zgp>d>0!g;YFMws(bwA-an4KErK^M;TdXHw+E^75cGsLO+gml#y!DSIfaUu zgFg+chf9nPzh^>kc8z?SMr}WYpgtP*kAk(>htKs1bXbk;1pUsX-?{Xg z?a6K|Ca;cKFlQJ?Ne+I{+QR)?YOihHvY0xehrF|92C=*5e`uX)V=vSNJqZ>u=*g9@ z+gUe-*3|IN{ovE3Dd=Spdf6KGAU$SZnm#7QzuV{7#<27MN9ROt*+vUn&jQK&{o}*Y zdWT;W5p$q=x_OKdy>^jsTLgd2A!Z%@W&H*CMa0DSr0@&m?7|@X8)U#laBS>P=xCfL z+%%DO)(;OaE)FHLh*!@i|KfF9XE*#~3Ar2Y8nI)NbZ&vibn}B&LoJl z&ideA+84Qf+Wom_8Qc2#e`b8L)3`BiUg5#vc{@{ZFu2|f{Djyppk0GL}ll;*Nbg)!NgEW*1O;VIF=WLN@C5Sk{V)<4SeZexjy|Dq0_+&C9k{S$*cX=j0S9I zE3rLxQ#;~ua67f|z!t^H9)};^3J=tE_437Mt6ArZdA1jQZ87bmJJdE{tBW^VC7yEw z&&zhC{F!oSLpG!Z#L=FwPuRX|bH8G0ik@NL_Yz}TdAVJ;TDF?=b(S63@!6)dWvd~&qLB9Km0_(`MNpEcVJY!kIe76Fd zW{>BLrW&c6U(fn@kvI@NH{Pl(L z;?jligCES`=!Ao#e}X1~75Q+fI@#cS_O2Xh?kW0~XubP;Lwu(j{Le|@J#5eI{dvP! z+h0k|%y%2c4cou%$ERS`&j^3&6WB-(@sF>v;}kiC)^^D}P%+s@0p$u8cjSiayT_+#rL&U{@{e|>l@K56x{m@#~UwGoG| z`>>%^7aZD>McirOB&%dnp;b~1&U>J-J={Nm94O;iqr*3hGy9~2;P(S?-@Cl#>~5YN zK<9}d|FKaW(RbC34^Db*%j-OMqo=-P02&QIBYpf-13Tn#&(OruXi}uFal##=SL*&IWm> z;36whRWtEyM^QPtO1b#`Abfh@3#RsOez}3)0q9}rilVd1?aM(IQf-SjSO@Luhk4Zj zZ!dgE{oGGKKm6^$jQdwqpFNFFy!bjRa)$R6d*10=-tw39ExstayA`@y%5Q`Gl-$nr z`0ehy;HB($U0=9lwfLXw`@R}GS`B{9rQo(0-}uy}HM0_|*8|ixix<4HB?`^V^%RHa ztf+a3y?gX{y>+Gt-zB!6O`Mq%?wfdEOQq#8HOu7ZlpRL; zre5!3FN)14W18SWcJYcTJl}VKmJ4PF&%a2ISs5KXiWP$s`dV$gv)5|L6ZT`;d&UVl{2zSD2Zgzs0oSe{V>X9P^cRVaW^W z7F~}_H~C4T+4#x<;jTvphU0wK;Kb6lm{{8SJo^;B3$jiV&OUz9A z*5_|0CI?KLz;O@w!``D_F?Bn?V}+}}69`ukGm{=eo2c-Q!#3Ribod_MF6SX!D!ykiwTgtp!&_WP8oMYv!sD^IK zpgRZFv@a#&nsw#H7-SbsNzLOVlgANd-IUSaxf%EKbq-;x_2ERjni_~PlS|TMaw6VX z@Il+9yz8IeUF1{v=XZ%a-WQKCza=^LgAZjtxP{(b0PhjJ*lXK#_EFa(!EhPz&|G;f zTY$wsPha_fdcvZ!BFVf{+v^2K5%Uck{=MKjW69eK9{0iM&BsgN-Jidy{px$6pAO`h z;46YRmWVfw3gWlUC$@pDT2xDY_Nmk+tFFBC{eBlNXHLGD1=p8cxDp;*>zzI70dy`8 zt}dQ=@J!5sud}@U^U$vF^};RwHEZ&7w&cpsY0Sdez%1B?xv)h&*vJ|9)cy0u|C-Kk zsUSWtK06yey#rj1fxeu21NjH4xz2A6RgUBTQmgP~?2gV2_*>1MC1iqf8ng%W-*@M( zLGTdwr8j9!I&+`7KPJA?;VrT!JpA2j@Rx><+TedvJ%n!_1C|>;1(psMmh5^6@*ny0 zks~9BJrI+PjliZ1S;!pALX8@4hI%Z)ILJq^ZZc${->XG1mB0p?=oRp=EAhk2b17A zv~#erx30s7`rghV8TQs+YXkOgkX5UmJ1N5!nn_-oY@srffAa;q+}+!jxHV~P2g%a) z*Z{J98fRB03&{;qUW~E1W(Shl-~BGfcXJx6lZU~ta-+<5je%qgcr^Axa1_J_iT|ZK zIfwZ$buhqLX~H`6GO|gu8v9Ei8A9GipxG$+jjkbXf?SusRPD_HE+_skpN`e;!L<6n z-92{5bLj=%d7Lry80i%GtmjVA0@tI-abUhodkw(rwecWrB(R_J-8PgPLA>DHIQoNP z3wgA$gEn+s!T6MSXzab6LyWyA-uOA@>j%EM^3zX=k-zEn;;l{5kp3@a@6ghYQ;jbu zA74;2*B0049r(Hm?P)(_4VEHP83VXzoeM661L1=)U}Jv)8qaV4#h>19v)~mwh=Dr$ zpFP@g*RJvwS5=YO$p z5`E~Y*bL6KL6?XRy9|59daAay2EA5xdw%=ogZ*twxF>vyAD-gM67gKKMuH_~jntcc zwddI@2b+AXz2$?7>>4*8OT2Lov|d9_mi)ldtNh=3wBqp5%yvEA`-J2mym#IdYs*H~ z!v^Z=j_EHt-|P2VPQM4sPabH``HcNW>!5|(;6dQR;T1z{Q>){wL3Rc8SEj#-jfTxP z58Y}pG7ug&TsY8pw5MV9$<`ssYw99Adu{K%ox5HNo3nibx>p>!W7C3rI=5Se3#*YE z^F~rT;i`bi@6mUo+3OQQHjJT7UCXDVzmhllyDn<g!KIX?q@Rzd+mAiKd<;X9L}_ zk+yZc7&+8P+fB5MJ~-3E#}|YTa*oUQ7T7Ut4#gTjZ5|B%Z_@e*R4Sg(%sO>qAEoUV z09OP$Ss41bEpiJut0e}3eph612IViTMIG=!Vhe{FfT#aaYf*^n9^Q|Fw@5|6-bu}l z#vkO{3491$w_&^0;SW94+1pxW6&)A^?9nRZ1hiq~`7P8^dg1-HGISl~21ILR%LVq- z5?hGyEJ%D|G&;UyPY=&@&pA`pi8U-4Zfyg1m8*em4KNXFIK*D0nX7?qEq@gc5RHq+ zDmOIFcoK|D>*8hBMRW-BGvDliSQQ=Q{65Uy(HOZAilw~Qn4cko|53UJG8h_RulOW8 z{t)tzajI@WeAo%By-TpwFU2=-8F?bg7ahhPpyBAlC!!CZ6poixSH^c1RK^)cg7L&x zjtFbNX9Al&zH%fv+n)>nb$y}z9_#!OpC9z+Zol!XtCKsKkN(S;7hq7#F;<&rM^_9D zM;`(|75VlNU@jvTAH576pZ8@e-lCU z_ZqEJi6;dQguth030ft_G|rCQ$-GHsEg$0aMNQ^ZUkhcMS%)IT++;iHchtn+{I%~L z9wOWA&Y+V&n2Q(Wy7xgvvE9^!ukmKiNoB9Ka@=)q4mD^(vV%JQ!Hz1wpL=oEn{4ju zzxn}snIm66sm(v-Zga17_%!Fdd0(6V^eJtM$JU_N)9F?|ah>xiFnGAy-W5fD?dpMFFIp2p1?bnfB;Qf;wu3Vl_5%L(Fv>YB+-YokjFbUtq z3fA?}{>@sap8CBt%CE~huLT}-q{T{39Z?tV0zV1xH+97Ha2L2sfKTCa>WFD!lcR+! zlrDWSbJF#uRauSvJ0e+4-7f2yDYkH#Xd&N!cun{S{A3z!_Q`;gv*zthM?=?+)% zt+~e;%2D#hbq|?2T)15}vL?Koczi#2eFd9zdBNeQ_u+>xM-SL!h3+VBzprzjRlINq zJbNRxW~EOwBR5C${XY7L!k4Mn^laf<_jX=;U%Syon)y~|o$TXGX6Rq-JX<{Jp3Zx& zf3#0+HSqmL&K=uc7U0+v?XM_m*W4efInpK^*93)IWHNQ+BquHLiNry2us` zYTM|EwfRQJlrA`%aZVxzwH#gWMcOR3%kARp=3KBp->KX57VBjob&C{_9pu(2;8F=7g^Cvq`n%va{e*J#!@ajSe?{Y& zfN!$+U;bzPsE$)=JX3S@!@c$%UqAMl|D*AE{Zyg*)XtccE)dzuZqWb*L%5+AirY#j}p&Fpf|?gVXC+H?N^O~@4?bH6QHK}%GFDPC%Pkt)K za4lmH|Jn!aH@@D_8RE{^*W+gyDqK`B&X4<3@+PXi5Yoxvg+`9Go@V5T_SxM{O!sc$ zVH>RcJ+;KdyqKM6%(JKGsQ%YZ_Q8DA|8$JDOYtjCXTIc<@c8Dj`beO6D3+-HrH@Ds zDRy`X{(0p(O9yP>`F3>l%kWF;SswVGhON90pQXjU_kh#O>EEkdC+1agt*7`MWlTTk zuYng`MEc4U_SZ$wN4hx6#naCwQg_h5-^s+A_!b_2u;y~7_9XT+eybt&ZPYyEJkl^U zxosKpu#ms|SjTG}nfC1bK@W6p{`C{cq9SA4Zo;;m|HS>Bx)yyPLo2tp1{R?|%+y{$ z`R)btDgTPUZWM9C=Fi)4_Oy0LF8yM>U7fYR_NHqxV;&w{QFIQo$JMQad4&t-V&Ib< zJDL9eH{m^WVHLN8^`niyZKZ;T)vzITSU0rJKSEIh0Bw(U^DWJz6K!gu7!u~2ELwG zhS)v)_SahU%g|C}rRpv!cWgGlJsH}MpG0zIJG`=-{IG03`4;i(d9>S2AG`i=roD^b zoAU#&_t4Ix$o!Z1E&2O0zx(G}iwf*z4{zjI6@5%|`;#w5eQ2+(7xP;GfJ5JxaL@SP zgU)`Hi6iBo%iOPmT-v6Xx@5WhB8ta16}#se_8(6i?u2j@8@og}-;5q_Y>m7uK<{j#u=y?R*9z7HOJ_Fuy96mm3q%^Z07at+V9bOl~CXmeC0sR!98{U2CgPr3h zKVfvoweTh4Qg__VdKB);b*=UIVqnn@`0^FNP=(%9&068x zJ+#%-5(S@LJp*!Es6jE>{zv9XH4KzftTxqej5!eu+AkKDyabOgAUo=Y7OaS3L$0M> zA@PYV%D1}sFa76SyrALm?8h&5>JVHt+4U*t3}1&A zg#J0(Pr(}2evn{+(TB_BvlU!M7Z0|t`Q8U@5sgPQ06yX)@kK>W<2*s?%nej5%I|Y= z+VFUT^UU+Ty3br0@W=a|HF5#t@N8B6HS1-kv!A@g>DT z>-f&4qjb+E2MByD10Mj*rN!?Rh#!YnJ09+CuDKzsKMsid-ZANe+CtFx;pb&aA`yRx9lB z3ANRIjibkjf3BfDU5|rjpr>Zz_F#=$*L$>!ThX=j*>l0KYxJ+9iD!97oXSg=596 zjlajkGd!UNp5X8p`7)Zn_m9O#+Pcx-@1(6P9H#ob5&TA$&oJ~Gqu$d$!Iw)pn>U0^ z=vjYdxb%2r2(-H&88YC32RrXO?#aF?&VZ_?|I!m3yRnyNB|N*AXQhD><9lE)Y-Rr| z&RWf;t;q6=!^&B^82feO!Bg!`(0JFV;;?vu_QW{r+1ZmCd+3UA6LJjMIkT32<`Oe` zo|p-_ZwtjQYLR0bh?(em2YjIhIX3&Mz#{RB*h*r@Gk^n~%~3DVP%f65KKW4WuhH|QGt?n6KS}3=jjQ2o1BlHup2#LGkU^u^aR>4 zc`vl_>~i#k-RKEwx1715ojaDJC+NBiS{kIb&=acp?bj22`>Xfc>WNoH8bisQlDFtP z#!t)jI^_QY@J-Ket7kFRhw*C}*=h0(3=eBzZIym#)@Z9&LqRY)$q)b}q(7+s-%j@cr#>-E?$e!~eJQjrji~8W-_!?Hfw?{q538u+Pk9Jk z1-dU^v-;r%V6GY(I`jZE7INz=B-jrb(B8=(onX&#W2V*GuS48gdP%hlllFlwh7VNJ z*V*({Rz$2xc!8Gc@v$@$+kHfPGlE0RK9+j-yL!HB=DT{n8_Rd_kZ=Rv`Elm|?aAzK zYhH^&$yVkcwJY_{v&Tt#L3XF}A2gSF_t&5|<+0xc{e!jg!(m6-YVoPYStro&p~%y# zA9nh3b4ODA)V+3fzgceI{`|VIsa==ekER;x+KVQhEO{i^8e{IYcTsztCA(SM$?lV= zVOwFDJz%mu66n!|_k=2^5yM#xOs^t8wAOb0h!_!h#?s?2BX2vP@ibd@h`F%Jkm+u` zs|)^g;CXOU2XD)w*?e&P3V9f!gFJA&gLrO!D0Ii_b0#d>L2gy)J?w>)USAqY#^H?# z^kwCQZ-i$HmK%UYdk)wa%Z&JBsyo(_Rnl^>SbJ7=Ou} zjUJ-?)CC8on>O<(p+h_13}ocXu;}M>Gc3-4e#2wo9>jrn7$4 zM=?3i#UI{t-@U-S%d+zT8ENdn$J5i;DNQQmGs#1+pl445n>kJ*z}(EMS48Y*VD%Z z^f87$!~>OgDZNy9P+tMgeG=U}Ysx#Tp|JgZz9}uk|L5{;@#(woP4nqo_3KJZJ)v}d zvtl9TCmw05V2`raPl9>!#x;+epC)K)EoZcrE-9zm4vxhM#Ep;RPmFnVb&Q63h>aZy1iJLPcs=!+<@(DjaI@?nTu1l43jE)u&UD2*=G1D&l ze#B?%cG5RIQND87;}?U!jqLdo&B0e@Hp9!NjX2`i@QM=}eag+@fk*lA8_BwM=+miR z?tjn!JA01OG?6)X{`K`Fdy_mpDCd4^=qy8CdSece_dq;*0Au!egab>aO#HsuXI_t$ zPh4X5Yp3P0eEZ;Po9BPg8uVywH+zxSiq;Mew@14*AyT|9gGL<~HsI5285(St|3W#* z@35|v7q_g#dVLem_Muzd%lMWp4ZJS@C%)iC)J&ea>}!G7C7YM!r|)a8*|I-zCUOXU z8o#Iq(>h>c{TwXs4Ulh=#eZ|aH6N|?pGftco{uQ? zc+~d;?wmxaBcS&E^HS~W`_FFQ4qbxZI zRp0Js3z+j!tQmNLkrfArA}j9NYMFC?zF=>C9bX)>BjEVWT0MJ7YcfvFU-`>6;457E zUX?AMnfIOQqdZ6MP|Y*WS$S({CjmdsciZvoakcY$x}AedhZg5*XG_f=@N*HbeNgQH zpTC{C_}*glSIjz{LfwUio2pID)lS+S4Saew8a}iZILi-~+X3L@y)AQY^3LpWY+TLt z3E-IkgA+e;{i!;?*6&aC>XF4XKF-yXEf#xdfc&1VH67IRduU)dwm#47r;r^TN2i>F z-$wdYJ-ogYTj(wLxa4#UyD5asdgk;G+IA3|mR{z`MH7pKpLumxP5aMJu^UZ)_|DYd z!721t5{^|U)==6m-<5ROCG?k|KgE#ckCMNniGHtV{TaK>?e}5&T};0*=3hP(?_I&+ z$v9%ON$rvKe8taezVDxej`H2DiMGP9xqf_-ooFixC)P`MacnK^uYMjlx`E>b9~|cF zGUjAE@Js@pF7P1xQToci0S{|xn{+zaWP-!1nWNe$T_fP_^4p(048MKT*6Vp+ylsuC zS1{D>4iI->ta;Gco$el!bx{sZ}Q`P%Lc#N*LCB& z+RI?-!{!sKTfNuW7a}}J#%vbrK zjz7luriQ=nHzrqJ{KEP6J6jFkox!+GTaF!c*4~fWEb?9rf1D9=V)48axth7fo_dd% zQx&ln#hjwhW{h|8SWmt4sht&`8a|(~WaH%MYi|#jgEM_wJa$@Ga_y~a@C8*{_FGdz z$xHD4M`qD4G^le?$Lex%!8WJ)QIn zmzJfI&d8?c7AIf&rOD)Xv}EN=x1oz5Pu~5wzYSixE!O7Lko0829O(?)lYG|STKMQs z$R9C&r!vXp>hM1I+iu^ts!4vWVtwwn`nwxGy+Plyr>o;+^1AbD!q1H)ewr1VTNpUf zX8KzmN`{b&qQh$Z>5?rsjwK!nt+R#=-1X4YV?{^Ao1W^Tk7?``-PJt6mhP|E=VIhT z9_7Ln3?Sn}Hr@#-Z6b^Sj{`)vTLf z54eroc-~z%*^!rC&GmI-;P)C6dnnh8;Tz~|?F9G)@J=N^!h@%f`ZIY$^HvD2o=!Iv z-dE4J75HmwSy#%9k6Z)2vi|4S_}CH)H6pK=G7Y zk%?TdX6!ppHnmWQ*921W8jE<1bOrTc`eF@6;5VuD-;W<{h3+})ruR1=5f@}n-7Nw3 z+F9;jd}}LIBhm_&a(+Ss=OqLNBR^PYYqI9yA>b7MkS<3u|I9Ah-DEZ2vFpOn8+9)% zGchjB(ME8O?o3S;$rQ`zGy1FdHSZW7Ir}Vd!Gfxu((M`n{ zSj(|toDonPtZdd9l-BunbZ4IZed>Cf^)Pf=_+rjsTMYc$p`9hNty{n!etP-4{WNq3 z^+gN~U64gX?6LU21w69$-_Hg6S{0v%}3oX5> zHlQVRXT!@p+B<_eQ0?p*<|%p;?Q`a%#-=!PY{-x>Izg*teaVhC2JL!pT&+{X7qccl z%eZR2aphPWk9y-`ZDfp#HIgwd>)7LJJI1&U6W?27^35vkFG9EYT@IF81ME4hG40`! z4^#M0ux?uh6@<0+yxLI9ShtJSE_nydz~;46c8qqSw4?d1URr3{@$9>5=I$o7Q-mL$ zxih&+E%_!_$^YAt)mHmR*1P0}Wcum+*4pr5UcYSNSy3ptl5tt?Kk0Yg`AHLvO*$f_ zk3`^6*3uf2pK#X~*`p|35Bq@ivPyiYkv*+y-_ZBj4t=X$pF``-568p{p;PU7{a3!P zz`mCbA-hnyb4!SmTkih)=U$^WHCb&ylgtSwkMKzUkuX8ED(XmHvAA zFdJ7h{5#Tng$wC|(l!rx z^z}cKq<&OTT{qlj`dzC)tZ3&guN*@-ih5N8;GT{*D*2K2dzYHtjj7DgAqM&N8L@E1oWH{tiI zhj)v%J(;rQr|-LPJHCRn?&e-gXUUG`|CpQ*#`6*9;Tpf1YEb%P`9Hom{A+hy-u&** z@;3{AJ<_W*9?m(6J(SP6K!M8Zimj)5Sr>Y?5B|Id{@h^&_UyB)1C6YwomODQ9OAA! zt>B&@`)t=(!4>jndgD@#xyg^${FH{0w=+J)ExV!D9?>##L-eF^M$miX>?Lc&zKpM| z4NC^c$qQKu|K88p@)N1CJCPc@<$>UeefVj;K7>!nD9wF6?Ps^!A^fkHn!>;Aa?Zp| zeQ$72-1*BX+^6l#4EhAd%xi}a4TOIwZ=r<0h97xzw4QpYsroeq;RE16^R&`GPwPXx zQ%kPgRC47m=ABTo%}0aYd`$!oetMUEPmb*0RsZEg#v8%Tman=V-?scl4aD4saNnDg zjPWuq!Qbe@|6joA!G}Ww_%i*^^0(H&j~yP6*Z$iNJRXqteX6}P)gJGq{EegU z^!%-v{gtM8x%|&Jqvx$LHlJr#R38@aIE^!cGUmn2gHhi)Z#sL;==?0>du?=l(hbBp zJfC>4Z*DC9dGK7qy714B;8DFLt*bKf?d2o(^QSMpp2?r`J^{v}95ANpExCU4Pph|t zEeCw*^Cb;@#QWm#v97CS3s~C{(%HE#9uo==;LM3ZLs_5W*_(T2LHKRP5h`?~H75_@n#_1??m0M|!Kj{bnPdYE$#4{FT){9`4u_!S<4) z=FY3#=J3In$or8`XE%SZ{Dk?uI>&q}-`!br&U{w?B|V?H_+fVZ&R=f|J80%uVnWI- z*{7H@y3APOY=!*Sb%5)F4(em^pL392-bg%7IF*hgAFrp=y}FHj25^(jA9r&w_DcN7`MF3=i+-Sx@s6yXTP;sT*+;c>wZ#>D(UW@CVw*m~-Vv+v9Ix zJ)MRgJ4*D&z7gJu$EmZy+?C1a#eRmLHu6p>e#GW-`?L>{*}T(@URUsgJn8RyJ^zIG zf#m6^f3OZV+*y}wCVxTqMhD@0$csGcHtJdZokd1}yp#Nq`cYGpfyn>qEbn`=Z%3e` z51qO7&YfSfn~E&cwrm6J^>cK;p|LJGpEhM5=(@hKDETHeH5@p{*yt3DFVOz0Z<<`q zt){KUDRx7ywiebUXZqV(Sd@HT^=y<6Uq9IFrMP+g2W|3u(Em($c4g`FaP- zuOC0OvXJx392ict30E?nX-5>Dz{ijvni0GsR#*6TX#!J4z293JdTa*$8A=e(@= zX=rP}vMRlM(eWlWy0_*6XaC>79OE70ds}M$^aVRkoa?G%yu-f7)*5%;W8E>{c}{Uc zcfY|u_}(#VhVdbf&W!<+;vR-ZeqNWnS-9gK{KC-9oSzpZ&t$Cr^&}iL+)|sIC!BbE z;Fe%=Y_9iit4+@Gzjs?OIm(AS|5!ad4fDb3-4pKoV;*pfcl=`x_}=l4S-HvHnCES; zOP&pUx+j_!9_P4j%sWY$8F z^K9txb}ziTi?hbevkpBgah{bOZ+ER9;M|Ys{y^vc@U!f$)q|Y-oYC6#$YAIGkIv-& zab`^^pDW4?(Z@ZXx{BlIRV4mp0FGqIPCEq1Jo^ws@ zEJ|*!r(fi>BfCo5nKR-vmG-h-tN~*G$bZ9UJRegK-Mf?aDv(L+-`UdmVv&u_ryK(F zT@<@Ve$a36y<-1C_j}LJtXR}@e6Jh?v;U{HG{^T%Tj%L}aPNM<#mfU#|69}jw>E~# zz3*AOmA2_0xc|v~|J|J5uXDfO$r@|C{KTWbr{9Y+;Wzy^3b%|;Iv}*Rw_$gk$yxY5 z?MX)KSt@7Y(NdGMp!eqNE=pbjo}uF{KDoBH;kCMC3*TxT>b?5cQao;pn`mV}4u38%MpA!5hszt#95v=<&1@eD7$?>QnqmaeQ~}?w#{SU2-aY z>z-;pYW$6F6eUB-F%K2kyl>8}kUyb@do|pX-6{WJi*iV>v^M&pOpdvj(7lg;Q%R%n==_u;-5r{JTVd&}j|UJOl9JK(-u__cSH zS$5rmYY$Ju?r12(f7o1P_v5PpXY!rcyE!}Hiw7Ltv;#kPGjJN1*W`sM z&HvunuylLh4y&UN8I=qW`|3DV>#xXO$ve#FmU64i(4R+h4WeCq6Vfj~U~fdj_G!sp z`q90Ve#u(Zv-<6Yq95{(N2Td!VGjDasW$nBVD;$drl8|<4i*}pvwQ-l-IZ+nJhclf z{(1JJcaXZ_pAo);s?9JVqrG8AwfCpLr9EO6!!z0&dQ^Ka z9;>}9|1|gqzQMLddy!$-9wx4VeZam$*#|$pNwz7!vHPpp|KrivV%A+PYw1d8!o*~u z%{6KZIVfA!Z^vmqHvms|{awxH{w#RX{oiW(|33W-u4a=zG|B$mVabYHw+8PI7+54L z46g=0^4o@w6P@#0be_kaiPG-`$tSnk>&vxfj>gknz$JhAvFNo-Yt0&DKSRH2XHBVM zapR7{_YKFu_eA4AO8dVhVeup0e zzuEl7`M%7)+-=V?GDqg4JtsQPt<&7dJWD4tI?WA!orZRyed%Neckn%SiKkQfb+WJX zy>zm;bfUMX_;e!g`=+gtPx$@{|Mz1qJoiZbF?3%3p{qPTV z;Rku(r(qju}jm>XgekteJ@T*c6)5DD!+nbi%Mmvq*DA$^v;EoL(?QOi@p$UVd-)FV+ zdun5R0*+3~funfv&aLq`vf6pWvTsp4$KcWV>2b9-zB1fLqbXdIi$2DlLmQuj>;Ffr z-H+>^e$7WmuerE>Esg6dY0qcNXVB3;+H!6A*2dqYY6;?Yio433)5}` z6K!8)=hI$8dcC#EF7wvgzq>G*_2$wNw3rD~{W$wCoU!4~T~3&mXTenGhiRt^)6O(Z z`)JP(lOInv=YYx3_jW^W10tKj*Yy-Uu2Dq z?~Ol1F&)LZuwS<{;BO_zG5Jrlsr$0+jbEe)-4ni`cjn-Ob@W0f<|Vyw?YEO{+kCl3 zetS`8wtqY%tuG&$1-+Yi3w-lx>kh+Ph;uuQW#++^ z%Uc?jJ9PDP+BI^SXOhe1+NWNY^0jT5v)rStv>h`5+Pcwa&)v&eYX0*MW5nup&VcIn zEhhfFENhQP6nlrWY?rg)3(5nyn|v*NN}P*Y z>eMe_Jj(OYIlHQxsoEVeav-iDU$6$8sYbyv+8wL?EyVUM^0kYHTC2eSHq{5%_=D>3 zMsV3f9z+j)JNVJqRli4j%L`4t)X3T32{;^od*<9|zWjKKp_2t}pL1CCWiEP+eKh!U zm75nKze+w%l@Mm);&|@4Unte7H_vj~{FQYFn3}uGxDWsNlMOls#Jh+tk@3;9NEIb`}{QVWgjYk$un+v<1&I{R<9g zMzwOcsb11}Xh?mpF@BPh?61;SSiVi>SS-n5cEvmKhi!=iGfGn6kR&)`rA}3F`Zwl zzNQbg&ZFIJz2p!fJBRBGYW1OeJrk?J9;&1hP7n)T-jv9=eo#k(mt22{A8PSgZWq2sm9Zx1;AMx7-|;}z2{-oM0avv zwZ4nnzxq!fw)KGf9{T8M63rl=7>CY?*P3379#ej>)ZRv$QSsPW4nC+Ih~Mrado6QO zemCb|y}|fv**9YRS0~ud|Ha97EOKI2t*U(lu2c2qhBKbTEVtg=Yfinn2r&Z7`l20e zVr*}~4{C{z;ivIx%?aOLT(0Le$6hK#4=JE6U5{6-7W5*I7IM*8+&cWz`G>#pM)ARi zIw$4S_bW8U{1J?}sKEAzf5 z_q;D~=RFsUT8Dq6ZWa2pIm@RTn%)I(h_GHn7afuZJE^}=Vm-B{kUfuO>@OW*Jr$VX z?4@{s{35-F{0PrRrtTolQjSc`3*XZ@`kqJo;JFLy8B2c?wGW$y;kT_$R*U}-ThW?~ z4m=@j(bj)nLmYy-f#udj{E)-K^*Zl!?nJwM5V2Nr;Jtl&msMxg^xRF23_m|IzEI8v z17`th^9AsaE=F#ZcMP*fJ29iZjkBgbJC!;775MLO8cs~N`sn?Gf^Ecb!O?0Zf_8xY zoa{LO4yU&0#7}`ECfcl`CiQLXI|_!_7cV^W+vUUkP2?~&oy7kUVSLQ;3E_|ZxM8&PN}hYlo+Gm!3?{-YMa?{$d$BzrX2Z`a31u&$Zs|F8vzMzs__09>nj#;kRzFk`3^j z?l(fu7TtSa=kfvVrj}d-?RQ^YTe*+(fYvg{Mi&SUGiPSWc5u#9qfV9Yw|Jg+U+db@ z5zrg5=1eqyEV=YrAM>bM8ovnG>(DW^5971QrB7<}XS5kro3DJ{Ugy>+`z&on;ptJ< z@>te#A!~UYYk3oEc>}RVt!2ppVwX=} z#=F$Z)o=OlxK1XZlVu~Ph6`Limf}C)P59M*lXv*0hwE|T&m#ii!jl84Ewg2#HOyXS zu_qS3;^`IIXY5}i^Q`>)HWDk{NUU_)f_aB8CP#99xz*a!e4(vcf+6O*5xr>_u~O}C z)4pWsWr;ZZlo*rtdTG4tSi^JB=Zt<(_BlHiJU-k}s+bIGxHjLe=lyD((MN1md9b{< zrN+EBG~8_R>2x+rzWvYMd&Gz}_Qhq?P|Vt26K1^1r)nM}c=Fr-!>_NA!z^9NVqcx7 z8!P93n;W;3ZmfS^Jm_A==lADn?`iEyYV$l&9j+U}m@e~b(YiUE(!Yl|`q*yvCz(Em z9J_way(a#Zu1} z(^!kU*aNqb z>#nn{u|FFcjh+duqFbpZr|K16M4R<&aFpG40`n1JE=^81?;4wn zcU7}OwVZ#o?Sr-+`j33aS@#Rj+wQ?8h&P9lj}hZ9r)FHV8TeU8=%VOrI?uDTee$dC zw~0@9XPQQ7L;h_29Sw{>;#=hnMp%1gH(1G#i8l|nzjR2t0XXV7&E~J+HS)_b&*#Q! zfe&7spbhl8;SbSIja_gz z2<{oq*hSyp5X@YUE~1S_V&?R@=2XQzr`R8`CzCNV_KJ+LtBrW0BabfSd;P9p%&LPd z-@Jd0xBm7>+v%^d@BV!7sxcBf@1otvY_5?b48@Le%{nB%%ZW({R{412^b@@XTDclL zpAVj~m%65el9CS>YWzGar(f^6>VtUijA;vm1h@@L*^-27f;m9VdxR zdvxr;e6Ib2)Lfil<|0bpu`@$v&NJX=tqA@EZD@@d_|a<({B@b|Tc5-OJUQXY%X7Y! zDKGz!!+(3I#i>uf-}u~4O6@V4wz@iO>Rmz~l9|&thr;{eNxPuG{wC_1H&NfbsW{wQ zYbCo`3qA0SNDDUPumF03Q%666zg0E&3ZtC8052&;4-}o{m4zzT1+DX1Iip1OcquvP zpaEAerB z(f$JQuIzi0xu{`Nyl{{49&{Hf7_R`TXw!@~wTx`grb+(e`Yb0>z$_JW=Ui9&hw7zO!c6HRy5MV*i_~_60Fo7pA9)8Ul{pi=3I;qjW zXR;MT+bwJjZ|E&_8W`9oiD@c=deV(Y_$& zE*HK^vgildwaQN;UK@XM+vsy~B6>;rZ?8Ste=EDZpL0>~GZg z8u9-&LSwQ$MB6dm4NT+MhnZq*zm0h=CuaCuEnPOq%F@MXMi<{U-jDHhf=HBxAPo$6UZXFI?S65lv zqR2`4G&N6+%#D1bMwX+CzhCxo+u{qXr=&~i`P|~^;TUT}?=?`9ya`*Sp0%#Imd+^q zv3rwrtx#tK-3DH1bZ*)F#+N+{n30nYocOWMf;KtX@Xc*{E;%fJf@q*-&~)RE_U@}K z<|E-~WD@OEgbWCnd#f#;RvGs3eX4_V2(XR=ma<63#n%_rG&pbP1-($%1gy`GL5 zU+(BJTgkK0Z|Rq!2jNQZDX(P%`k~SHUc<&%>FD5kU-v{mUGDv{qlib}Y$fx_hb+K9 z9k0SSGN?Ele+WAU-Cymwev@;)&-cc+f(;-WC*QF%On-BcEf4a1EU*+bGcT;Y$c*aB z4)l+2PY5L+2KOEfCcsm3nKLG@7QK8iOZdJV-^AiER&vQ$_7U^mozP_hSeDU-VDW1F zT+8*psXzS2^Qc>*cb85E=E?L;ztOtt%IbXf{tvs-*kTiFO$|CjCyn>igayM=XkqE9 z8s;NS3$j(by_$18dT`s@2``Nexf0s34qX!B><;EFL>rp-YW{w|z*+@OnVMAC3bcbx zfb5H2!y1I=bJev}-%ie}b2 zJW9MOWb&F%uy?%!A38t9hxU5*V4}sLx0ArPev1Yod!QL;u0uAJ{Qhn91AmGG?{9vQ z_WS$j=iKf+4lgSJZ$-4F>v7CCYX|=|W9?_28P`0EJ?^Z5jm@L%_?-^UHt@|6ct$h0 zGcnlJ(2w?Z)DE-fQhU4<9Ia(N7m&MRjlh8Go{r&mFFM3Vbcm8bDEX~`WB-=J=gVCluQofz!&8{cI5Z)?m0)hW zMqL@+fzA*E*4gL~OOR`-9UGtu5Jsxaqx*5oZH^?tx&gGM+`8+riU2wKxPX*`TP}l5| z@z%^@@LBQ{dx1-=L%rxHI>%Q&j?J9o+xzG}ojQMZF?iWr%=tH*LsQSQeQx}Lcb+XK z{xE^~gE^;`_qvh$%ZMv&Y$+_;uge&fWfIRBUsdi{)*?zXX1>Zl=wU6A0MYSs*}CU zZLw8+Uk`J?`Q`p?-IoE^Zp9UmNiHpP?FO#P80Xd1m6v1h$fKZ;YR$2OVOFd+f|Dx{s=s_7Fh_bl`8It zK3-<{RG{5ryv@=fYV}?yY3f1pTf8K~b(#2>%YQBTl-TEU?c3;yJD~??G5RL_6kZx6 zZq|5m&>mCR+*$JxHr-D4n)vhq)~?xW@)PnKyuBu)(F>%@eD?aHU}`Y!VQ z&iDNe@VgXyp{g0*Od~j)&%7?o(!cR1$?jWsvtuj0_+i@iv-s!P$4)*{+P*X~{qy1d z#3$n8t>n};&RC$n!1J6nDS5e+*w})6$a(3Ou?pyOJYzf!eS~kG zV~y8@(8c&G-R4#Feeu+_JS*e+C9V}usG;td^dN$+GffWSFyP=F*+5_U5F2O&cq~Of zC{-NmeEY}j6^xC@)GgM@-&#ulqo7k@k?vIho#>u?8s2^RiSy7A$6unk8%Epy{XAZMxUf0nDziRZ^lEHF^s?`NHLyy)-zdC9dz988ALH;H**iuT zAr5V5F4oP`)~<+qPL zoPY-`VI4)z1~%wP@gSXZ7{gA>C!b6;Zk9kdkyGGz?9mkcUGg*Md`6vxxR!6FKh>b8 zL~6AT^Bo=P6rG1U(mrkuwHj-|6Z}JPd$xdR{T5&?!>(Baog|EmFK7<{=U7*#@@k9p zRE3hiW&ZEJecs_~`9{~{u_5+yPh(X5bdO$srTu33F7D4kFNa#3`YK`0t9-8|v%ZSS zC)!z9X=0&6khRQh3-hP7m_XO-x&=SY&8#Qp@I-2U$VQbdt2vY1_#n7{FP@)qZs|N| z`6F_UI*lO^@`MO$%lJzEDwH`kywY{V>B%qTTa2|A!-6MbD*{JL-K6@ONr2NnYl zZ9F^n{s%k9zT?0Vh0o-lMLW*~7KQjNol>#L0JNfZy54%Qv+K!?ePbW}b>Fh%-ZAY| zpTHsEz5?p)$r@b-8o)a8!PVTPN9b@X^H9 zAzMIpG4FAIi}t>}1i7wapZc$a8cwmSO5xv@q^R?1)6LHu3UiaUw#-3$F0e@%SO7di6N z^AR~`0Em{0qzhfcxEN!s1^jXTaSycJgIwxa&)>38xEH;==T5En(srEz9Tm@j$HW#A zOTib`!`|ZJp&ftR&mP@zf#N+HLppz0c7Wu(@@)&+=YQvewg_@LT19`gtXbuKyJxbN zy`y*{ZO>2H(R(cy4_^iks?8e(=h)G$mUV*t9(C7x;3dkRV~)3^^5>BKlBH9b-vqyn z9lbndN2hQYTful4cb@14eN<<)svVD363ZQ0Q6B%fYKv=~2S(c_mU;+XC$wO~;r+-7 zeCl@ZWsJ+@7U!EWD`zkfENK_a%1ep0Kri?SS5r@H(tG_g6Ue6?d=16$ zlowEI4joVUx{kH=()<1AT(V%n;RECnl#RE-KNEj1VodJ&C}W9dMT+Q)^HGRT8lStT zZ%u@M`1hwqE2v96!8){uaacxYKhM5{xhD61Z~1$J?Hc!tBIzZT>{N1n9U1B7Hh@3L z?2LPEEKxedXu*QKQBHcU{ovuOeDo;v-^CnuBR}L5Nidgj=1z1TQv8zK1Jw>uKB(%a zV^?pHU9GdZlpC`|buDflYQOlRwW=Dwb_5xe2j7YzBhV zhDYaLV(dP@^_G;s2)YxU-v`cByV=k=@<#NT;uUAp&lG6oG-96cqg-?@Jw*0H9&~;u zZRxs#c)om{vPZ@9K1zCdEneQghu_Sce{)W0Dfj`;FW#8Ov#DuX8cJ^V$#`%6OOQkU zc#hH4z=857q%p1ZjY+zU<@@K2$2pJU zX!{|*8M}eFp!8bg_qGUhZsKl?3ww(C7emasdsXBZ?Z5|=&UwjipSbgV#q`e?e4j_p z2?fzjX{Q;vso0zHu1*mj;J2}Txi2s+47L+P z?%LXtgx7#q*Y-7dUF_Pv?-76ZY~M0N_sWL@XBA%T%EcGgW*->sJ8RIn@9EM0d(r{D zy&@O-aQg(fP2m$+>*o)$cLLy2<1}L&!Wf4Mm!agBpy6t8}_aZmBC!MDX z|7=J8;h&1H3^aa{{5@6V<=3*t&}FFi8`x7}IrV ztou9ZS8eNEBLf(74gPs*j_OQ;1J{A8wF~MmsG_#KYVA35>*68BgO7Ec8QUDnnjO!7 z!S1JvpWcw>BR}@7IpNbguVg=Z?#DyY=amFlXFKrGmp6wh7b_QLzLosSaO#B50?(4Q z^Pv&mX*`a-Q2f?DsX6F87vtBJo-d!Je3f1B`R+RAhq*8^*}q?EeZYSDF#ZPQfno5#>)tpVqfJ`!4YEbLisH)mEkVZ9U)Ot1|66@VaY^_doI4 z9Z$#|kH5b4p`deK$HbYcryrdWY&3;CfM`0iL|SNHR6gm3%Zv$;j1>i^>B424fTDlkaGFdyA8MF1~AQj9|XmkHi`}bjjts%N{?C2mcu3 zDM*cHDdSlNTz7wl@n{@fjAI_}Z=#*$InLnD9*6AV0#|?b?0j&Syo1~bo&T+zKIs!? zP2wkzJ#5B}ZmMygMht2$bfM>i>EDcXXYR3TuCmYLSPZP#m7jWkx-&=lW{#9!Vb1$t ze(OKs{B*&j{|&5b*)HO32EO2MvkxG9E|ib58k&C#Ua0oRO|e>cQG@J-1@kT#+h26P z&Q4txze+66|dp;o9C0*!j-FG@Z zpmOl-*(%=sv5$cNn;iU$w-*fM9C-Bl{AQ~%0WT>WS`tpcqr2cCQQ%08uQvDiz`q&a z>E~E8$B|FJd1zq8qvYi5$9CUD9B#i0}ATq=j?amOZN5uOZr#)J4&5)H_`6$w;$--eEQ?g{t@~kR(HpQS06C3 zyD00~^iyW~F?*~`Kj`sKdi|JvXRHxlKgy?`|K$Ch^B;fGv|G)&G{lten8rN=|0wOd zKo&5D{0MO`-?ys-`z*;f$Hx$2f3vl;*j|f`^~^TTkjGbQ?j3gS899ay z`ky>&WbF#>(hu`xH>cVzm`rS$ww0q$N}j+b)}4{ND+Zb~IYc*BfSAv%q3;!B?M&ZlX_&KhwU^bcNEIqj$Fh|vBOv@d%{?fY?72hKL1et&1tk2f0J?BHC+P2gty z+xK@0SJhk-yRF>5inD`;STk1)KGIeWj}9>w`HQy0kFOI=Ag`gd%IzK2BKXHl!Er0& zDCK!Re16&9=7)8!fb(qp{g2n2mEkYrj0TrplivA#-LJmdclYUk7Tp^CE;a9o%y~bF zHm-%nH$Cxq-?eA(4Zbve(?FX8Sx+^Ede@nm{`ZILeb$I*pMIX5_uzw_7ejM; zzgqXe>pXmi=6i6IAZG3VUV21ojKJW>(|;?L>(PDIv)}P-`(*lc*F5x|ECL^O?132n zz_0tpzw?gf*6hRBG&FR_ZhWSiTa9bu1m>(YuqeRqRQqLl8SCm-v~T8a%EP=-vv&N!E?aSjgBB6n3rpSpQKfOlBwixD(_+4SDdxw$ynKOXGL-SWmD6o=C;m2A-shorba}WQ3HcUU4Dy4dGU$wU+35#U&*mQ%Zop~G)VSGR{V)} z*U9%2nqtm>?J#={&bOc3O709Yca3sL(G`ySh`lE|ms9Z?;x7g_$ot!8(J%7W`z{I% z`P=&u?F5N8M0i*9A^C}+IXna%vHjd>2c6&1#hv)kCp}ZlXJd%7SmA@uqhm?OadQ1s zFQK4)HN5W$_=;dQ_UaV)3jU@zFxC?X8Ok`;qHDzj&zaae=sn7>?cz7Q$<}?vof_d4 zdS+}*=>YtW!waS|e#M{um2tFWzYbbhY8Sl`{t zL&?bM8R1^q*oTk#Ie1{t)r=n;N71vimtE)VIQ(mjJzRJO$30iW_n7Nm;Sl|zn{VWg zmcQL%AD8hzAaCQm7sm$E`FAESVVsML1$U%vMtJSX?zxG;Enh*L zoIel0zW`3PFMYm{e3tn|OFN4uJ>FNeVC*xBxfMLIx$lLutY>22G_rh1xREo<@C9$N z5)#lKT2ETaiiV-}Z&87Bw#uFPd zjQniQ-FOUIRV--WaOGZX$=I{MKHr}A^oNFaKR7dBH#J$DUs4dBgWg@gbZYqf&mUdCzp3l zKi;~-o0nejG2nF0ZvD@x;RCa*?Tmrg8P|U+^u2}2Z@e*x{Ibd9mpx8?*}}k} z6>pvC*cp+c%fJaa0gP3Cf{oZd)3AefO(?Q^kbBcMFMUUdQr2&WkKE@b5{;Toj z;}w1;u=aMje)U}V{QR--IoZLd_<``* z$oLb~172#4vCr}0Q+*VJ)9b)#7@U@X(~01;1e}h;*55St(Z24-U+LRa)ZJJ31?#X! z`_g;$?WRO^Wg$K&|D4~=oNK;v*@Nr2W588%?~{G^9{20M{V%;^ z;JW+thdK*=>u^(~x^ffy5RL`I?ra#?Kj-mE;YPItJs95kN}AR*KGE8O_Q(4cJpSvx z>F@#3numi;A!wes_uJ^Ea1ZS}`9O}29|ER5mC3e0@}C$P zw%TYrijG#k=5+gtE04Z6J;%M;9QXbq$GyrN_s+?2@5~(cCgr#{HpjiP9QQ`$xOY;H zd&lb@JYBZ)Xs2F$20lu1e3PH!UjG$G7_(*HC&0a%bjpa>z8FiVum; zYfO@-$_I1i#Tj!kew+Ql;?!BOJyywzd+`74$6ly%{XbQ%|EJ3J|5W+>KfS~uia+Y# zMn1{wZ!Ng)0{M*O|B=r~{vY{_fiNX{~F&Mb0pmMCW&>(H!&Z5 z0iD6nBf7clPybvjfK9x!zrq7g*eZ&Ik zJ3yRm3Tt1nz{TXGb^%lOHBJuJC~`);>#@XN3oPgl|5@SiK)8$8UjeZ{#m2PWW6+WG zC*x0pmW)3Qy*R>e*Ppgm{C7-wEOMQEBGWpX!CJyiU(=afySa7 zogvcCPHn%M{dFF{diXTUrFV_63<{+^^#v?qmZu_V$_7J@HA)Q%W z%m2J^sbzgLw%)R9II9TVbemas?)%Pqnr!0EU;YW_ds>H|mJG_^?aa+5Uc0$DKy)+FSKv zO(0>Bv^AslriI=TK){JzDAj7(-V#JbOZ^qG+r9Swm?e|2XccQ~My>h1KhHU5=FE_w zU0(k`uNSY(oH^$?&+~o0`}REOzI{NrxkANfu@YoD_7ojQ?M4b+UqlGNUl zi=;Ua|2-TA zE!=CK=eeQoxBb<2e$4FC<*&}ok5S!W&kpExE4*hTd;s5%iCeek%*t5x2>Li`_dQdPNK$CErw=>zhh$#UH!to%RHCu5YrAKMc$U8i(OeA0CZ0`y+*- zKckoH?5NVt$scD9+^e{NaNMO+o#7mVCe`cF*6)MHhu;fNLT`ayeb6(%^Q=v`0YkS* z$sEad^nz3)xgN;*IB+Rj8ooTXg4%OnS`)By54*90)hEjEY52AHbTjjfg&DK4rs{O& zP|X^y18-t{x5(8_S>$QcgJ__!gdA``xXhUk;IoN2=s7-Pcfr%gM<%c~jWZFx)VHFh zs%YuN%axC6{NTJ#zv*53bq)G5au68Id<|Mq%&pm8vzuqvGsa^4^E+Rn_Q&vdrx#z? zgYy}BX3i(mx38Hxw7$L79e?DB`nLFQ0v%QPQ~wIzBIaDR33}SY`y{u5=m`4m<9m7W zi8_;LUp!cRS-7CTib3nI=udxz2l^alpB1k;Mekw%Rzu6%px@ola)N!*dph(NdTh{N z=y*Olqj-&QOXG-+wI?n;yYRW$oLBDYXa0!QmAVOBnFCGEWR2*P$+_n2JI+p?6j?Ab z6rJ6I3`RBz-&fSx*G%p;x=Ag+h5YCmk2G}&m*dcBjJ{NtA1AMny>)9X3dl<^y3*WG z`oI4#`v|UzeC^|9^ScU@OKI@9;+SvS&rOR3^cUs>fiUb&r7{!a{I#M*Ng)nwfFO_RU70laPx)y8ohMxO^(b(F8sL3T2 zFO&>hO-(=r^DDLO3Kx%mKJx8$ANq=5Y+|1kz_k>fj!yEl`a00d?j~~CT^w<7*M{HB ze&Man8*F?oQ;jEQntFe~lDfkvIuEz8Et-F)t6=Vy7zX5cUS_R2q( zUhahkz5T6X@S;ZekDKKR)oXyGMr={Ht7fQ_&S{FnirJ`*}KvX9;(OX)3w&met+VhP~I zR_<9~<{9kt!6U_wj4Z#8x{w-j=iy)2A?oYY7VfT$NI%#z#QkrF^6sZc=AI(!F>J6$ z7cvjY7NhTrM?XMrEoio_`?5&t$MB}+F{YL}vA2Mp9>LCei{EZf{)QZM;q*)BUCb-C z!=`a`;WoD>=>E?_|65rzJgUs;A#PFkU%Ta+ri0fWp&yyiNeYb~rhCY9d9C&n7h)USZTeYBk5xU@-b>zY*Er})*|~*2 zkTbVOnVWeJF}&IbFNidwTe`ZR#@IF37~Q#JJm`#p-SJv&neE&2ja68$~E zf9)M|R=iMgTE$)6p6N06LH?d;;0`+R0izQK&Wx%*h4i&+a<0<@q}_(olX~|hS4NuU z|F0{+9&FsD`LE*L3FK#u^m$}yDZKJK)IS)119Pes?lLFgxv80)1kLEW@Qmxq&Czd7 z_%9@nRo5rI$?$hRC%A?Tdo65aU})DpFH_@yPA*;I4fN8Dp0h1J0FD1yHK%LQ!TD{V zh#CtAS6>2e8aNL;?u_}`0p!6(#<`OD{D$}ZY2eX1aAz9#wS>k*Rztfpz%TmYq$@NZ z?#bEb?lC$0EIQRbuTqXx%S7x2I}hK*mCJ#X7q6!HhOJ*l&EhipQjEBHS^sd~@YYQ} z-!XKPd6m>}jxfCli#mV(^EcaNUpExs2juUwR?&LZIu`R>lp4o}iSbwa0>_x!JlP8+ z<~ilY2RirhtmJJI&jom1xieql^ZR}G<2=8B`SpWzf@dG**;>!D)qlaW-{9GC zo@Yz>Jj|Ev<8f^1E&WF=_3O*j+#Ay?(2#Dt;au?n8e%$IR6dUjU&G-35;YX2yPut?}KxroCODu zhz*3QUS_@Mf(IJ*)}{aFZd(uD1Kkv0qwRjm$&rTFOQ$cz&ue@vz%+SlR{zY%Cg$<0 zPUIKk%I}0-e3?7;9LA2-vln4#X9>?Q1CKsOj&7gZvvN*g(~tgcgStf!}?y&l_FOw133R^n z(YMhTdH)J}lp7tb(46m637*HawtAzZwW&YB&;L8e-*0MZp{GlGR#4Nxe9m1$Y>m&V zV~G9OuJeILzyYVv-)``~p7RjE2kBAjPk{cG=}(aOv8})Pke8=0mcEZGvU^!1uLln| zDGp9N#Q8km;9k)9_1wJ*UXtCbpVK$oySM5AFc}=#hP;czOYmjCP!Dgsj#yeL`$3Hm zIrer>eB)oMv(lUJ-E@4wnkV0~?`&YFHB728e#jE^@#IWss~I?<6G}E3ALLxg1o7*_ z&hRPF6Z(PSA;yFDXtd(OhasyrNY&v^0T;H`}1#X(>~-+t!J+GQWau?OPt+c>x!hmV#iR?ZnN ze&%TIwJtGmjMwqrnar6URD!Ac9pIC@G||ky0hgYw;0t5+f>(+~e^T$|w{h&D`+Ehw ztlWDhZ1jY@w&sRK|ZWz?^E*zOM(P@g4o`d%#!usEA8&UOlk}-k})G zO}t|d{5XzGNZ!PMo(W6u=lzno4d@YZ`a+(tj}Nd<$O83N@sYn)4*h71fq}D;_vi3` zY_#-hFW)&ks{7B$xpt1>PiN*_8>>9wHtXkC(PI=JQMeHKVe_XSd<6b9iT9#+2yeYS z$`XD&0t`GnYU^*ok4b~z$1)o~{y=_251$9cj|YI&BkT$I@%2v2KrzBs^6#Oe`?{DD&6%3b!`~c-nwGj`5sw8}jFges)0mTLK$) z&tm&5zPQffGyb~Jt_JG3@}H6YFC3KI88M3b>M4A`-Lu}`ah3>s{*^)2dy)2X${>4r zySB#$Sp|c~~u>*_HMaUCR%a$HY$MDLn^Qk-W%B|Q~;)3Xu z($%~@xxM!oeXSbYZG@iy@2>WAyZW9Vp&w}_wq7N+-p`ia-2WUoDD{qwNUnNhn6dQ= zIzRT@o9(Z1e^~)%Tk&@&8?kH<8}S;RmF_3K<0sS<$xf8**u`gj@h^nY(^eCc*v;8x z=rr?o6UVJV<}R}Q`xm{ldcAsMQYW%svR(W~GT79&qU%)rJH3g~gKYkPQRI=|Km)Hr zL-4F}dX7v)p3el%eWA0AEnVsOb3VaX#%`ZG2)%8z(q1|9`@1FuI!TOhaq%>Hqx? ze6v>Z@uk>~f_)-z$FA6`q4eB8pl@tt&8*wY*IhkQynQA5sn(|VJkDMVXN5moq`Uui zN~FT^W8Fv{9t~HIWIQ&QP}w$pVuyP;&-mD z@7h6}kc^ZuN2dSIraFF~#_!-expc;UZMN;#n@^QZojot5 zZggFgSR*j8($mLIi}p^k(uxny+!~68hSx?FFGDlm`BQveEd@)DofLk?Idw@f%G?e}k zxKaMrz@y?dqDl4Wm+ZXiKi$3@_8BbR-`rZWi}UVzKzgEQ42|RB(&W5*z4w*p{q}zO z&=hb*G2RK_h;j>`<+JvFHhaI0&z9$(>p!6`gT2o73uzl2O7Bz+bWwKg?wkYPbYYO~ z!TC|f7SB7)A4x0+n;kFe9#%ZuoFu5VV@^YPl-(V(RE>Q^PzT8KwLK`S68T%GU{#7cm~byUBS**X{*xgXBUe zMyzM1$pO1}PyU;~^CR$7<$lfNul7d%72(lu zs96#Z`3n1;!5{MKz43oz4@0{ldLf`|y;lBh`}~NOg`6LOeq{0&fQ>y@+n*--kqv)2 zaEnuW7r>9yxYN#M!WXbVOrBNPoShPA{Uh&ge3%?g`X-TE*FL|5ydZc}4BnIkmlE&= z**Hc|fcKP1ABV@+ia$I4vJR*A_7_{RHR!X4YgQC?9--6CbNwnY zc$Z{z)mN2oMs6VA$^WXVXK%{nM;ilwgNKMu3zzeA#8$$O&>gGlonAEcbk;>zQTuXrER0n}qLM?DZb`E4%F;o+a$HkGU&G zEgw^iebAnW|DWo&9xNlj^}bbpv&mUvUy2@jt9|dE2k23+eRk_XIg^k* zwS7(nodM2&Pat26-2_f~=N<@s<6zzGJ6`|NPd(=eAw#MjqlSt1e%s)Ry9f5XWAG5~ zI<(fD?~csY9t==xI}rWz^9IyO?33C-5ELzX6R6L$$w&gyP?A->i)zlL>FuE z8Lb>a4k7fI0CsWcQF8kI(&I6DybeW=DQIgqeD@f8+sj_=gJ1W-uMfko)#s#!>zl~~ zqMw#?)>7mB9adqh-CxTxc|Lkh{7n3N8TT*A8)Faq*TNW_YrVe@p3`SF-XEscRXK6` z&5mm*=eMBq@~^zv4$V)ME+al5`jftnUvPg5&$hs?YOP>vGc-R9IBs%iev?DB@r`vKc!@KVELy>ua-vRO8B|A!*u(5c^8kjGQtCvo_ScnXE-|G)8+*SGu? zJjFA2m!~ZKuUwuoo}M~cp5pGY%TwGvb-xeIQ;t#t=&(Fa*ul1c`5j94|Hkd917eO?rvnf}}l+;ah)9+e(md6qjTc;){(^EvL=%eH=$ zwU>LAum{+&N$@lwT0&p4`z^RNBf(B|#P;rDaxQLkaOx%-r(!d?A6zy1mG*BAJnp{2 zOs^~-HS81Ul{ImY^`^!WLq>Or70oa;>=op^geMn89-`LzQ~!bg5Zq9#S^H~zIK+!L zqa%E25q2u{9*5p7bGGQ|k+KM8Q1uzfhDpBFmBrLvQS*S9s`!{M{>;lLxfmhLE1 zoPl^1_O$r2Z2b=-(>*?%HrIccfR^M-RlI6GW9j?2B0FAX%K^vEc5wq;Lb&lmYS3JM z)&p*T%i(D*e#jnscVren+&-$rP}6R18gV1^coT0u;EA^~_opUyd#&H45r==iLXB63M&O_S=JKmR(A2NazKHyX zK<@b&iC?hRKv7kEKe)1wxa=Wt=p}IIH{j5VR(claR}^onGkmD}L)P(D_O{|f)(Z{9 zgICJ-8-?u$PJe#=o9*2bIRo%T;Pe~d^b)W*Q@v?l25jfcqe#K&VDLSO)_{(DPxFt-3PA?%&bb#-#76K zaEJNUez`7cYB1O4=G!z;k0IY5`uhvjmUZl2>Uq`kqK@9hjriI5-Pkl2|BifZ>_qb4 z+T8p%@eS?kPZH$5^PVK%WlP5Ph0^i;_z$TCEMM&SWdlwQqvu^E<8$BDjs6t_$K&@A z|Ml>wZuQDxeEJopyXo(;8T(E39fkC9J;WRvh?fjM$^0H1Vt)5Czx1Nq`Ni0uZuk^> z!3#<3^&a-D3E55^Rhx3(6VT{8_d4fqOttd}^o-^g=U(X*&EP;799Rer2tHrn{V8x@ z8*35_4cx$o4)*Lx*5a;Nbe?1{&xdYe&FtfkJ-9$kk?NR?Pksl#C5iRV<$Hxca<_1y z*};V$+qf{;xXNWTv10C#yvcuW65LaaQTQV~^6o(y`8qxmw>~!#e}H?mPwm{tUMY96 zocwR$pyG=0M*H`2#e(@=*OhO(cck^`GU6=PQOoh=nsXvw`SYP?KTDkDd%jS5E%VWs zInSWiX5a;UzXi`0k3o*ib8&1sd}m$W9-cUko$n%?)c)w%7vYQU7zTHlUk|X~_QpW_ z7xKoFetr8(c5c^vaLwd)fp^m7Rg<%a`6w2((lf6u%CWs+a-^A>1Lgf(`KN*Q&*Y7p zAU2($8Sn&od7%8|qR3&+Q8#nSqo-bMyN~6K;p+Zd`OU6(L9g8`pK9g?m;(sYRU?y))@uE`kf1SU4 ze&?sDC-ce=`As;ZvFdY!gD*4j9~?d3NM8Hkhzy#P%Zru&A)IZ{8aR_Wj<4W)Y;KdoIK|j42b5>``Y*u$Np|dctW#G% z-($Dbe%fQVTx{DdO=ar6f!%T?bc1|T&9Jp8Yqw||*KSFo_eqW@2jpVL(swrp#OTM$ zw`UETCp39<`Mh&c##rbL=XW+c@YLBevSl9e(1eSx&k=L-o`)h?)dOrz40I~vAhV?F zs0SRn%!4tE7{N*ZHJ>_Ux@4YWvWhWkja#Gx|JKeW4uS_S!2fMLnbF@JsQ-1CXPT}4 z$5jit37)@_c*A_+PO|R<=tjn-0Oq4F!EWOnN#LyIi2@kBqMqGH^d|EENTsUdW zTG?yAwCl#FVSAO4TjB1x@YCci^0$Dxpk8#ILcxsh-uYR|_eW>^SL*(r!!J4$opFE| z-7Uz)!#s1Qo`IM49HM3%7@1f(^dGQ%`vdPZub1z<+_Lsd{=E1N;OF35&!JFN3i?+} zybt)8-ixAp_G>`;9^(&CcUlhoQ*RGEj=$&FQet2`7^}o8z~{Yoz4~3PWL`RVxCTBt zed(e*pLu%qLFL!%;rRgTk}Yo6M3i>QR!Q+)YuyH4(Yh5gUW7kIvP*Wpdfw@?>JKz8 z#g$Wh{wep#AN~RES?%wCyc!=lc*A^r`^&xaVZPPqFXhaqhWR|neDIMi+w9Co@HPGc z!Hs#ypQLf6^EB{GBWFnKUgflS_aT2@V))?J&ZjnoXIGoQ1)XESC4FDXcUx~S=scZk zX?h*II3_yWJlE!HpY!09@X7V>+?$sVA^%P?jO?w44&hTV_V*2FAtt`Z{>9lxD*9V3 z(H_6+UFw{BnY+uDs{xg>! zW^!?6X8ky?GM@N>>&J2D@fFP@Jjgui?RosK=E3Ka%wwnPr`eD<50@|Ny{3=}Kfj#)8wa4m@{)pnhjo<~k zne;N_54ya}oGJRq8hlIGo&(6Yfku3FyRE7La3=}gC)qpT-_~LckEF<>=owQKC6*LP z?e+7yn9sgQsu6vC4Cg%Trj{d2f66h#qCMz()D08&3fgh6VB`JjEBZ8k@6-c9dg($> z=gBX3S!4?PfUUl>{8L4yu0;8d?mFW1-zewoG<3*l@+RcqGVplxby1u4Wxvr2DU)OH z5B-u8?z8H-p!;J**P$oaIcPS#?fWK(A3zJ_IqWZdXU+Pjh>P{K2e~)2E4Fr8bOCkG zwXrFYL-_v7;3dh{Y4m>aAA1(rCtsb;EED~{wbw_jq+Q1YZ@8?7XI0PLVe%=gV^6*_ zFz+I*m+N{)_lM9I<;UC&KZ&t7DeMpV$i-`S!&_wQr*?;`o@PAxbXKElj->`owFcqQ zp$vSIqqA%Dt}V53dbAH7uKJMPP4vTf4_G8ebB+OU61=?Qh=1MK(BFO(+|^ot%U|J? zk%J?JBjp4R{{$aZxp=6$N7mgA~b$hQ{)Oum(JvvOe3-6=%dYssJ2&LcM>H_;zcHvvm%M7dzc;7fu7I6@xwS*G?Pf=_uN z2(9ZM^5FOF&!33j@f(TBykkY-e+M#oymRe*|8eMWNj|Gq_bKup#s#c&8M)%f_q0n7 z^DQgtLoOzui5gwMUNIhMJEIra=Q72?WgoDV472yuzAjioyP23U=dKx82H$5)SadfZ z*pFwN_tVcyFwq`Lhx=P&(P7^Eeq+&lhFOm_dr4konk&;e7|^e+21(7)P=}>bf@jzO&fNQudv-J+@FG9 zN^e=fJ|?T-e|6~i&irREfAH|J5dCM}`9JnI%)jvOH2F7W(kJJc+F(J7^0&G3CJO`~&I6l4Zd%i-)v{D zWz-CGz(bVxXLM@hP6`>a2R%*vBEeZq<@C6SEiLb#&NcCt1bj#QC!fFQyKLq%i~3E^ zeO?|EgCBQ)ravQ3Buk#U!ImYTcYHeW;j&Ti(_5T9VBVuxrJW}vS?}6cCFZ=s+;>=Q;F)4bvcL3>Ui9E@boM76QV!#;G0Eml#hbc4<8gLHDeH-WwY&p&=0{WHI{lIOWr4y+P9 z6GG3oVeQ1a^I|dU9XK1^l32`l9l7lzcWKM8uNzxv9X_M#hy2SAgHzRy`j*ea?y0`j zT3&+P;lI;*p_Y5=JFMl(!>RtJZ+R_$m$6R&D8K#NLi)xLyYn|W--FijO1@XO`Ijf4 zOKit8Y76XlEoE%~&g^rFUDM-kc?W;TS@u1(d{z$Fg16QltR=V9yq_`eW$zPd&o%Os zj$m)Da@Mhm&(nEs%P4ys&N802;1v7wVZHZ{o@Ym}KJ>fVH$2yP$IZZ^c7*+mpU)rB z++SaNP`z}_Jji{TO)RqZwcO`8h>OE6? zy8X;JKA+AQzL(b?EC&YV>;Zo7?B%qPw{Fa1&HAp|=dbsU+YHqFL1@r{k#`(tcN3GrvfL6nt zE3;};^9Gl; z@BcFSCf*K|UagXZ{?+CuCX>(jN>&ib}x)>hE@3VWq-2gR8wgI`}@dNH}aIvc^U9-heMmLy z$lnGhl}l`)Us+9ON7B^H`S6vLhe}+%!PGKuWGnyl z8iP-Yx?<_AfgrhOU&nvQy*7`s^JOjO}h$tUi#Um7*{ogCgxP(Gchgo9CTw^L&eW#=kb5>e#7&T1MXS%g{-NY z|MCOZF0>xhUPwn>to?*<32yqknppN4=*s8p>A11JXcKkQE7$p>t9ky%?BjNuU+-K3 zPwRuH^*Q`{pTn;YJN#PLU-IzleGb3Y@9W?z9gH*PcAH0&ADoLjbJ@=u>0b%%n0XOn zNdZI6AqAh>3{Tft>OIhkO(*bn=b3+Qw|TqrCdJpsvbI$`cN253bLPH?xx;^q|9i2O zdIJ5wRW`Kz;ftBGzAtw8)OL76i04#yu-BPy6L>y~ns~2lL$*f5Q#+AOYvHE@*cS7N zqueIgidLBOHrBBC!jsSw_o!d9p(kt!twDPtI{d`Rp5vY`yU%IAY?%j7$iiioBlG@CerH8l%I`CC)q)M~!hVrzN%QEIL|*M;;L zyn-?GeFEn7*=v8G#-hL!9m-&SD)22v!DLfMGhZTe1Dr~Pj6#SH7vFMebav1{MFv)B=f*N zIXD;&WN6dLhm2n5p-pV?^PtW5C7-!>DEa&a#{5g=vl~yWO(E*)bQ@8hs~>%>l1k$lh;+M>sap&c(pJ7r6g5Hj?qxz#mfZi8b(qUU=(T>hcoU zPH{uug`F334wm5!(6-_!nnMqJnZm}94!IfHNx_Q?(EoE}Og;C8L+Lx<^ z?WY#u8grKI^efgS|85z$HV&QH#w$BE=*sP*j@;InS(4ic=F-cWjQj=$uKfPuhjMv` z;3In1U)|Hm+A{JRIJokA>B*i$7Jk!xE?<5-F!_YTk57=_@O#C|z4H4!`dNAWkvZ~v zmEQAy|L&=OyRp8o)?%U9@yz|FxPc-!<0-oSm$FS>l!74v*-VlglG$ zXnI0^+VMI&9z2_#R_~4+orwpVIB31EN<2H@$Zz3j4>&4cj{Fx39ep_E=)=0c0vwf3 zV?MYhJ74|_{T}-qGYo zeXL(TvT}5Z1ZVeDqet9=AFue%`RLBY$GXueX7k%2tK^vU)HphheGa#B%1g*A(|L+n zowY%D1>e%Vbk_C}U?TlgXF$j|69<2FHni|&8N8?!{?K~oE&V^8n{J^8&dL46BRKmQ7+#Ma z25uQRs3OAloq(_dvyLyfr--mr$> z<@b`lbTu@fJzDWe^1hAF!iKfvq-@RjwKne0(N_fn$^R`5 zKMo-K6+oybvgJR#PNP^FYte{gXY}YzmLybw3&bcWCURRR?8YnUS)2)`;==Gen zVKaF0JLmOu zjT^z=P5eEBzdQIFYU)aG?!mZe{QaJ}o=)6krN`l0kiIjHeBlH)ejvU z^up`8zYt#j%Yh4U@?XMV;N-uEzre{qo^=Bkzt#_2{2$~maCt8{B$kA_>PLl^uR@L_ z0-xWNSYmaF{*v{fU8=bP9@1aTb>2yg%X+ltCt28iIs?1X&U5~ruq%>WI=}O|+3*+m z#Sc96>!&Vk0d`4kX%n#>t4sU|UB=i=iNF_j`HO*vWC)-2TOb(fs^flt(CV5GUHC^e znP-v%n+|G?>&@D4-Q^!;bqzPq-MXtpJSgwJTe#0}J$z92B?7nZio>^jXV_y^Th?;& zVdnYIu;Hicx^^qi!~?hN@^Kwsta)!W@NRbCs(ePlIL>&!5!{0e)|`3P^n~zrZ#Y=~ z>ZM~%olce;6QC3DL@_l3cqD?2;#E^@BcoPFdo&(*M& z>~sG%_;dK~U&}lfwAaVlv(J6;gy+;RW)*p#wM~;F|3x2M@As~}?~mnu|9;;0@9OTFd^`az}12gr?IRI_)tqN7!_m&h>wmK_(oYD~VXdQ)4SW8rC@u zI<~K^4C^_0}UDv95CaJ3LW742X z{M&QiZoi&;$hSJ~5gJ-7S#+jmtY`+cFyh#tihJ7@K zKB*o>!&rx{Pn?+-kFtA0B*^)Y?ze#YvjU#o4KF%nBz0WsMJ_7mwMuD@Sk4tkb240Eb^r`&9Cv#=mUK3~zXm2VErJBmK8+LBZ?bHH!sFOkhs*!eN)a22avz&fy1qWFYg zkiH*)H*5k{VR&?E63^fpQH?_{H4e|vy)m+s$7{zrrIU7Ah-p9-)s{GI=Ofvu}= zC;udd4+}YPtP)#BF{$utUwSbd477$D@IeDt&dyVAqS5);-%Fla8t(tb4e55pUloNesy5$(r1M^({ubn;DfG`s^@cvH9TXWb_`vbRpwc zqr(T_FB7cb{xyuz!h4mssa`*uz>8HoS8s@em)h5|xA6^)vC{L%&DAy215A6vy$1)~ z6Pv$iuU=)J^Wk@o2Y%`=nGY}J+j#5!<;TP3kM+; z4|0fk{|p^P@X)^7_+k4}MTh57Q>ysvLi}~xu(KC~cY3B4ILM|leH64e%-f||@xFyR zgAUwpsRHMD-tptKxjAo&5gj2G?)sP#z(#u^TU@=FOwIy$ya?Rh#{9Ph3tG1^|25F^ z9(>TE4R@?HOBeP3T4Rv|*2MYUjo?7eIvl&^LkM@ndl?^I6O~^opFb#v&5J+crNW`fynBn$L&rrDwjQ(7 zdgw$wW_#w{4xe&p>Jxe|dP}eKP8VN?df$k=_r-*>x1JuUp)S=+8|#O7-&KF%`(B%n zyFT7`z#_EEnS0zW+R?=6$3SF-1&tWSv&}^CWyz=q&IqU+j{TE9zb{}IO)7V9o z4JKFk)W|#C#9BvN>M44lyv?p(8o8M{CVAHbGb`hLyz3Y>l%w&H%AdjC&BHlQYzz1B zxe57*4SCyEedHO2F&+l_!Mog9KnpaKb3H^FZ|Hf?mKZPGX#`(wbKF*RkM*aN* zBP%De=ZDzyVa&0DJzuCZvDou9qY7J_(GQzEixaE{hv{3h5)Z=A$? zwOQ0OD<)ac zd1Iro-ye%(PgS2`9j^m6K*ly!y@; zkJA6D!Z)ll$y(wgLRIlM;SZzW1#eqbMJ3&z?71^^KXJ3J*dO3i(31L0d3m=xU(uRf zM;S0WvSL=bc@B3=F`d^-t@xQ8{MDSD81D05i zxw7ZeyWebo`x@&t)uzl>E)DjiVyXH|%p(1LazT`5Ci*CA;J@L2#gXfIZV#W!JI;>y zh}q?g0ZmBGe2ZsA*X7vzG3Y?~X`5Axi@(Z;Eo+{+_=YOq0e_YGd?BBI>8~>Pl#Pn` zT1G@0&KFHqL@wriyodasD^7Tyd?|_v=e9R1+&$&jX}$Wp9oYPvp2Y@x=u@2W#JrS$vZlpfrF{$nkL|>H7>Y7P(`vv5*Xzs3md=a?)L7rFM2R-#nZI?UmnDpRZI(o3-JGPCIKX2Ff z`tQ_|34bB9LGjnNXS4kd>$rEpCCoEmT|ivo*mtl8lB`|%(=JaJKVNt$>l+hFCt1&e z;=-uruYBwld{7HN7)rlGK7?{F8a~Lg@E;qdb}Y4l-@V^sjy-#!=IXI$kMDKzC8kKm zoR*=nQtWmYzg8=DjvwcDyia=^YXlGR=M@$pdPS(KZ*Nim;k8y*<~z7>crNFIkGCGf-`Evr%yCx{ zKeMc5tB?^_XsibqtDUhnN=}_p8LOMoAOBpaE5=xH#)=UqjQ;_dZdtfgLI=C4pGi%s zsp@^RrV5|QvKn|~Y6{=qw!iPeW+Zms)r+oVe%JT8d|zvS-@_ga44e{u`zq?r;bn`) zhN9D1`!@8v)W%by)@a$H!yOHQU{K}W8K^<*9mSD|C!HxP#>v$); zdKrF{Wxn#rEqC40AAok(6C=OYcV1+U4}1h>J?*nAlfdO=#&7ypa?8)gXLl3(G!q}u z9P0J)SvUCT4@b|*r=ZW4rXuo^gU2=l&-tnYxRE(7!v-LB7{Af#>OK!zqOZXp{|o=f zjqn|46uipR5NdCe%j|r1v(Mn!wcweqRe)<{t-qc_FUKw2G4js_b?!H35g-gH3c3MZFjc#|0e zd3}j^Q-NsPxsa-lX~Wu;2K@mv5HsG!I`PHkJJ5?A2>6 z)_IXe_R6O^;Cl4Ek#7B(jf?J@Rii20#*3#X!{J02_{_z>s@`>B=yC~kxlA-ZywcPN zg@>lgn1?Ra182U6F7+KAnM0TJ^XM|}&}D3{?Z@&#kI0KNc&;-Q2Hx#M)8-AsPfnXI z{v;SX$yi=^WPXFk>1@&5-vXU0%aHNJx)xxA)RIedss!nXxIaU)%9!zv=&Z z?|C{;J@~?ZzEvIF8XnGdOc6`47sW^CQm+T57AF zK8Ku^c6db{x;Fb$&ONHNH@u{deVWNW&Cxy$tBg+xk=FptqTeK>8@GeI%7GYVU6RCZ zZye8AALyOQx=>dmv2f@3H9S$AOEhgFAtPk^0N+)>iIIBzdq;sh$uQhoAvDE zNR4!ZBzbYJ|L;tC<6H@i!P{J(arh_DI5HxiXCxTAXO7J?^jSILSF?6qGy2kf=u7Yn z>>GN5o*SuyXLR$~f=|?7kC%6kkC=0x==Ucc9Ir#S6KvRL1Dnyn#$yA;v4N=V?uzd% z=vUr`LK6;FHn5dh1;vd{ju-< zD!3(BH+I|dGHB3zhVL{WV{|RfU-^0#SfehhzTE1PtVsZiaeQ`Z$GZp0RT8ZBLMQm^ z9XuKq4asLWZ)#+-e0E!fFSeg#k=8wxbt4bmb$?3ho;t+3kzd|*e_!k7+Fye&gUw%g z6p4}08g|^DsKqgM+{jRRxJM^+?U@qdv)+2*KGqS39uv@G5_;@uA6B_-xOGV>@qK(^ zkEurF2zz`O`p~^rnPQnmkuuhcPmgQJXXxYzdv4;5(6R8pfP9pmIW<)agJ)efnQ@G+ zQ8&_@=c3+jNBDo3|3~>hjQt^BlAbapnVvE_Kb&*JU+AL`isIR_ho{kVIW-o3G6tE9 zkHyHNv#KNI_>A9z4~C=za-Xq<$G|tox_r~tOOKi!W%M7y*Hh{X9-}$^JfAPPznU}q zlGyUThkVj=54d`+YF%pCs|(O`hr#p2*IoGpP2>MK)$#q=<7-YG#)D3fXO$28JLai9lU+c}f&IkqILBf?{gu6?{^;RJ z0Ta*otni}<*;I$$VJ1GvIl#BQmV0Wsr!M+M2WMP-sRTyec!A>cz3_C|^5kAT*n}Qx z%OA(CzA%*jm8C~ef7{8@0@OZX;<-eM`Ce?^7fS%ijUUUQ;JB*x^pO74dt_i1ERTJ+1 z#ETQo)ZZIkoN%`O&U$gedE{S}^BJE`L0O5x+l)MBP7jhtQi(h+nMVBvHgzdFc!IfU zPBq4_r8$LmxpO*~Ihh)O>ulNX##Fa6)=I`I!=CS8EO*Y{`O4Osu6fL|(vv1wRes=7 z&@n5zl3s}Fg|YyB@Gy9z`*enl`_6%npldrYI1C?2iN3f`ez+9;rbA~*JO1YuWNZ?C zBb!^iv$?n=iZ3F)nK-s+)~!#C!HWvm<2B5Cu5xMkuDLfccg-b%Y>+R{ox}gt92i$) z8J^C2m6weyX^pcd%Gp??ck8{nk9Th!Wy3p+{u9REqr45ha|`dhjCbmL1^%9`ywl}J zHjUVLrug{)vGb3;GBEGirHd|KH!yICZHtZZ_^F(_anbV-w6lWRMnlVk(9R_u+OhcO z((`P?|Fikaeb6!I)mL$@eHCZd!wZTlEBw}FLHzgPXO?7tS%rz24#Ll{L#~L_q1S{% zlXK!A6NXurF8KJ@4%UABvDa%q{wx0f@%7rfXKk!yPix<)eW2E&Uq{g2TI%y3i=*51 zPC>><*0BGYlPzaH5Lxph|Ecq z53$kct%iT!v+Ez=S@T(6&x+8lQY*Nu1e$mY{j)Xzo}3Q8nfj@SCpKL$p0P=Zjk#a(bjRE^w#aXZs7P0r!+5742{dD$z``yzv zD(|YkxaHU|?5rSun;GE1Gr_{veZ}--CI>5k3|2kWQhtAy*xR%3tXu!wSyp6?Rk(lY z(xrE9qP7FOd|owqXwB@~_^U!MKEruj%C|DPX!zOtxE5Zz_=y4bb~ACFhT`r|#^G}| zY-;){I&r|nq9f<>)y&%46FV}P;L3+gcMIt-2U@h;IvJ+zZV*6Q~<{_cYo zilK?(t3xl6i@B_v{!}NzMLxWu&Ut3NMV;3g7!-Bhz~7nXvz>!^o%y|>v({WI=$ysh zYW}-8FMR(EHC5s%v*8`Cym`*#|7PWl_9tA7j|&_%d3NlJcy<#0xxmF8`2Aos;N>9~ z48cPx93HanBs`?f;UQavQ^kiyv1k1Ti0LZb3Pw=hP)92Qzx%xm0(I-?%PB0 zVqgHja7(VvYQy^7H~rIuys=DVn!#WPr~@fH|ZA<#~0Bn-<9;w zYIp&<4!UhsU*NO5_KmXoC!ymNondsJonBotO7*yZ?5%PsPXQm2@SzDK0jD^+jTdsO?1O@3kT8)nopJm=Auh7<8GqtPITVG^euHLG(IC@@J@8hAn)IYnAwQ8MOcQNx7 zT{4dsdY4YVv+$d@fgd*w<+4nm$^S0yh(m%u#4r7%9P^q*y2DZh28qZ{tD$m<_?{6yW*cM(d)1d8O zx7D9#yC1O1PRr4kq-%9Z*IH=jK%G=i%hR>=Yy-It)>R*lln-LNZ#jvM_g;G1DhGbx z=%Dtx+b=M~Z;?UX{g-Ud#{t=6@uciiJ4WWkferM!h$qQ!5guU26n1wU+)kYlcu=+b z4E~?R|8x0YW>rlDFA5#JaP39$nm-a#pMcFJyb$iyPqU7XGrWiQ0Uw>?=+ezSyw81? z{AZinz&Gw04BrlETnFEN_ohoH4!#YC=Y{bvfOD4$X2YTDaH#4>4&J%&sU-g3^=I_K zFXPSFKWnjnT4n!?sGLx2T`HU#j@;Jo*x4^gR$(XYFDI|R-1^e}apadz*U?Gh#i7b_ zcwIU98}SRRt{Ul_Q*0jAZF+wcN9GAvWw$Kz*fAI4^O(Z-b-v0tx>EwV=PUM`ep3nb zG0s(#ZM)Nr8wW>l-VZP+#~(!UJN>iH{eo-hhW@q&X#czjt1u&uxq;zsdw~YX^RxK4jE3{6SBTx2pD?VcoUoBCD$4 z>$9Ro@cBKCtdjn>1>Hu^Cy<-o`D{7Ke2P5t@y^B2CvwuqJZ6B~laT4#k?F?I!@Kub zL1UMQ=Zd$eH@DvH_u8Srl>cP7zmgoxXljftlRo6)-|$+l*KnO! z@pR`6T~@{1k)9DSQ^hc`k|k%MVYKONRF0Z;sER&GlKR2Z7ciU-J&uqVE$_ z!(V&?eebjyPS259?~5kbx*h_ly%54GTCB4}M& zfP5Cu!DqD7nsq9*)+=@m!Z!}c-%&xo_HZ8G(6jhp+N|qFn!JDaS@Fyy_FQ6QVWo1_ zI~0SkPKm_#T9J3@&mtWh8B0w2%Dh;-&5yvdE_-jzj=cU@E+3A=gZ)AHukev^q`%_R zG5Up#M_GQ@t@!s>y~wAbj!P;fhOht-wOPoI>& zaJyn>C)f^cvK_wiL3rxzB#HtUIJ{^;_LtR8Fl2YN-RyHD_qZ+d7a$G^(_yt(iJ?A;_A5ooE2 z`iT`QN5+P^?RUcdYf~-gN_50>{75s%&(KKdQZlVtIaG+>^@t+$XDE5W! zKXQF2J=s^>irxM~r7xS`y4s29^-i+VZy}Fs14a+uX|>sUhu06AKu1bWa$|Zne?Q8c z4l}miskuBz@0E`$ApR zv$oDU&3fS$<>PX{Vn*W&tjDI^6}mr2{d~PIxU2`52SZks6W7eV!yVfj*Q8H8am~U^ zT=QDS&yQ;sO|yuT65B+l>=~VfLrgZs0lWSu2M(iw1Nxy?&ZW>#6&Llu@PHNM%rfeb zbDkZ;v*?-LXL}vn`Y`!boa@m!{=CqOii^(o_dk9JnZ6f2*mss+_FtwBRl4ZgpRi!9&}uX;wrrTg^-OX7l!8@OEkwT;5*ii>%#tGTv_QzdLS+U=_3d zz49J|r*-Vsyaz4h?bn`+?s*pBGe#bq4_4`Vw*XI0zb|Gn`4?ePCz`2TkJ ze=qz$1^+iOOxupk_DkZuVeo4bekJH5o!VbprMi$A0XsLL9^bcQL5f~cnokXUTzG_C zY36enzqTiynUMwZ3w?}nUA;S1pPlav#wbJI&5a4|5X z{{3gq0K;d1VQ-(kCrg1Nwerh4(2d-^>pji7YB+N?n5=x!MsL9XU~&e~ne|TjKHWWP zd8TcQ5Z#4A_g;iUoXJ^JI>_jA?RS znRAN!tXMSQ*e-1u+r^ouY?nuvC-rX`+hxZeT-_s+kFaw^ z^NINgwp=^$x@^x+vR9>!{$S$9_zoo(QhP0U4f@!AtBP1WyvBmp*#43uQyt!>I5NJ) z9%MvnZ;1Ot+#llp5ch|;KUDQICudN!5r#IX!&tV`;Voh4qTCAntQ@+CJG^B+G*Juh z0{521>0PH7q4agtYILKwNO#h|48Jt`ZB~Dg-jc7gJY5VAIMX`bfo&$;Ms|adD-YXp z#nsJC{TTYeKaMduujIu|p|-Uk+93O6lrK_4?QVjaG0}nY*3tew~>=vwG7 z<yC)rEaeq=8XSa+TunLkKgSB{;Pu^;W&OWcL~B-h>> z9r>bQjlSdN55y-8Vef@TIU z@vOa9Fidx^Rbug&&Fa#CF1nE238Hk&(- zcPD3UHjU-_k!7=m8LRAl*lhpuy303hn+^WhwxZ62ug}+dS|tc^~*n z4EGW@Per~UVwta5O;aN;QK#y~wftNat#2^DPbKR-iQk8QR<50%#m$&-bKUqs^Kxt& zF*+4qkuis^czg+4Ai~+On@3p6AU|L+3E@KkCQ~oq2QA&@YCP7k?{0{pq}1eA?x_ z|NY|AbLK49Y<;VA!Xx0#VdCkE1?9(zkm=aE*F=7|6WRxk-uMnanl9f+{3oq7w*LhG zO1bSnfj`-~(DD_i&R4z*`48kj=|yjp-yrLo2;F}eKe&7o)bqW7KP8hB-6H>qZ2z&? z{^*jm_)n0ZJFOmDetKt5N0em7u z`v!_Lz5#bW@rhaAfW~!o4*3RVFs|1(;Lg|e4HS^yoNCYY&&)X0x=i^Zf>qp!!J)Sw zTadBs)qDD$UGDq$oaFrzz3<1iH-2hp)3xmtWY2?MMqOTsD z{N?Yyz8jy}X7a+G#{S*i;aeUeCulbB&@<#dk_#N_n!V#I2cz6u>ML317-9=v(PcXICS{C3{GU-K=u$Q9JR_kQ@>=H8Wj zf0l9Y{q9!}n)m2CB|Qn{_1yMFMj3u*Jpj$erB`A8x^{1-G}d^ zj|RD#d{6Pd7;-&{kAwc%RjEz*aL5~!fAws}baT|6on@%k1mn9l_|)?-fK} z2A2*`n#t#B(Q4oDV>)|GIh{So7Q3(fFz}_M^G}Q4RG)Iw-#m`|Ol%|`hEGOyf2mFQ zn9xW1#v)gtgILkbXrXs4mOp1LTcKZ<)yeesy3Y zInjr#D*1%ehs{roYV8Q-wFBMa5i1=kM{j5v7P*DmNAVBWPK)ED6Tbh1oB@3<53oMg z?xPj~TjqdeO^$q;XJQX9&JKRx8S1J=R{HUM*H|kza9@{w-$x^Jb>DsX3r$`6MG@7f z#@g-Y#!)Yg&&lLV$sbi$=Bv_JTCe_V%m8D~XH0xi7t~B<9wy)5^2pVU!+SXIZbC%! zV*Up-f1i(DB+NT?dDC2yPrZQ?Qm_s;J5lPlt>9A_tIP17)q@c* z;OT2t$9a(?@H~ro5Ua*7c3EUN>sUz*M){`-BU`A^RjgY3WpeC^RmbU-mzac%RquB2 z-R}3I-aNrhQ_mSFFg3Mi{LuOM=X{;&^&`CW!Q&KrEhFZX1O^M?DJ^$4z9>HW?zc9E(xE^Ie=%{d`=&)>Yo|xO^NvjwuF*sEZX3?7zO$OS zp9`EPfP0&WwV8V?^6i=1>Z`EX&|B!iyMMQO_`)}YFPpC7UUZ{PA=3+HXF0Ws!ejB2 z)eU}piKU&JPq!X3>qdr<^Y&;TYe~_2LwoGLJ4MXe$Ger^OZ>+EZORQ*s{__$>hr&v zXQyX+QK;{KwlU!tyulBG&-Y4vzFGLoJ_-#1|5AE;AbTF|0S?rd=fGh#aM(>Oz8pBLbl|WM zIDm(j#gLJzvuFSgK}UWHKk@&jd)88akq?v5c?Kpya$QWgz=QZY14)(a*T z&;T}@YT;`0;1Q$l+Y5`!{z_OF8fpNZyd$>O=9%vYhoRNi%Jm$6cE*6GUJ)r*-Fw5t zi2UjAXN>%J|Fz>7JZ6uk8(bY0ZJ~GVH1?>4J)+KekbNmTIj(LUdSAw~FDIQhHs||Y zzveC6nnsK=fnY^;gS z91}|au)yu(XWQG}TKBQec!`mm-#3K)`(ERJ>m=g`{tn}>Im!6P=>INw{4MkU>`BId z@qLVM``fbTOX&RBQGU+vVP0dcrYhm0n}6&t3#IQN4??sk8e(Mb8%wWY5bI4@=y4YP2UAsG7c!p0Z)< z|MB)N@KKd_{{NXvE)XD5P*Bih5>OBotq7*tGLr#OQL!tn-F3G~2sf8nOWplhOKlPo ziW;q)N;j@_7Z6ZST3bqS+pOIc#G;mVi@4kFw!f`&$ps9kSX(oo=KuaYXHIfv2)6dO z`{(uIm6+6E7ofshR;+F?V=zJ}Ns; zZ$FkY&$F}htYe-%=r~FSS4iLN7JKFm+I<0C6dAOolT3@0ji1OYNZ8tdShi`PcnSTX(X;oRknSzes(tvwk zmUwk}M7b5wozZ5iTIctN``!P{dZ%c%;QnH1cCVXGz1N$x7I0E~-OU)cX?rA1*2R53C#gDNAqG@GgNI`go#> z+BxTQmSei=3XPaXtT&Uonc6vVYUhxp3qZy*|MGylKW;4R4hGTgQ2$Bz{rZ3ythy zocyDPrqOn~Wkgp0q0X(wK~~pXcqTTd#H0E ze9~ChD%DFSTC?gnSG~y!AG-m6M_1^JI~QY%Xbw8RTK9*>K61uMW3Ogx{}|iGTeBK~ zC+BXDU4*Z~tj`L+9H8%JQx`{dX>-@L7`?vc)6?w+&g}TtwIsW)hrD%hM&7`Wdqi{& z8UBMmz8L-spJ^et0vM#YuTXoLM9=y>aVN#0YO!f<0GIXq66kp;^Wz-!e%-sV2RLZ{ z)alJMLi>$PR`s2Xr@w3QU#u^j|^W8|ixw^_|>0|0nf*pysLz z>;`h!{QD5h_I;7pH)n(le&NsZpAk=H$5@jy|3b$+hc3RHGj@^t{N9+kcTRS;YCtMa z>tDy99}uIAKm*B^;+*vdsli$E?ge&>?47ODdZs?D{PzD9bZG#4(d>a_llG#8`f=>J z(?Csb`50e>AB8w0UTInTL+`fS-wf{--#O<;Lp8ZA#eW8Ca=U!_9Qfuq{^N%sR#$1) z8yn>kyYI}QXU*6uibwYh^DN0T;hA`v^qha-%$j)FD|z+P6c4`-xs{XexzOsAKHG&K zVkxrlarp2uWM%%4hH`S~j@uots;sr%@=J$kq9G|+tt?>~xfXOi^pS@4+x zCqXT+v;2F+-3o&^h8zuon>BA|>tV-%F=u53<0fD%SjoP23H>mu-t`?sjs z#{QDqc&6PI$A>|?R@zbTnA{wAIXWBnx!7IU`NlUeU{zOgCPr}y?%{P5!`Io2f12KJ z>aMEKsiRGf_kq>%pj|&U3XX*PR>HRu@RzRhkr}d)f$x9Rztdia-qM9U(D?xF4%z=z z&geg8h4<@hmSP^#AGYzm0NhLPS+=$DG4Z>`);zlCS9lwe%KTwT1@bJeMW!g`59?P}ohVsc|uiOM|Yf6DBH2I}ZdiQj>`7Y|u zroT5?qp?fUu3gfMj_uhcTEAzH9-bij9m*#mC(i8uCge~z`?<|(eYC#B+O?E=0ngrR z9eWZPB)+G-&@?bS5BzBW%i_=d! z6x!dw8H5I_@$2xnwmHStu_oH!lY2Q8`tnZI@<-=Bu)5`Pb2q5YC48J`>R-H4f6?2S z$2~i}d5D+RfP>!mTKfEJ+9-~%-wLV4zOVSXN69m=d(lODE1rLJlNC7Db;+hjTak_4 zd5#6NmESZ*Uw0W%>MlNkIq@_doq)XClN<-iL3Z^Azye{TDe+|gbRPeQ(; zW1DlVi&Y;R{Ze!2C8n*wpQU2@jNK18hJS#q8)BK~ySise^au*Z6N0l5y1*mJ_!3)Ti+ zzK-v;ORZHa*oO=LD)4e4<6clO^!!P1<%0jVUcOfCsCDxo_)#7x?0by&i|+|;)bnYa zp&>Tar#?2(rV<_8z$otGMworoy-@kjc6!fzIP}yo&z|I&8^3YmeJ*dx=J zb31;`d822=4a~85j}?NR0H?ze(?|7kM;fN-7heIcdqB5D~2Rn z)>}Vv&#I@)T;06v`v&Kl^#L+h?ah_hdH$Dgf2Khz{_}UzcWztvPR?D@%2m_*)3dPm z^MAL#)eyeQ529LC;UeTWd`I664}#ygx=w{Xn)|b#!xvFwY=&T83?868o-Ce%FD(g< zyE2!2P426etvKpj>;^uoW>U)oCiiKF=YLwud)vqvkgeZja-YK7ckc2~~F8)5U+k%-+$Sts$J{0fzoL^W)L~j#J>TW9oYh!86D>i;M6v0ZY|$Qcd8G zF>Ye)5Fb#Un)q=X*yY3RU(a#jX4>SzP49e4aD#t~Z-c{zS71XL`6Kvl#m5r|R&#;X z0@_xQUsel@YJpMhmqU)Xr+bWlu*_b@y_4c0dKcU9a{0FH1o6%e{X~5`{^r*ywm-aBZzQw5dKb9A zsh!$O{wjY^_u9;zs(ET|?%kbf&ipjtBh8r`c$Wn4q&uh4UAvIe-N@;l`RKU|;D_i9 zhtMZBSC-`<|g}5_soF{==%lx3%EP9hq3oiZ)@;fa5IIDq5CjeEvrp6)pVZhS!|3bu&BT` z72jJOKgV8T>gRhlF!jT(=ic^A(QGpwb5oygT+=;YuDNMmN$@;{PT_~k7r>`-$vIEf zX73~yy$x^<$)h)FwsKc_-1(YEci2d~Lqq3jtZ1~_|2=^m^?$dZ0snW8zq|DgeD(dP z^FN0*KZYDyS{7(K54pB{#j^e}ArDNfvnORT! zr98ije2vLPmUI62fU{)9dHuz-TfU+)M@EVt$iA8Y9NhSRxZ?~zOiIB)VDTdl7U=yi z`|;Vx%OU#!nqmH&?_!>sdlPf{D(m39ygBo=hk37M{_+*i;*$xA$V9C zT6!B>c%x;Nz4yk)9qvba`8r^rI_y#9saUh^6u+-~LV7QF1b)d^Ukq&|q0cG66gb)& z{lCNOMPHm<*tMOQ{d{!Ra`aXC(v>sb4Q;!1_M^&E#7?iY-8B|G`4m4THCmB3b zjGr^pLtE9iN#3b@9H4*IDTrQ-+zfU6dnc{DRQCC+=+wm9Oj~ej-@w z`NVf?%`@h@DD>{cdp8aYJgwiu%6XEEqi>CI=tgkn{OsJ>vk+5iu*RW}1)bw9mVKP@ z)nA%9gf29G$frXy!3FrA<|Wx;!8hDByK*E@F+^w0&{<$|H1l`B&(uPh?5^iHJSG}C z`Q4`K{;W=vl}X|^rJBRJ9o?J_GJFQwlHK5k-?fImhWLYt7lw!z7DcHCZQ_ON7X!D) zFaU$tA|WgF!v-tZCR@jR2VVLvSaF}`)5z4B+S@NK^mGqbSJphXGLIDF8@qjLHlB#R z~pZh+l1I2TlEyxNJr+{WE#QT}c0KaK(V(g9k%)@7QKP<`6 zY&&o76YPh7|4Z4!{AZqS@i*E-_9Val)&JK16%Vt2m;DL*cVFK9he`Ag#S4@-GJp(L zEmQwKE@2yJq4S%HIRsksl$PrewyQUKdVC?*C~dNwPv$B2c)!C_tk!vs z_90P}&E-KRcw-oyrev<;;;8F02wQWVR`ld1;XUsqONQQ?3-0TAl6Um3|2>V-HGZh= z2aR#V70?0iC#!%7Jl5Zjr$>pOe3vs*p8j+y|Kk4^eMI3E?!1Qh+e+s1VfovA_|bFX z3*henGIapCKkzIxA~}YC;D3rn=1Go0A0`KRA^XR8my1TAjU=?e-6Z_x(a21@i@Y!0 zPuazs42>`+{GOSm&z5>jTAs1$cy#v-Lzq+yNWml z>+2?7)UE!&@ukp50rGJv{%?F;oRfEJr)&L*bs?vVb~?}F;f-K(9G$`YZv04X@hq;o zv5*3ARsC(l&NBE)U&%K560K+Z^KjPd&-{?`9b`oZVHxqSNB z$lN|G{k&x4%g}l1)EsbIG6s1*fSxw6$*NvlX6^FR&r)PeH!?;sd&!uBtc>Z&${0QO z%b0?!jM4AXccqhS42@L?Jt^k31RGJgtwwi;52xYZUCCbL|9vya#XRnbp<9xKJdKz^;UDdCzeh@ugHVn@HhO<%sll1ru zXC3|&efM_A>hV z?h&#no#bBfcNjAXo+cSLaPQSl3_PRe8}V202Y&0}Pok(MD=%FCnslK=(I0L%1zgGX z4QBmwMJ}$~2i&BqV-KBV&-@{MEf)2W7C%7Ib(V-_%Y*(9`f^rm0#of z$A|n6LHd7={%a;cr`Qty{w0e(+IZaLIN(RxVKrTpjoZ39xOldBwWIOK9q9GJ+=KUh z#vecAPYf~MUdB_NT;1S!o`2Bw0e@rIF|%!aewMcExXSEr#Yy3% zaJm8A1Rv3?be66@jE_q8*fz;g=qGv|Fv!|aA>?mVF?@2k+;dQ&j`g>{)9%r;e{5i3 z{5*Qs^YzHam9NJRC(V~}AB413Hwa>VS{1!e(LcD_> zOReF|mH0?KS+oYAh-uKO`9j#$slzb!N1q1l8l;5(ug1o&EoC)U)gyIQ3*htAT@_7F59C#18i?_Vf zz8U<}7(Lh&z3BIEu#fuQOS@j$9irWN^sRArGtP6!;Uw`5<@Z)HMvv?-=0XlNwXe|S z$xBnd++)al!OF9J9-qlPy*12aF8JIu&YmkQ;_KGSMP-F;8tV|S+((>4?+(_!BChm( z-aQ{!d-EzH#%0#NZD{Sf=aO>)CLe6~)TmP%ao2u0yY_%`L9aiPwcoSz3Dyq$ht}>} z?_uDeGf(+&nC8KOF$IT6feQ!4zw+TwehN4|1{_)i2XJz877pH;w0;jJ5nvJ|mZqHc zI53H1VdB|w!4>uWpQ9gxf65bQUBMNR{w?5WGdMn@Ad^csz*_i}|mv z(QG>i4ub3C=Z`QruRR!~yBRLseS-HyYoa^Z-=aO2W&-wGoQE{;?=Cv&eZ^}U$1<+IEm5rKP{K0^H<(XW3k-dxW8Bj#fAnV!Gct|ABjSHsLj`5l@|khzSZKYf>N4LxQ&I`{Kw z)$lG8uQV~j!oKU!>7Mvv-4|CBJaTY=+5}C+x(;POC-DWzcKRLdWA7KuPN=rxsI%-X z<8>E;8}C;Ahz&^6TLq6rC;Pi>jt*Vcv_@=dgVP2hDD|DMhU*GOkXmZcsd&pOT?gHx?dg+qQz zo^|8L>>f+5JL?cHN^cF=9bb62T{#ZQzZ&WTKegM(`qpScZXfbp(#NeI%Rk>7u-oa& z#p`qI>pfi99rAGDz#v}V?BeCd>EJb=J$W+ccFzal!c?~E)gjh|-kZJ!o$}VG@f~@5 zfA^rinw5{zMYH)KFLH*;^Bwx@;eC*QVtMoXIr_Wy?Vsr9!}urM{)ggqimRFPpQX{v zFW>QS#*K*?A4{ogGk?>YFYS(kd!ByyLH+Ihfd1}1MSpI--_ZON&sF}{Uw~tRwQyVK z=)C-sEy@qweWpDGYv0_nu-17s57s@RGyeJU`!-VpH5b3TL!oNnxA45H*2VLynL`gg zYT?$GxV-K!kmZBE3h-UHk^&FX;6Ycda3NmZGZFoXcFV#27dgjQyyt9t#Cxy4NX?ec z=>hlxxUIaR7IYuw+bgGMG|%csMWLs#@%gDwe}6i2m`1nIom$c_H16B!Tpe*Dd`CJW z=lY#4V3^p1U!Pj^s$r6*tzuo%2lJO){JcI;a{mKIzx>Jr5zD^lw$Juo7#P*|Ecb9F z;78XX*G8i|y1A-F9dCclJ*Ri7xoKWHmv(P~^b*yKDDKex7k`IfvuL)vuK@m(tHr=eO3; z^JSdlJP|LpSDYV(AB=Un+Q*SwbcS>2i8Gzl!?BEP>qL9Z*w@P6)7+!*lEiA()54q? zzh>0cPHHuH+0OUxgLijXnP`RUJ3WK>rdFfZx-!l?Pkec@op$sq*|g#Ucw6>+1lg2m z%j(RGA1LPjv%A1s^vX0aNduE58)D96bciLuW(nV0$Hg4M=o#|lm!{*HR&>@@>k7Mj z9rSXCl^GX;=I#n84-;MXOyd`Ng&ftyo!+zYJiBM-zv-m|mKvzPR2rT1(C&!Rh@ z*R$o`v$ITp&+1u2Amhq5*Z1_#dR7~dY(G$c{!P{OvbVu?Wbe4?)O!|hR;~*=Hu7+i z{S(e6o3`lh0q#=~Y|{@xZ@{VhS?GOrEYsVD|9lANGAIkGaAIl4TS zd7Yx^Z`8(2U6tv;)O){@{2Q;2$>d*o{hX(}!Lxl$<&N+(dB^MXf*F?M^?Tv$faCRj z@tmNey?m3s3GK#*(#YOy;6CpbYHN-f>4d+@e%-;d%|T~GtCcCa#LA39*B<@DLZ@_U z0eS~{A%{3~bY-kFbcDYHn+}Gi20FVJHh1=fzOZxRjxcviSkt<{i{A1)a`+iz(+r;L z{V(zgri9$_Rd=VLjy8AFb_svkn}TSlx(7UYp(0jYG&fY8+!Q0X&)QXq{-gUG4emY+ z?g?+v>5P0t=h@1=<$5L`Ao{@i*4-bsyM77&&^A4GqLbcQ$hl7FllY0~vjra7P@(gZ z*0GD=Nv)hyQ!b*bFAU}SsZaIs7yRar$)|W0{j|~h4k$L?guNF3OKQ2Wz6kpj`%5dM z+EGh`;O?z~%x-huVY(gj;YhRmne@|jYs};p=(GBGgg*34I&8&5#B!jWt@ywiny#?p zR*4gDYU=C)?n^EA?k4gYS9bk!)1$0qRhqvo)bVbhj&~eed|nfGnxPw&S8yJccjD`* zX(XGFbB%8`4j6ou&JV9La}hn8d2~fHUtk^;tR>n7?Z(;fxzvN48SUI;g;pL$j}$Eh zsCA^iLo=<;gRSg=)&QSL-va*x$FPCS8K>uwSFO>B_S$z}eX$UE^#uD_gMBJK1aD+M z#rAQXjboh=bjpBh-x)nhaN^wWAiueud3oOrzu5@CiNb@SFP$BUnR6az+kpx0{?uP~ zQ+41#u-ee(3_kyRu-de#D6<2tqa0U{tFnK^_yKSy620mqJ&xK}8RFXG^fyk-YzA|X zZKVB?eI6x#W?)=P{imy}&Mxpi%-S`k7b~9!FFuF&CKD^4%iI!kVx7XbAGYM~!x6^N zKIrd*pQNUP_F*>pha=u?3L`@!#7ok!=#I$viF z&j!Y<)Zd>qKltc_AG10&kK5Vj2f@?P;PMIb7cQjFQImn2_%w69kbZy0K0UQ(qWvB8 ziW%(Ffj~6#0&}TH4^OgJnFuxz_PI#Ae46W}B-hU=&d@W}GBLQpX?`|F%I~h8oBSjx;kWFg;yPIQ~ zxB2exuQuD?DEfLZ5WV}^(W6$ikbiM>>%8jQp$oxX^KBXty?evYU0$xfnoF$NN8mpX zo)yj9&OOZojT49^o#hO?f@}oesry;IW^~+XjX<}0R(h7RIH>ajAHnXQ#JQzHyG2hTG?fbl9#hiB3B~ZLNl}{H-d`y+610R(;Yr{C(H%|_Ui1inFr^HUSVv_Cz&1FgP}LJ_uW5slJ~H`57fNro`HYvPniF) zK-vA5zW(J`F0HieS8iL?|8n58w#MM7z6xZ@8|b-Xjh;Iif83~!kFq`^uYlc!=%kUt zXyyX`zGxNQUyQC?jIQjgSkeEaRopfw5a`7A- z$5U6s)XSR;jt4rfKMmc4zS0wEUtDN#+shAFav^j<{9HM6b@+aC4#o9PxVBUszx%%@ zO5F3y<2BEcXs7=?&?)U#d<%UUum0yyPF5j(d>H%HjYs6>lO(T%c4k{fcSnvnThU9A zz3UsO?XZorB&}AN?VgVacXZrBPIDDJ0RLYS+gEwbHPW%KL^lBMqtLPiPerfY(eP?K zfHE_2ISf9`Ry0vaUrVsq2$l_gBqZ{`ycEaS0f6Ts&v*c=PYRdB7d6F&a z_t!)HZo|fCwMKGoys%?0eR4l(7S>ny?+(@e!f%8BnlntsjxCL5egqC;77hOM?D3a4 z3*|q*Cb*#QcBbR3bq=x8>{&M9Vgq-{ZyBs_zZjjS z9pOy3$)SP9BM(fs*FfX0Es2j3yQl?P>;ay;kyY{?zlxsr1n>3&|Gj1FsH2Eq=T7Q6 zFoxQv;kTwe@ISzv0{XlUoo?SK`d}|yoXf(Yh;^vmdDfW*+<#t8=divvc%MNwPRUrZOB=Ie2tR{e(M$lHOmS!R>-Co(FElxq+-0KJ zo#57h4N?W%tR>*sSSvH~P2|?tDCgG$eF2?cFE=pnr2eaXoja_i@rGWNqy1aXyT?N0 z1IDABQTou?-kNu*QE3HNUc)*P)HoJQT{yXMJ=4aDnKm!Mi*o&qUflHL_vAONxWvOf zw;lXrN7iS!K0=PvYT_``mlWsGUI<3BeETq5KE-Y3Jn9g=idKb-%B|WB-?H!zs?UJ| z@;b7(iOxnY;yAkp9+oU2FAG{tj}80$f|kAQ_IKNLPJ7sQn@&IJU1arv+kNg?=_;jDar=ffrmPdl zQ|qZ+_W}KX_mAn{+-E-|Pm;je^SLPpG&06LJJH9pl?>ASsOg`y6*$vd- zI?G;G5_J-+vz+=jf`w=>#P5ocoXb3i?}Jz&{Wmj?a9X@$1w5A;Ea<%<{NbvBQ9vDl zLgY|U$JBv=cE$aN`;Gc$S-f`TcaH4#;dsv`dh6up8*~oO|K0yNpBGOcmM1*%>j$rJZp_mUHVm_W z$Kq~1nU_osnXmpI{yNQDKE*Y%WyWc5+}gd2i|y$8*3#f^0{(#QjhvcepWuu#^s&As zI^E{4frn@3h|clpjJpn4=yN2*df|2)PeGdBA`BlTPxM>skcn`#N#DeAlGtQ|F(k(2WIxb}toQ0wmPZ*L+Ot%v^hnRg3$ zmm2Mi-wW^3xw}M5z)s@-9*UJocZu%&BJUz&cS&Dcj4wiUY^6_cK0dIh`S`#tcQ4%f zMyL8LxhQ&CrF|&kysK{yJo?GkkE681=W!rXH^C15P42mQ_4RT3lKwIHzR~Y|_ggLi zE(;kK*md2)`sVYQwR-h)WCs+oxBDht?JQ$`-M3nqJ!XH4Ol-lND;V$6qd6B0jdb72 zen<~ykA8!nyO@2fLQmR)P93q%FuJhxAn~L+^fY5vfZM53@&n=L;%}+aFu9rqPHH~% zEc;}yW$y=nT-ar6A^CWb)>`G^ZPB_x@5rmlmjo^6=9Dn*c*2~!|QWJdGpzuozH*!=5rW+?YAeCvoD)s;2Eo0 zI#vC{^D{B>pS;gkX7yg>6{V1&^1mqmv~rmI(<^;vIV*knr`Qp*B^&O-)Y^} zChALb7E1Il{X?=h$z1piSyr?G_3@PXOMXQS0yn7`KP&vAF*nYBrfX_5s`6YJ2v7EvoJ=lASB-=2l* zxAO4W+~@TN&UZ@2{3-e37WY!Rb8&4N(bsh5@nQ1CkHt?j@iynPinoo;iMJ*02xd;S zjKx=__}5r`Rf>O&HF1RAMt%#8Lua#`*W%-<`yL7o(x>n^;L#_1Yu^!Yc%h5KTULO> zcho3f{6J)Pz&?S0q&~#iWd0_{;&ZMlwii#M?h$Pw#W6>?hF-O!fgGnaaXj`qlUm2$ zbcvlj0iHG#*`K04{b9d++)nY{iLE7?vy3JP}>OI*=PvA@F#Xq2S%Q+*WzL(KAzJyr;az7%)MfP*D!+Ebu zxkB*dE$^zvCUE5a2=kTAwOMkUeB3dAhs{r29AI*H@{PHj$m7l=@s&Us-+8C<2=_H| zhm`K*3|3foi=WqG$EWdGFFvs5(Hg734vyn@=q`8(zxU4V3{KMbuj~v)t-C8PZ0-zB zwmNU6hUwy#hUzuY&|{3ZmH&!sC+Sz;CAV9Nue3Iev;S+9YNXz?v*0G{Zpq?;3uRj( zUuY{|lw!86$NSwlL&Zd7xBQ6Z=)&A<%ABhU;lun5eU|tTzPHe4k%7N$HSv}PYRoCd z@)Uab;x9)Z7LQnaj@zDEEgR~_5qIZZ)w&c7KZ*_fEA~Qu&pPhZ(>j~juMck1IM}8h zIT1lt&QXjC+t<~VO6?urFu8-oDQ0rS(c5 z`@!1-=J&cE8eMDf9RK1UA0$$hu$d!c#N24FLQ@28k>C+8PCHJ0gCpUtp4Pkrz z)PB=fvax1xuJyY;-LBMb_2x@V7hI8UchY=c8D_rf&zoXY90_ConC`Fjy)`uf2wJ>PlDTi?yB&-mBM1BSoBi`F;nzT8g7Swoe(hIHt3 zJH3)Mq=WWltU+_CU|-7w8{sfAr@K6sxmdJ8yu|3hw8`NW=~9(gS>+0hF9Dy zxn=Dt28Y@Aak8UR#8*zxeua1)-y7f+4ckW8UEK50&3irY3huiz^z$BZ*iXZ^T%Yt< z6DwGh_dSh`?)gAPlZiNZxsVt+YnM+TiQburTRaP7mO+E^7xb`>7oevT4cYl`b^pGI zK6qm5m@NOx{;hIL@4_#?*1KkC6M{a6+GWN+Pt&xDn7TkpWohFmJ>tzEArT+ z$MrGhiM^-U%V${J#Wcn~(Q=x-qMXn4eIkCEeVabh--*y^_FwBW{hgq%WqeNXm%SLY z5w^jv#Fy?^+uy!dt(nAocbT%d5c`V>4)&YZ(r4X@W;!y z@x8#@D>UzH>%eyFJo{B@phRZ4GACFwI~J; z5?_dC1_r`fS=<9z(CXZKm>WxsE7 zzekvt_?usTsPBk;x#5fL8gdyuo+=qq22SXA@ym0Htqs!{U;QuHI-mMPXZJPHpS~}C zVm|WW?7q74?DucE-!1e}^ZR$*?~!Tly4Rd#ZBUHe>${M?DN-5x6NB8Q(OtWcr}5F8X=PP%(|KLGVS4Iv5aJ88s5f!Z{S{; zS;u)6g_f)=j=(FqTPS970|MAd2|gSAVNZqc%4thu19z3yWMuz|?+8}f>#HXY4^zYI zKF{5asaECe_FYe{+!rpKS4|v#)(bP|Rj)%Ae4%1qbuT#{;?csRB)n7dqYIvylHCsf zeDTw<&KJo;5}mF@~htZc8WNkital`Ge=F+<`R{i4S&rF*W zfG2UL&y@@19WT6GH0y;O(agG+2cCX`vF779o60lkYxU2}19pWSpDa4{8oxsP(#Tc6 zF58kPm-sHZl+SBo+`kjK!m^*^9{4nE6n7S{`5ke=AD*8pe@-65#jiox*D`8QPmV|r zo^YkT*z`MUu-{kd_p!Ww|1s~o#}k*MQ=bp4wf<(!^T`X~|6kha=ZX92?`wJQW8<$^ zj3j3AP=oeItPFX9qmU1rFHtP~`it!tyfwu$&sTLRx!F&?gD!wv_THb&d){ZauMqX3 z@}C9mvw5aDC$KF!GdnFkHZ-k!Vt88b)}V8k7hVems{76dm$3JKKHl{&=+5o**f{Ox z(vG`4uvuRV#b`%u=68qkVNE@46VDhr@8{L~jkQEg?QzjbzFqkZ#u=>lyY++X{pS0> z{PhridEE0`5813=q3;hBAN~{Ozw|@Q-;MWtIQZP~A^QIy_}se6^PdgDXV!;=&ji0e3 z%Q8b*J`|kZ7>z+8#zT2Ebs)pJYFce-`+a9zs?F55>K9qc8hw_!MHpB-;v|BE=~<+oCfvJ?ulz z)_~npUf?9E{Beq*7{`rkJRhU$Lyu<9^~9*#rx^X$iHRBcux_Zn+zsCPN~4*d_||vK zyI;V>fb;GbC=XO?PQkhH>cyk+W8GybpNM<_?wLSt*KzJix=Z3*`IW}oUu1vKF{sHr z-o%0go9wx?%aeD3FX*Atp?^ZYfcIVgiom^=b6XvL-< z1!vPQIpjKzktiy0Qd@}wtpwi8BgH&};Ja{JG@yF=x*JgUc$jlajEn!sPPP#@sv>R# zT=Qc;ndbg>?186~CD%Lk#E&%h2K0dt_t=^H0YoFr&u^0t3=}z@E|OSRy`O-X!}`_4lC5k4FqUXu~&cp(j!Cz&!6Gy3SaW!$DgVX*!1R>g`Q^G>!qr_5u@`O7;yT6yj#g8ZJ>_GW_QkBf2410iI_k#|Qx~r=zfZQ$ z;rANOuGf&0tlyK^F-hc)cL&En1AVqoYm7U9y0==L-RqDi(0+Ftxgrnod18sv-7>dY zXS5Up5bY^nyPG^|i#rod9fg*lz5MH}8+=z^-4m~KdaD*VhZ~}qDHEuPTM=-ksfKi; z_(Q<>;fy@lJi`8S^4OpY%0!QLdiY(jX>2z6jx0`r#WK`NLiMo?z(PrAxQI>c9Z^f>gn`7~`HVxb}1U z;p@#=t~B`X!P?E!qizK4+OL8(vM`PT-w5!PoVN9xeOFxFKZY55@5y8P+sM~fIf=dG z9+5U`ulT>OX}?niotWNs86PokD}OJBJeJXnZsvVb!I zm+-8l$VrbacI9s)e3iR@dVp&W``5DxdW;V*e?P}Q!Us49=fB&>y~q3Hy>y@F%V_6a zpN!7JO?23h2Q%F(;ipIOW5?7Z%+04$US}HoQ=K#8PhcHs;F78WKJZabS6K@D)}pI; zvGLw+U_}g5`bh+Th3iWIR#m_Xn00|O4d|MpL;2#?qHk@-H#P^~TRk{@HFr8Ao5$&n z6Ma_>tG>%mM$N&Q{`Tr;8T}OTd;Yso-c=vsRUN+@XfH3bjs@Ulimm$lXrf<Efph zPQPgn{B!LVe}fLZIYc-Ma2~SY{O>$`u;}Ys-@;F7?y|?nw|-xABb3!sv`Nsy_H;~g3pszgx|a1 z^SWcP|DOUrJ$yL07FY|M?UQsDlIyqR4$y2Zc{jG4gELmxo&?V1JVVzTe+oQ$d2BB2 ztpbk>y~W-9pAix9^W6NOWXTxlq14m>6Rj-3d5P22&T@n^xu zXQx(kj)5G28t6**-k|3%O5F(_on`Hc1OK^CfBj&1?Y6fXIrFp!7`6cahKe((7ZEag z@sELf*T>f%ocxLJyu~@C>4R;+HMQByKKzI_OV+MC`207wn>GRN>off%#+f$4jqlT@ z7Tno9mhnq(bj+E=sD2Ok3CCnlX;0J0nlIt^i-ugEpz>AfF0ncTr$N`OOL}FnqM$lB zwV*nL?I8PMFZjCz{@=iR;(46c+AloQof4_gjZO`}DHl&VXcOmA4o|<)X=9x$w~Vmo z1WNkq$ys>~8a+(^6;sIR4@5g_nxoZmo4a>MBiERl>sv1Bh`ch;ewaDDM%!zr6jZCP z*P!vkGx$G!p>vpc?rX@?CUZV*lKuCb#T`K$d|Is7=5I#(cN_BXu+I2sJ#(OE^i30M zibsu4^KEhg^cyrX_HjI-jZH47 zPL|y0q*zyyxg|>$I!WfH+#_QbP^;w&%q_s&BIHi<*UU|EPxjcI8}sqzraYscWapLQ zx$Fb)H{A`SIG$vf&ZmaTg3hhXX9DkNF15@h%|2+akmEa)rzD%tvjqkQMuOkmCpvK< z_lg!f-5aqF*72328s9xeG)g$(xjXBmDV%HNwkFQOX_le8yF~Y znz+NlLQZnGiaoROo%S{6j*_W%s-?uK!$)b|JBE8~zp^ux);(daO?Pqc@%HU+xxPT? zn_Rm}J946*`_yy$tH|rG2_L03lY4QC(J6iXolSpsUVo$M&+8jIaYrN?wu|$h!B0Xw z%a`YpOaF3uE+mL1>$ECh?k|q{YMrX?jFtW8jpqzA-sipX$X(TVmk%@6XBkWV`NyjFjU{`<8%uv( ze(CBb4*bMlugKVyCBi54(21iwo_Rp>wZP+<6S4ohhUDuWt`FYb z-GI!1ujI%I+DKPTmM?G)p|jxI<#T~^?`UgR(P`1nsmQWoWEnArl}UKo3jEH+v5~~9 ziu+>dJ1_2zRx4&PHDw<>bnSK%D{O`zn|AObwF~h5#inRAafVruk=Cv$@a<>OODllw zv&6=liIHvOOyTMlH`nc`;#JH`ccAHh!zr9Ejv&j2?CA22djoEp%W32B`vLfUJ$)`= zj;-)}&b;<*!JlIKj-O@n=zfvy`+VL@BLk|C0gcGsde+jwdkrQQ7wStg=e_H*b|L)b zxlz$+_@+A1g*%ncS8CNHq5nj%(N6bLmK@c^-z&hR{{OV zmw~=_?N?kofxOT4%KJ2S66^hLc5d$qAOdY4DR+Rlz0ms@L*YI!?hQ1=X^JUAw@g-vVNP+sWB3AhtE7kiXZ*tI>aE z7ZCGWihfi;Y-u}jtN?nBm-7?`-xh=K-5N)@#NWq1k9|d5qsP&kbWYH#>%o3ws~2<} zd=FowbWzr6<~Ma-b+=-Uink=rve$67vWA$s=PTWpZC{S;{w42}UmvPAZKEf*eJ0yh z_l=d$EU1p2E8Fp-_K$Vuk1;DbYlDpMtYj@g@}%TP@Wzq9$@IH>A&_oLbQ{^u#?>+zkDHe&+z!+4aQuFR@xKoB=U@L~tsmM*#;r~d20MK)sF%+b z8cA|~DhOVtz{?vrd0biNDG`M?AH##zrST-@LD_wfoJT)eYTzb$k3 zl0E1=a0>Xi=ktcvW9E;Y=3kfQ>8lPuIpKw zd}E^5m1mK|#OEq>JTIRtSq1+yv=!>8>LUk<-|Kc5z3hN@9<**3&v-XN?q&ThE9)~D z9uB|nAL3Wq$DM)!GWhvZtpBjt&mnz5_?s*lIW7Hg!Jr%!ZV$o$Ir=fdz_U}41B1L9 z8~s;bhTn@9ASZI@6WqUyJV@P75JNs-|95&a;+#)Xvp_ILMo5>;JTNv?y#pnpid7ZS@(>r zeJ-1;5k6S-38%G~JZ5xm>mBgl=>Bfo(!sWM zw3Q5(O|Ey|Sqk6Fwlz4yyNiL7XhUbYT)BPf_j`wXpIqu^&#yEK`-V+dKT`RJ^cSqJ%`$KOXDFdu)rWXVnPzaNm#9$cR#e@GJ9FCHy_)x5+2 z`t(R={~P`7HR#wi=-8>2k>;Jnykqz%Yi*X#{-$z!afsO4R_;b-9QllY#@*;2SQR=Cy4Ey}KLehWzxL%H*?92$%wy*LJ=mCxy?!4u zOk>CR9>GVGoFmzFlT%4fd<;9aLOuub1d>I8>QqUf8hdD(;R_3ByEoiVoTW2)3px{H z#*u-IR$wJOb5ZPFp7Sg>4x)I=XkRSE+-KZ*J#?8QHzLAZk}abh%|F0>U(fUGtz&z$_6WIl@0SkwON~EtIcsbfk|VN3=6SpXdN=|NB&;pUAKkutlr4VXeU`5;aJK6sE4(IDU5FfA28|UWNAZKr zOtVJW;EFlxOpw8?7I14FxYZ`y8Z}Km_|!__R$+hYE^z3sXs5;xf?KuVR`UE!k7^#? znC506;PYj!iVCSTsZ=nb#n_j$9yDz{gEaan&|sQee$2?rWBkHJS5>We{d zqWMb-Jp0`B!J0O8qfMKL&LGmJlpHdbkNDa&m6>+=V~)$L~a}4aA12v{gC5`yi1lrHxCg1r1nKzYlo)r zwNo!?vb}Fo?z?84)IAU^lJFDt|Gm&KZ7NPPZT3LdYV-NLb>{5n&Ftqb?B}iQ=h%{I z$@skfRPE4yDju@ALb2gVoP!A1r*X&c7QRRHJya|j8mb?_zHd>@)fdMguUC^_HAJ&_ zD(`^(Ru10DFmu-geHxjy2iV2K(a!MtCiqi$G^!0&u{SORO#u{6gQ4mpkv84j0f%Kz62jrecVItJ=X^Q z@Mq;h3x}8G!GE~<2P9Xn;%rGt<4ODXsl4~$5x~*plW}GxX#eByeLSMnwHf|=OqM^C zk_&<_#^Rr6|J?`P4r4Fu5IuvgCto8t>dzh3&j{=m{k#6pTo}0aBK>u)r6!Pp#or7M zi?M^SaNki}&a=1B@eV}l#@qi&4&HG6=fmwLAKb)KM`dC5Pgxz!gVzXSFAv326hBEK zFS7dh4$saq@WR%3RPZWy`DndlyL1%fMkVW8gS}fhD%u%pYU0k|Aa`DdSEjhrQs+-p z<7=@M{7DV@pVFzq)c86J+^j=hTj&bS&`1P3*2Q}_1|Ygz_QpW_<^uFR{OigYh|~Y% zYnnROTA{W^t6*iC{x{LTYKeI@#H!e@Dc4w?n%i;Zap%yK+qaMdog#|n?8Je>yf-Z^7k)64BeBB+P`m( zc5(jedHZ+R#18++{R7`G@Zoz*_@3QAbga%2U|m7X2)ogo6Z|M=wW8p=C4C9l8@;0n zy*v+Iop-|{z=;}o^PvBTe#_yhr-BW1@Mh%t8FnQ(0r{}`#2?r!Ro#iQf$2`5yeA9-LBh;GJ=5HRCgUo_m`%5pN;KdQlhW zzb4}soIGy66DB94S$Wm?Z;U>Wh4J9K|{b4~5^hI%U&_-^_l0 z(=s(vM0ePAJCuVY|9$1ncQNn8;AwL> z!}T-x++yn%b1q(dE($KF|2lNg@1JdL*bFTjJk=T*;~?~=-^CNCk7eqcB*2-O^0o21 zv8(vKs}$U*f^XIZOr1XuHk#+9inZ~+`bhw953iIf(Jc7~{O4|nI)aBjyE%g89een# zi`X=F+JV)?^_Pr~s^&CnSM8!;$K-2_oxj7YeOPfl@{8P$DcJc_sQGphzN6FqD|V#z z-U=^pR4Ye3$nXy1LvZb@I$+}GTcVE&@MGbT{`NiOr$wx4Y=E$1DF)INvLopKsj8to zn4^i~?MrBzq)(3zB;GbY)Ers(Yo2*L!K(xGcbpycbme%S{Vo5QTiZ9cK8tKa5AP)x zr+9b|f2b7RPjvbF9%N|(`&;^}f z3wt}H+qloB0OMt!{KmnnKl$`qSAX(9`2V}N_I-KY#vfY+ZQI|idHC7&fn(ohUuDbw z{Ab7l=BhbGq(eP_mAz&d{(+w@XWW{g@;5$Wr+F{+5Otndk7^*?`ELX5P0)ycj!E=+ z^&h}*x)MKKF8^}p?Cntu*(Dw2Z+-hBUVUkHPc{v+AJ?8CestE**?o8rXSwetf2h;j zlbqNywDT|j&7MFj@@ry$EfP(nLb1Ek>#!fntW{6q=OgaCDuTY-7`9d=&<*#Jf580S zl>M1PSFS-bq9<%a3KIgQnm}*Ndb3gs6diq;j7JV7gJ(w=v{1&n3 zl_MA{r#<~DZ=klqH$MACy!fQ?MT;&E;OtO|$ury`|3eDAQr=#j$z2);9}C)1>ew#k zdkyDfQ{3?=9a{d42JJuV-=qCMlFct{7|JhvjG6%6dmfx>M_H>@2u8pL{4uZ+uSf}g z=nknO&WBLL^)ju4w)KJ!zXhoot8WUw?L>{Q|WCHY?N*umpeHwwDAt1z)xM z*q|*jzkheA_7}AitW}0@sn3}KqxT423Ff4A2?lEn48l1u7`V$1gRp_YpuYwf1Z0cf z8@4NrKVb+4^}rw(Z{2x#{va3M-Dml@{M>J|JVw60D$X~LC&mO$f0=su^3#KdJd1W- z@5612f3CkTYoD8%3Ay$;^)CkTy8)gf9nI*J;CF!!zXRwq#x~!J9yztSlUg2~0c!P{ znicR&f4$5Iyjy1-J^3e|`k8x?f4tjuWfS+2g!iZM{V3M*g!Dmv|AKy>)6}WhO98r0 zH@g0IAHBn;?|J@@YtK8`|Kam}tk2Qe;q_1bU-$<+ zPyAy`RTjPt=Kk?4e}Cj|T1b1G3wnA5Sb4p7Ed51@*%UA6;h88Pq}} z4%-ZmoV+boJ@*W2_TahNzOSDe1c1^B`W;TVb@9hT1rjS3>!~RKDY{FM?9naFN z3mwP!R|>F=dA{;C=q%5^J>c25BcU;5*m|FRd!WH*-+m`=p4-5wFgEt$tc|^Mw6#I@ ze;RtMV{U);T7P>Szh8qjjhI}qoA)sFOgpAL1^8MT`Jy=AkynnJeEtU3wVE8xCFns$ zH!?9m=@ns<)BifY|1@xwUoSm&&^{lW|F1Y(X#67=7Tb@xc1F(pzmhk9!K(`xt!4iB zU1n;Zihz^$`B`xPUijJ6Pd9ZEC;vdW{fKcR#;(86UhK-?oN?>&#_hEV_7?%S^Xa>r z&r?2abrxc0OlA*Tt-`j+lPsezO7EjyZHHv_tN8!71gTHJoXh3UAx~QK)%<&aQwwWo zunPAtrmlf2(cy zkL*?P&aEfeGj5yVaPAspa6Yb_uQ8a1g?$hNub(sh`gJ0=zZCnul{42qf6U;1e+Ibk zkw50ia{OV&pOORjU>@90h4)FA?wTW9K5kEzeBswa zx>7{;E$~jpiJ{;-1>Y_&ELVIWZ1<3Jj_ftHL>@=>#?0BwDfV;J2T1$$iLVhOR3E~d zp?AYhPJ85v=u@$hHQDwaE`E)3OR{Zh(JylGYf%0U!4=q~j^)DUAG5GIRlU>OjQ?in ze2&iH1mNpex_RM776gG&#S&~O?Ai+ipK@0g?2-RwJ~9oyH3y!$8JrD5kNBkflshb) zY+#_!vG{$`;r{lR;u-L@B>GsA_bO<6X3q0M@w@fbA@aP&<4**Ry01w5ZpT6DAM*~j zQ|4CY7Kh)tcAN4Xf`j>IDQsq)UETrhPX*@KaywL8v7Y!I`iQAp8=w#6JtvIaJJ$Yt z?&pmKnOoCjJK*Nn4c6-DW=z?MhlsE1Gqzra+}w=h|1->Ei}-F8wx;-^vFQprY{pjG z&5UDkEjtIr?_{rP-uKc5eQ2kF19rbF%LdORi9Y4jQc!nm+jc$-5W#BW@N3^H3!|fk^DO90cGXP zp8u~uFo<8!@MIWq>E$)y9~^IYT~7@}ey_t1DBih-y0AfPZ1nYG&B%9X zEXy;?@aGlFpXc&SWbSEyo0V1f4lk>oJ~NlsDK7MOUfd#=c3nO#*-=0YM>^267BRwz zwJ1Q0Fg)%S=Xv%f#|K1PwF__ft7*!UmR^z)yB$Zwos%%Xdk8 zy)(5rQ( zXUQTf^E~qW5%{3m4%RfH57`~+YspQ~%uji*f|?R_H^H~$e?TvpJZ`Q-yn4sJ-DiRi z%%AAV=- zuVbSnzp*v8ah9O90+@kEUe0Bc_BG4@&tkl}@c&lobi(Tg;kQJ&K)_%8e+6UdGx-rF z7bwkGkEA#?1auLECyTXcK;9K+jC>+;$vhh@to!M)H90-GAnqJ5Q` zlR0`CI>t-nftdZu>R)ShrjVSawqf+IYvHZ_c$)A{`yEp~1n91UeGvRao8gZ%9rWU7 z?>^+M!;NM6>$F~*9WPai9`CbnrSFX}XK_#V*Bd!3xL^9~+uD|RV-|2Ff}=Lq<&{elLi{~;5D z_6_u5=yP|-=u6)Fd!QH5xzUGMPZzYSGYQ+(SN3_tJCnd~=1cDAv*K7Ew-zZs-2Hy=;>)YJ4ec-|J> zXH)RBzGh!;yH`K2IlETXqdNMr^k4C(!n?Nl|CTXSZ@R`=hi-#UtoqeM_&?tpSX2ccz&G4?8}c3-d0Ztj3)}YT5Ok8p z#`o5)T!ar=`xC64wY(X*X{HTtkRFh;_62!sc~*5EfvMzzA13}aQh5A-W{vEhU{;L1 zbsp=z8o$H*H}83+x45XS=iRT~-)aT-if{s_Ir;v#A9i3}Y z1F_mdYgQM1H3R3a@tlpl)1t;UbZ+uDX507?GLmPjZhEIZJTB@0`^*-z_kq3|_C9e3 zZIKzm#mUgC?kb)|u4nfh(!;Hcp#jb+eH9tF6yW@M}3_&9QD0(G&yIAJp}_5^#Myc2zh+_p5h9Xo@w=&f;Q%*S=7i;+FXW^dA+l1-P` z-{$PJ`t|Ci%TFh{^**tDeXc}q1;Mj4eTIsyPSs`!V`q1j^S8{!&8&`mx#X1m_>#|W z@xJ%n=;_E|o!yhZ9GIP@cs`>LzB;U=_VrXXYxSP1OAoJ;6dmo);|m3L@T6x!`#oaw z8b>}6lmA}I`q4XnK>ctN6I1?sX*4rEtIJsYbK_wJuD(%^zOlC`SKk<*uMl0D zg~m9&TT7k8>yQf@Z{#y)XV>w3;&^1s1n2O6o=?2RIS-%8cI5f9$n!nOOSOHKI84i5 zP{WVDdqYM0d*5w*xEDXbcB`oE)k)kT|1NUtR^aek$&i8$cpJIn6~-rh#uemDu>bz~ zrhki!x;2{lcVLu$c%kF}t&nxd7iDr?eV|FriSAD$M7e!bTk(N=zryVf4o+HKZaH9Do0M z(&$X8v(U|&dsy?qVb&~Pv0@lrTfso*M0E~Y`|5q}o{!G8+{(<~?82ZI7!)(l@_=>h zL11urD))+A5_66MgTvn%-f`YxN`90dl4r{CiIHTiU` zuX@g5YgGUnTWxEBLHs&v(E|GJ3zh6&2@F;OgK5-Osh#G+;1DqAH82<<7`z!7HOj6e z=JfZ#pzc&Km=6q=vk$=H5U|j>p#1%puhp~xCWrE1;?)}!OuWy%=s<@Wtjx7fx-glx z#j?4d`Q=(*GMb!~>6b>Gi>hPJjMJi-zVDB5jy_ZBya7!5zJDX17xJ0smyLIhUOB;e z1DNz(c8hZan6TdJMqttmOw@LhU=p(yJxJe2L!S+R7H_=IhmqZ{ z)moVaJ6ss81V#_Aj!nWFV03$R)VU)Tb5;SPqtA?S-q>5}90Nv2pSh9G3;E3RE5|!; z#3wk%fYH$_Z*e|XXzgPC)z1oV;5BOds%U4nwdm*c{YI#C{~N&Q4Pf+CptSAPDK3nT z0HZzwqtU{f116UnKVJzjO8l`fLjJ#2%f11tBf#pXz$*375Fau0=HZbCEAJiPbws)# zd{gu$TI&N|N3t;UKEJ&+l#^dD5}Bv`f`Lu&p@+vfJ?*8=p-pAZYfqf!9Qp3)&Xpe} z&P$E=2F?R4z(-$$ob+_r6Agu&_pzo8G@d=A2lDK5cVy$uM+S4IhV(%A`|0Ft59)!; zZ_u{cTV(9L^uyq#_%ArRg0n4uedxY}KY7XFob$+)==O_Na3^KQihB?0dxY-|6Ts=4 z0*0@baJMHm+SBv+|3m?2)K5L%^~N4$zBSC((E8AP*ALpG%(tiPgXcRLxQyWcv*WB| z5oGpW<{W!BCoW)NY>XS`*!xd3yVKnA^0=}D1CvU_*4bAZU znQ_q48P2gEKtInca=wN>@6nI!=8Jw9bv9XJ`c~jan1P=8kX5>WJvL?8$g;N5_aD0d z-vZ(Nq9gIXqpbCH{wLnBj8Eo{6&Llt0WBPbuHS$jUWfh?Z=fFln^&Rnr;rV=Lw84^ zyRD~1o$Y7EoF}05^w{y7*`MI_Let5TTZ|mOmVC?f*iSoM3&Ha{Twm^_GUAq5zn<$i z`iPyR|KAXY36;6FB=QqKLe`e-lOCY+%f^;GAX{=Pd2!u+gSO=0ecDffcg5tmRB)H? zX6cefe=X<;U^`xfeE(e8=(aZ&MleDr7=_Y4ykfDiA8ToN⪼qN-=5=L`2b-hM{F(DLc)fv5ue(<1cDvzA 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ℑ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

IWzVpsB=bc-5=WNwWjb9_j^H#nw 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

bEx_$rT8@W{<$6|BPSK><7RSi_m>7`_t5 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

&Wd~fqjmeTaTgr?>a~Lt;N(Hkbl-?f;%r{oP{ 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

{N`xazP?j@es=P{ccD}71(kGokS!waH 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

qsCQ&T7XFfM z86cnYG(L_DSVinrh77=7r6vx!rqD7npum*@`_p8=Xy_B#lnnUnQjZL9?i(3^FR2~g z&mO`axse4~;d;jE%7A?A*RzoU-xr+Z$0=sqjtqDjm`Q)T{J*A0{>Og<&$q(=3z>Ht zJpYKp^HN8Fo3=bm{`j7$mz-$@tt=WzYfQMC^Kr#7RgLS~Oy~%*besiJ;eSC%N z7x|DR1F(5Qk^|XB9^war&)cC7$$+EaROja%p>5sgZ0J6CKi}kDiT9`U!uy|bc)tvq zQXPqVn7_swzo%~~|6hRrJE3=%|1W|EZ>Huh=VTkcR{pT~f1|_y zufx|jEg5C_e-zIia`->jc}{#J{+C_+sKftfe9qzj+%vTY|Nk0#(EKzvR|e?p1<8OX z@(UYpLI&LJ$bg%W0r&FvO~`=z_+E+(SaJp#@W$J=3}^%ZXWu>odU#%`4T7{C^TXS?e3 zja}g7{T0C3<@@Y5_#XY%ioLR0_9pgK19qi*Jr#R%6KzCCv;M-K!*|`~KC=MZvq8Th zC(Lg{tuEP%vC=?Snbvu%dCSl#Bl&jirI)dzBxfS#Jm}#eNMtB&VXtFP z7+G=`erdr(c7x>SmDKfiua)AzuE=w-M6mZ81(56!eP2K9e|`gg9?zrVy6mMm3ly&1zG)-#^||A+n~yz8|wT{}?n zeX(%s_@CE!@T>Z3ndg7h6jz61*kEz&|0x3*Q!#kPW|TcyoyS@Uo5Xu-AZW5~!re%&zTx!jG65&v``e-HC_@b;VyZN<=n+J+b9-?PVWpLZae zLVIVbE7Xi$^V4n+8{eNF9JYjZDn4n$f>w4aiZjfzQiS5xaT-@q-t}4>>Syc3|vp!8SuC)Riq5My}!P?2?7Ua;{%6Y~;GB zrMV@+VN)Nvx^ydj>63T;KMosl!IaXPlB-K=xYlQW{?yWP#(epwhm{YxahUvM z8_uzgEx`Yyc8NWkJt9y)EQj`{(C%v9(`YXO}D(R-Qklw4Q#;@gIn%WGj~i>V_Gc+9sWD`jI>? zF#dtmc^0y-@qMnV>+~C0rZZ5=a;)*@-qBk5#n;upYk$vA+TX#vDdzryV*7jHVEg;V zQu}++=qZUo)WSwjhldyY!XpM}g-4b8!=}w~_A~Vp?C<%L?eE|;`+LDG`+MOW`}@Xu zQxaY5owKG+ls8)8iuJzm$PHPhtrbW82@4uA?Y`yjYEk@9V0g$}zpLNAX8-oS^P5#+ z|CaQd@z?pY?RUzY`+3<3!MYB7nKlZY-viF?#o6|I1D*SI&i%p8{h`kN2IqdMbHBp5 zzsb2jI-9Z8+hZH+{MO?9HqLqHGUtB8xj(_VKgqdY=gf1mbHCQP-{9Pz=G>p@+~4Hf zpXJ=Y!MWe!+@IszpX=O@IQQpeJ368IlxRx2pl#mCCe?iQkXN_=X^qkMsq+(b?tu2E zy*?uJd_wvmid|^xfn!gWq06;)*IGGX_JE5+#pJH*8SOKptI;Ryms$ROS~qJQuCuCir$=-H@bSkn?`~J2pw9jK0NnY;V%SQcT4>C~k zfr{UePF^@<3TG(hcD|(k2eP*fk1codfK-e4(GsiiIbvUO@gr_teB&vt#p-~MU-^6B zx0E@oMDIixSN5Qqu+CUNgpONfbez3*vvrQ_x18oz80Ti@Rc={|cVqwk%Fs>woHz|< z-{9-uRQg?KX$Y@I-|TkswdYCSq|T$kXP$@#!3lne_)_3^i+uryjYj_J_Ln zcU^9`FZ^-89lRGP=b-u$b3ZEFaR1lc_a~V9<<9+(d!HNy!9erTT4Fx;cNt%5ezW)? z78Jcx!yUSeFBQF8jq?ArF2V-3e2s0l;J4;G$~@ZU1q=-Qw6Pj`Q%(Af*fVQI>+n=N z^jySmHhtRXt{g_^W~t@^I@kDu;H!4%-Q-Bq-aP26nY?1z?6QTo5ECr=6mKYI!O$ev z^8M;>*}ivUOSLbz>9GR%D|Yxk?COqNvDxssFo(;Ni%0xIIaNo@nQjG3tAUIE_UQ-X z_*^RZ_Oqs{)i-MOYa*S&Sn%twAFSk@^~!?XAFsS)`oSYSKZ1L}V&Cfg-5+1g zJK4ND#oXh3Jog^$1l1nx?4}*tw~^C40lrWj=s2*th`&|)LiH!)GkOI-iF{X;IawQC zV}7!!pIAKV7ut8BHU_nJ`Zvo5do!^Gg%{U^`&V&30JR?;fhL|@vSi|${C)^~W{ z<4@dq@D<>)bjeM>NRm4sTSYkpYfR3zc(i}>ATt)_JmfVO@VD)6DQfHK z@wYw30yD-Zk0)p6YK+jp-Vs?Flt-hzv}Vro{4un$7Fe(`Q`HX`u4V2TyYk^9*h3oo zll0&3lY#Id?Af~*XCY&}X332clU#3MjPl2Ew()G)tFP0y>?n;dYR05-7dHPqV@&-y zt4(9tn|+q!VNC9LUik>)dBHQD-+0FJy^QfZaM*#-u{#dBFp@v?C%{K@6|9^FEiX8YA zb-sv9R^6a~HRCNZ@C$jy`+aj?aP8OJm@)PzW6s!-eeT$$-wYnjnq~OBWrJ3a`VJD7|#Rn;m*ZnzbJ$@UWX@&nHT=hZ}^zg z%W6wDHG9Q}n9CTxsl(Q|6nH%Wyc+Q}>;qnnz-=G!QXBh#*B@y|be^OyY=1-J_aQr9 zao#-&EVuFQaq4!;SNRrnf0D5*{lv0^OMS)rmi~R^sWePjdfB-@twA zt_mDnTCo4)>bsL~_5B3D>z?|5nZ7j!oei)20P$16z*YQI+@Ptj#YIHV^NM(1oVZQ)w(g$}{Nu+qop?IyWBYav%m1eIenb4E}bbo^T6)pY+t@)2DMPl zexk4Q1$f6#{UJYRRu#gR*B0b9ZnFH;*)8f^1wYN>`!Ia!N9N3AT|Kj_acvO41pczl z2=d0*)-$cdYuMg)P4$B2UyHuMrR?Zd>;{8V@YjvgvEUS&`S*s0>{@4Y7_)doa{pTX zzJX7S`Oe@wm%jHgm%WR>I`L8H^+x!56nuFjd_4-Dyb&MeDELyk;H8W?zws<{HZbMP z1?Ex8+$BS`hjTS+`Y^P=0{d8cavpo(VY8;!m~xx1F=NPW4)8tA{H=2u@|v&YZ?A5A zT|qtt%R>(cTJj zvCP!JA0N8^_pbkSoV$m!&Bn z_MowMy*@+DTWj2loVmUP?A-N`<`)L>a|GUyO<>Q#-g{nR@JVcti_1LL56tQJ z558ioAL8JmH@tnq!JCV#au-*DEBeIMtv%t2HHeEV#ml?6y0{Nq?b5uUOU2m;SNiA9 zFANWR$h0Jk`DnXAkbHvDkm6-ckc{S9vNr}*5YYZ+zpxKL*aHG!Z)i z&RW6!IpCbN>8mbIQ}B5UcP_uKN#j==hj)OtZ)M=_^)K4InmNB2z2L9RgFpGuBs(Qr z&lFShcMdKs<8vDyy41xbxdGUxikDf}lbl_hiA%{@7l+7MFYglL+$$arXrAz{^2BV; zwf}eN^~H}MZ?)fW1elM&=8(J<9{YjMew?wILyb$Vqm_#>L$Gq>?Fs6ON!}`d#Fe*M zBdfz@w-*?BTL2#C;iIWA^0uHyc^jqOBJij0tPDJU*TLhKn+*n^14I8#J{@?ZoGb;QWzRDM-t zmSnQSqpU{^kHS-}wU#-r(8y)*dYW7YXEma&S@7f*UuXrmEX#%`k+Dg5{RnH8(|8ho zt#x=ZO+F(N4@Y2voLqqw7hJFElv@d1kGrTVze~$gBlzg`Hf$jvZ zck{WOk5@LI{DRHjTC;lfRd4h#=5M5jD>CTeQ!YKU4C<2}?k7&=qsVIZL3`!#KWMJ- zcqToV_yEJ-XD6>^QyKh#Ul%{(Z-XOv+>4*<1usWdC#XAkHnQ5K3s+Wa-I2nlEvwH3 zj|CaHTUU`gYHs(|P(u@=*;>JFx)0$>^aU5r@Ag z{D_duxpBEr*|teutlBbGiI1 z9p96F-wjSOd0KUwQ#4@n^cvv0j?cY(ygZ%!yv@^!*K_q(Z~A(?2mc>MzSlUk;OgtE zU0NWnt1o^11L8N*__+^#{kcBqpj~t9OJDyV+1oE`4352BApXVPR_>;2Z}+65ZTuH> z+uKLrGh-7VFM6^GrW$+Owh5*P_h(^m_XFqB^CixAZUzn9>Ck{;xO%c@W|(-H)c$A% zHj3=D2k?VvpHwCgr4%=kwG- z`q8?De)5pLK5PQT5rrRlt0{`DhadXY2s(H&uIJ~L-)g!>`En+g*k0FGJ2a`7 z%FOfSUu0a~e0IebC0AHg)s2C0famcgt_wC?9Et-wGyYZV0r8CH5!G|V_PmF$Py2Ct z?>%5w?YH-;9Ey!w3&cBD7|%H-EO`K&(tyv@MQ zZr9FpQaeXz=NRn_$RdB<$!T5b$!S%-t1E9_H2gO#rEkE=WNPBz@1H$_^I_y~U_g$) z!0scLeYyO_3nmsUuAi8{xSa116JN*b1ULJc@^YHD}^2|oQE7NqWliOutk8_)6 zNoJY7#@yy9ia*0=s{QO4-S=~vui|ebgXOPs=;1fY$3jMl9y0B#-uxX|Z}^B` z$|4p<@r;YXwPIgHmx}MvxBdIq%Znjq?=v60uUs|Z!k&+&(aNzb!E9rxgEq=d%^v=Z>c@c>jGb@QxJPV-JFxdeIB>d#;ljY4CkTe3j%>uhN6m(F;#x0yL!Y@1%?)xwPN_9m}x_KepnuY@m+*TDH_ zwtPGB8nB0N&UWl;ow5JcGj=ck%qU79{{dnaqgQ|**|Y4&%iq~DP=5Nsp`HJVy+Yiz z?D(Nh9^_rrDDY$B7JY^D0kBDGsd*SAP8GX2;l5|q8Q8;5@qV0o|9wf)KF_3&2*1|q$G5R2O@|D`ZZ8#u%Ije}=)<*n* z*#+U-a_|+*J?qqFNXahy8 zx{h8I?h0D3egNHfRj@9)HDK1>H&g3Fdjsb+SRuhyG=lGc{M)rwqQT7VeCB&zGc_ba z@4w2NdG>Amz$dx(w%hKstF^UXHS&OwaA(V_S&q%DddsS(eNOs)t!13OchS`v@MYFB z_{g>I{?E{u?3v@cOH4ib855{Szx&*@di2Q~vJ#PbS;UQI5vNPd%3zkM1C^Yo^>4p$ zb|6soANbbnT4LvgcKjD}naMlB8tVDgBrY0%vS}AN!{yfSP<&<$`5Y;kF&{j(FRd{? zfg6caUc?$EUoqlquv{;jW7nxU+ct1EGv|@!7et(Po4ex~W8P9W!r-t$9_xXM+?2gsv{f&3@ zTa0!B*)zg1p4B-at>oIQ7()%BTfhZ06=R&x=8pGk3+%pDIp4eO?~@hTY4~hqexj4) zXkQ|-+qa#ySR%qRk;{CEoB;S4=S!T77pJ|`=DZUzdofprqVyT#nR4jnd}4{;uPCruwFh&XmrS7BJ_D)6c` zsw?wVs|{RUes~eQgUtIU;vDohK2ym+J`LY1E%Swa(0(~JuWFEcHD50QhIei^aYN91 zJF;kR8RuW2Uo6(mmUT|(M?ZPLslEW-nG0`n20(0DmZ_=MkcZs5zh5ZInMJqOztWO_YB2KF+RD*#C}L_e}(zzx&k>O9VR-cX_ywS5zWmFkZ(vW3i0?-jdBmBhR{HL9O&#^vEbfmr`3C!~hOwdFs$D&cKP@&Z z(BnIC#n&;Pzu+5gm%E)KH=MH@#o4zAF5-$>Yt7#1H?}q<^@LwzMui{KGS3a&n_uK<~lkCY$1~ed_ zGx^=rjQr6^Q?pU^M!h^AomG=SUslDktqH@S9dNn>d~`&h58w&eck1iA=!5c{Ktkuk2o{leacBhkH=3+YROeVbR4+P) z{)*np$6sUWN5{tTcd)z0BzpYZ&}D+@xNcdo-<1`uL0eX=0-pL?cAj_^`Qg-{pBRcF zM`P&FIJ&U<-%d2O!l&8z!=RDO0co5K_TTR zy>$7zsw23=rgICvaO?HDb&>2`)<^{~8465FfiXOx+7tFXoZrQ-d{mdpdtYPI7&WFk zb8g|J&@W$cbb>7dy74UjkWMH7H~L%lv~2BNjJKTeiidvn^>>lM;>kY7>ew&B(-%E> zdI~&y*I&nL{lKbWo#(BS`f3Au?m@;m$>?F^yFc_L!F&ic&8dAVdsh9p zbyKC6V%WDi!2T!d!?~6%EW1{^TQwK5IG+K%2(JzfO{YEDSy$dtnbzJe+1Pr2CgXk< zJ9?*WV{dZX<-W18o!?|*t9|9jMW2WFhtSt<=z#j}o~KyE-vMSUsN`P~BE{f^z#IPElC zM0v;5qB@IbBaBC}VDa^5*Y;W2O%H-Y_6(!gO}A3NM)Yp%Ci=P^eI&a{_S2L)?2cLd zHW{4Nrqh#acbHgs^tklekFHPIA0`&Qlw1r?&CUOfJ#sT`pN&0o-0$emGW4fELw};{ zs5P8OmU2$q`aoFriQ?(1o2scrLJhIO>`fwb&^hqdq);1vllZEvP@MPT*luy&!~TYM zKgHg7K{#H^Z?q@>pME>JJKc|RA+ka1Pnu;Vnh_nK1I zMh5t886Y{T*aYcR`J1Zo=ZF{4HLsQuuka-2wnpIhDEfamYmGR(5rbCBId?cZ4w^x~ zx%Q$Pds2?hiJ*&QLuRwqjZfyC(c-HBFmvo7<`ad+{=DM7rblv+F{Aknn)24j{^v$y ziK#_Mdqvg`A9}F{|42=sC{)Y(F`M<{Lgei-#x8r@M31Ti)oMMyLD@5ftQ_t<)_uzLoBHb$ zO@Bc~wLm9-;`{u0#G1&L;Ly6{QQfSQP4D+0fBLGQz8t#ATnl}gc0Nk|^dqcMz5Bh2 zXW8b&v$%BV`aa)Z=f<|AeCC(Z-y6)y#J0rkdhO+&*p@f>&GnBTU*(+7VEogm^W#tM zPWQd$qrZ%=PV!EE`@;i5k8ozJ)=k@q3#~^6Wxn%1F+}b=M=Ri0WQXdQDJD$55WU-m zEYewwNBHRMz)tdaUgz@$vg%Fnr2Neod4M)doio6Zwf4H}{LtK&uqkFDbC6BL@3+^Z zty;qyK9jujH*YytK9UDoj)f;&=Rc{v7RGHjN`Z;FgY9Zsa&wZgDIrGY;c7Gmo%crhx z0rTs}{EC=gf97`%^DAb4CF%3ZLl;1Iu}`B1^8$$lP}zO;k}agu$*z=wHPDEHFL)fto9m+F_b@xF3K+oY*h;AzA zKT7{2=zpX17=5;9GuEmQ$W0luH~yyJX;L>sBUR*=lTSY30sx(X5^P2y3T4I^ena)@0mH$ z|Mz)64t{Mt?{EGd*T&8&w(06x(UlX!bu+)Y_LRN9?(x6O@g-t&@x2FqX+HDAjM?z> zEMMZw$z&6>wIlPHL!M_`e~k@y$ESj=*MOhU;#}>UUW9imfNg2-yjy#o?E8Yy=PrSF z8P7@Nh?jRO92pbieoa|5eqLW%?xFS~>VR>KJq7VrAuzD-39r?Ooxs7%UnYLu)Z0mq zpRXSW?4b2zGKU(lxnaf8THvwilV%Nr{a(rWb~*O_)q(I&yYCO@KF>po$jxKrU#bid z&9ZR`QRGcxKaMefaIZ!nL2!2EDK`<)$& zvZ_>T=g1TN!ks@W48QSgQTS-kUlrNn3w;N=H+}|ap>^;z;WpOO%1v#9uEmEnz@(-ku!*ncy(E3j(7i9wr|e{KD?QlCS&#gEKslYs#ngx*4tk+A z{R*wS3b;4bns`O#vs#;K9C~I-jy1v93BV(UE>&$t)f?zH<=v*;>=$XD7wFOY9qeA!~oV!b5vH2dX(bvI27 zw&l<**Lvu3a3FDO5ArDdG0{&de<2RMw2qF+#)8HL(=7oj#QMe9Cl7Fzn(XEqFQ6_M z`|U4a!_7GNpAW1FJ$jEOH=_Z`Jn zxqrXP->Qosoi;g%FCN%L;InQ#V|&HmP1$|-ejj}XoHF&9@@!l@|7tdP=DKG*JF>&+ zuR{I72h!a=^|w_0fzQ+W6Tdoi^+WZ?bzl8;K)dbe0Xw$d@v}I#;b-ZiCs`VI0_RkFornuJdJ-m^IUKi^R#)`lc{6FPTlg2t;o9O0!7{uWKw^F2Jb;Xn@0*yC_w z|Jnc3IOaNV6i>SLduF_^+rM%}ScA+SiCvk?=MdK`8S6-VZn=DP?c-Xu;3z&@t=yNk zBJUTMo3WCg@h9#_Eb9vUevN&fHPU}`pY_$C)LJrq9+l2KdW!d5 zlL5~Pe407HbR+OAC*D0ZHu<3a&A+0rI`YlU7_#lL1sUTCYWDzVQ#Vlhv1L==W6E~M zbXtB<=6K*&*;qP%UE`@($N26GP=h7AlQq%oY+yagz?CaBvU)DHEIIGQK4fD1?D|8b5=v}LwK)z`G zSi)Ji$Ce|H^QMzeG=tc}Yr=;gn;CxXscXZpKXYBUeRoY&$Mg7DzJtBCySD0F&LFUT zbJ=Du>Yp;^@_lD6ii0q7A%;w66z-z7hdUSf_`3PU&!6m?WfBR@oyA3 zL;HzQe8jKyy6&bge$U|NdhzoRp68?Iqs(<=8T`)2yr0HDvd6NUU%SK0+bJGyyyWr|w$^NaS)ghJpH-Isr6BUipJ!d+ zho47)7r|sD@Jf?mT<0*ZQG7JVmDtTAM=)nTy7qCM6R55l#b=L|W6L;VN^+)fkB@tA z5Bab;)49jTm4&QxPm_f|Wd3!?$V{2{gETlg@B$Ct^TLrmTq8Td$Ngu3V`PTS|K9U# zQtOSL;pbxy#*Zu-@sQ*Zu)y}i$HzGh4lH!dm~tKZSjk%0OCLU6;{(m*V_=Crm~#=Z zs<5E^)Bcnr3Y*}o(McGXvN^=K1W9t1rnEXKR~R7 zecz#P^xs9?Z^&`)r|5eW_gkP3`*{an&{CP&ckkz4ZR7D`*1KvSI8pm z_~Zrd_cg~0oH=^yC5Ru^m|6)be(>5q<TYmi9p^0vKU{2osB`>@TzTp|yUKGB)@Y;<2@WM;>j~8CDe=_OgvuWc`(Z{uC z82=_`{F(V}1t#CWXMAsl7QFZ_m)!8+Tl&Q-{|tQ~i(UOF`tZs>(Z@(|nd{(lv*=+w z_~m2ptLuqe^D+2`9x~^DuIBH`2aoMs#Qie&{(ULAl*|2Y{o>KP7WcdP>AsX)dT+Uh zpYC($1A08k{l55Vx&zNeQ*wOA8Rnnw%>TKJ`P=cRJ=2%;j(7gmTzlugD?^@C>pEk7wH2M? zl_^HXcwk~=vPY&EnGF58GDSR^MuR=T@Y}t>@D?u&J+{aaFAVcjGA4Ki7(O%2mN7pC zhOT@$)B4TICvS^S8F|Z+7giD1d~~h#l2yVrALVs<*GqvjjO8I`ESc-2|JU?GF7xb( z{w?lz)4vCI?|s+9{~p|(zd!(4vR`%SD@BeVU;kjK1*d z(;oE2-n99o^hL`V<}=8d&wpm{^NW4Vr(W{OGoPr&@0m|M*Is?0^^}))>$%R9_uprn zDLkddzs@@^kGx-dhI#$V@adJ;!e{3EzQTBW zqR-E#%{yi9eKu|0DfxWu8RosonYZ`+X=CpJbMJi9{6o-Fc0RI_Po}@+;xqKO+UYN| zzC~s|jkE1<&>8w$+)IDdf=Qd73;*fto8jNF*BR7K(cat2LA7R`C%fftbjXdaU8-wz z$c=oAT>>54jm>hS$8Nd%O0N01cFWyUxaMQ*8tA0;Hm}{1vPb{Q{cgL(BX9nP`zg9e zt&a|HKgAEu`UrdJWwr167xJC;5o^Z1-0w?necXZD4u{Vz=U0 zX%ruWhaULv&NMiu5p9-6@%z49szUd+dB@5 z%N9;sPeTux^Zj?t%Uw5l)(5}fem5O>{0-Z=-%SU|P2+EY27k=`p6K9Fwcjn5QgpD1 z`+dRf0I!2f39+hc!}>l%9K_Q&*KFMT&{yea&D>kQ+4!5Q!GGVP^4 z#%t&knd$lmM4w*#_C%kbWgICur^a_}+PG8ndG#5_{jf9c-s*QO0jA!1a1r*K6hLE+V9uC+_#-E z9rEyu%m117gG6^ie(fC;JR=_`K6+ro9q|$Gr5Wm`^_+ zqvznStU#cuf)D4uy;OsL{SkbcUR@}g&>f>iY-Bl~0l=uPo9Bq_*O)E#|GoomT_5M_ zX~rhG`@U)HeOjGSXf^&XDcmo>wooj~qkPLYi!#T}B{RZx`7_Mkp62{K?e)cDL!CMA z0nRRbk7USK?|y>xhwBgD30$Q=a-d&(e-8b`wL4c=o<8c%iLov~j;P+;rtBKVXwT_R zXHF(=k+r>Gv4C&t+Z%X32aS~z3pbxnxs~-&IWX3o6tk_^zMl4V+iGpu;jKUC&M$1} zIpvSIY9uj?+gE8R>^_Os;4*Aw^hEn-c|h;`I;9dR@bCMRuR=v;D}PkWx2i^bmO zi8t|%OElfWn0lgTyWVDMJY}Y4eR=5Azn^HrpLVSLg8?R1W;5~OkML2fOw7N0d)&Wl zyK==f7AGH6V_z41e_CRy#zGvKuIt{;?c)%ARM1DTHuVw1u5nN*voG$UD*e^4)_&^Yb_} z4nCC+uVz`@sprVm|K3_^ln|R^@xBnyOzNy#X46 zZd#$A3TSl^F>8x&S$p8|FF$@FY2}Yy3BBb}3#g-EL}-PT*QtF>ts{1V-@Bky7r!@_ z2Es}9U6x#6&EC6g;i*T-^-_ML+EpJhXjZw2=LzS;d?|j;!2Jer2K@zvbMV)VbK=hW z#5vCzoby~yIF~G0zG_G)IFS51(F}Cet~gidro*8n(N8O}Ms=^h+cccGI+G)J8DryF zbVFF}mq9;1>^#*eslon}t+5%oU-7|;^%W;;8y6hA<9j2lY|hQDU5_3*ejU0pNIpOu zx}Ii@X$Zr2S*kch4bgmV3VP-$JEO<)vj-O=EO6%0m#h22%*fX3_o7MSMp2?ve@7>Ad_^H`h z`=)XhO^%h*7)5`NqJH_+#DBDpL*`AkX-IrA$AuTqv`q%LcbvK zz8S|6XB-2#e-Go(Iiz}KFXK4mjN`GzH%`2lak#M8xVzA4DCZ?F$c-n64v*9G$ei7H}BD$u8K z{YJjO_%29n9`??DYvQ>f*&26oR&`C?h|twVuAEEd#67?mGV8N>-<94q@@uy(zw9+` z>U>_+b%~=3+rNXpU2Y}dDfFt}=+%|jpY5E{Te^}MY3xm%-K%qZ&GXYZ%LsakBg^9O zUI_}nO7P3v;zG@dF1LYMmHQ`Z7~C$*_})LJaW7qyFq8nN>1(q z_T`qJy3)uKt7|oukghUp@62=K`+aoV@`2oX@$Ih2)DVMsm%QaJ%PSp+`8gA0!~ za%EK8Gq8BnsrH%JeZ;l4gP&c<9M`r|j-+j0DPJJ38N2QHC)rPpieJ!=t&+v?Ol+R7 z%G7K@SKfsjlO4!@q0yNpcbj>sCM5D=b`0ItihORHS6wxf{v*(t@&{MsTgPt#Cav5b z;j<>RA;;S+>*-{&05J3m$AVc-K2~6Rf4xULf?J$8;vb<`S5sqR+oi;4Locn+irQDs zV9cST8=2R%lHA59`BKV1mJD0O+92;#a{M&%koyz6QdVk(b%udkJ3;xPtYy{(|9q9{ z`-OieKGNhRTzg9L$l#I?V)@$$;#2zdNTV*Gk9%1gLj>{@)KsEuh4dTNU+o^p> zF4l_ejQ?10+3=9+GAEPggj4TR_XXHRxA?Jz&2#I5t&=(9*#hUK&BZ+bIIub#q?S%K zXG}pGBROx?&Y2ZGkj=;PZJyU!tcxo1UOu<*$lv zbmnW@JlcdNmH(N9rmlsi;{4`^rZ}@4dMbjR`iEoGW3g)_2DU4ICPF*Xk)o&7x$VYi z7dqP?th3kSo6+@gXwP>)^(<5#&hN3^ zfq}#Y-gXCi+HDyTs-#_;cT+aU*Ma5F9M~BK?O}ay^dsx?p7O`q=RnhQt;Aw#Zso7+ zZ)}at$j3J5J6~(x&sfLjd)B^7#uD@C%kPwI9&_8`Q=F%|Lpf-1cq1w~3O~pWX+4@e zwz`FyIV*C)+AEcujnw*BH{`%yxy`v>NZ9LTc*yV%v>1cF2EFoDlg<@c&3f6j`|+ol z^NAbK%jP$&kKrx1K7pPyzs=H`-;RG*p0s|Kt{5ZU;Cm3?Mko5cYhF7)i~IYRJN8P8 z?7a~m4^^8Qrzv}77rs;*{`Nbi*>*0QtAD+}nf7Y0@~o}xcc!v7$mOHh-=LM#T#hW* zh>dY=GC6xbHgOI77`T1j!6V?*J=b{_G*Q~in)%pO8N9@rd6kDATz;BibZO7|gVU(3 z*3r=4tck0^y<}S+I8*-KBiNnB*1_+wcr<hB7B~&|;J9bo=yZH-H?BSve=b4Bd;RI<%55#{hyDv}zopwww)sAiXSe+gwVg-) zf~QRv-#xZ>k=@?hUfTQeM{RGS-QKib+MDrF+nZvy*VIdUmw(juuD9E}j5WSjZo2R* z|ETSK$!@Q-m-hPi(VoqJsr*a%jI=iK%DA$@(s2VrJMTTwlud3|l=$=o$k$b>pYhp; z5A1#D$rJb?mSR)Q-a_tW(7FWK;Wy{rY$7HhpBRKF_Ngn6M7#F9Z9ATG?H_VwruTmP zSJoZ4`iqaN?XlWV2@XWxHI$pS>$%>9P7!U#{NLSv@t;pN{i&CBlF96_>JVu?x%Lyr zuG?nYb=l!M=-Jv-7}`vJW~{=8-4cM;{LT62zSCr6rT;49SM>7VLUMAn7BccbV=leT z(QD6!|K5>}9(&fA7#(@!#33th z=_X|4v{yGA82z)&Cz8Oh8kk*;Ox@dX0Wic5&hJ~1sopVv3SE>(zH1)&u6k!PYs^Q% z>0Z_VdI!BQd#mzY(T}#TNPg*N#1 zqHDJ7U@TKRPHc}9K7j@G!9+vdHt?M!byQ`@IJ8ar|; z>oEC}bhhy!?CAdZ$sfaa!5U|q);LLYbUl6MmD{y~)yH8zn)3|wVJYXf&WFZ3T-zJ{ zav1wTHmm4H`&*K^3z@&$W}9qTZ0io_?=beQz2=r}pVfRJHvia?evONBti*KIv4YiC zvFDoKOOC&A@#0fEiA5Ma)(R_!IGN0+E+{lSFOc}d1zsA?&!Ay)DjXV~GoW`G-a$Vb&ZPtFKx6G+r7$b!Cc%Kf`a`@*O?x^>_3oPo8jSH_9HYm&PP3#M}1x z(q)C0mz&by&^s@m*9RQFY2YCI`3yZt4tZsemp9}$Nc)ZbZ}*I_9Ugf6#siNqJmx)* zS2)(%_%Zg)Hc*Rb5xTcpc=luO@>>V~J^MbqBinD)BqM+DlN__Iz4SCcaSh|w^L4>& z!)xBQgNvpl{*JcG*;~{z^^3CQGhAm`1F(1R+|GJqe@%q_zdTnD*}1@4b2l&_Z+@!x zJ*~T4eB1FIsr+Qs1#HLm>cH-P48H2H&c}Ao>y&Qz4}8qtIW@@twm2`eE5rZRzq?*h z@43mE&vJi-$BuQL6;9l`85{j3KH)kSH*S3lY|+g4o;YioR&1lKjCm_#Uco+#4|y2@ zCzQ)FHGjSSYQexAL#93F!soc-FM4sLXdvY;Qr%MdjM|nX({H8U?^ub8(cRgq;RpQU z$Q0SGt&4O>hANXhYTQ5%z)o0Mh-JE0Bt$*p$J73jTE8yJp%JYc( z2-SvjMxr}LBZJ{x`5HLqpjmc68NSWSq&x8Sc>9cKjdeRdb*-`R^RyvL#>i7^X~c~JTHB0-sAZS;hz|Rx)S1rxQ^Zm?7kC7{F3*|Xv^q0 z;Oh_gs?zN>*JtO5V^#-FYCkcpFTRS6DJGK3j z5LA%1wzaLcSd)-g(Ab)z&ZO1O00P#N-ZF^OI(GgBu~?;6#Odg?o$*|9L8Fzc5(V>q ze|tasoaY=8h)$jNeffOy;XJo}S$pkuUu(m!p-Y9QL}CU{LfLp?{0-oWaAVD(!G~o} z5}%eW^g;6*+aK581y1$I60Ro6GtjoHk)!4yA5q)E)=#4!$%nEj$mY5IOVprXTn)$_ zam8EB2foNi+P}t^$k_YUN8mnw2<&{kCmY1fh^d<^nt)v!d0MI} zOZwsx>amT!Wn*$(Mh^JfaYhaxM!>=~h?lBgINV+`{NAUf;t6m6Rklw5WKMm^-CL~u zy7UauyNv%xXBQ-)cZqsv+k~;PH4_&+#Or|vF!&twGBu6*P|!fpLY+U*WonL`96g?P^-jpjpQi0P)eYxc$%|JL zccR~w@Z2zUZBnd*)@8VvUsKsrzorhlZ1bzJ&D>Ur-PH6^W%~FoeS}Z+ z9(J@;v_3`O^|j=IqiadWi5xGO9TWX;&ZJLFxA>sgBK7BL>g{IEP0+|%c$r5H`#knu^~8K?ltngvzS-(z$h2)~y$Lx` zGVMn=TPn%75zZD7Y($Hjfz5n;I$IcLIsCVZ^G+i0d_#M{lO%Yfn%QpOT7H-IXLbf; z#7^(BifCPqFYOV|qRzBo>&YA5PTNOp>&3&{dSHZY#fuCr?_BQlG-%UyZ|AgVo%m`^ zhOgc=!uC`%8a|tDFRof2yL>(!Xz!L0wl~E1c6l#a+8G?*bt7zVi1BUr)_gFU7{^&r zf$@EMgzW|AYUH3VpB`<>k%MZ~7JE!~0pYLw9gb%P*EPMysWw!TPp2K7kj(2bKK6R7(WhOG4+q-~a8}Kqiv>?B=IASQy)yC=TvUNBE08 z^W&>e@z-QEeBbl`8G8{mXy)XN?^h1azHnhyJ(|QeZvg$Ivwq?Hf&BH6+1kmce-eKAEbGQQ@(Hf+!rO??+~t*BfSwcCxbzX^`)8p!;7t1bm~HUOUk7SRJxMK6 zwSOh;uR-P{mRq&f_p8P*@=~z&&56)`)xKH01{(IL`ozZee8KD#?T z8FPM3WweCrAP?-Vv~scje-a${yl?=z++}c}v_t;hcq#CMj{g;LmQ`VNALP6;{6LC} zF2h!&Z~LIHgPzy_6Y5W!cqC}Jp~LVtoz2@PiqmQIxV>A9+51bo`|Mn@v53>CSDfV0M<=B9b?Ju5y{}x@} z)MCUxR|s8x3IAOMc0%UN89UB@SJ?kD&x^l#&4G)Fds3XJi<44&YOCi`_8j|Id+Box zIdRSGC&fT@K%-Ldn{ZI6nctF}1zQ+nsH-x9mC(tV5k=f0iBxBABE zwB7V0eT;SPtY@$4TC!cEzC}KqLY=xs3Z3ox+cU+q}zZ#gcpWmY~INM|*2C&R-oKW|_A$A+YTnfmq#cuET1(u<9% zuihJYV3f@zT6)g+cRcmYn6+6`bLlkSW-UI}1Z^w?54M7b;$=R4Bu*#8%T%XHyljc+ zqh!#lppRGDzLMgN^rgN<*JIy?Rx+mqJkRJ6;xCs+2HxBPF9Q~7UIu+TA}@pHl~eyN zakfWIVcO$c!`t{SqbG`A`8hkhU(Y-Ye}jLn#s=1NHne2?t@j#!cLlWcO6cfSKEJDX z{!7Kzm2}+wrsH?E{yaKsTQnfTqwA3ZETr)|IEcYZB<;38k@d943%{O*Nw z59fE^$z5*~Uv{{BB3@NF+UDZ?=AnCc>^$%z{N3c@ux{`{{8p9^hPal$T6{&kaFOMO zX007BoZ<7r@A$mX#dfO?(eV#!eW6X#lg;}2vPy&27n+t{-~XYkA{v;*3w__Y@XC1$Zlf}+nPTW&CmOyV! z@SSw!g#UgW`=$|DSGGX;%Tiq5O&w#MSrnx0Ix|c@mk>DhByk|RMi!3IzUlidWc5fG z`v%-pzd+G${xFZM@Z~=~#8ud&SrIaHJ?QFp2ru zHf_$g+Dei;wVO7M&7+3eI$IZaZQ%T*Jvr^i*bhN}zhuEd@LX^lYzRv~>Rikm?*k6E z;xiE}u37e}*$?30>IHs3@_K*SN4{erFfrE$7p~Ivj}A^=^(gWC(?bW&bMj^5S->6I zC0yB8$=;`3*{EF~z_o2dWO}rRa|5tjM7tS>u{HQ>w3s!K+%8|gTPyiYZ=)9RTE=q{ zYvN!ZXPq^Nx7d@Jdo_NZqLs-nWliFf83THog`+R4`*xe3153pd6BwO|k1+W@IqSiB z09p^>N}dm+dSHZJcwQJeYOa_1Ws4U!Ff!M`NY`_H7%lb=a85>k$IRNp*Yiuth09&f zgPGdE$(;3k%IuE}y%g*nJv*QHw+j5aCbtlJW^(9GsETdCMq=z0lAUeJv78GGZLB;7z1a6V_t0*yvvIO6_jSo0Wn*cx z;LknbN!C5-Oa6Yj#9x;r`z2WaZg-9KUtMBwI+MSt9Ltck^>5ey{=v*Q+iUQ*%I75C zx9EE6a_D$lb*u)Rq8^#Y<9_?pDefw|yi zo}-I8Thf2>{D`n(T|RXftg`bN-T7S>X8yAxOJ5FgR(l-${DqGzvhO(kqQt-|V}CQW zxyU;-ahtxW`r=i@4J>-HhMISaPA&6p`lk?od66INsJ`JxdrHaYtHgKO@^`oIn7izu zJ^A~7y(hnY=bo0EBloo&{M_9w2OGED>V;YhdH*8bf1)w}zVCQ>tv@1$OR`F$^VWO2 zI$Q3&?=1W%&(0h0ZjRiYAOEKvQ}+C9&l91pJxzT3M{04^0rQ*3{8kflvds6J9Y?P{7$=RdixUH9tlt~nGct~2med|0v>ywM)KivPh+2cNy|`wj2xA}=%V!2fwZ zyz9;#m2dp(o^`;g3VM?Fwa8r&`XTrIkZdW{@ha^>lW5}yLDdAqRtifE^PF6KghfW8^{l77)wk}*yPNR*K|nj zH<~lFmAhNov55K(`ktH-;A-`E-QO|>zY$~VA=dMZKk$yRyYQTt%}2oP_zjE&T4m&` z8-W2hKYjDw_TC#*Z^PUDBtn z|BN1Swr6A-*}NmhKUp6A)X%KVJHgxqo8}47RWINAJ!M8n{L z_}R95ZJc>N0lyA%PfE6XWXKB-?$44(QtS`u-HOHi#B+>wh_-4K*YdS8d_*^AwKXHB zt(S>!58;2OW|^UXb;V|1ZkK-9gspTD_iwtu>fp3#*BrQI?MuOq*ahv)XUH`&u)}^H ztS9d3OO)iq+p6|MlD(H;@2Sp2tCzs5ja+fX^WFwbW`q>aTVl=(P(1JL_+%D(qxx4UewY2( z%N|kuvf_6wuO5YLBHS+N_`2W(tbYCyVS^!0efDlN1X$2_gd)G z^0UCl*815sZ4o6tCP)9`mwn^6Crf(G^wb1vsmC=sHuek^0V+zjY zslZ%<^-|sW9=CmX`25jCD|B6Yo_ChjMeyZ3EL~(da9T>e(Ca2P{d9l3 zp(nyM_GTaN^+u?j#M-$0cayKv${g;D41671RwMMYZ#nY>?**$R;M6Mi#7^3u4SdQg zIfF~~G;mgZXn&dW!)QC_M*XPWGYsrGa_2{dx zcxB>n{PkGRdVI&M$Fu{B$LE{%a52~4VJ}~#d62u@#9r2VsBiU~qWwPF7jLp_K`beI zLU}jZBk@*jM9_#3ZRDd9wseh+-b(!lYK=bfAbj)Vv{g%vR%iHjzPYWq#eO*H@<59t_Y*6Kra)tw}zS*;x)mulhQJXIqTfY+)sJM zx6goX&7g)v$C9N7VqQt>!ceHc41OwH9%arP&hI$zL(a;h55@3`W|8PVsSLW7t{>s^ z$&Z|s;gid9;$uxdWsZGC`jhM{@@@CP8+4v(s**KejddO?wcw%gc{a8LJ5d+$J9)@j z;_uyzMShS=?%Z$aS(=wrvOd#+^-RuNY2Dv$(yOux8AAOru zef4bof1NJ3^Ow-3tmj7G%JEV9a!a>jPB=qUa>5>+6)Zi)#j0=?>E?jEpjf4#z3`~> zhi8=70sK5IaSh;#0%*#~~k?;GiyU+0&y=Pg;hvG+V|w&-5Z&Efkq&@YS(%)Tx_ zhfT7dd$gC4zm(q?7wu$Uy8cyC=KQHhsZtXodm4l8keM)|I{mORROW!8v!03ri zH?w`!GbfkdpgGBwE_=e&niKS?2R@`Zjn|ycWKN~D&D^?~TXJ&Noc=|%L(;U@_%Jf_ zQO?9O{(Or4`4k1`GdVM#2IjLy^YQyjLg!qc;%mM1tN8%G?aPONUsjBnPp`Iq=x}=V z`5?VA`b|dPlHbRyX*2a!&IBgF#rRl#8odZytb#_#Zaaq@=vwema~Gd7HY?!s3FcwO z7`AybqRA2Hab21w`}y?ERiepl<$k{S6=_`bpVO!0PK%5FJx7zlgPtvxCVw|LN7lS& zOJw$N=hNLblKGZp_TEV5d#syp%?Rh~=d%;+n&s2iejmwv|N33bcPTcLTz*tWtzVO8 z>UiGReeEmA`v~NW@AA$mh&Jgwh9ePMJ}?Dyc~a$@D`*uTg%$VIb^y$~~e`k#3YZXNMCIC;e9>>u;IYnb-g<41hX zemvrHaL+t%oIUjTN4xK*4gGxFQJzmY%JU-sdE~E#YJYnjwRp|=ybFeYK6u3EyXwMz z`$K%6=J(LjU_4f3@O)Qf&f(7Qh}0dqHuOE5J1@B_w;pzG{q2$VH{~e(-85W(Irgcn z{+N5#{4`(qxUENhbZE(& z$gp+{0Uv)L|8BBBM<-kNxv|ub{Jhnt3_LRaIs*^MPw?~NDUsMH0}s^!B;FOc1jncP zWAdFVF6Xzyj8!_o?$a|oRsLlIFMo`i1HR|f5b(;a52NvQ60abh`{Yswp8&7(^{#(+ zeL^E%bA9@2R33<5__N=qTc4O&pA3I@{RMF&mfLR;YsWl)p+3Qhk@P3ub162_;e2n{ z(H}1Tn)lTNHTESB$`2$Pr)-zPDfvS-9#}AC-l5db{uo-uH__#EVWccQdH=l|v8UADPP|>e#F51l-;ZXx) zzq`L(vU54|OErHUfA#1SExG!YWD|eAmIT)8Kizt*vv|BVaCY$@a@MOPhhH1~W&C02 zsMDRp;IQPf+&Nr&ggN}_juFnmU;A19+G~6Uzx}c2p1UmA>z{-FNa@j+4`kD$@pos_ zqZ9o8-z`15&8&Z>-j?9Eo&BGj&$>ec63Dc&Q3qkSh)Xh;mp@}*0*Z*qnUxR$Q z^|v31&WC=fHuzTbPD{i5I#hu*?^jNk@5B6)gImh3c_=^^g8qfr5aaD+yk@-_tJc}9 zH)GEo^Rpuy^AB>z?62`-8ZY}>Hvs5(k^Z>DT%IY(_#)96pVN zejT6NuRp(){`^MLUt+Xp;*rWLC__KRPh`VF=T=OUt&3xAeb=?@Z?|Vk z7+YSt{=@_9*)VZA71%=WH$L5HceZC42v!byxQO zo8`mq-R{4q48O@fzkWOXtqY%#v+LRYQ*}VJ|G1ofPxAZK`Sg~r+Bt^;JWlKB)@Q~L z^3PewKiD@nDF-M~NX)-)>sXl9Q7pXoMziPqw(4rLA5;U-?g!iV+JFoscm(O)i2C>I z$^G%wY?wcv)Bhjeul{{|-=jJGKa|t|qwiP$zJCAn9Qfaz)Bk<%SO30!Z+XuAZ^-F? z`TNzsukT-s)_al4pZ_A`##dx%JoG{(NeP@oi^(UBirTksBX!mzB+&-Olpc!kn=kZ+|5uBbQ|CG~R#1Hb|HIcwQ zhi|#|M#&6K_yYC6WC-a@d8!*wX6pv%yf^HnyNLlt9ol=PK;K`R_NoS z;^)4wXMa03yY02x3KidBYNTu+Rzml#e)gh)E@D*5$#2tj-Lr)Q)Lt#@OElnxM<*KYA5Ws^Frakmqt-1)2|t`*6**buWDdD@0AtV_iFn>S+O&k@4?gd zwLj_e_8@=1#N?A^=&Ol`uJM$Q*#0;*!~`?-x0rbLZhSF{CHpnk8@f)5KHzo#ax404 zG5T)Sed617{{cU~-Q>=I4~66cbn&g%d77`6mUir!#5!nivF3u+V&;-$y=14TouIg< zvw1haqwTBIWTA$>8_(5@r^k=4&x|L^fr!MTBKiu;!o-6(rKZ@BeE=D^EOclGRIEcOY-gRyAX^5xLID`2c z7VZK2yYgMX|G{VldaV5VihI0n(_Ugv({XcciktiP_$_)ejS#-9JbFtiG6&58~(NoC$30m^1k~Z%rS0evYfh^|FZ( z4%FjXIhrw!;Y@?EvEJ3k#5SO>4GtC&(!lv;oQ05R{bZ~PeWV^*gD$6&*I}hvBwJ|1Gl8_oz9-1j<4Tu7xydZx0-&nSCV&r zGI0I^?TPLlIM>E4V+Tx8=S1T;E@vEBK0&`;qT^R_l7{cJUpoG;l1rsKKn*{{bS8L!V`YH z$GbT^S?f@W&AXZL)O)8zQ@}J1&C&jq-|`E<&GDTe{Yt|Rf1~KjSA(#_-}5g%+=TDD z{rs94#-@|WuQ4`AaIg%&sj)$yUKJa2PIc^<3u|Joj>)UPD2)C2F>rC^T-JIXxO)+} zJ3n?2e8!H)=B!-wy=-~&lNt~5W}II`7#2wE@{&HfpyYbNToE(1Kikd3Ar) zz>CB*l==L*wm&rB3Gc^z7+X$HV#aqL(fj*h)L)#5Wtd_fjD- z_wcOWu$QPAaOPbH+aD!wLGjReAtM`f*1cXOKG(TuZ`Ht~8bjC{sDS3^UhUqHc~<-S z;rx3Ha2SezmvGix@cadbrwg7s&|Wpxd$<4^FpoT0(K?MK$j3Kuy&*E=Fg~8XKLj7| zC0A_?-+5=vV2(DIFZ2P{2p*_8)B)SPF_9Sj0sHg$(fhxg;oIsz$hXt|kRKQ1+v)p5 z@NMxT@oe#LGY(JVpq|LzFb47M!IATA#ZyS8{d(cP_C@4`IKE9z!YzhjeFY* zSic1Hw$|h!RYaSP+1KuV*Wqs$zrUG#+5^8kcX)n(wh!a?%J0txwz>TN9deA`O+K!* zcVzSrBRh{Sh@~bJ#(E|f#ri6XW8yD1W~JD~6;@M|PcfLT*4J9a0sgQcIvv>9@dRS% zeSc&xymIGsOY`?LMq}4^F@NyOo$QT2`nV>U$I;i9jeMCIU!nwEk9H(0hVccfzJ|pW z&bTQ zEy}&GqaDS`FAB8t+A`Jh@bBMI<1Uqsm}?`qBHwC$oC$MJ9NwD+|McGW*CY4Z*G;4TdaTQV|L$gcep$?{!Ex!FaOLp{ z_QaiUs%Jd%Kgw>B!lz>Q0Wu%giq-uV`c~>}WaS&F7r_}sZcfd}Bh7q!9CJ}Um`3K& zM4S7N0fV*R&Vgsi9^%$aGU8Y6-_x%A@6E{UilZyIsr*2k`zyJxJe;Z61A6JNi+TnL zWGdwvZJ;lm6S@eycaQu)z-qC{%R4=KD`V{8efbeIJ{NC&Ki|B94_&z>YZzY-{w%dC z{;&A=T4?zq+MZFc51c~|ij+n*&(z(8=rhA2?X`d};o?{@Z}*yqm58Rt5d!4la0t@%PfsKKfnFJf6nZiTuQw z$cuR=ufK|G<(LQC*81w+2MkR0yRc(I&U_yA=krWpK34t@&@!8Iku&+rC-${hDZZKY@XVRwABm<`LvL6U`0YRfx>Yfz zIu`bE+NUGud<1;1KnBcX?^KSjiRF_sC7gHqvCc12?BVIWr{9&-A`Vk4Q#3FCjy&+% z%3u~2L(>(_W%-u#qIIL~Ss_{P`ZVWjK5T;d&qls5{`yQjuk+V?>}ka`gvVFK3Qnkw z6_wS*5~HctPwj@D$p!GK!dR#bc?{b_qWPlqIl;s6s+&6O+XjR#h1wKDNEaV{5|X21x&1bfOk&w;TF_2#XHmb z$~x;~YYONq!Tod_c>T_}%zo1N+OQvl8f#)2%VFd2=~S@~55>b6y~yvUD&R*P>inj6 z4G)vQFmiY#$psopmiUXngRu+;k0;bG`0>8O!{jrJ93KDle!_#X32?lzTYa64|DX>#5K%a{Q=iQP7`&H%$d+ z3;EM^9oNop=IYOUnc=|C#t!*_mGp?Q5@-joR3*!?7~iSzgVhyMCDd%7^JMZ9g?NJu~*x0oYlA{~3<9eJ~Ai4eAZ?e|Nr4e(E-<;?t{&A1&il)xOB5W$kN0N-Vnpgq- zE=Qh>VWZ-+W zDSa?y^);8rk2Txm*-0lih4hQM8IW_r`a?*k%7J@0Z<7amSL& z9bWpiljsMzSu*c-ca}m8`{&E9U+L3V((hH^-7x(|v_55LnELv`e#1xWmwNG8{jx9r z#`UY(1^#?DaK_5x)Xfr1=qvjhWVCsFQx1%D?t>fagTstKA>Wj`N-@y$I?87QQKTnIyi~w4cVG(=2cto9A|C^OVoM zmbJ{oUab8q|3wdSY_h#D#+Y|`izk>fm8>6=GZ9$VA0J`N&aWVv^ZD`&P0y|8Swbz& zT>G`fec8}UJH7!u5iSSseMR?}ll&{j)^+hmqe;%paW#2*&;!rn%p-D;w-dP#Z6f!V zIpLS8jPk#MqhF)s+yt;ytt8?6^TY(WYuWUbul&_zd)r+**VB&mm6k`P(`h}lZ<@3R zfuCzNjPt=E^pSpPu*ZHwH{U<7^=gW2S&bjzU=J_@1e7~SHbn-Q-kKFjtXuex>{2Pa@x$xSzD}GvQm(@(r4~joqMi_f0dl|^2RClEF9kH%X!DNg?~_XxOmR9;F|Ev z@U1(6o7Oy7e=uhB#SDLzzW8PI#hP)@CgdjNp&px)cc(S}9BoM-v@v8>C#?(Uio1qb ze|P>}i8&7{bN=0+c-6J6!S#&u2J5GX|8%x=6-T?r6;r!0FWSvJ@?Cc0uW8CV@QcJU zVu{1vJ;*YK#w0mkCVm63t;vh-XYGuy9~xgBW*%wX+dr4=THag6nq40;^&u*-B@+`w z?b2{`5w*Ol9S`D+8AAtYGk%mdosG)1DciZ>PxQ4A+3gG1&KBl-|6El{?kslHg2t-Z zS0it!UWRHYCBV}VcqxAN>u>KdvQd&}DZXFS7@BRyF+DS8ogJlbi}*IK`5gAFw4-3M zcRo4L{~TveG@W|j7kTXAYGgXWLvj5kegj&FJ*RDX^U3}>)Ha9P)&Kil75tjBLR5dE zfwtBvf0e$yG2W&+eqX8nxkhf={avno`R(B)+}Cg2`?~**+EC8G+GDYoXw0IOz-fQJ zcTdwe?w#)qte~z;wRaLYpIOf)U=Ph?AI^zZ+-GQSXLTemy$^jpe{SM@){}Ncd%s4k zg}W9n)j9SP*nbJeT8=$Xbn@@P(U9nxZwCmCXAHfqnkL`lY*gm1L`PXi2uPzOY4VmjpjLqS21RVBqa5#;x;{y0PE(5c3j)Jdl z%@+;x{gk784{zVrRdV1LCk^gxubQZMkCWi9nf@mRzOQ2Z89mAF!Aj(U)acCn#ew&S z+OrjUAHJFl%<=7S9C@GT_VN0=d_Q%R_m8wbM|{>WD)!rV_WC*qIzf1pWTH;*mmft3 z;jF&q%vpWc?cLv=;9cQlt;xZvh<+Zw*C1`k?*Fg0oz8ME-A>z3?RlXmvQ;LY>>An_segHQjrAWcohF%kLdJgxA5R!QUV{7pZ@WQ!4Zc#J z7yTK!r&q=~jqR5hJW(wS#hCTN8=izGUJFl*vu?;76F2+(FoY~yhOI#Su!r~VhaZaH znVJ<`>wVGu?0cmhWhZ;*SDoT*nobR*RhQniW7Xe3XlgEQ=KR|wrhflP__d1rtGM2R zTv!i|t_6?OPc8UT#u<#N>qly_c+s4BX7~1pQZxnH$U7 zJ!s;ytALZ_lrs89=A=${WZ*xTM>fn(jDA=!Q|zb@vseIT(s`=%%DHpoWTxV1r-H#q6d zjUjh$>ZLt&!(HVk%#0>=h97Z^qAgkvHx9jj4tS_}e?NEL*k1O2pLrukxOp!N&Kr3^ z^G-20*}|yB+A8|z^z*sEV2;Lyer{j@oG%E@hwrJ2nvH9W`6F&Vz`)JtT4ZL;2YT67 ze!66>Z=-)V3^^agLXAfjvHHX(4s?YV`tiz#|L&sJrx!UUT1efo-+0uM7c9WXObn9! zW~h6K_EE7!`)Hk6OT61ec;a&Z%vx(3Sl{bxakh<@Ri|tBx1XO;P}2HznHRlu>Cyw2 zgi2Z)sMY16)2I$$|2u;ZzjHe=1FVO5is*yrQP~e7vBrag58E@8-1*r4*nI!xTyjO@ z@UpFe^A26S#BC>w-euw?2GLyx(ML@Ed90NRJVJ;ln~bJ3~bX>D7(&X4vI zFWXx~EaiPA_%-vQeSF^s&FSMi)zMMj@>SILSYC6o$x&F1Y~4#8qOD$JNAG0m0-QU@ zKJEJ$amdg`^%b97HG2)TQ+>a6Eq#Wq%os0n`oE1!Fzq7iOYSrJBQ)#xw9`e6Q1NNS zawNx%yuIX&=vbO3G$^s$&UG=oyqEEe2G)K2-|ICu20g^gbyC%A65!AC4%~8AocH6J^RmF4dENyqyaNq) znP=}39#Q&=a|UDa6C$!O=0*)cp8C$1fB|jZDWHAX{(BXTJ+qyJa_HO}g0| zp6rsH_N)|pp0nK>|J7sbcq_)`0oLIn$yvZM4on@N`uBF^652khoJC)<{gx58qI$P! zIg7SODrY&oiWh-Le?hqIor(Pf{v#dI(j!0C#^1A7o^1E*@z5*To6`1%?kYIp0&98~4tMex9{W0TVwK#PC33x6W1VNUh~h zX-mI}n;M8C2OujA^e`ulgSe)N8~kx=ysse7KR{g7HG_jD_IgHv7gZkeLTV>3!r#;f z-&U>U1aeysV~{US^*gzftx)XkN8#3akP-I|cXw>b?=yMtMAIB_R zc3^a9bnEI+VSfa>rC>3J`j48s;NOj0W$S7e0fWMh8&228kyVrTwO^s}`v3m_j=vL+fWKcHn~lFe{f8st?;(8J|C{*x zO~yAI{{A;(`AgyNHro0h;_vo8;;#Qv_`7B0d&l1wPZ}P7pUR=Xvh~V-n?z4k%;rpT zB!jY&?4vzbu*c9pl9%!>G$+MgLoVQKM_+dF_s;{IjeuNmzHE?dkg=p2nB2Nck!9F_ z-OJd6$mOqMZ%006-#LGwrQNctB(I1-$FlD`+AKSu@dNqo{DF4LsT-X8z8OEfHv%tF z9l)N;89zRyBy=Ky%rC#$P~-oG8$a~hj33!ww!tLyA~iiT{$FYQ_(*g6HRHd0i^3dHLCkF32Z0d1%qG(*B;@`2+{QB?FTdrh2&@|DvkG^GO zmNui~UYXW$+kD^EInr?_`uoJ_xb%aL+gASI+0jJ-9rr56qWYGf7^2SybNVbBL7#8p zC)eI|eWKs&D*yM<(fhFnIlcO0^l5ku>n&Y5$j5VGYkZF5SUc!*1pJmhkQ_&SUFfu- z&&~FHpb}G~^aE-8#~^Dy2;S6a1*Hx@)q{m#gPH#+=l7?R;n7m(R3e;|#qI z{wC=!GK=#zZ`hCj6C9n4e0jX=cwY2E*2}cVc}V;(d8SQz_5FT4f&62_XZb6ltdol? zaQ7?j#6}Mv&l?kp%~*__H&L?9N2AkdH^ey0yCyjwsl&5#6O2bPx@l!^1y%Klj8l_7HmnauIrGGxy5#Fzv!MwD;p-~p^Y&+OW437PXoWFQc&Ur3F_)C)$JnP5A zULo1F3;8nWGd-8}5=`O~(DBLpE3d7Lp2a=er}ZxirIko=XXMj zU4CXS^sNtk&{;bP;#V@cNwOhuUi_{2xP4l@78sQ`hNI)t{aZh@9gF>~v0ThpUdoYw z4u)m2H0%qMyR7# z=MKSZ)HeGRUmO1A+%pX6KO{f-6pLRGbfb7t9=Z|x0o--_BVJVP#}@eUQM6mie$v>F z_HN^8>;>>MG0E+P>=>)=6YO3H=8Fm+-mmq%X^8b)#~9wtdOCgcwh7t#rjvD=iFp$& zQ^*qC*Fz8QM!#H%zF9B*lDs~jCymkG<(&lYSRAvmiehB0hVC}|I?ZE4>6yq*M$d$I zs6A=~Pjs@3>Oi4K!UwD#**XdsL-Wxixpz)<8#U!*|MB(6HrZ0a_j7fAk@U#P#Ej^- z(Ieq8Mvr9d?@5nD{^&)mZ$8IgdTkADJWjb>h4N_^;6)g)jLXH!;4Tobmzf8(&VjN@EY` zliEK|8G4wBkCAU61 zyMc9hJZFVLo4TP<;kE+hwV9eMS8G4awBKIIxB9L9P(VDSa#@k3A8vy8^>T)`{FD05 z;cX$f@o~PH#{0d6;7#X@D13&#icI@@ua}Kj7(q_Dj5BcXyXgI?$h6ZdL$QJg@3s}k z3hpS0<==z7JWGc4>rG6y@t#(G3!A<9$d|1AX76!!8{cixy-N1J@hK}$y|m-!x`)mJ zJ!td16QWO2YtF$eDVQO{^|0=}@PIz#n4PS%Y`nU^7+IuJ@Zh=N;oh0H+KcJE)9z;c z-}hog_*H}>i_7w2#FBO{{^LA;djpG4;M_9eJNVzgOn#3ifQ8}`uf`8pOxtDnKFTJA zVztC4wh$ZDQue{<;>LU%qcapNa&YeQ9Gts0fO8JtZ2j--`VGO_6dw6-hu+w$SVwrL z>av7m@;^nek-d<{6j(YB{mC3D(ldY^tf@F~*-UmMZi*8~aRM7S=JzdMXdj z$W@#H_;{h$S>5unXj#{adlSeNo73M^V52UGi7u7_hexyS7sle?w0D`}K&W|uZ0P1S zJ3TL(i{<9kuRMR|^}0`oDFp`d*}vY7b?J+MeLi!6RTr7Pvr^tZxeJIUsb0U z8E<@5Ezs>J*_%HDmj`Lz@ykQzEXD#;`}-R3ZEIPXId4IFna)&zUcg)BFQv8vbm*Eg zVwrjNBibM29D|RuHv86vv+`ZP2_BpIto8<8if|?-wR9JCe&=4TS48@@sj-{av7R~; z`)cyCzP-+UdxOtAShv)jC9xFyOSZ<;-J@cvQ zf#$%HM4f3i(`r>P6BtQOV%+z&G)CP_qEpmfAk+>=Eg;@CJ(TIe1lp8 zm&iuRFXk)+@XyLMoZoBnws&;HCv-0b-iefRWFJK*VE{P@Xx2$p*O1jA9QoF8$y_ zc_9gY{c!~`y;^JJ0p(kCgJ+6gS>+YoUW~j^jJ)v_XAJ(vD{h?=_`Zbif6KRKy}=WG ze;ME97r~N#;vy4MO7#~Zu!UwR&cTXCJpJjZkdrLUW&(gtKDnFpytIqj;EZ-j! z_55L7f;|rai#`18{ns?==xe^}CUQWzMUSbS6@^z== z>&F;h&q6C-YdlU)(LS2OSkm$}W9o&+^<5c|ulY`VU?}-oZ3X4)V`(cWUu)fwv9}u; zn|4Ovr|InLI`&=Lxg{rR{#pakBXg!Aa&`%OL1UM^rm=`7Nw4XZoXuQCmxl7wj0k_& zr$@sd7jLo%{CS!<1KF$O=bOj=LO)C6Ph}4N)C+&u|HI+WL$sB~pL!pE*i-LCKXZ7~ zTZ66Vs-f}cOyN)c(D-u?W68pw8t~_;0RHgZNb#qMwuZ$Y+8Gi4MBW4bTn^r#`#2nO z`18#sAAeX2gFn#Dp39GpKcc1Io4Bw2pNT0k_Tw#uM&5afnu+_i6lcjh#4QYzNr!1X zJKA$6a`}YNz`oL|f&20rXKR1S)*hk;l(GMZCw91Z{~Xo3Rp#CO;B&Cn#&hgLBYQNI z#@-GWM;jWv*xNPs|9$JSWsQh?_f6J*OK799|ML!Ue8dny*9N&yKW{vKpnV^*Ua+4z z{qAr^plYy~sC< ze}3x@os}FRzn}#fwi~&^wVBvb6#cjVLtB$sgHq_|J)Ys+uHJ!UTiHTG(6rZy572c* zk*B!C0o7`c^ZmTX4zwqkOBFhtgDrC0IaOytBlxC__akR%4{)}b_{o-H!%v(XJDW9? z9NU`1AEj^4F#2{T|4{iAXZf|wJjNv5;;FqsnLI50VAoLjh}Z6P`hm5Tja!~w(_oT6 z4%GuNc^UP#K7DR&v!H%GlJTugkI&{WlC#!1RQ}?eobmO2D|>vePq1)$H{**HN&nB} zr%>BJHU*hM`L9*@4GX}BY5XbQbu;pI0s7W7{&Zc%we(rljdgP9SLbsETE3s>nqM93 z1|M!MuBP4!-?LWVTFP_IdrEPCG4YndsWtgEvDM@SHbhhv26@=v}=x!V|7XE?$Ogi(FAkeEU9Z{XzP72$~@} zE1yga@hJ7R)2O@n<&CMk!?Jm_ExPfdfUZ~Cq549p=IYt&ioEmnypHF_K3GJZp&Q_n z;II1WQoK*&q-Y&A4MXyYHRcU#7fa?GG#+tazX$TG5V{gl{}B)==d=y}K) zYAZ>9E2v#1e2Fvu{Po}({)M-0BvwC6d(zXWtyqg4&l@Z{Kfdzf*nPyyNZ+eR-&1`e z!To1T*bl}pVQXs(pObf9j1C<yBR&*NoG(Ka~ zbhX78qj={_$JzbhY=*ty)LlN!b^GHILoYJ)R=$sm?vBKo*|Y3N{C+kbH3@IDHO@-W z-$TA1*wR&?IypX+ZSu$>%?KS)xB9Y(9b*K?Ygdg z)78jyIB;r54RCnehl88{3X zL%d0%>8C{H>q}PVMc;w8%f8eDO;5C5982AO3GIEH_AZUR!aG$ZUaaQWQ0$^p@?sZH z4aXG2Q&sK_JjPrS#E2*17ge4&+tRAb4|Ij8MF-5Ze^TIk7VQ9T*9mUEzv!V{e66wk z(AEdc)R$0Q2@iW)753{-KcQF-cnEMxUJg!7wD&*7eN#Jjx__TNslMNW*U4Wap60)A zd8qD7*AlGN&I$JYKkGg;T=W8&pIDQVqHFKK4mJ}#-QWMxr<3?6x`A`g9AFLI)tTHo z&%_r8?jOQ0uV+)jz}$a6^*%4=-kH8G6pLTriB}SPkG_EKM{;4|cPWJOs^c@k@5sh~;2c8L32(wDq4m9*vD^xcX=41()34|YF{uNJ_q1zb>nOy1 zy#1h$x9bD27tM9_=4E(Cu%4G-_}T{Iy~)MJmbL&H>p9@HaSr=^75m-x;nx@oe<7zv z-#4}0IdEf$YQ;d&dgWP?c z3B60tfT7m+E#PHj40x;Li#W8VbQQ7D%vJK|{a!)qJm%HQydJ}j9-}_rJY{1%5$(AzU%4V}-o?jY-yl~6I->QEkNm_xI6cYw#J;l2&!2=gdeBA-Bi~ z9^#meiS9msUpqXfb9ri(siC)7@hCoSze1flJ^R|^`A*k2@*J{@p&9$&i`vUcbbj~E z?(bTfu@9b@tMmVfJug`_o4yWR*H5_c9p?KK^K|noG5D96pZ0uo%f9yeiQ}{K6M53W zuu8d?f0`BjrysgpQoj!$&%Z1sDvb)=7Let&m_`CXGUzYmeO ztTlK0`8TdPcT}ONQU%^5h=q?}oAq zqP^_*p2_*KU*oUbuwY!YPdRy|1u^p+`rI?Q&_1gj7wst}4$$m%@~in@=Yh4%0Pu z?rH4qe&yXBwO`O9;gv~vWtf^a(iQVpg<@Wp2Q9v7W65=V$G)loAEYOq1`Ub8A0u6g z6}o9-$UU#M&wm5oir`Pn=vdYcV%H+v@oUE6em~A{v)_QF&ef2fAiDJ#AFqsV2pt?w z|CwRx17-G`;Gyj*r51IaK`ct-$nymZ$+mmAf918 z{A)G#$~gR3-!-uhPbbb;`bXpG*>b@OY>Lm|&zH@=$=DS0J5B)B>yd$ndw+Az`|_`r zWxwC)@e%7tt0%d2bb$3O^;yD{qPpWeiwavW4+gMuj1hs5m%*n9rhS}S!c`Ub@a-% zEIAOrxMaMiSHIDokk63#1>{=)43a|CQ0w#_Jdba_MV@Ge_n-8l8r-Q3Cs~*^`V}^-p>jLoZ{P_sSdOTM-is{z?|zTnHb( zIS+lLVdDqDW%CVtJ;giqZIKv!epfj)gS0PJG%z3jH{X0=9I=)Wvp@81-KvXX^%tT$ z@%)LU*nqfK%N|Piag%-jkpFCP{-v>c?=oyJq5cQKwE{1^t-|xR)$>>Z{4MP$27hJGH8A~Q*sR0BD)d?DhtS&1<=%N=^wI{tA&+Z8 zxD9*faNn=D-@h98zUdUchxav{K>pq-d{2)3u;2g0e*dSy_f;qIJv>?8_n*M`#LCQ} z|C&mB-ucvG@3|KKdasWR{F->K?r{FLmV*s{ej>trh?7yB<}DF# zU^6(g5MFQhvaO3PSp16q)t-Yv=s54Z5OXm7QgbM{7pKs-_G1EgHXp2hzCJ&U&86Y_ zmi+wI`Y|o7^3k+#znSY4@_uH2hK)V!5H(*?z!{sYnOB&29r>%($F=O8CD5C~67RX4 z;lgd2Yw@9myNg2&cjbrjTMZpY{+At0y40UveWSf@6m|#h$!4+SL~ns<8=Jevz7F_F zkF1B6RM1vEf2nYITRrfq2VQmL$;an}q8Hw`w|z?|bsdQf(YZxxqn0)n@!cb@G2Zde zBF+X%k$a8*V!QV_&J!4|IHgRjmC-La+F^6S6AQu7IgFLDbqlwE?{%`Z2)BuKD&KWN zv>JKwcyPOiXKRZuj;*_x{mk?2OYFTh+Ry9@-tR2WpJ8f~lnn9y6TGkQ3{JP$eLtvs zwEG-=3SMbjB=7xF&x}0d_P8B$dhV>vBG%zshtIvu`_swMI@O*G%>B3jkv(^3`{~NR zIQBSmT9VZcF-MH6w&kMOBIs9L)-&ut#y>PZT0Sb<4)oAreH6#StWh3oBpkjxtDWK3 zY3)$$FyB1pt9Cw`(@vT4rZ;^gx>ocjFy}jmYKOh5d{?zI^YC^$z4(;q=A3rEeONob z-3-3E<5gof>rC6t0<>=e?I*xXdsfyc@wDyUzM0Xw;%vBGozs3CzOxFNpuKd9V(7ST z@&8}p|KG^}xwL+q@-BT^zba76$I0K4A4^QGUN%2ZT>-7f=99RTbNrb5&V|r$<|ck^ z>Vz#koQD7Ei;NFmDPBHDdC%w~K{}qXOZs$tlcl4#N1)?pvhTFt;Mc)#l!tc=v?+O& z`uD&4mHqB!_uW-hv!$1sZ+TbWsIO*p9?3hmA+I=koWjqO&ss~iSOHx@-rrWv|Be>d zLR&gmzYOglHc<5`;-^J7b4FZH?l|~+w|^|JC5G}m$qaX~cO?fbq;KgpDdw~o|K(%Q zwo3eU*UPWv!w2^`1}f!7=%U6ldRSaJ>M%v9KdFZJ<3~$+zIQ z_`KN*HNb=Qmi;LOd>XN9HJTb%GoxQ$iN69FhjSKYOOLAO8^Z_DAtkSwZ)jiNnCIx% zy6^fvRNMb7JIm#*u@3g zSnsrt(ANQ97@fg~Zgjwg08U6>asFLPt-t`=<2f7JqFe7l>y|9u@q|Gr^B* zx2}4wXQoawa+YFmyBA_ZVJvgQ_B&(y22b-Hp0TEqm4v6JUDm5b?Sgx`?W(O7+EPDh z*@3zJHFMLmTTi$&)^hS?v6sA}{?ur6L*}YE7t`0vUjDYny`pW+{B<9^?RM6n)#6)z zhZj2Xd}I$-Jd|j!*12d&{j6TE@ae)Om9y$u!`0XX6x;Iv_jR@n@vRF!Dtuv2Cg2zH zs|Mv&$*Rb83+n&&?|0Pv?ZbO&{`U9$?cX!y=9>GaFs_z^Rd?TttUA>z*!IA#Z$H0v zq8F{d`J(&k#}u^I>-WLxyXy~rXIp)7eyen6DPAEoY69G>XLX!bIDtou^t4KB<7ApRt{|4T2rBXlysbFG2J zZ|e`&JGUri2RT^vBktyRX~33PDSR%94E!~C?DXwR#*3b1^XFXL{m&`jF0?5D9BWNX z`PtD0-vM_!?$|N+cR$;+{<0x(S9p|*yUZgC$GAQW$H2RxaO{_ip_^w}I0paIm^3!w zSQ@{;weEv0hvS&T?IHR#w2rlr{eX4Yz8Jlu1v|s)|2J_3o&c`2SzCtHl{Qk}N4_PE zQMM3+E6`d~zZIO2eZk?%OyLT9N3=GBE0*s%92u2^BlnUcCmc~8nE0Oim&O<4YtHzq z*DChHJ2$HF)V1cz_UQ7o&(Xa_cg`IsCpHFpJdhl3&r`Mc^KC9F-`8;-b!5D3Hu=#q z=$D??-aSNH?Q;i?qpfmmU8cYG{DE};%4_x8Dl=`Jk!kC`A=+9!cVG~odb+LE`2)ye zonG5mBa1Eh`a#(;v*uC<{_Wu#*-_0Hp`#o7_nP+%+TW zfhUWncjF&wAqV4DVj#9+L)xkwEPki3Wo+QD2R=8In25)hTz#O0KgB@`pIo2I7vPJW zge}(kMcZ5qq``hln%bY_?mSXGK5`d&eP_LQOmz88iw@L=OaB90>#S}(!^ACYrXC~l;pFF> z;rr_59_R`$)H|H-JKnsr7CV9L#i!nizQ7);AcnLYIXK*6;y=xt>R8_|F&E*o?A3ym zX_r_6J15)j<7yY*qU;Ze57>5#kJ9dEhHAI#%&d0pcuz3xmQS?p?ooc{5yo3RRJ&_V z&uy1;wLfgyts_5j_&HUWcdFnS=AFaa0iKiW_&E1f@O=6x<2z}n@#Uc-Pey9w;RW==!C^C9z&bVl<|&iE9M*l5l$ z7!^$r^LM%GVYod}dsY^XNwzljfA+d;2FPeb@|UGK^$VQ*7NSPZROMv7+P>qOmwvtn zKmM{N#@@qT+khQTx@{A5uL|344f|H-U!R|*xt7)x#(uD)@bxwNc4j&9A29%J8}QfZ z+qJYMIiiYqVCfs3|A6iWywh?nvO{G~d#dx%rI>-alcH79--+dsUMBr&%nql&+rCQ= zS~}u#HB|59Du1m?p(W~5vQUsV8hvD(hunK=$EIQnx8%4?z5U(IHlAjwIb%6fFD7vn z?Oo~HR_5f`R>V+e2Sz;#%X*=bp}jaOcTOhZwul*u>hbO$@)R z?EJ$88$KEy>x!Ou>tP#zJE67w(D#j`FU(i*_!9vdf71t+uz?eeEa8(u>Dmz z?F+_>@O3&FV+Fir5itJ){{AxLo7%&0!msTT@THyUaDtron}^#^#-Emnw^6KAgdB+w zKE_Hf)VfIP(&+7e5cm!bQfGtwfo}G)>|!a_$oP1{3G-cA7R~Dz&)O%n_Q;&3E|zR$ zz+Jhk$MLPjlZt4$@m-O>%zf!^7B8}6Ws-a=|9SA)2F9g*`3(E?0raSa`33#A5gW5I zzo6CF42elAT5|QQK4J#8^6pFU+6rt}E01a1v2w|@SvoJm-6yVV!INX`eLa7fXR@Cu zR^;k&jXQ3ot%doae#NFV=Z9K1aPMmF**%%xG5hcLw%-E|h_<&T^#pAdb7j>Vxh9<)aEasB|ZdJXT39)bIc9ke*&=%dx!yXR1Y1sVyD zCl<7*qZ_)l8d~`p_^epS6m}ePL(SR2|Mv>-9@U6=ptxY0>XY=2DcrW%rz6e>ty;;y z!OvcX54sCF5v5cJK(_sl>RerH@JzDM@2GW>Q4_?Kv${E@N~$>*kZku9;z*f9)!f;Z&S zCqJf=HM91KAbqmWdT6T<9jZRRuyu{)Z_i;%+$~$8XlA$8eUdlO;ApEK101gjMHN47 z`&W#D)$4zCU~jvjrIR9j%UZGKdZvEl#}@8f!X7GFa@wrxyy9&&)G~bqzoqKG6d$_% zb}!_$iry{s3j3dd-ZgLz@Q*xvD_za^#tOY%Gk!1?S+2y?jOndpY?HxN@L;FW`AUFG zamPZ@B&|DRFk_i)$6{h!(Jf7T=z1lg@V1gex8449apAVx$Bf$c@iQW^60fB73ykYE z#`d^T9oy3SLuEpj# zhdUlLeT=7%F&!Js?_NIe!^yV?fb9tB_b%_W z5VR>`}AA!9|m81 z-(fKR10VU;J5DB!@0N{!8tc>VOTqo?52xQXthMab7Qa4h==Te6TDz?LFQNmgO_NQ( zt&d!`=?%~Tvdd1F$`_Di(O(7plH#EAae+BfV8^8A;^FJLLlux~U_!X#6eGk=`#MhZ54qZBr z@>|u9<}-yo-9l{JV&IXYpFVKEdtudV)w^;!*8Rxx!FT_TcPknDdSI51&&1MK;0R8y zxNC3we{~;;#s>KEIPjSDKh~}PIO5R)>o5D|dyr4x7y8!4yhcpleswr~J2|~?GV*CI zeOpHS!$|4d6Zyl_w-S>d`X1@quPl9AKjz5vtvZXoon`3TYU(Y;uV77m`ZjhL`sPIz zohl!k{7&9YQ+_3Sw+?#OBpmnY+!;gAx&El=-13cy`1)~yq?jbg8981c>i0_DE@Ul+qHiHD@^58b6{j9f z|2RYA%HAg$xA~^}U#b6WItN|q7#W>g^e*UJdR?adxz@64 z^nS(pb}rvC#pLWP8MD8=3tL74olADBGQRcJOp6}Nx^@{K&?(V3Z*h6r7noS!P_fmo zTz#U{;+s?9v3KZZIY=#M6z13s*H4ii^GUsfKs{tt7O4)vpEP(SMFB})%H zg>F#ljp{Fh&-FnwMyXyUx{>5{PKgq%7(3ew|WiI9^Xq&cygTb4yXxAY{0HRQ*+I4L+v!o^>)`HH#B^X z7=HMX?8owjtL9es_2_}nw^iUs4Ey_1?C+(al4VuEcISAnt+;6{F&M@DoAG_@yaD}i zY$TRnB3qzz*HA|vYiaQ0DsY>#J-(T?quV;P1=!^au*;W*3TCdw=7HWqZe9g#7W9{M zouW-6J2UU6+r-zAd1$leO6(t3AOm5)NSL<4C-zQVPWxs~jCBPtX~rH|&z=-crw(X8 z2nStGez@Zg2kkwrL662w9|`(U?!cS-pa+aWYhdx+jvskzliF^Qt&_G3Y5TXdEx2W5 zt-Ovw<^MJm$9kAg_oSjs{z14nRxA1a!ZYl-+gmbr>9@8y9JGD)Fuz{r+B3OC=b3N! zUM!BT72eil;*MX-`6kY}vk}>CP97I6S1xtn-Q*DO4%hArx$g${;T_~-8vTuZINR+H zYPhNX;!@)M_ca%0*CToX-1?(8(9`b?^uF#5^ntUz+qixbeCuQ1q`<$IcxMYZz0AY* z;B8t7j8_5U;?TKK7PTj#wfzAkhIGz2`Ctt-hr;Y)lO>$rvZN%8@c zchV+!omh!|2Af13`BLTH_-Ot3rhDTr@m`8`>l6Owcl?1f`lgk556{6r@hUQo>cyrS z$V;I1Lj`}Llh!62>OeLp|7&LS+xx)L2G$te4BZ1dhYZhtinlT+_NZdJe=YjMe7?hc zwt_Q#Peule{Kfx?ZNi&^jtiJmlC^ei={waF(_W6Z@*cRk6I|38af1!V$0j7{m;G4Z zNPd6#_*lHA0Q-{07wVWuEc)ZhGhSo!jMt+Zw`}sFJ@`Kg(V4ne>I~3{u|Fi>q0FP6 z{g(<)6m9JE7MDfW7J)b6g0z2YfpEdp!Yj13i=Ziz5rX#&4~xvB0zDLR)&t#r*v zyhN~4zfUv242<+F1EX!kMIQ-9_W`3g_?Wnsb!06bXASRX4Og&+)vRHPwKG02e+{?2 z$@)3`1NRcwvX;;b-i4Eg05=&)*%rhefKTuoiA-b=ybW`5(p>$#l!?3E&T%3F8Z zSVPfOLqD5o=W^jKH1<;ItNGCG!j3q5GjecnQ@n;TEziJ1_Qw-}2|59LQfJTtlbV3N zV>#;$EV={>XYUBW;%7Oq(4Ki9z~^29chIvJbb}AQPck0%+D>przA6006JHYlLr&@C zIedBd4ERP5&)368_0E^x$l(vPVfHKiT)#KKAF}p_wN0x2c2A-XPDI%F?2lJIs~_jz-CoW8n%GeB{>~pgBgY>tSwcSP z#D>dQoL?m}(`o|4mgr)z(B9fI3y*lxNjb>>07@t11EJu~SWJlD9b%v;(q<$HVE8{)n`GL!GXaoZ;O!=^5f z_4m4a*sYL-bNv*)Pnf<<|30k=ejjfw)>+VP-cK&T2M-O$zUE>SQctOliq9YYHnP4w zQoHbe$;01MekHguoPP8k>_Kh+4|DGVUuAXW{XZusR{|sy6kDuG2)77|wpB>6!%2c5 zT1%(Wv2W?T2?QY&t!307k?UwIbCD({=z+1n~mcsdjqdT#}Q7 zh*rdD4r=p$fBSi!oF|8%=*;{-e?Rg$mpo_hwbx#2?RDS(4S%=M8~e-WxD0%si9ZNj z{n;uUb4tAO$KcAwO&@>IL9f5Nop}66|Cz-r0}kGzd7gX@$KSpBQ~HDUnjY|Wyb>MG z&gVc*_vi1P4sSXBZs@qg_=843$6kNXr}1|m>&FkY=$?0*?ELi~ZacgQc?R#daz^3v z?%sr7D2h%M;hgvSynlSea|Y-h%c<0daW4AcS=lqH3Fe_T&Gyu%C8&{NJPTe?N%a?)87G_cQiEtlo|f zMv)gu857v{6n%@L$OvPvAp4cKpd5t^&#FdQbEh-!PQ60kTdgr zKac;o0pE94&FIN(%-_7Ux?4Hsny+&kIiSeCX4WI0cU!e|hNRDXjMhn9@>$0hbfhlT z=k3Iykxj18TfJj6zT?M6uO1cL0uJO0k}e^i_kZ$CKfWOI>`!_2biSbH?|!$b5c(1g zx%nI}j%*%3)#p9i-FNu)4(4_JKmUJ`Z|U&Z8OyiFPL*#}`}&n{TfOq_334pXRK8_< z@Rb_RTlDGW+t$5r*z&D|`>;*E+G*q){vB7oZPmRUI(uXE?eWUD)A_qiy$SMZW3L2w~w>edWLzRBjso=eR)nm9jga&hUoav}Ur&lS#o*Dm?>URSo+@J3m`le5rAw&iKAesjqjyU638obT=z{>dLX z=l44m_I(qpsd+e2(f7WI@EUp&l5@UWF}-!z<$NwCH&pqu@~=y88;75O+~_9**t@!a zy{Bhjs1iS6HTqvHmS%jE_Wsy1u7dqB`r8`xxOyuwA02K!I-JksoTmkc8XEW5`t{mJ z{C78Er_%q&)#*xXovweGC%;2Qy5o~eu?xL_WBxdHx%`o>%YCKKq2JwsewR@*YVv&c zwG9|I(JQq%-_M%SG0{uAL<8tdy}k&+$KJ@V7FJIQ&dh4*fXmSV*LifnYpjH;1D4~H zYpwN_o}vSC|3*(O_jc5){@%`eP^{0R0~)zEMmS_1qXX8KmFm8desnSxCm*t*b!g=rr_U|jI$8+SsV$Ydr&P!JwnEcbEJdi&mRt?_q zBgUbnR{7Gz=h#8+TGF5`NB1>r>3EBEWAB)nQ21MXF5Xn047feC5L(J2FU3A9)6r{H zTTUKcXNvy_9+rE{8b;IQ|JdwJk*on^lgyvP~J3*-A^PQk1@`UJCu{bT1orqk;WAA)STtALBODWCjA z$LZlN0`3g%tn+L(G*U6f&-C_#6>qmTu+CcWvfRS|ZT0#f<$uJEoh?7(ZfYsxv)Fs~ zzjZP5K@VV`?&~GT@$1%t+r{h=IFpXrzEH6M$Cq<6xLnSCr1Z~O zUNI`TXgvM3eK}n#L{rz|Q)ds{yvC@1K+B=Or4NL9?|~2b+;rY_uwUl)^>%zZ{c`pX znCkG``mKQSHz&oI(}kg!-?amWd}}LMpT2KEZkRX?&zYX$zKbJFxcPTe|_6 z6dw@0T9d{!Ya*5~k-nhz{v`YN_C5!!ZcptvaCx6AkROxpREJ{oL15d~3}W8UvZ;;1 zk8nG^$IAm}2P=qurxVxIJ(z1*Lln3+!V_V5V$UFADa60!BkU9ZhOUhqmp^ZgP1mtX z;WVvf!J7YSx_z+qbX~6XR3_tYAzr$WcqujUCSJN1{b(=w;RWzc1YRnpUTHKwbT1C> zfxcsv;1*u(OQ$v-(utR*6EEeCfbqNWPuo1F+Pw5G#bk@jdEyJ!u1=BH9z6fxW9ASJ zjm-p}U7uy`RC>y>Pj|q(+N(ex6_+OzZKpTqYGEF z=QG6b&_D7(Jz=VmDM=rxzhw$C*VMWrtBhRu2%NMtHg!Hh8!mdJ1D9}W=+D4&n{wxj zZ2A$f==pu2yAH2f9XgIY*#1%YcK62K4|>W$Tbf6|@zUL$R>oa>IXm|jTET@i3%VCr zndCiWnY@RU$kHt3J+OY!$p`9}J%@EoMYltq?15KAd!pMaK6_=6&Y3UK$KISXjvNa2 z({HEO|8DZ(Pd#s387Z0FhP=`FqjSiSmun@rzXon%>`klq5I)t}G6P*&XN&53_R|yQ zuH3rASJsqFF7c%`j?1u0B`dOh)&b%R2QtV@@9<|F$Ys4XAFjH~@5^c&#dlh>y|=_` zIS0bXJo)@gOlbx*U}RE~XY0vXul^Of1o6q;-#*b~Wp_WL8vO!f#$)Vl1m1`uPjtp` z9t?{DgX(QN$j6a>yUDT|<2-W&oz~DO&q^Ow?t^F$S}^Mk^ZgLktl#K+^<@b|Z!zGL z&t5P#)APpAs^SC%r+|Hd} z=jJ=~TG8*#Z_sJXd1>$kJupu*^dOyHFwV6y8f7O}I_nbrhQ@hy$NVGXxz8IsvkvtF zL9RLL@VCro4btc5vQMHx?|9M$G_IE}_A#b(scF!Ha!9@BruaKdUW{n_EnX!%Qt5Xk z^0D?|%z7S&3LPHVOGN+0+OY9P=&lLC39I?C+x+*sJx> z70*d#p2r%l-0w`L8vvZ+lIjPUa8g7HsD zSsA^u0UT6v&NtC_WeYu$`EA$wK;q2}cK>qeCT-Q=jc3L(#?|a=rEgHzBlu^J@;Txk z)KW_f{$=h*DhU8L^fPGD+{rsvTL$MBKr^y0r9ZjwtL9^+&l_ANr%j}e zbLq(La(<)VDR)X|uxR|Z%yo=c^)~La4$-6o!yxhi{M6=OU=2L*J)iHu1s~jV*C5{@ z?jsy*dKLBgF|WH2YrFOiSvT<2BtNVL$S6R zc^YfvEZ&eIsMx3ac4>uhJ85q~b% zVpzk#`yrPukD+gycbNlEls@F8860kD*z+llg+~ha)151B!xHV^Qv!*<)37Gm@N58*a7yuUTa^sxc zD%@H5T_cJ2zXd(M4Lu&K6^!ZNHy?Q{8VGEAjvCLE=XjF{Q1-FPbz zI70??J^pgf>|-;?-=bgQZkg zP&8wf_ z?yfiamCVaI#2sa?(|Z>lGkJ{l^vI+ZO8X`KCrVECgWTES<}t2Bc6jp`x7|t}V-I)k z^kjs#Fphl=lgn7oT`TZo1pe97=lcxh)oty~t1C|C-j3+y1t-^?{WG%PB;VYE`B>x?h6TzrMF*i&so(X z7PJ&0Qv<&4U#Jd%^N@a;6M|*R8Rl>9IrP;T^dTOB+#gF{3j7gs@k_{_T7@jkfJQf9 z+w6fxr(@%-nl_4^x%Axucn=6WkdXtS3_r6=mFTi|0sN95r_5Qpm+V~)!zFY!v*#{@;?OB^J&-l zLGpXaothdPPE5t#n~HAf>#|Wa{@*+J?mC0)8-8NErpLOGc)vUQ19sc+K z@?Va>${t^1PiO37jO)T%V)iRpkC1V0;I*B@d`rlSo4s=sudHY1*O5_twv@MZa8htC zeeP|z?bubFU)su2>yLjc9Z&uQWVh-J6azN;r5nd_@F4wIH1(th7t&vU{W18L z58CWO19BH$Q(n8<16J!WaD)H#r@?D)!Bnh%XjUKqB@VD3cV9Hm-`UCCXh8_8Jx$uVk zdZr(I%|yO>@8i<_LHWABiRXnc7grC0t2FZT{Z@2)wUyQ=AC378j`Z0Nez;HS>1xh% z#Z}$_FSg7`_8asAhx+ynNh7|}j7;Yqq21`~CyK2ggC+Xg&;2R#>VJDb4|Bg%pZ%nk zq2K-Fj60M4`{Bpz&7a=0_vSgz-iW4MdHuh&Ki}_Xf7S!bC*7Y;(=RP~|5Ri=ybf>l zaMp`%Hxa`Y9r+!;n-AZ$LQASE7vIfy_^!?2JAJ?0!*}x?zSG~y*PbN(LgQ;5@!taN z7dnI6Z%gx}gT9s4xxv=FH1ZjVAp(n$slY?*C{aw^j1PT4w5{6370|2?|Mv)TP)25P zrxCdYhUd^nT)wnv*{(0_b1qpI1Rp1_K<83VdWv2l-73$Pne(;JPMr2h_WFN&f4g;0 zn$ZK3{8#)b_Sep(@7upCGQ~2op>8N=Sly)HJkI^{H!cju@@lue^*7kh=x&?1V|fF2 zo~%HhAV+lBm?!Q&ywl2D?9=D$Kdym~? zezRN8@yrIEai2%<#z#XIMwvN&5)iLaz zK^6c0UXweXe3|Zh*WVMyE^yZv!A6f#vsAwH(qJ+A%~Q@gi#+S3r{1z+)>&!!%{sYv zp|sLjr_K}AQ_NdAp!8g4ox+8Fvxjx+H_+j1#StobMm|OF`tI*Au zHa*zA&%EzlJ@l8T-zB)vz`t&j)jYKjOw|XzkGw2HADBzrx)Ax9*y83#C1uM%#(kSHy=VJe{E_b2u6}r~ zuI8R^@9eSbGdm|kUwiu2XGYuE1N7%G`m;-4vVCtCjjb($#%|j-KqGv|%WAy%x@6GS>@rU!f3*6t~2W&;(_C5yH zea?&*mhEucw$D1xh0(z+^6ca2<1eU>BZApi_Q-%YaXLJGp}N|vZdu$RZV7y-djhRtBdz< z@=rcWyVi)D6Vb&UyKeHB@hQu%nAg%-VI{hzT8X1;z=hAEbjXK&!yzg|&S~8Do@{c2*D*T0=}| zDlws1Wu?Y%1pM;dDef0phac%$YscHy;-lg2<}LVx6vyUVp4|hU)USqk@1$eMjh49sAXLWET_Yd3zK41 zX1{?+@Q|YkJQo3v;sS$O)TdE#D`U?Bg{(2dlUud%9p@)nH>f9F+R6~`_GBS z@P~zw<+{V=tKc@q_kQq;o<{EEP|nz4p=ivl_Y7<^dFza!7@^i~<9KASlJ%Ha5b$a2 z$Tc=yhLKqhgS#2|nT`106UtFQ_d2)`-3#CSmu8Tw@GJ5Q3Jd7VS2Lztbgexww1O?s z#XN6v#vf%|(T8YUG~%VN7_@bD%KC3|*00o>tD+>dq8|YoD^Y3zOPoqQSQ+o(~ zwldW-e@iQj9zYDv6Ibf6>*k8e)(zVQw*$aR^R!QYY=I&=lh~FpF7@0bg_W$wmS{{ zf=hDKi)ZP5ky?Aa0%yD`Vg=KNO$)Ule_ElBI@AATQZT|f!uhb()p1_CjQ;e{MLP5# zdUpHM>x|a8KK3RPn$TxsS737pk6!sJynN(mj}38+>f;<6;-Y@?Z%qGwXu|7{jAAdz zCmF#Pq5Kco<`+-2?uQ1RE#i=26{G6;Y`HY+MnDl|_-c$K^O#PqMM~=};@bW48 zg5T-qFdBWq-&bGgc?Mndm#pyxD-nH_^&a4J4}PC1vgI;K4FayZ(ex1Y1;Y*G`NsUg zFu&1$gn6#&HE_%M7k&X>4*PbZxUb*s-`Pi<(=IJU`TP6dL;ql(p}$0!&qL`CBfff$ z`0MTT?{9^FS4uwt_pR)M``ZYzcbaGiyq-ckV>uI9yI{B(+(-E=+G*#zD*Dmr-tDt) z;7)Dmt+($Es|?8p)V0-Jr!#M*h4-;qi$`E|J<@fCC{3DJ=bS? zan^spJ?Qui1N56v9lXZ*E8l61^1JbO9N@cGIXC#;BHvndN_Dm!-Fr{`9oW$`8Mg?Z z`wHkPn#Wya=;iKs|3DvG&4C;v&P`0^eXA7wtt}4_f4zz4-^X6xL+`mYgF{ht@hE#5 z<&M!Pd!!t^a_|~M=bwk3RmNO(Ul6^W9ZV;Wl6x4qtDg9zc$#O6tUw6a^;8kPg9`Dj z8CqbRlg}h|=1A^z(`(l7px@Ss{->W4pNrouwgi^-O!ev==ed^_nA%8y!soSn~_ zHlzpM`7V51bvC~7y0e2nxt_bJ(IL?R@fj6Xxfa@f4_TQy{w>bQ|v9m!D7mGP%c+10T2N(>=M9 z4d^3xTA7VKmai)e4CUw#%AI`T@45F397-?H-LlWJSF3qlVIe!TKF&tj?_OGx-R1g# zO#PoDzh63y{NA5pf0Z?I4+uEegdJE0ZHuN|dQSE4JW5U0Tfif^>H3!zrHm*4?nT&h zfh_#N0XH6%wBsIN4E4PC+HspacHD8#`0wno^Uqgvr|e(zhVb`_z^NiF^jM9+JlW&Cb`11kzDeU)Z6II zF9jp&NsZkWL$2xBM|ZqOESR3v4fI@EPwdFpXy}tB-k9mcX=ios@+%f-WU8qzH}mhZ z=g)EGC+`$n&}y+bTe8#(t&zElFN^7SVX(?;eP8?plUkfpJOI{TPo5_q2j{+sN54o@j7-FSxM_m9`it~z+ui&y37 zt`%;XH_E)yF^r7|EV{pG0l2o~X_+k#^ZD<4I4@>_muq-_2G3sQ#)Vv3Lne9dn*X)x z_8h%S_bufxhUCXPesBNdl>Tz;?d{Tq9bb&gx4)fi`(&PnKknpA*h}p9$giv=as2nv z)0HoonTc(Am6d3N|J>h2SeF^k@zFfzjMD~xw$8A~*JeGex12suLq;8M+T|l3o3S>L zi%|rx82>8INH@6yAI|0vrUv8q2~AEjczbjCyG^cL65+Wh&oz^~S6w*4zK;Yv#d+@E zdCuii{FGa*bF+gH^bebd>>g8Slo{?K$08-Z!*YS%Jil*(1q$_di$O=a_ie=X+%_=PCL< z_jQv?A%Bf>E~G0i!X_-^T${J_!R@|*;J3g^L|)(Ufc(XgEgK$C?hm%Zj>sCFsc9{N z>G&c!m$8*gckvo6fOi;M0t+#SaMKCcDnN$xt&an|{wvra>g6}J9AQ~lg3`s)ATSFJ?!b=$}0jVTYl_1&hP zCs<#@S)pjp+2oMg`7phDJHDNWd=>b&!uYqs_{{L*G*KIMX+(Y>$tHf|<~)A~{ItsN z!Qa~OIYgI3mp3CDw%B>_t@w}n`T_DPK=M6pg2G z^&E92v!Blg_dI(i&qfAWmlpigGVv34J=)g}?H#XC*5kswPVnk8vMzEXbl(h*Xsu>V z@+Zl5OK%wmo`_Q?!jJNgzeSio%KS0lD&lXw^f^>^6t?i|fyB^KY?#_!8)j>-{rhMj z!69#K80DWt`79geA<==x=AY4#Dr|k*&TmytfZ&lnESQuhkV*eTYex*+wSv1ga2Lh@ z7y*Ajz5GPe#uHhS+Q9cta8&hf&+Itx?v}3ym@A>ldT3I36kZiinTqdF{;e>dE&N+? z`L~=tXyN*FWXP@TbzqzETj+PZ$G5e0C3(J&&?`xEX{=HBfimdL(E3Yc|N3u+Hc(?B z`WKCex1OaR=bgau(9(yt$FX19;HR$cp4qy;H5Ion-qJsAe}()gu{s4xvSA+?Y^@(I9fexwOKcq_mh7W<`!o3RO}(kT z7t&4a`VZ|xCVoYmK9pBx_TonNq8VD2tp*)^nSHR1Is5Q^-;y%nS9odoCNjtBx&e8# zpZu6i@UanjAbi;V8uk}@+@$@2Hnm^IHwk@;Rz*Ox)}Q~0-qxyCFVyWP+;c!_WLW=L|b2VbA^;U%y4 zF5SGH=Ys9v<_LU^|7rFSa9IQ{*llJc>BD zviUSgx3=FqqoteNsW@wwY_avSw3gqoCg~Bvjs3mNcipm0l&AO7V7n)+XRZJBi&N=E zesxQ^SjZ8r{X=Nf$a0VE^AI&oM#sp*K4*OQyxI>Ay!l%Gx+_X+m49Z=6YiL1y|v`0 zDetD*^1T>SZZ@`pRX89xhZ;)d(#*{bg#PfC9&~N`#Z5$qWQ>Q<3s#bERzJ|+_z=1J zE6F!&UE^1u(}UI(hMzPWx`7Ib-D%RFbSe&b;kw!W2P>gSUE*n7~O!|+`c87RIpel7A;)u&&% z6~cw$G&}zb|4kk-Q2A5Tb7q!)ha8XL^TO_rqH{zUOJ|z=DT4K1IZvRG;0kn|qQ^!D zA0%#M_zziHxlFRjp%=zkNDqM4rmWD)TT>i+a!)@b2#+Pht z_k3*k$vzVg@$Qv$x$kSgh~0!|fY&bu5`TE<-6lV>*6#b68!D8%s&o3q?n(A$_&ey& z+}YkhFI(C5)ydqpaKm);+8K_$WA~+r0r!09VFNV9eJ`_9;rN;Zhn_nv-Q?x=r5g`C zU-$@k1dCv@^&K0YLgoE!yf_$MWAC54hJYXY4|}4&-`ICD*lYc`=fdEnwFx{p`lQX1 z8IG-K!|=@yun#7I_bJc@I&ZAPwGZsSdwmwaQ2m$Vv$)oweJ}l=*1y1Sx-N5hD(PRi zo$=1pzhL@j8~!Tj)n`99tSs?EYzr3;Hg3zhcloiQ9UfaPnBiB&qrLiZZ+|rIMEz@C zvVVRLeA06byi&>Q5#8-pg|n;eq$ypCJy<)m;)) zZvo|b!#BZjBRQD$_%azgDjz1l)fl_!0jy`zpvy{R8+!QcY4}sa*r?$w^2B+DxOeHv zYm)Y<;5s=g`8k|5&7mv1zmTD8{FhZ(%1irnV;}<#7QHc&e7D+d*UP^#R-0nOsO{YGy=zaLLn7PKfeCqU+a_IeK z>VQP=Gg9b1$v?^avU~l1@Tb2Y{(OM3J_&#BPvK9Ezt-_DeiX0jEUaZN`74dDvD(fD zE%W#qQ~6ixkuLeyywCQ^gC2OWM?5!`*IMyzn$5er{)RK&$;0It!@K<5<=qn}dZiMGri4lDXW^$$VdXuD4FI*WfTR+}&&Ydsnu7!`bU!dG`8D<#EH5Q|0k_ z{~zwR>eW8!e%txnDfx%s_50NA=nO+<{kiDP&l%edd*l9x@G+Wr8!|=tb_O-qM`h1r&Sd0Csn*7;v6D>> zr}KA*-w#oTC4PU#Lj%S?Qg7>zGr4cv+YiR=0h3WjzWOli1?-Qp1L&zx2ftja-u88e z+cpdcwfk>2`7`a!xyD90Vr9QmWAyNww<*rA9DXyFznFpzJi{_~QpG0G2LKq9539J5Y7S)kRWpxtL6a-Mt8nCwy`OPa`(Hra zzhVW(e|9s!ZB7f)IOu*CSIK%J`;H2YrP@6CH*Ei??Ncy4Lg3j};8HGetOEFuAHs|D z0R4+rb8gq-)73l`X~Asz*@i29rD^yxb!K0IjaE4j-4?p2%;#L>OfqLVal0_je=ym) zUp*Vt2O*t0os|~3fyfTwCX75#?@&GWv*Y-FTpgRa{_kfvcaaZm6@kPdo~fiJr;It! z8@F24#i|!UFCp)YarK-TlV|tpS?FAJs`1^qz0dqw&(!#q)B(GCrlj&gBQh~Y4I#GE zLDzP2_n>vnK)a9g*VBTVOdscDoa2wB;N~=QZe-4Q!OT#{H35U)f((naKlp_h4tqMA z`y&r^fbR}}_5pIe4rPB>yDr-oxNo18-Plo(6WU9RryW@1b=jqwqYmBA#4T8}VgQO) zuF!YjFvfSXkI_pGF0aT6&dZ~J9D88*PQafD{)IPNXS93Sge9ZlwVHR;iwhl%_kYiO z(SlbGKGB)fgGaL_uRn58$*KOx$ZOEi9%%JdUh$LkK=tX4D*|j@EN(c)KHD#yw5Uu5{75!+YpuS zko~4^@TnMZq|*DV??UhR^ZKRtJmWK4Yt6sZ_L=QT`pk-;cWUN$=zNKx>(rf%O-FC^ zC+3^HjJ0lFMwB^4k3RBt^j>~DZ1Y4I*!6p@Z3Vojbv*WtM-K4pcZMJb7{Bf^lUvkV z(|AXKxD368i>KoV(p6>VY2mE&%zY^D3?U|*#WG2Uj%-94t|7_ zpN|kdK+BCeq1d_s#87iX?akzR=FSYohEj(&;;K-4@mE8U#?SEgq5ORqe?Kb}Sq#lR z!|zz@6gw|rt@;S3QP+-7Cs9O=$gW}9vmwD~b9(Tb3y7^DJECj8f$e+^_Y2Gpb!_=& zXyia&Xwd+s6d4cuMt`W7BLO+Lg&`4?UTm$ocV`WL>-m}g?Ym@}e2%lHnZKgfR|J=*=x z_3terhtqq%nsom%*~In4PWy>;efK}1<$B^t)Ck7MLQ}Fw&HhX03v4?F zdS7nNr?Z09LjxhbzwYPdPF;d~2fbZq)ZcSSU8nD}d#fz`(&__3-yHUv{PP_>U$>U* zL$BgaiX{PLs6Jb~D&MqcHvI_nx9{L@*6TSJns`z>FlH?+>Q*d6^~m}x+U*d{lY5GO zJt;iGN>o^Bjj`e6Vd0C84#gj9aG5c-dWk)!@Qq< z@w(UN3UG5Y-G89VKj1+2hmChtqK{mG%_&`i^_duy>QmiZb}tMz%@1g~9C@X_H*?Hu zU|SilT5m6H*V}&M_Vy%w$La&6r}XFaJNYwXL}Pv9>xy^9ZbEk72#qbKFVorbhmH!K zU7b8*(0eXvTZnFSlb!#!nA{!r^JwyrWfP-sB&0uO{?rORjQ%e;v(WvwNcW#*>lE<~ z@W0( zwS0|QM8(nv--Yi-jH6uc_!EI;nKh%Ax@&8jW6SQTtgD{d ziy|xIz{6G=Jr3@?OXE+ao^CZd(3ouasAlx`wrl94%$nNfus+Qx95cT=Z!>nCJLgj7 zH1n|M%J&~V%sO-@XAt8|&Y*9?&U|aT8H4dOhK*kve(#@J=gzC}lT(gYguzX$K!2q8**X&VHpkv}0LW^kww7 zybhmz9PPN{UdFhowByCEA04tk{HkBbC&8~fUttPfMuOjJ@Zzr-IXMkkSt6Mg*{>IzZQb7q?uv4RYq@D=hN$%iQXq7^D0?+cBY zm=-Gh3VV1KJ)wiX(6}P{;eOs9YGus&x+_bQ_d8{`d=1~E@>+IhXPB{7bMXSPs^zPpS+_cYaITTi1q z;(N#osz0!N2d(&4!b3Adt=R6e?RDO^9wBdd7Cb@S!*}6Doy8_jjI1&BhsrU`FTf|` zYx&C!^tI*Lh-`GmDu68y___N1`sv?0^|z4%<}7Ax z=GB-dk!xkpi17jIGkoQKPSVTFZt0;nc=pKVJ^TA`7BUpS`5|hP`t$$EKi-LcW~Woa$5fnJ*%DUS~!#a z@4DpF{lA^xpXvUa^%(l<+h0I>2(?J}%dg@3&WwMo?lPzD#MT*m%pW0*^k5Y=fWMejZ>x=no&E#;qJ?ziviOV`HNqP6*yxb-YRYsk*cU z=!X%WlZ_oF??CTmV=I3Gnno7+TE-X|&pL9mv8i*gsqq6B=VDXOz^1;!+ha{7=pKp-3gLtg&fF{*DN=qjP+&ZCe8iwl((cZS%0L8?WZKU*os4`0dw2ojg~R z;|moJNehkstUolih#LMid{-hI2NF*LQ-o(C4o-#Nlk1ZFVrn*!UB<55lWuyS3NHp% z$amQ;@>iDhtiOzdW?yrxl@^ho*&m*}hOZeuPZ?2-)}% z=1!o-2tR`CN7E0;S)Y4`eAN1)Cs`N2i{z3&;QX!vxl$#Wqgs{}yofI6n4UA)#@5yE z`g=w-IWd0g@{{UPy!gH11ncAPkuUPhq`tUM<+D(0Up^~2LwRxJOQ*__UQ~eVS@14=XL=aTvGBiv!)qMgC3d5JZ7%N~JJ!==4X~az{91Q$P+g3a9@db7 zJ_4Nm>LWJHI&YNo`5p3q3eX*Y_O3%`@R9NJLvLPqQfX~)3a#Dd$n-NgpDOyHxBsN3 z>P+cP=hMs-{m17yXKlFcv(r7hql~Y!yTAM|jkn0ex0C1HDC!5toLd&!NlmXGKgwn+ z>pzm!kyTJoy1W#V-wy{GiH0b>Z8z2=;;4O$WgiHJZsp_pr$XM;Q_EP8azX&Is%R8ODbI)VpV|7YBs}~={ z8v4aY4t`G;A9`NCP(ON6Cb-!PZXU#D1wXnk@KBrIk9}RcZZp2n71+Usw>TG*z9pwl zReBtJ^(Q;G$gF9PXH9SL-n*t6XHBo9(4(E7pX|Tq-#D|h-p`rBnH<5V7)917pU;-r zc5dTlgmZ$`)QY-xCw9)4(k7QB-XK6m^wVd6LG`JlpuGZM z7Ob_keV_9KYl!D`UKaqXZTs4_fi}H6`4iXx5oC56J}~8I`B=N9T4ic7Z9V?xZO}r? zw$IbUm_9VJnP12+-`);iMf2&mhc59#9kEE{Fg^`)2S5${XyTsu$4t&RJwxsKOnOHA z20lQBX&lj#bQ$gOUgnkFYV?MA^ zVa?#^d#qibg{Oz4(-q)*hE5f8=(GNh`79Xa=Q}%vj(@?O?&8h6J-q4N-&A=e-K5a? zg3k(eQ7Nr+z((r>7GKLykuHe&n~x5@~;>XZ29lf*kqN z7p?nG4)y4MJR@JU;(*G#s3gC%_qVgl5+gt0x5zL3cErW}7TM+6SsGtC&k_FSm4$jX zpJxTzF4NPhAh?|zjzV)brL{cGd&ApVHq9>)PO`XP%7c^M^9Gvm<^!9$nqm|88z!6k z%dC4h=dX9&vd7c3ZuRQcx_NG6%DVN8&J1_G<~OW&p6+;r7xkMX7qMP=&|R;dQBS?f zuiE)~`YafJl#e{%z4{Z|c(7%hyWVB)dL8+Ei9-V~q^#G~w`NkG^4Gkiz9n5tXUYNA zunArYqZ>&VZ<|FQ5cn?+{|TQv<%34vDgQ+NLFJ#c!>7`>)W@X*e${jOw>t2^;r-Fg z$2(_`<35#p1s9OeB9{RB#GBs5y_a@14>?W(0N=FFJp_ zYOOmP(1SUPBIt70;d80N7LN1m3)C}hAzs|U-dCx%JaA4hhdR)9>M+mu1rnFScQ(!( zn;gCpzxDmjdw#gj(PtW6#+J#ptZ6zIURNDF^Hv~RYT2i`(DX@oU%C~#5pg+c4EcMV zeg5{Tv%ir%AQK11PIq&Uyl`-atX)oxO;uK)k51>F_ugl_tYnSn1Zq6Tn;Oq-b9W4R z8K%b5_)75I-taYaf{FNS!Kv!ARO`8qSNA**MQoXIb1JprFR~+to-T{-{n_yXU(Vu<_$_nZy65mr=kp3;0}=S+QRdXMi>|)+ z@XYJ&XCr!+T-gEib(!iLuz0TVc?PyI#;`@-yZ7+w8y+`fZgQS$nXtw@SBO8{{<}TS z+|Q7k!#MjdxaY87D8w&*uREU^=P@&m58l&!EnmIYjI%=Ho)ajYdWbwDbXhazbbPeHPS?A;Sn47>u_GEj^GTv*6}zny{q*549>=1l;y0I_EUOU~`k9fu|W9%Zv_Kou;UgAuuWF2MDkmiaa^RHIUHt(O; z-#CM-q*sy;wUO5h^wWpAhtKU@9)||@qFcm==h}Tm_c^s>dy+K;KcT;p#(Pp{BCn-` z?a!*$ET$%0wx{-_zZ@NGfdebq℞s5p!~MEa(dR?4WxW`bcp1eb!fq-3D*t`y+RU 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 zЄ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%0DpUh+DeC?1JOW;&}F8pXeqh|cyvd>p9 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
*&# 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 z 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 z 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%0Ao~XP17d@ugw@Ez;)~GD}zgT)}|T9 zA92=te3ZS`7abZ&uGjdpsr`jfbfI$4rR18_!#9r4iA}h*@pJ537#8@}Bi7fpv{;M3 z)oxjfp0}1iBpsu^Li($`gX|(#kGj|NUDxm9dGXjjV7H$5^Yhm1DUDXe=xm# zhdy{+(6^}zhgTJM6#qCq`LE0yK@ZwX1Bv;nYZ+yQq_?Z3Ujie7IV0qUi~sUM#hq4V zDYTVOZxf>fWp82Q#^ICoT(ek{Vzx%+OvC0(@|~>@6<-T*rn?PG`&#r|_CX;ZqUhi{ zbM8}4@ZfilTj*A=o~uS?vYw=llPsT$j+?@qOW}JTe6RP`sc#W|S-kJ??rVQQICJco zwI1FUkBf#g;}dRw?*#^@seU$5@(HmUZCMi^1TNX9&<(%}y64p8cJoS;6 zFX6nC0C+LyIb6x!$B|W`P1J$U>Zl3L2iH4{ed9Z{6kbwoL@%(NMvm}x>?!;bSkvx_ z8ri6`fSODXt8}|(bnt6u(CY*os6Ih7r}>ae++D;OZR7H+gn9{zhTJn53fa^Cd*-J7 z>;>#+7wy^oxAMY%kGy*Dd&qajS`SU>dG}nH4V)$Zveu@3u@`{L8=x&Xq&(&&{U1T+n_g+au8TPtngf2@;ghRbTQxpG_fQ+|H3sfC1NYo;oz^(i zp1bUfV(#w%-ciOIorJlq_v=}okM-%f&ui`6qqW=Xb#u`6p8h{Tiv~ANef<)x8M*P2 zM`pPAvExsv`e4zPpLI3DFVm<`D&8=R0+2iet6!@-3=@j~n>j1U;^1Jkg|Tk_B7gwTd{=H$Fs< zT4+|d7ac3N?dSO_=JFgpw#dt`?clFhZ@j5m9(2}4#B?qf>__6`L)*F^p6hpimvjHw+_+zVp#PLlR8E7q!P@4G^|*OO?;0cI$|eKb z5Av_h*(X^gpCvFQm`m-8%L6fdSJ}tg&vW!Ae(S>?*n8o>z{uN_yvhOQs!0g|Yt^dM zf%95mShWxy(`h{ECr# z*c)@2)kBW+8rHL?wv@cEy*68Rc|T{a?N`)Ln6)|dv`XtL2qYA1(OUGM=*d0*_my(V zwAA^Wky>`Mo}3 zU^mtM{Yp6#ro_~XnAe2&MS#2MQv zd*aNzciU>5-NmT^LfsOhh3NEe(p*XOi|v}#Bkx6v^5o1RmyfL{tP}iw%bPb ztQ20_yob8O)y2NtBPCq>AMg9Gx9L(mBA9u{-NSvm`4{J1T~mQC@A}^n@3u7;v9FiU zb=K_3nnN+qH3I{EE&~pJt(VV=`@+ZDI)D*zo6U;bXe_NO243{8!)Ly0dM@kUs!IdN zY}+RqHJtZykK4D+J1=YSyKQ>E-f^aS=Q@2zm5z&7J2Wz_|n1ie^Q-qF2$lJI*q}4IDN~o_lch zbzKM6;se#$m~*T7E*n5Fv3b`yON-ongfSvHz}qv1<~WZzM({h#90QZn<_IGLU)xV| z>$g;E?;X1tdst&@Ex%%pdbb^?w`0hfJs_++6+Tlq0RngTDEDN@LWd#<)OZ)C3ah+oCak%HO1K z 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�b$@~QW>mcAx_3_qqXctGIa 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