ArtEmerged / L0_WB

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

01-edu-system-blue

WB L0 Project

Требования к реализации проекта

Задание:


Необходимо разработать демонстрационный сервис с простейшим интерфейсом, отображающий данные о заказе.

Что нужно сделать:

  1. Развернуть локально PostgreSQL
    • Создать свою БД
    • Настроить своего пользователя
    • Создать таблицы для хранения полученных данных
  2. Разработать сервис
    • Реализовать подключение и подписку на канал в nats-streaming
    • Полученные данные записывать в БД
    • Реализовать кэширование полученных данных в сервисе (сохранять in memory)
    • В случае падения сервиса необходимо восстанавливать кэш из БД
    • Запустить http-сервер и выдавать данные по id из кэша
  3. Разработать простейший интерфейс отображения полученных данных по id заказа

Советы

  1. Данные статичны, исходя из этого подумайте насчет модели хранения в кэше и в PostgreSQL. Модель в файле model.json
  2. Подумайте как избежать проблем, связанных с тем, что в канал могут закинуть что-угодно
  3. Чтобы проверить работает ли подписка онлайн, сделайте себе отдельный скрипт, для публикации данных в канал
  4. Подумайте как не терять данные в случае ошибок или проблем с сервисом
  5. Nats-streaming разверните локально (не путать с Nats)
Модель данных в формате JSON
{
  "order_uid": "b563feb7b2b84b6test",
  "track_number": "WBILMTESTTRACK",
  "entry": "WBIL",
  "delivery": {
    "name": "Test Testov",
    "phone": "+9720000000",
    "zip": "2639809",
    "city": "Kiryat Mozkin",
    "address": "Ploshad Mira 15",
    "region": "Kraiot",
    "email": "test@gmail.com"
  },
  "payment": {
    "transaction": "b563feb7b2b84b6test",
    "request_id": "",
    "currency": "USD",
    "provider": "wbpay",
    "amount": 1817,
    "payment_dt": 1637907727,
    "bank": "alpha",
    "delivery_cost": 1500,
    "goods_total": 317,
    "custom_fee": 0
  },
  "items": [
    {
      "chrt_id": 9934930,
      "track_number": "WBILMTESTTRACK",
      "price": 453,
      "rid": "ab4219087a764ae0btest",
      "name": "Mascaras",
      "sale": 30,
      "size": "0",
      "total_price": 317,
      "nm_id": 2389212,
      "brand": "Vivienne Sabo",
      "status": 202
    }
  ],
  "locale": "en",
  "internal_signature": "",
  "customer_id": "test",
  "delivery_service": "meest",
  "shardkey": "9",
  "sm_id": 99,
  "date_created": "2021-11-26T06:22:19Z",
  "oof_shard": "1"
}

Архитектура и Дизайн

Структура базы данных


ERD



Архитектура сервиса


diagramm

Запуск

make up

Запуск скрипта

make sender

About


Languages

Language:Go 82.1%Language:HTML 11.2%Language:CSS 3.6%Language:Makefile 2.1%Language:Dockerfile 1.0%