{"id":25877755,"url":"https://github.com/funfunfine/gde","last_synced_at":"2025-10-28T09:40:11.565Z","repository":{"id":116212254,"uuid":"251581629","full_name":"FunFunFine/gde","owner":"FunFunFine","description":null,"archived":false,"fork":false,"pushed_at":"2020-04-12T12:04:38.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-02T11:34:33.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","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/FunFunFine.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":"2020-03-31T11:21:13.000Z","updated_at":"2020-04-12T12:04:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"c16309bc-678c-4bad-ba1f-2f80599f2201","html_url":"https://github.com/FunFunFine/gde","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FunFunFine/gde","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunFunFine%2Fgde","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunFunFine%2Fgde/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunFunFine%2Fgde/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunFunFine%2Fgde/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FunFunFine","download_url":"https://codeload.github.com/FunFunFine/gde/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunFunFine%2Fgde/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281418072,"owners_count":26497723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-02T11:30:06.622Z","updated_at":"2025-10-28T09:40:11.552Z","avatar_url":"https://github.com/FunFunFine.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gde трамвай\n\n## Что хочется\n### Сценарий для обычного пользователя\n* Я пишу боту: пора ехать на работу из дома.\n* Бот вытаскивает стартовую и конечную точку и выбирает подходящие трамваи для нужного пользователя — меня.\n* Бот отвечает, что сейчас найдет трамвай.\n* Бот начинает собирать информацию с ettu.ru.\n* Если до трамвая меньше 4 минут, то он отправляет сообщение.\n\n### Сценарий для нового пользователя\n* Пользователь запускает бота.\n* Бот приветствует и спрашивает следующие данные:\n    * На какой остановке дом.\n    * На какой остановке работа.\n    * Какие трамваи предпочитает пользователь для маршрутов туда и обратно.\n    * Есть ли дополнительные места, например учеба. Если да, то выясняет трамваи.\n* Бот сохраняет все эти данные к себе в БД.\n\n### Архитектура в два сервиса\nЕсть два сервиса — сервис-бот и сервис-API.\nБот прогоняет сценарии и общается с API, а тот ходит на ettu.ru и управляет данными.\nВ рамках сценария с поиском трамвая и ожиданием бот будет пинговать API раз в какое-то время.\nТогда нужно два эндпоинта — регистрация и поиск трамвая.\n\nПоиск трамвая: реквест — {UserId, From, To}; ответ — Found {Trams} | NotFound\nРегистрация: реквест — {UserId, Places etc.}; ответ Ok | NotOk\nОбновление данных о пользователе: реквест — Add; ответ Ok | NotOk\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunfunfine%2Fgde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunfunfine%2Fgde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunfunfine%2Fgde/lists"}