{"id":36440401,"url":"https://github.com/lastbyte32/wb-level-0","last_synced_at":"2026-01-11T21:55:27.242Z","repository":{"id":212984243,"uuid":"731990445","full_name":"lastbyte32/wb-level-0","owner":"lastbyte32","description":"Тестовое задание WB Tech","archived":false,"fork":false,"pushed_at":"2024-02-20T08:24:31.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-19T19:32:49.248Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/lastbyte32.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":"2023-12-15T11:14:11.000Z","updated_at":"2024-02-20T08:23:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d98a5d8-52a0-496e-857c-a9a11c784446","html_url":"https://github.com/lastbyte32/wb-level-0","commit_stats":null,"previous_names":["lastbyte32/wb-level-0"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lastbyte32/wb-level-0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lastbyte32%2Fwb-level-0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lastbyte32%2Fwb-level-0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lastbyte32%2Fwb-level-0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lastbyte32%2Fwb-level-0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lastbyte32","download_url":"https://codeload.github.com/lastbyte32/wb-level-0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lastbyte32%2Fwb-level-0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28324475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"last_error":"SSL_read: 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":[],"created_at":"2026-01-11T21:55:26.641Z","updated_at":"2026-01-11T21:55:27.236Z","avatar_url":"https://github.com/lastbyte32.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"WB Tech: level # 0 (Golang)\n\nТестовое задание\n================\n\nНеобходимо разработать демонстрационный сервис с простейшим интерфейсом, отображающий данные о заказе. [Модель данных в формате JSON](https://drive.google.com/file/d/1rrA7SJUoaGQwDriyY56MAeLT0J_OQkZF/view?usp=sharing) прилагается к заданию.\n\nЧто нужно сделать:\n\n1.  Развернуть локально PostgreSQL\n\n1.  Создать свою БД\n\n2.  Настроить своего пользователя\n\n3.  Создать таблицы для хранения полученных данных\n\n3.  Разработать сервис\n\n1.  Реализовать подключение и подписку на канал в nats-streaming\n\n2.  Полученные данные записывать в БД\n\n3.  Реализовать кэширование полученных данных в сервисе (сохранять in memory)\n\n4.  В случае падения сервиса необходимо восстанавливать кэш из БД\n\n5.  Запустить http-сервер и выдавать данные по id из кэша\n\n5.  Разработать простейший интерфейс отображения полученных данных по id заказа\n\nСоветы\n------\n\n1.  Данные статичны, исходя из этого подумайте насчет модели хранения в кэше и в PostgreSQL. Модель в файле model.json\n\n2.  Подумайте как избежать проблем, связанных с тем, что в канал могут закинуть что-угодно\n\n3.  Чтобы проверить работает ли подписка онлайн, сделайте себе отдельный скрипт, для публикации данных в канал\n\n4.  Подумайте как не терять данные в случае ошибок или проблем с сервисом\n\n5.  Nats-streaming разверните локально (не путать с Nats)\n\n\nЗапуск \n============\nЗапуск окружения\n\n```bash\ndocker compose up -d\n```\n\nЗапуск сервиса\n\n```bash\ngo run cmd/app/main.go\n```\n\nОтправка заказа в NATS\n\n```bash\ngo run cmd/order-generator/main.go\n```\n\nПример запроса на получение данных\n\n```http\nGET http://localhost:8081/order/84c58a96-9d02-11ee-8290-eedf1aa1603b\n```\n\nОтвет\n\n```json\n{\n    \"customer_id\": \"test\",\n    \"date_created\": \"2021-11-26T06:22:19Z\",\n    \"delivery\": {\n        \"address\": \"Ploshad Mira 15\",\n        \"city\": \"Kiryat Mozkin\",\n        \"email\": \"test@gmail.com\",\n        \"name\": \"Test Testov\",\n        \"phone\": \"+9720000000\",\n        \"region\": \"Kraiot\",\n        \"zip\": \"2639809\"\n    },\n    \"delivery_service\": \"meest\",\n    \"entry\": \"WBIL\",\n    \"internal_signature\": \"\",\n    \"items\": [\n        {\n            \"brand\": \"Vivienne Sabo\",\n            \"chrt_id\": 9934930,\n            \"name\": \"Mascaras\",\n            \"nm_id\": 2389212,\n            \"price\": 453,\n            \"rid\": \"ab4219087a764ae0btest\",\n            \"sale\": 30,\n            \"size\": \"0\",\n            \"status\": 202,\n            \"total_price\": 317,\n            \"track_number\": \"WBILMTESTTRACK\"\n        }\n    ],\n    \"locale\": \"en\",\n    \"oof_shard\": \"1\",\n    \"order_uid\": \"b563feb7b2b84b6test\",\n    \"payment\": {\n        \"amount\": 1817,\n        \"bank\": \"alpha\",\n        \"currency\": \"USD\",\n        \"custom_fee\": 0,\n        \"delivery_cost\": 1500,\n        \"goods_total\": 317,\n        \"payment_dt\": 1637907727,\n        \"provider\": \"wbpay\",\n        \"request_id\": \"\",\n        \"transaction\": \"b563feb7b2b84b6test\"\n    },\n    \"shardkey\": \"9\",\n    \"sm_id\": 99,\n    \"track_number\": \"WBILMTESTTRACK\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flastbyte32%2Fwb-level-0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flastbyte32%2Fwb-level-0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flastbyte32%2Fwb-level-0/lists"}