diff --git a/.cursor/.gitignore b/.cursor/.gitignore new file mode 100644 index 0000000..7ca321c --- /dev/null +++ b/.cursor/.gitignore @@ -0,0 +1,30 @@ +# Игнорировать всю директорию .cursor +.cursor/ + +# Но не игнорировать директорию rules +!.cursor/rules/ + +# Игнорировать временные файлы в директории rules +.cursor/rules/*.tmp +.cursor/rules/*.temp + +# Игнорировать логи и кэш +.cursor/logs/ +.cursor/cache/ + +# Игнорировать файлы настроек, которые могут содержать личные данные +.cursor/settings.json +.cursor/user-settings.json +.cursor/credentials.json + +# Игнорировать историю и другие пользовательские данные +.cursor/history/ +.cursor/user-data/ + +# Игнорировать файлы состояния +.cursor/state/ +.cursor/*.state + +# Игнорировать бэкапы +.cursor/backups/ +.cursor/*.bak \ No newline at end of file diff --git a/.cursor/rules/hb3a.mdc b/.cursor/rules/hb3a.mdc deleted file mode 100644 index cf387af..0000000 --- a/.cursor/rules/hb3a.mdc +++ /dev/null @@ -1,29 +0,0 @@ ---- -description: > - Это правило предназначено для управления поведением AI в проекте HB3A. - Оно учитывает специфику работы с различными каналами аутентификации и управления ролями. -globs: - - '**/*.js' # Применять ко всем JavaScript файлам - - '**/*.vue' # Применять ко всем Vue файлам - - '!node_modules/**' # Исключить node_modules ---- - -# Правила для проекта HB3A - -- Учитывайте мультиканальную архитектуру аутентификации (веб, Telegram, Email). -- Проверяйте наличие токенов управления на балансе крипто кошелька для определения роли пользователя. -- Обеспечивайте безопасность данных, включая защиту от атак повторного воспроизведения и подделки подписей. -- Поддерживайте обновленную модель ролей: администратор и клиент, с соответствующими правами и возможностями. -- Учитывайте дорожную карту разработки и текущие этапы проекта при предложении новых функций или изменений. - -# Ссылки на файлы - -- @file ../services/auth-service.js -- @file ../routes/auth.js -- @file ../middleware/auth.js - -# Дополнительные указания - -- Используйте комментарии для объяснения сложных участков кода. -- Предлагайте оптимизации, если код можно улучшить по производительности или безопасности. -- Объясняйте концепции простым и понятным языком, особенно для новичков. diff --git a/.cursor/rules/user.mdc b/.cursor/rules/user.mdc new file mode 100644 index 0000000..2074e6b --- /dev/null +++ b/.cursor/rules/user.mdc @@ -0,0 +1,59 @@ +--- +description: Это правило предназначено для управления поведением AI в зависимости от возможностей пользователя. Оно определяет, как AI должен реагировать на команды и запросы пользователя. +globs: - '**/*.js' # Применять ко всем JavaScript файлам - '**/*.vue' # Применять ко всем Vue файлам - '!node_modules/**' # Исключить node_modules +--- +# Правила для взаимодействия с пользователем + +## Общение +- AI должен поддерживать общение на русском языке. +- AI должен предоставлять четкие и понятные ответы на вопросы. + +## Работа с кодом +- Пользователь может копировать и вставлять команды в терминал или готовый код в файлы. +- AI должен предоставлять код в удобном для копирования формате. +- AI должен предлагать оптимизации и улучшения кода. + +## Управление проектом +- Пользователь может создавать директории и папки. +- AI должен помогать в организации структуры проекта и предлагать лучшие практики. +- Пользователь может устанавливать программы и компоненты на локальном устройстве или в облаке. +- AI должен предоставлять рекомендации по установке и настройке необходимых инструментов. + +## Работа с API +- Пользователь может создавать API ключи в сервисах. +- AI должен объяснять процесс создания и использования API ключей. +- AI должен предлагать примеры использования API в коде. + +## Тестирование и отладка +- Пользователь может тестировать приложение в браузере. +- AI должен предоставлять советы по тестированию и отладке приложения. +- AI должен напоминать о заданиях и этапах дорожной карты разработки. + +## Взаимодействие +- Пользователь может задавать и отвечать на вопросы. +- AI должен быть готов к взаимодействию и предоставлению информации по запросу. +- AI должен учитывать контекст предыдущих взаимодействий для более точных ответов. + +## Обработка ошибок +- AI должен предоставлять четкие сообщения об ошибках и рекомендации по их устранению. +- AI должен предлагать отладочные шаги для выявления и исправления проблем в коде. + +## Поддержка технологий +- AI должен учитывать, что пользователь работает с Vue.js, JavaScript и другими технологиями. +- AI должен предлагать решения и примеры, специфичные для используемых технологий. + +## Настройка окружения +- AI должен предоставлять рекомендации по настройке локального и облачного окружения. +- AI должен объяснять, как устанавливать и настраивать необходимые зависимости и инструменты. + +## Управление версиями +- AI должен напоминать о необходимости коммитить изменения и создавать ветки в Git. +- AI должен предлагать советы по разрешению конфликтов при слиянии веток. + +## Обратная связь +- AI должен запрашивать обратную связь о своих ответах и рекомендациях. +- AI должен использовать полученную обратную связь для улучшения своих ответов в будущем. + +# Дополнительные указания +- AI должен адаптироваться к стилю общения пользователя и предоставлять информацию в удобном формате. +- AI должен быть проактивным в предложениях по улучшению рабочего процесса пользователя. \ No newline at end of file diff --git a/.cursor/rules/vue-components.mdc b/.cursor/rules/vue-components.mdc deleted file mode 100644 index 10b351e..0000000 --- a/.cursor/rules/vue-components.mdc +++ /dev/null @@ -1,27 +0,0 @@ ---- -description: > - Это правило предназначено для управления поведением AI при работе с компонентами Vue.js. - Оно учитывает специфику работы с Vue и помогает поддерживать единообразие в проекте. -globs: - - '**/*.vue' # Применять ко всем Vue файлам - - '!node_modules/**' # Исключить node_modules ---- - -# Правила для компонентов Vue.js - -- Следуйте соглашениям об именовании компонентов (PascalCase для имен файлов и компонентов). -- Используйте шаблоны, скрипты и стили в одном файле для каждого компонента. -- Обеспечивайте реактивность данных с помощью Vue Composition API или Options API. -- Используйте директивы Vue (v-if, v-for, v-bind и т.д.) для управления отображением. -- Поддерживайте чистоту и читаемость кода, используя комментарии для сложных участков. - -# Ссылки на файлы - -- @file ../components/ExampleComponent.vue -- @file ../views/ExampleView.vue - -# Дополнительные указания - -- Объясняйте концепции Vue.js простым и понятным языком. -- Предлагайте оптимизации, если код можно улучшить по производительности или безопасности. -- Учитывайте лучшие практики Vue.js при предложении изменений. \ No newline at end of file diff --git a/backend/.gitignore b/backend/.gitignore index 2ab5655..bcf7147 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -1,33 +1,45 @@ -# Dependency directories +# Зависимости node_modules/ +yarn-error.log -# Environment files +# Переменные окружения .env .env.local -.env.*.local +.env.development +.env.test +.env.production -# Hardhat files +# Логи +logs/* +!logs/.gitkeep + +# Кэш и временные файлы +.cache/ cache/ +dist/ +build/ +tmp/ +temp/ + +# Артефакты Hardhat artifacts/ +cache/ +typechain/ +typechain-types/ -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea/ -.vscode/ -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# Coverage directory used by tools like istanbul +# Файлы покрытия кода coverage/ coverage.json -# Sessions directory -sessions/ -data/sessions/ \ No newline at end of file +# Файлы IDE +.idea/ +.vscode/ +*.sublime-project +*.sublime-workspace + +# Системные файлы +.DS_Store +Thumbs.db + +# Файлы сессий +sessions/ \ No newline at end of file diff --git a/backend/logs/combined.log b/backend/logs/combined.log index 4d7e0f5..b18a7b8 100644 --- a/backend/logs/combined.log +++ b/backend/logs/combined.log @@ -119,3 +119,13 @@ {"level":"info","message":"User 13 with address 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b: admin=false","timestamp":"2025-03-06T18:30:01.749Z"} {"level":"info","message":"Updated user 13 with address 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b: admin=false","timestamp":"2025-03-06T18:30:01.749Z"} {"level":"info","message":"Token check completed","timestamp":"2025-03-06T18:30:01.749Z"} +{"level":"info","message":"Running scheduled token balance check","timestamp":"2025-03-07T11:00:00.391Z"} +{"level":"info","message":"Checking tokens for 2 users","timestamp":"2025-03-07T11:00:00.419Z"} +{"level":"error","message":"Error checking admin token: execution reverted: \"No active token\" (action=\"call\", data=\"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f4e6f2061637469766520746f6b656e0000000000000000000000000000000000\", reason=\"No active token\", transaction={ \"data\": \"0xa0d7823e0000000000000000000000000000000000000000000000000000000000000000\", \"to\": \"0xF352c498cF0857F472dC473E4Dd39551E79B1063\" }, invocation=null, revert={ \"args\": [ \"No active token\" ], \"name\": \"Error\", \"signature\": \"Error(string)\" }, code=CALL_EXCEPTION, version=6.13.5)","timestamp":"2025-03-07T11:00:01.373Z"} +{"level":"info","message":"Updated role for user 10 to user","timestamp":"2025-03-07T11:00:01.379Z"} +{"level":"info","message":"User 10 with address 0x0000000000000000000000000000000000000000: admin=false","timestamp":"2025-03-07T11:00:01.379Z"} +{"level":"info","message":"Updated user 10 with address 0x0000000000000000000000000000000000000000: admin=false","timestamp":"2025-03-07T11:00:01.379Z"} +{"level":"info","message":"Updated role for user 13 to user","timestamp":"2025-03-07T11:00:01.577Z"} +{"level":"info","message":"User 13 with address 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b: admin=false","timestamp":"2025-03-07T11:00:01.578Z"} +{"level":"info","message":"Updated user 13 with address 0xf45aa4917b3775ba37f48aeb3dc1a943561e9e0b: admin=false","timestamp":"2025-03-07T11:00:01.578Z"} +{"level":"info","message":"Token check completed","timestamp":"2025-03-07T11:00:01.578Z"} diff --git a/backend/logs/error.log b/backend/logs/error.log index 194aded..8d2dd38 100644 --- a/backend/logs/error.log +++ b/backend/logs/error.log @@ -44,3 +44,4 @@ {"level":"error","message":"Error checking admin token: execution reverted: \"No active token\" (action=\"call\", data=\"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f4e6f2061637469766520746f6b656e0000000000000000000000000000000000\", reason=\"No active token\", transaction={ \"data\": \"0xa0d7823e0000000000000000000000000a98c54327253bb51f99c8218e5a7a01933d5f57\", \"to\": \"0xF352c498cF0857F472dC473E4Dd39551E79B1063\" }, invocation=null, revert={ \"args\": [ \"No active token\" ], \"name\": \"Error\", \"signature\": \"Error(string)\" }, code=CALL_EXCEPTION, version=6.13.5)","timestamp":"2025-03-06T18:23:11.848Z"} {"level":"error","message":"Error checking admin token: execution reverted: \"No active token\" (action=\"call\", data=\"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f4e6f2061637469766520746f6b656e0000000000000000000000000000000000\", reason=\"No active token\", transaction={ \"data\": \"0xa0d7823e0000000000000000000000000a98c54327253bb51f99c8218e5a7a01933d5f57\", \"to\": \"0xF352c498cF0857F472dC473E4Dd39551E79B1063\" }, invocation=null, revert={ \"args\": [ \"No active token\" ], \"name\": \"Error\", \"signature\": \"Error(string)\" }, code=CALL_EXCEPTION, version=6.13.5)","timestamp":"2025-03-06T18:23:12.075Z"} {"level":"error","message":"Error checking admin token: execution reverted: \"No active token\" (action=\"call\", data=\"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f4e6f2061637469766520746f6b656e0000000000000000000000000000000000\", reason=\"No active token\", transaction={ \"data\": \"0xa0d7823e0000000000000000000000000000000000000000000000000000000000000000\", \"to\": \"0xF352c498cF0857F472dC473E4Dd39551E79B1063\" }, invocation=null, revert={ \"args\": [ \"No active token\" ], \"name\": \"Error\", \"signature\": \"Error(string)\" }, code=CALL_EXCEPTION, version=6.13.5)","timestamp":"2025-03-06T18:30:01.179Z"} +{"level":"error","message":"Error checking admin token: execution reverted: \"No active token\" (action=\"call\", data=\"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000f4e6f2061637469766520746f6b656e0000000000000000000000000000000000\", reason=\"No active token\", transaction={ \"data\": \"0xa0d7823e0000000000000000000000000000000000000000000000000000000000000000\", \"to\": \"0xF352c498cF0857F472dC473E4Dd39551E79B1063\" }, invocation=null, revert={ \"args\": [ \"No active token\" ], \"name\": \"Error\", \"signature\": \"Error(string)\" }, code=CALL_EXCEPTION, version=6.13.5)","timestamp":"2025-03-07T11:00:01.373Z"} diff --git a/frontend/.gitignore b/frontend/.gitignore index 8b39666..f6edd43 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -1,4 +1,45 @@ -node_modules -dist +# Зависимости +node_modules/ +yarn-error.log + +# Переменные окружения .env -.env.local \ No newline at end of file +.env.local +.env.development +.env.test +.env.production + +# Сборка +dist/ +dist-ssr/ +build/ + +# Кэш +.cache/ +.temp/ +.vite/ + +# Логи +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Файлы IDE +.idea/ +.vscode/* +!.vscode/extensions.json +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Системные файлы +.DS_Store +Thumbs.db + +# Локальные файлы +*.local \ No newline at end of file