{"id":19705073,"url":"https://github.com/bgdnlmzn/potato_wallet","last_synced_at":"2026-04-12T06:31:51.527Z","repository":{"id":247963195,"uuid":"827351464","full_name":"bgdnlmzn/potato_wallet","owner":"bgdnlmzn","description":"ШИФТ Интенсив Backend - Проект по созданию электронного кошелька \"Картошка\".","archived":false,"fork":false,"pushed_at":"2024-07-11T13:50:02.000Z","size":176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"lyamzin/feature2","last_synced_at":"2025-11-22T06:20:58.681Z","etag":null,"topics":["docker","gradle","java","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bgdnlmzn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T13:37:05.000Z","updated_at":"2024-10-20T16:25:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"bb616171-2197-437e-afea-051d37afd671","html_url":"https://github.com/bgdnlmzn/potato_wallet","commit_stats":null,"previous_names":["bgdnlmzn/potato_wallet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bgdnlmzn/potato_wallet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgdnlmzn%2Fpotato_wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgdnlmzn%2Fpotato_wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgdnlmzn%2Fpotato_wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgdnlmzn%2Fpotato_wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bgdnlmzn","download_url":"https://codeload.github.com/bgdnlmzn/potato_wallet/tar.gz/refs/heads/lyamzin/feature2","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgdnlmzn%2Fpotato_wallet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31706764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","gradle","java","spring"],"created_at":"2024-11-11T21:25:55.421Z","updated_at":"2026-04-12T06:31:51.512Z","avatar_url":"https://github.com/bgdnlmzn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Система \"Картошка\"\n\n## Пользователь\n\n### Описание\n\nОсновные поля пользователя:\n\n- **Фамилия**\n- **Имя**\n- **Отчество** (опционально)\n- **Номер мобильного телефона**\n- **Адрес электронной почты**\n- **Дата рождения**\n- **Пароль**\n\n### Требования\n\n- ФИО: только буквы русского алфавита, первые буквы - заглавные, не более 50 символов по отдельности.\n- Номер мобильного телефона: 11 цифр, начинается с '7'. Один номер - один пользователь.\n- Адрес электронной почты: стандартная маска. Один адрес - один пользователь.\n- Дата рождения: формат ISO 8601.\n- Пароль: от 8 до 64 символов, латинские символы, цифры, знаки `!?`. Обязательно наличие минимум 1 буквы верхнего и нижнего регистра, цифры и знака. Хранение в хешированном виде.\n- Хранение временной метки создания и обновления полей пользователя.\n- Пользователя запрещено удалять из БД.\n\n### Операции с пользователем\n\n- Создание пользователя.\n- Получение пользователя.\n- Редактирование полей пользователя (только ФИО, дата рождения).\n\n## Сессия\n\n### Описание\n\n- Пользователь имеет неограниченное число сессий.\n- Сессия принадлежит только одному пользователю.\n- Сессии имеют ограниченный срок действия.\n- В БД необходимо хранить все сессии: активные и \"протухшие\".\n\n### Операции с сессией\n\n- Создание сессии (вход в аккаунт).\n- Получение информации о сессии.\n- Выход из сессии (выход из аккаунта).\n\n#### Дополнительно (необязательные требования)\n\n- Время жизни сессии можно настроить при перезапуске приложения.\n\n## Кошелёк\n\n### Описание\n\n- Кошельком владеет только один пользователь.\n- Изначально каждый пользователь имеет 100 д.е. в кошельке.\n\n### Основные поля кошелька\n\n- **Номер** - целое число.\n- **Баланс** - целое число, больше или равно нулю.\n\n### Операции с кошельком\n\n- Получение информации о кошельке.\n\n### Функционал рулетки (дополнительный эндпоинт)\n\n- **HESOYAM**: с 25% шансом пользователь получает на счёт 10 д.е.\n\n## Счёт на оплату\n\n### Описание\n\nВыражает оплату за услугу между двумя пользователями: продавцом и потребителем. Продавец выставляет потребителю счёт на оплату. После выставления счёта потребитель может его оплатить по номеру. Частичная оплата недопустима. Пока счёт не оплачен, он может быть отменён получателем.\n\n### Основные поля счёта на оплату (услуги)\n\n- **Номер счёта** - UUID, идентифицирует счёт.\n- **Стоимость услуги** - целое число, больше нуля.\n- **Идентификатор отправителя** (продавца, тот кто выставил счёт).\n- **Идентификатор получателя** (покупателя, тот кто оплачивает счёт).\n- **Комментарий** (опционально, не более 250 символов).\n- **Статус** - Оплачен/Неоплачен/Отменён.\n- **Дата и время выставления счёта** - формат ISO 8601.\n\n### Операции со счётом на оплату\n\n1. Создание счёта на оплату.\n2. Отмена счёта на оплату отправителем.\n3. Оплата счёта на оплату получателем.\n4. Получение информации о счёте на оплату.\n5. Получение всех выставленных счетов.\n6. Получение всех счетов к оплате.\n\n#### Дополнительно (необязательные требования)\n\n- Получение наиболее давнего неоплаченного счёта к оплате.\n- Получение общей задолженности по неоплаченным счетам к оплате.\n- Добавление фильтров к операциям 5-6:\n    - По статусам счёта (оплачен/неоплачен/отменён).\n    - По датам выставления счёта с/по.\n    - По идентификатору.\n\n## Денежный перевод\n\n### Описание\n\nОсновные поля счёта на денежного перевода:\n\n- **Дата и время перевода**.\n- **Сумма**.\n\nПереводы могут быть двух типов:\n\n- **Перевод пользователю**.\n- **Оплата за услугу**.\n\n### Требования\n\nПеревод совершается в д.е. Выполняется сразу после его создания. Пользователь может совершить перевод в д.е. не более, чем есть у него в кошельке. Хранение временной метки создания переводов.\n\n### Перевод пользователю\n\nПеревод пользователю можно осуществить:\n\n- По номеру телефона.\n- По номеру кошелька.\n\n### Оплата за услугу\n\nОплатить услугу можно только по её номеру.\n\n### Операции с денежными переводами\n\n- Получение информации о переводе.\n- Создание (оно же выполнение) денежного перевода.\n- Получение истории переводов с возможностью фильтрации по:\n    - Типу (входящий/исходящий).\n    - Статусу (оплачен/неоплачен).\n    - Пользователю-получателю.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgdnlmzn%2Fpotato_wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbgdnlmzn%2Fpotato_wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgdnlmzn%2Fpotato_wallet/lists"}