**ЗП 330К! ДУШНОЕ собеседование на СИСТЕМНОГО АНАЛИТИКА — Transcript & Summary | SozAI**
Source: https://sozai.app/transcript/salary-330k-systems-analyst-job-interview/

Мок-собеседование на позицию системного аналитика в Сбере: разбор процесса инкассации, архитектуры систем (фабрика, EFS) и практическое задание с проектированием БД онлайн-магазина книг.

## Key Takeaways

- Системный аналитик в Сбере работает с микросервисной архитектурой, разделяя фронтенд и бэкенд-систему
- Типичные задачи аналитика включают описание статусных переходов, интеграций и жизненных циклов сущностей
- Практическая проверка включает проектирование реляционной БД и написание запросов к ней
- Собеседование состоит из нескольких этапов с разными интервьюерами

## What the video covers

- Введение в инкассацию: бронированные автомобили и инкассаторы приезжают в торговые точки для приёма и выдачи денег
- Описание роли команд разработки: две команды отвечают за начальный этап работы с договором, две — за зачисление, списание и расчёты
- Архитектура Сбера после ухода от монолита: фронтальная система EFS (UI без БД) и бэкенд-платформа «фабрика» (хранение данных и бизнес-логика)
- Фабрика интегрирована примерно с двадцатью системами и хранит договоры, заявки и объекты инкассации
- Клиентский фронт работает в Сбербизнес; заявка подписывается USB-токеном или SMS-кодом и меняет статусы через жизненный цикл
- Внутренний фронт для сотрудников банка занимается подготовкой договорной документации
- Аджайл-процесс: двухнедельные спринты, релизы раз в 2-3 недели
- Практическая часть: кандидат проектирует БД интернет-магазина книг (сущности, связи многие ко многим, заказы, возвраты)
- Разбор отчётных запросов, например поиска книг, не попавших ни в один заказ, и обработки обязательных полей
- Процесс найма: после технического интервью возможен второй этап с IT-лидером

## Chapters

1. 00:00 Введение и знакомство
2. 04:00 Описание процесса инкассации
3. 08:00 Архитектура систем и команды Сбера
4. 12:00 Клиентский и внутренний фронты
5. 18:00 Аджайл-процесс и вопросы кандидата
6. 22:00 Практическое задание: проектирование БД книжного магазина
7. 40:00 Отчётные запросы и обработка заказов
8. 55:00 Итоги и следующие этапы найма

Answers

## Questions about this video

Что такое инкассация и какое отношение к ней имеют команды разработки?

Инкассация — это приезд бронированного автомобиля с инкассаторами в торговые точки для приёма или выдачи денег. Команды разработки отвечают за начальную часть процесса: оформление заявки и договора с клиентом в системах банка.

Чем отличаются фабрика и EFS в архитектуре Сбера?

Фабрика — бэкенд-система с базой данных и бизнес-логикой, хранящая договоры, заявки и объекты инкассации. EFS — фронтальная система, представляющая собой чистый UI с небольшой прослойкой, обычно без собственной базы данных, и получающая данные из фабрики.

Какое практическое задание дают кандидату на позицию системного аналитика?

Кандидату предлагается спроектировать базу данных для онлайн-магазина книг: определить сущности и связи (включая связь многие ко многим для заказов и товаров), а затем написать запросы, например для поиска книг, не попавших ни в один заказ.

## Full Transcript — Download SRT & Markdown

00:00

Speaker A

какие-то уточняющие к тому, что я расскажу. А и дальше я передам тебя в руки ребятам, они уже будут вопросы по техинтервью спрашивать. Хорошо.

00:13

Speaker A

О'кей. Супер. А-а, итак, значит, начну с того, что такое инкассация. Вот наш продукт, думаю, ты прекрасно понимаешь, бронированный автомобиль приезжает на определённые там точки, в магазины, вооружённые инкассаторы выходят, деньги привозят или деньги увозят.

00:37

Speaker A

О'кей. Супер. А-а, итак, значит, начну с того, что такое инкассация. Вот наш продукт, думаю, ты прекрасно понимаешь: бронированный автомобиль приезжает на определённые точки, в магазины, вооружённые инкассаторы выходят, деньги привозят или деньги увозят.

00:58

Speaker A

там заявку, а, которая обрабатывается в банке, в наших системах. Вот. И итогом становится договор. Далее, поэтому договор начинает приезжать. Это уже не наш кусочек процесса, но если а происходят какие-то изменения, новый магазин у него открывается, там, не знаю, изменяется у него, ну,

01:17

Speaker A

Вот. А какое отношение вообще имеют наши команды разработки к этому? Аа, конкретно мы отвечаем за часть процесса самую начальную. То есть, для того чтобы приезжать к клиенту, Сберовские — а, клиент должен заключить договор со Сбером. Соответственно, клиент подаёт

01:26

Speaker A

там заявку, которая обрабатывается в банке, в наших системах. Вот. И итогом становится договор. Далее, поэтому договор начинает приезжать. Это уже не наш кусочек процесса, но если а происходят какие-то изменения, новый магазин у него открывается, там, не знаю, изменяется у него, ну,

01:42

Speaker A

необходимость появляется в другое время, чтобы к нему приезжали. Это всё внесение изменений в договор, которые тоже делаются через наш функционал.

02:01

Speaker A

[откашливается] До того, как я расскажу про них, надо отметить то, что в целом в Сбере после перехода, ухода от Legсистем, от монолита и перехода на микросервисную архитектуру, а, есть два типа систем. А, единая фронтальная система EFS и платформа развития бизнеса либо фабрика.

02:21

Speaker A

Вот. А в целом у нас сейчас по инкассации занимаются четыре команды разработки. Вот две команды отвечают за первую часть процесса. Вот. И ещё две команды — они отвечают за следующую часть процесса.

02:49

Speaker A

Это там зачисление уже денег, списание, ну, расчёты, списание комиссии за оказанные услуги и так далее. Вот в рамках наших двух команд и вот этого первоначального кусочка процесса работы с договором у нас э есть три системы.

02:59

Speaker A

А итогом процессе у нас сейчас, э, два фронта и один БК фабрика. Вот. Ну, соответственно, фабрика - это основа.

03:08

Speaker A

[откашливается] До того, как я расскажу про них, надо отметить, что в целом в Сбере после перехода, ухода от легаси-систем, от монолита и перехода на микросервисную архитектуру, а, есть два типа систем. А, единая фронтальная система EFS и платформа развития бизнеса, либо фабрика.

03:27

Speaker A

Это бэковая система. Это бэковая система. В общем, особенность какая? Что фабрики — это чисто база данных, э, бэковая бизнес-логика, а EFS, который front, это чистый UI с небольшой прослойкой и в 99% случаев без базы данных. То есть, э, в этом такой

03:39

Speaker A

микросервис немножко нетиповой получается, фронтовый. Вот. [фыркает] То есть я, ну, чтобы получать данные, ему нужно обязательно к какой-нибудь фабрике подключаться внутри.

03:58

Speaker A

получаем. Вот также фабрика у нас интегрирована там с порядка двадцати других систем, в которые фабрика отдаёт дальше данные, чтобы у нас весь процесс до фактического там приезда инкассаторы на точке, он мог обрабатываться.

04:16

Speaker A

А итогом в процессе у нас сейчас, э, два фронта и один БЭК — фабрика. Вот. Ну, соответственно, фабрика — это основа.

04:36

Speaker A

Там хранятся все наши договоры, наши заявки, с помощью которых эти договоры были заключены либо изменены. А хранится вся информация об объектах инкассации, то есть о торговых точках, там адреса, графики, счета, на которые зачислять надо, и так далее и тому подобное. Вот.

04:56

Speaker A

Также у нас помимо того, что фабрика хранит данные, естественно, как я уже говорил, там реализована бизнес-логика, то есть всякие статусные переходы, жизненные циклы и так тд и тп.

05:04

Speaker A

Когда он жмёт оформить, он попадает в раздел, а-а, чисто по инкассации. Именно вот в этом момент, там, когда он попадает в этот раздел, уже получается работает наша система. То есть, так как архитектура микросервисная, то получается в онлайн-банке есть, условно

05:22

Speaker A

И, конечно же, львиная доля всех интеграций идёт через фабрику Сбера. То есть помимо того, что мы делаем сервисы для наших фронтов, да, с помощью которых мы там, не знаю, делаем стандартные операции CRUD и ещё какие-то дополнительные, справочную информацию

05:33

Speaker A

получаем. Вот также фабрика у нас интегрирована там с порядка двадцати других систем, в которые фабрика отдаёт дальше данные, чтобы у нас весь процесс до фактического приезда инкассаторов на точку мог обрабатываться.

05:51

Speaker A

которые он уже ранее создавал, и, собственно, создать новую. А, например, он создаёт заявку, в ней он заполняет, что вот у меня там есть три барбершопа. Один в Москве, другой в Уфе, третий там во Владивостоке.

06:06

Speaker A

А про фронты расскажу. Первый фронт — это для [откашливается] клиента, который находится в онлайн-банке, для юридических лиц Сбера. Онлайн-банк называется Сбербизнес. Вот, соответственно, по сути, это, как и у физлиц, классический обычный онлайн-банк.

06:23

Speaker A

Туда заходят пользователи, просто представители клиента, и там у нас, соответственно, есть некий каталог продуктов: вот кредиты, депозиты, там, не знаю, просто платёжки и тд и тп. И вот один из допов — это инкассация. Клиент, если хочет его оформить, там, условно говоря, нажимает

06:42

Speaker A

на плашку с инкассацией. И там ему расписывается, что это и зачем. Он понимает и жмёт «оформить».

07:01

Speaker A

Когда он жмёт «оформить», он попадает в раздел, а-а, чисто по инкассации. Именно вот в этот момент, когда он попадает в этот раздел, уже получается, работает наша система. То есть, так как архитектура микросервисная, то получается в онлайн-банке есть, условно

07:20

Speaker A

говоря, такое большое каркасное приложение, в которое, а, разные микросервисы вот так вот встроены по разным продуктам. И вот один из этих микросервисов — наш фронт по инкассации.

07:38

Speaker A

чтобы они могли вовремя подключиться и их обработать. А само представление заявки и количество полей отличается, наверное, где-то в 10 раз. То есть, условно говоря, ну, не в 10, наверное, чуть поменьше, наверное, в пять, в семь.

07:52

Speaker A

А там, в принципе, всё довольно-таки примитивно. То, что я тебе уже до этого рассказывал, какие сущности. Клиент там может видеть договоры, ну, договоров у них может быть количество, а может видеть все свои объекты отдельно и также может видеть все свои заявки,

08:08

Speaker A

которые он уже ранее создавал, и, собственно, создать новую. А, например, он создаёт заявку, в ней он заполняет, что вот у меня там есть три барбершопа. Один в Москве, другой в Уфе, третий, там, во Владивостоке.

08:23

Speaker A

Он вбил их наименование «Барбершоп 1, 2, 3». А вбил их адреса точные, и указал, какую он услугу хочет по инкассации, потому что по инкассации, кроме классики, когда приезжают деньги, их забирают из кассы и зачисляют на счёт, есть там ещё, а,

08:32

Speaker A

несколько видов. Вот. И указывает, самое главное, наверное, график, то есть, чтобы, ну, в какой период к нему приезжать. Обязательно указывают ещё счета, ну, и всякие другие дополнительные опции, там отчётность есть и тд и тп. Заявку он в Сбербизнесе

08:45

Speaker A

подписывает USB-токеном либо SMS-кодом. Вот. Э, после подписания заявка у нас сохраняется, меняет статус. Всё это, естественно, у нас уже в фабрике будет отражено в базе данных. Вот фабрика там запускает при изменении статуса определённую свою там, а,

09:00

Speaker A

бизнес-логику по жизненному циклу. А в итоге заявка попадает уже во второй наш фронт, скажем так, она там начинает отображаться. Это фронт для сотрудников банка, которые занимаются подготовкой договорной документации по инкассации.

09:17

Speaker A

даже вот все сейчас три человека системных аналитика, у них у всех упор отдельно на каждую систему. Вот у одного на фабрику, у одного на фронт для клиентов, у другого фронт для сотрудников. Но мы сейчас немножко, так сказать, парадигму у себя меняем и

09:36

Speaker A

По сути, там приблизительно то же самое отражается, что и во фронте, который в онлайне для клиента. То есть там у сотрудников есть возможность поискать договоры, посмотреть, поискать объекты, поискать заявки. Вот. И также они получают отдельные уведомления, когда поступают новые какие-то заявки,

09:46

Speaker A

чтобы они могли вовремя подключиться и их обработать. А само представление заявки и количество полей отличается, наверное, где-то в 10 раз. То есть, условно говоря, ну, не в 10, наверное, чуть поменьше, наверное, в пять, в семь.

10:03

Speaker A

То есть, если, условно говоря, в Сбербизнесе клиенту надо заполнить 15 полей, чтобы подать заявку, то в рабочем месте этих полей будет штук 70 возможных для заполнения. Почему? Ну, потому что для клиента мы выдаём самый минимум необходимый.

10:14

Speaker A

Вот там и так довольно-таки много чего заполнять. А сотрудник имеет дополнительные возможности для того, чтобы указывать какие-то ещё доп. опции, которые мы, например, клиентам всем подряд не выдаём. Вот. И он их должен дозаполнить, там, не знаю, например,

10:26

Speaker A

тарифы указать конкретные, сколько будет стоить. Ну, по сути, наверное, про систему всё.

10:37

Speaker A

А, ну, Запорожская область, [откашливается] не знаю. Да, Запорожская область тоже. Ну, хорошо. Так, пам-пам-пам. [фыркает] А какие вот задачи? Ну, примерно вот вы ожидаете, что будет делать состоя аналитику?

10:56

Speaker A

То есть есть два фронта. В одном работает клиент, в другом работает сотрудник банка, который оформляет. А в итоге всё это приводит к тому, что заявка будет переведена в статус «исполнена», и у клиента будет на руках договор. А, ну и, соответственно, всем

11:18

Speaker A

этим оркестрирует наша фабрика БЭК. Угу. Давай, наверное, здесь я паузу сделаю. Может, какие-то у тебя вопросы есть, да? А вот вы ищете аналитика в какую-то отдельную часть или на весь вот этот процесс?

11:24

Speaker A

Соответственно, это, а, работа с базой данных, то есть пройтись по ней, где-то там какие-то, может быть, особенные поля создать. Потом, значит, э сервисы в рамках сервисов либо существующих, либо, если там будет отдельно говорено, что это новый, нужно будет прописать полностью аа описание в

11:45

Speaker A

Да, отличный вопрос. Э, мы сейчас ищем аналитика на весь процесс. То есть мы в целом сейчас стараемся, ну, скажем так, у нас исторически сложилось, что у нас две команды. Одна отвечает чисто за фронт, одна чисто за БЭК. Вот. И ребята,

12:04

Speaker A

даже вот все сейчас, три человека системных аналитиков, у них у всех упор отдельно на каждую систему. Вот у одного на фабрику, у одного на фронт для клиентов, у другого фронт для сотрудников. Но мы сейчас немножко, так сказать, парадигму у себя меняем и

12:21

Speaker A

стараемся смотреть не командами, не системами, а именно процессом вот

12:38

Speaker A

Вот точно также на фронте может быть какой-то разработан сервис для интеграции, например, не с фабрикой, с какой-то другой системой, вот из которой тебе данные надо взять. Это тоже, собственно описывается.

12:49

Speaker A

Ну, в принципе, всё. Угу, наверное. То есть разработка нового сервиса, доработка существующих, э, разработка новых таблиц связей в базе данных, либо доработка существующих, либо добавление каких-то справочных новых значений, описание логики работы на фронтальных сценариях, э, написание по в рамках там в

13:13

Speaker A

зависимости от того, какая большая задачка, написание альных sequнсдиаграмм. Угу. А [фыркает] вот ещё вопрос хотел задать по команде поподробнее. По-моему, три семейных литика. Ещё кто?

13:30

Speaker A

Да, да, сейчас всё расскажу. Я как раз-таки это следующий шаг мой был по команде. А, соответственно, ну, я себе сразу же про две расскажу. У нас сейчас три системных аналитика, а, три тестировщика и четыре разработчика.

13:45

Speaker A

Вот два разработчики, два фронт, два. А где монет? А прожект-менеджеры да? А, ну как бы считаешь, что это я в одном лице. То есть я лидер команд разработки, я PM, я, не знаю, какой-то миниладелец продукта и так далее. То есть просто, в

14:05

Speaker A

принципе, такого понятия, как проject-менеджер избери особо не встречал я. Угу. Вот. Ну, наверное, последний вопрос. На каком языке вообще написан сам проект?

14:16

Speaker A

Java. Java. Всё везде. Java. Back Java Spring Boot, соответственно, Front - это, ну, JS, где-то Typescript используется React.

14:28

Speaker A

Угу. Так, ну всё, наверное, пока что, да? Хорошо. А, ну дополню тогда. Команда у нас геораспределённая. Вот, ребята, есть есть разработчик один в Калининграде, а есть группа сопровождения, например, с которой тоже, ну, как не в команде, в нашей отдельно

14:46

Speaker A

взаимодействовать надо. Есть ребята во Владивостоке, поэтому тут много где народ у нас сидит, но основные города это Москва, Питер, Ростов.

14:57

Speaker A

Угу. Вот. А работаем по Аджайлу, в принципе, он хоть там у нас и называется внутри Сберджал, на самом деле классический. Аа двухнедельные у нас спринты. Релизы мы вводим где-то раз в 2-3 недели. Обычно выводится всегда фабрика и один из

15:15

Speaker A

фронтов. Ну, в зависимости от того, какие задачки связанные есть. Вот иногда иногда бывает, что и сразу же два фронта, и фабрику, а, ежедневные дейлики, а, соответственно, по окончанию спринта ретро, планирование, то есть, ну, всё, в принципе, по классике. А,

15:38

Speaker A

наверное всё. Угу. Аа давай, наверное, перейдём к вопросам к тебе. Я сейчас парочку буквально задам.

15:47

Speaker A

А у меня они супер простые, ребята, уже будут. Во-первых, первый вопрос на уточнение на всякий случай, потому что у тебя в резюме там стоит чисто удалённая работа. По идее, у нас HR должен этот вопрос проговаривать. А у нас первые 3

16:03

Speaker A

месяца - это полный офис. Вот. Потому что, ну, хочется, чтобы человек побыстрее погрузился. Вот. Потому что всё равно, ну, в Москве, как бы есть я и есть как минимум один из аналитиков и вид тестирования. Погружение будет гораздо быстрее.

16:20

Speaker A

Вот. Э, потом дальше у нас это гибрид. То есть у нас предполагается, что полной удалёнки её не будет. То есть хотя бы один день в офисе он останется. То, каким образом это определяется, исходит из того, как мы договариваемся вместе друг с

16:36

Speaker A

другом. И, соответственно, как мы видим, ты работаешь на удалёнке. Угу. Ну, я, в принципе, нормально нашуся. Я не знаю, почему так произошло.

16:44

Speaker A

Ну, возможно, потому что я там первые 2 дня поставил только удалёнку. Ну, типа забыл там поставить там условно гибрид.

16:50

Speaker A

Потом я поменял, но почему-то мне кажется, может все спарсили как бы первую резюмечку и поэтому типа у всех там вот удалёнко.

16:57

Speaker A

Ну, я на всякий случай просто, да, уточняю в целом, как ты относишься. А ты вообще Ну, у нас офис на Кутузовской находится.

17:06

Speaker A

Угу. Это вообще, ну, территориально где Ну, я на Угу, я понял. О'кей. А-а, так.

17:15

Speaker A

Ну [откашливается] и первый вопрос. А почему, собственно, ищешь новое место? Угу. Так, ну, ситуация такая, я получа немножко расскажу, что якобы сейчас устроен как аутстафер на проект. Вот. И текущий проект у нас вот завершается, а новых, ну, мне вот моя компания vender

17:34

Speaker A

не предоставляет. Не знаю, может, какая-то ситуация в компании случилась, там, что новых проектов нет. Вот. То есть мне говорят, там можешь месяц два там на Бенче сидеть, банч неоплачиваемый. Вот. Ну и получается по обоюдному согласию, чтобы как бы скилы

17:47

Speaker A

не терять там и деньги банально. Вот решил, то есть так, в принципе, как бы я остался бы, если бы были бы ещё проекты, но там, не знаю, сложная ситуация. В общем, я тебя понял. Хорошо. Ладно, спасибо.

18:01

Speaker A

А-а, так, ребят, кто начнёт? [откашливается] Да, можно. Кирилл, привет ещё раз. Можно я по резюме спрошу? А, один вопрос вот прямо бросается [откашливается] в глаза.

18:16

Speaker A

Тут написано, тут написано был проект, связанный сL-сервисами. Угу. Вот. И в качестве достижения, я так понял, он относится как раз достижения к этому проекту, увеличил сбор задолженности на этапе Sollection на 12%.

18:30

Speaker A

Угу. Вот расскажи, пожалуйста, про этот проект, что конкретно ты там делал, ну, в целом про процесс.

18:36

Speaker A

Угу. [фыркает] Так, ну давай, э, скажу, то есть изначально получается мм у нас, ну, приватизация обзвона была, условно, просто какой-то простой ручной, то есть операторы работали с кейсом, ну, без учёта, мм, вероятности возврата. Вот из-за чего у нас

18:55

Speaker A

часть ресурсов тратилась неэффективно. То есть банально ээ операторы тратили больше времени, как бы, ну понятно, что бизнес терял деньги.

19:03

Speaker A

В общем, я участвовал в проектировании системы вот этой AI приватизации, то есть описывал интеграцию с ML-моделью, то есть через рест-контракты, там, ну, форматы данных. Потом что ещё там? То есть ээ то есть получается, что у вас есть, ну,

19:20

Speaker A

условно, какие-то карточки клиентов с инфы по клиентам, на основании которой вы определяете вероятность того, там, с какой вероятностью он вернёт деньги, да?

19:28

Speaker A

Угу. Тут больше, сорри, тут больше про кейс, про сам, то есть были карточки этих кейсов [откашливается] и пони там как притягивали клиенты.

19:39

Speaker A

Понятно. О'кей. И вы туда прикручивали и агента. Угу. О'кей. И получается, ты там что делал?

19:48

Speaker A

[фыркает] То есть ещё раз, м, я прописывал, ну, то есть апиконтракты, то есть обычно там рест и форматы данных. Вот дальше немножко подрасскажу, то есть эта email моделька, немножко расскажу про неё, то есть она м ну описывала условно логику

20:04

Speaker A

передачи кейсов в скоринг, ну, использования [фыркает] м предиктов для, ну, формирования очереди обзвона. Вот это именно то, что что она делала. То есть вот так вот так.

20:18

Speaker A

О'кей. Получается, твоя аналитика в рамках этой задачи, а она состояла из описания ростов и описания логики, получается, передачи вот этих предиктов, да, описание этой логики. О'кей, ясно. Спасибо. Мм, в принципе, у меня всё. Тогда могу прислать, передать слово. Ну,

20:39

Speaker A

можно я тогда тоже по резюме, раз уж мы по резюме. Кирилл, я просто смотрел, куда ты ещё откликался. Вот у тебя тут за 2 дня там 30 откликов только за 2 дня. Вот. И там есть и бизнес-аналитик, и там аналитик данных [фыркает] вот

21:03

Speaker A

откликался. А тебе самому-то? Ну то есть для самому ты куда хотел бы устроиться-то в итоге? На самом деле, естественно, я ищу работаю с темой аналитика. Просто, мм, ну, у меня получается, что вылетает вот в хантере на первой странице, я как бы на то

21:19

Speaker A

отвлекался, может быть, что-то там случайно прокликал. Вот. Но в основном я больше, ну, в частны анализ.

21:24

Speaker A

Угу, понял. Всё хорошо, спасибо. По по резюме у меня нет вопросов. А, да, всем добрый день. Спасибо. Э, ну тогда у меня в целом первый вопрос. Вот если говорить о роли системного аналитика, какие его задачи?

21:43

Speaker A

Угу. [фыркает] Так, ну, наверное, тут разделим роль бизнес-аналитика и системна аналитика. То есть немножко расскажу. То есть систем аналитик в этом случае это условно человек, который проводит вот эту м [откашливается] бизнес-потребность, которую передал нам бизнес-аналитик. В общем, понятное

22:02

Speaker A

решение для разработки. То есть давай ещё немножко подробнее. То есть он собирает уточняет требования. Вот потом ну моделирует, получается, ну, всю саму логику. То есть там процессы, данные, опишки. Вот. Дальше м идёт у нас фиксирование вот этого всего, что мы

22:22

Speaker A

собрали в понятный формат через [фыркает] ТЗ для команды, там истории, [откашливается] разные UML диаграммы, то есть условно SEQ, там BPMN, ну, прототип интерфейсов.

22:33

Speaker A

Вот также ещё критерии приёмки. А какие требования готовят системная аналитика? Угу. Ну, на самом деле, в большей части нефункциональные, но и нефункциональные, например.

22:47

Speaker A

А в чём разница между функциональными и нефункциональными? Ну, функциональные - это требования, м, которые условно это то, что у нас система должна делать. Вот. А нефункциональные - это как система должна делать? То есть нефункциональные больше там отвечают за безопасность,

23:03

Speaker A

производительность там отказоустойчивость доступность например. Угу. А вот подскажи, пожалуйста, ты говоришь, что на проектах работал и описывал рестнтеграции. Какие вообще виды интеграции есть? С какими ещё работал, работал ли помимо с чем-то?

23:22

Speaker A

Угу. [фыркает] Так. Ну, вообще из того, что я работал, наверное, скажу, ээ, из синхронных, это R up, из асинхронных Кавка. Вот, ээ, так, ещё какие есть, наверное, что у нас ещё USB там, э, чего Webook вот м наверное какие есть.

23:44

Speaker A

А, а в к какому виду интеграции? Ну, это способ, да. А именно вид интеграции паттерн.

23:51

Speaker A

А, ну брокеры сообщений. Ты правда это говоришьносить наверно ичку. Так, а есть ли возможность сейчас будет открыть экран и сделать с нами небольшое тестовое задание?

24:06

Speaker A

Наше задание будет заключаться в следующем. У нас есть небольшая задача. Вот. И в рамках неё нужно будет реализовать описание таблиц с базы данных, которую нужно сделать под эту задачу, и обсудить варианты интеграции, которые опять же можно предложить для решения.

24:26

Speaker A

Так, ну, наверное, Draw io, наверное, да нужно [откашливается] можно draw io, можно, в общем, что угодно в каком-то Экcля, если есть подру Сейчас в JZ скину текст Угу.

24:40

Speaker A

нашей задачки. Да, мы компания, которая торгует книжками, и мы занимаемся розничной продажей книг. Мы решили расширяться и теперь решили сделать онлайн-магазин по продаже книг.

24:56

Speaker A

Соответственно, чтобы запустить этот онлайн-магазин, планируется сделать веб-сайт, а также коковую систему с базой данных для того, чтобы клиент мог на сайте посмотреть ассортимент книг, возможно, пофильтровать по каким-то параметрам, допустим, хочет каких-то определённых авторов и суметь сделать заказ и суметь сделать полный возврат

25:17

Speaker A

этого заказа в случае, если ему что-то не подошло, когда он книги получил. Вот вы рекомендованы как главный системный аналитик под этот проект, да? И значит, первая задача описать структуры база данных, необходимые таблицы и поля и связи, которые в них нужны будут для того,

25:36

Speaker A

чтобы эта задача заработала. Угу. Так, давайте тогда это сделаем, да? Так, окно. Давай поделиться.

25:47

Speaker A

Так, нормально нам. Да, экран виден. Супер. [фыркает] Так, погнали. Начнём, наверное, с, мм, с сущностей, которые мы будем выделять. То есть я бы, наверное, мм, что бы я сделал? Я бы, наверное, выделил ээ так, ну, банально книги у нас должны быть.

26:06

Speaker A

Мм, у нас должны быть заказы мм наверное, у нас должны быть ещё, мм, возвраты. Мм, давай ещё, наверное, я бы выделил. То есть у нас есть, э, книги, заказы, возвраты, наверное, ещё м ну тут с ходу, наверное, сказать, наверное, ещё будет

26:28

Speaker A

какая-то промежуточная таблица, то есть возвращённый товар и, наверное, ещё заказанный товар. Ну, это давай се посмотрим уже ближе к этому. Так, давайте это всё-таки оформим. Это были разные люди, то есть пусть у нас будет книга.

26:52

Speaker A

Если что, Кирилл, можно по-русски всё, чтобы потом это не не вспоминать, если какие атрибуты как называются. Не принципиально.

27:00

Speaker A

С книги у нас есть заказы, у нас есть возвраты. М, наверное, ещё тогда какую табли что это сказал? Это допустим, у нас будет возвращённый м заказ. А, возвращённые заказы.

27:21

Speaker A

И ещё у нас будут не не возвращённые заказы, возвращённые эти кого товары. Товары и ещё получается заказанные товары, но я думаю понадобится.

27:40

Speaker A

Так, давайте пойдём по всем мм нашим сущностям. Чего? Э, книге, мм, я бы, наверное, выделил айдишник нашей книги.

27:53

Speaker A

Ээ, потом, что ещё у нас должно быть? Ну, название нашей книги. Ээ у неё должен быть автор. У неё, да, для книг предлагаю ограничиться, допустим, тремя характеристиками: название, автор и, допустим, жанр.

28:11

Speaker A

[откашливается] Давайте. Ну, и одином тоже, наверное. Ну да, я имею в виду характеристики, как такие характеристики [фыркает] книжные.

28:18

Speaker A

Сделаем так. Потом по заказам мм у нас будет мм тоже, ну, тоже диагонально, короче, ID заказа. Потом у нас должен быть Угу.

28:34

Speaker A

Ну, наверное, клиент наш, мм, который нашему по этому заказу. Э, потом что ещё может быть? Ну, дата нашего заказа. [фыркает] М.

28:51

Speaker A

Так, ну, наверное, его за что-то купили, значит, надо будет сумма. М. Ээ, так. А у нас ещё вопрос. А у нас м у нас есть ли там доставка и она там только ли доставка или там самовызов у нас может

29:07

Speaker A

быть? [откашливается] А предлагаю делать какое-нибудь MVP, что у нас есть просто вид доставки и без сейчас без какой-то детализации.

29:18

Speaker A

При этом у нас, да, мы понимаем, что мы сейчас не обсуждаем, не реализуем складской учёт. У нас бесконечно много книг, и мы там не считаем, что у нас было две книги, стала одна, да? То есть мы сейчас делаем MVP.

29:29

Speaker A

Угу. Так хорошо. Делаем IP. Проект. Так, пока так, наверное, м для, я думаю, пойдёт. Ээ, так, да, хорошо. Теперь у нас есть возвраты. Мм, для возвратов, что бы я сделал? Ну, тоже у нас будет мм соответственно айдишник нашего возврата. Я бы [фыркает] ещё

30:00

Speaker A

добавил, получается, что ещё, наверное, у неё тоже должна быть, наверное, дата возврата. Не, наверное, давайте так. Возврат, значит, он по какому-то заказу его возвращают. Значит, у нас должен быть, ну, условно, мм, ID нашего заказа. Мм, наверное, вот так

30:24

Speaker A

вот. Ну, по-английски написали бы order ID, но тут ладно, как бы пусть будет так. ID заказа.

30:32

Speaker A

Потом, ну, что, дата нашего, м дата нашего возврата. Что ещё у нас может быть? Мхм.

30:42

Speaker A

Так, ну, тут, я думаю, мм, сумма, наверное, тоже может быть, потому что может быть такое, что у нас сумма по возврату там меньше.

30:53

Speaker A

У нас в условиях задачи, что у нас частичный возврат не предусмотрен. Угу. Тогда о'кей. Тогда сумма возврата надо ли нам тогда м сумму возврата?

31:08

Speaker A

Ну, вдруг там какая-то комиссия за возврат у нас или такого нет? Ну, предлагаю сделать сумму возврата и пока остановиться.

31:20

Speaker A

Угу. сумму возврата. Ну, наверное, причину добавим. То есть там разные причины могут быть. Тоже нам это для статистики понадобится.

31:34

Speaker A

М. Так, хорошо. У нас есть что? У нас есть заказы, у нас есть книги, у нас есть возвраты. Теперь идём к, ну, наверное, к возвращённым товарам. Ну, хотя, надо ли нам это сделать тут?

31:52

Speaker A

Ну, смотри, если у нас возврат полный, то тогда нам, короче, не надо, наверное, возвращённые товары.

31:58

Speaker A

Так, а заказанные товары? М, ну, наверное, нам надо в плане, что у нас получается есть, мм, заказаны товары. Это это что вообще за таблица? Это у нас будет таблица между ээ между нашими заказами и книгами. Вот это нам нужно для того, чтобы, мм, так

32:21

Speaker A

скажем, у нас ээ не было связи многие ко многим. Вот поэтому сейчас я вставлю её вот сюда нашу, так скажем, смежную таблицу.

32:34

Speaker A

Вот. Э, наверное, нам тут нужно в наши заказанные товары. Мм, чтобы я добавил, ээ, наверное мм ну, банально, наверное, количество мм товаров.

32:53

Speaker A

Мм да. И получается ещё м так количество товара. И наверное наверное ещё было бы неплохо хранить цену на момент покупки.

33:12

Speaker A

Вот. Да, так и сделаем. Что-то могу бы там скидки или что-то такое. Так, чего тут очень как-то некрасиво это всё сделано. Сейчас подвинем.

33:39

Speaker A

Угу. Ну ладно, пусть будет пока так. То есть это все атрибуты в таблице заказаны товары, которые нам потребуются. Сейчас ещё добавим. Э, нам нужны, естественно, атрибуты перед этим всем, э, которые будут отвечать за, так скажем мм это между заказами и книгами, то есть ID

34:05

Speaker A

з этого м заказанного товара, [откашливается] да? То есть чересть что у нас связь будет строиться между книгами и заказами. Так, ну, немножко некрасиво.

34:26

Speaker A

Так, ну и, соответственно, какие у нас здесь будут связи и ключи в этой таблице?

34:31

Speaker A

А, так, э, ну, давайте, мм, сделаем связи. Мм, да, можно хотя бы поговорить. Ну, хорошо, давайте.

34:42

Speaker A

У нас м есть да, наверное, не очень плохо, как бы я написал, что у нас книга типа товар, наверное, лучше обозначить.

34:54

Speaker A

Вот то есть у нас будет мм получается мм между мром и ээ заказанным товаром у нас будет связь ээ то есть у нас ээ чего ещё раз? То есть у нас получается в э так у нас есть заказанные товары, у

35:13

Speaker A

нас есть сами товары, то есть заказанных товаров получается у заказных товаров связь ээ многие они, точнее [откашливается] товары многие заказаные товары один. То есть от товаров к заказанным товаром типа ээ многие к одному. Вот, э, получается м у заказанных товаров [фыркает]

35:41

Speaker A

и и этих и заказов, то есть в одном заказе может быть много заказанных товаров, получается, э, у нас получается многие заказные товары как бы к одному заказу.

35:55

Speaker A

Ээ дальше идём. А через какое поле мы связываем многие заказанные товары с заказом? Угу. Через вот у нас есть поле ID заказаного товара ID заказа.

36:08

Speaker A

Вот мы связываем через это. [фыркает] Так, идём дальше. То есть, подождите, сейчас. То есть у нас есть две книги в ассортименте.

36:20

Speaker A

Первая книга сказок. Вторая книга- Детектив. Правильно? Угу. Два две книги. Я покупатель. Я купила одну книгу сказок, оформила заказ номер один.

36:36

Speaker A

Тогда в каких таблицах у нас будут сейчас какие данные и как они будут связаны?

36:41

Speaker A

Угу. Так, хорошо. Ещё раз. У нас книга со сказками. Товар у нас номер мм один.

36:48

Speaker A

Да. Ну, получается у нас в нашей книге будет лежать мм как бы запись ээ но книг Но книг у нас две на складе.

36:58

Speaker A

сказки и детективы, но я купила только сказки в своём заказе. Угу. Так, у нас есть сказки, детективы.

37:06

Speaker A

Вы купили только сказки. То есть у нас, получается, в нашем, ну, заказе будет запись заказ номер один наш. Вот. А в вот в этих в таблице мм заказаные товары у нас будет А что в товарах будет?

37:23

Speaker A

Ну, в товарах у нас будет, ну, ID нашего товара, название, точнее, жанр. Ну, сколько будет там записей? [фыркает] Так, ещё раз. А вы купили у нас на складе лежат две книги.

37:39

Speaker A

Одна книга сказок, вторая книга с детективами. Угу. Ну, там будет, значит, две записи. То есть А, то есть в товарах у нас две записи.

37:47

Speaker A

Угу. Я оформила один заказ и в нём купила только одну книгу сказок. Угу. Соответственно, в заказах у нас лежит сколько записей?

37:56

Speaker A

М, одна. Так, а что у нас будет лежать в заказанных товарах? И какие связи будут?

38:03

Speaker A

Так, в заказанных товарах тоже будет одна запись вот этих вот сказок, да, которые куплены. То есть у нас будет получается наш ордер ээ точнее там тоже будет ID заказаного товара у нас будет один. Вот, ээ, э-э, так, ещё там,

38:18

Speaker A

наверное, мм, что там ещё? Ну, количество у нас будет, ээ, один, цена товара на момент покупки тоже будет один.

38:29

Speaker A

А где показывается, что эта книга принадлежит именно моему заказу номер один? М. Так. [смех] закаженого товара. Да, тут, наверное, нам нужно добавить ещё мм точно, нужно добавить ID. этого заказа. [фыркает] Вот.

38:50

Speaker A

Это точно нужно сделать, чтобы у нас была связь. Так добавили. Да, теперьто стало понятнее.

39:03

Speaker A

А, всё, останавливаемся на минимально достаточно нам таблиц, полей, как бы для того, чтобы начинать работать и сохранять данные, правильно?

39:12

Speaker A

Угу. Всё структуру допустим мы зафиксировали. Теперь мы делаем интеграцию. Какой вид интеграции между веб-сайтом и БЕКОм, который работает с этой базой, мы можем предложить? [фыркает] Угу. Так, ну, наверное, можем через банально, то есть между нашим сайтом и беком завидействовать для

39:35

Speaker A

каталога, там оформление заказа, возврат, я думаю, нормально будет. можем через [фыркает] м, ну, наверное, который более вероятно, наверное, вот рест, то есть можно мм условно кавку там использовать для э знаю, для таких запросов, которые нам не нужен ответ прямо моментально, наверное,

39:55

Speaker A

там для уведомлений, там, не знаю, изменения статуса заказа там, возможно. Вот для этого можем использовать кавку.

40:03

Speaker A

Если у нас нужно, чтобы у нас как-то взаимодействие шло в реальном времени, то можно использовать вебху. Вот. Но я бы остановился на росте и на кавке.

40:18

Speaker A

[откашливается] А какие нам нужно сейчас реализовать, допустим, две самые простые функции. Первое, чтобы клиент мог посмотреть ассортимент наших товаров и умел фильтровать, хочет по жанру, по автору или по названию книг. И, э, в выбранные книги он мог добавить заказ и сделать

40:36

Speaker A

оформление заказа. Угу. Какие нам нужны, соответственно, для реализации выбрать методы и какие наборы входящих сходящих атрибутов, параметров нам нужно в них реализовать.

40:50

Speaker A

Угу. Так, ну для того, чтобы у нас посмотреть на товары, нам, естественно, нужно использовать метод get. То есть, наверное, тут у нас будет get, ну, какие там get товары.

41:05

Speaker A

Вот, ээ, условно, вот так вот. Мм, чего это, наверное, то, что касается получения. Можете ещё раз повторить, что нам нужно на получение. То есть нам нужно увидеть весь. как клиент, да, хочу посмотреть ассортимент книг и уметь фильтровать по названию или автору, или

41:23

Speaker A

жанру, или всем вместе. Угу. То есть хочу либо сейчас посмотреть книги только Пушкина, завтра хочу посмотреть только Детектива.

41:33

Speaker A

Угу. Ну, то есть хорошо. Мм, сейчас смотрим весь ассортимент. Ну, наверное, мм, получается, да, то есть у нас Get Books.

41:44

Speaker A

Вот. Ээ, и дальше м входными данными там в мы можем добавить ещё там условной жанр там автора. Вот, ээ, не знаю, вот так вот. Это, наверное, на получение мм чего ещё? Мм, как в get описываются входящие фильтры?

42:05

Speaker A

Ну, через квеy параметры вот или через пас. Ну да. А если у нас очень много книг, нужно ли нам это как-то учитывать?

42:11

Speaker A

Угу. Так, ну если у нас Ну так имеете в виду там по количеству или Да, ну вот у нас на самом деле сказок оказывается не одна книга Пушкина, а тысяча штук разных сказок.

42:26

Speaker A

Угу. Разных авторов и жанров. Угу. М. Да. То есть давайте такой запрос, ну, примерно структуру пропишу.

42:33

Speaker A

У нас будет get books, потом там у нас вопросительный знак наш. Потом у нас будет автор.

42:40

Speaker A

Автор у нас там равен нашему Пушкину. Потом у нас этот идёт вот это вот.

42:49

Speaker A

Да, понятно. У нас будет несколько входных фильтров по нашим характеристикам. Нужно ли ещё учитывать что-то для того, чтобы если вдруг запрос будет очень, вернее, ответ будет очень большим, да? То есть после вот нашей пушкина, наверное, жанр бы уточнил и потом ещё

43:03

Speaker A

название книги нашей. И всё. Так, ещё раз. У нас автор, жанр, название. Да. А, Кирилл, давай, давай, я, давай.

43:16

Speaker A

Представь, что это не сказки, что у нас просто миллионы книг. Вот у тебя просто миллионы книг в базе. Мы самая крупная, не знаю, библиотека всего мира, центр хранилища на случай апокалипсиса. И у тебя вот человек заходит в этот интернет-магазин, и он

43:35

Speaker A

что-то начинает искать. И, например, даже с названием, там, не знаю, Ромео он пишет, ему, кроме Ромео и Джульетты шекспировской ещё 10.000 книг со словом Ромео выходит. Вот, э, именно с точки зрения этого, не опираясь на фильтры, что-то можно ещё учесть? Так,

43:57

Speaker A

ну, наверное, так, если не если не говорить про айдишник с самого вот этого книги, то, наверное, ещё погинацию какую-то поработать, что у нас там будет там, ну вот как раз-таки наши фильды там по, не знаю, размерам этих, ну, количеству страниц там

44:15

Speaker A

также по названию, наверное, то, что в голову приходит, сортировку какую-то добавить ещё сортировку там по возрастанию цены, по уменьшению цены.

44:27

Speaker A

Вот это что, наверное, приходит. А что такое вообще гинация? Угу. Ну, то есть это чтобы она нужна для того, чтобы там полностью не отдавать все запросы целиком. То есть мы можем условно на одной странице там первые там 10 выдать, потом на следующие ещё там 10

44:48

Speaker A

выдать. Угу. Так, хорошо. Мы научили, сделали такой сервис, научили получать книжки и отрисовывать их на нашем сайте.

44:59

Speaker A

Теперь клиент выбрал несколько книг и хочет оформлять заказ. Угу. Что нам нужно, какую функцию, метод для этого предложить? [фыркает] Так, ну тут, наверное, если мы заказ наш задаём, то я бы выбрал, наверное, метод пост. Мм, тут у нас будет м мы создаём

45:15

Speaker A

заказ на нашу книгу. То есть у нас будет пост, потом вот этот ордер, мм, потом у нас будет мм получается ордер ID. [фыркает] Мм, потом на входе.

45:30

Speaker A

Мм, чего? На входе. На входе. На входе. Нет. О'кей. Ладно, это это потом ещё раз. То есть у нас пост post order м потом должны быть наши айтемы, то есть items. Вот это это то, что на входе, то,

45:47

Speaker A

что мы создаём заказ из этих ээ да, создаём заказ с этими товарами. Вот. То есть на входе ещё нам нужно добавить наверное айдишник нашего товара и количество вот, которые мы товара, которые мы покупаем. Это, наверное, всё, что нужно на входе.

46:06

Speaker A

Да. Так, теперь, если нету вопросов, поэтому, то мы идём к тому, что у нас должно быть, ну, на выходе, наверное, то есть на выходе у нас должно быть тоже м айдишник товара, м айдишник нашего заказа, айдишник нашей книжки,

46:25

Speaker A

э, количество, вот сумма заказа. То есть мы ID товара и на вход, и на выход и туда передали, и обратно.

46:34

Speaker A

[фыркает] Нет, наверное, я не так сказал. То есть на вход мы выдаём [откашливается] На вход мы даём ID нашего книги там или товара, а на выход мы даём ID заказа. Вот.

46:47

Speaker A

Угу. А для чего? Ну, оди один заказ для того, чтобы связать вот этот вот м заказ с этим клиентом в нашей базе данных.

47:01

Speaker A

Нет, в базе данных мы, получается, создали, да, нам на вход постзапросе пришла информация о товарах, количестве клиенте, который заказал эти товары. Мы в базе данных, соответственно, создали необходимое количество записей, успешно создали заказ, заказанные товары, сделали связи.

47:19

Speaker A

А с какой целью нам тогда в ответе на постзапрос возвращать ID заказа? Так, ID заказа. А, ну, возможно, чтобы, э-э, не знаю, если у нас это, если мы, э, выдаём, мм, если мы пользователю на фронте показываем номер заказа, такой

47:35

Speaker A

вот иногда бывает, то для того, чтобы показать его, ну, мы покажем ID, так как вернули ID.

47:41

Speaker A

Угу. Не, ну номер заказать. И то есть вы имеете в виду, вернём в ответе на подзапрос какую-то информацию о созданном заказе.

47:53

Speaker A

Угу. А статуса недостаточно? И вообще какие тогда статусы может вернуть? Угу. Так, давайте посмотрим сюда. Ну, я имею в виду номер заказа для того, чтобы всё-таки вот где-то бывает, что в каких-то интернет-магазинах, что номер заказа возвращают. Вот. А по статусам, ну,

48:18

Speaker A

какие статусы у нас могут быть? У нас могут быть статусы, что ээ чего? Мм, что у нас, когда мы на возврат, то, что у нас мм точнее, то, что у нас возвращается послезапроса нашему клиенту. То есть, может быть, что у нас

48:31

Speaker A

успешно мм произошла мм наша покупка. Может быть такое, что у нас произошла какие какие коды в этом случае какие HTTP коды в этом случае вернёт постзапрос? Так, ну, условно 200 может быть о'кей. Наверное, ещё 2011 то, что у

48:51

Speaker A

нас создано. Вот, наверное, вот так должно взвращать. Если у нас, допустим, не не хватило данных [откашливается] для заказа, возможно, или там как-то неправильно они были созданы, то, наверное, четырёхсотая там реквест должно вернуться. То есть ошибка у нас валидации. Или, допустим, у нас там, не

49:10

Speaker A

знаю, нет права доступа, наверное, нам не подойдёт. Авторизация тоже, наверное, не подойдёт. Угу. Может быть, ещё ошибка, в принципе, на сервере тогда будет пятисотая. Вот.

49:22

Speaker A

Угу. Так, спасибо. И у меня последний вопрос. Вот мы научились создавать заказы. Всё, у нас сыпятся заказы, создаются таблички, вернее, создаются записи в табличках. Тут пришёл заказчик и попросил сделать ему отчёт. Он хочет узнать, получить список книг, список

49:38

Speaker A

товаров, которые не интересуют покупателей. Угу. Вот как понимаешь эту задачу и какой селектс нужно для этого написать?

49:50

Speaker A

Угу. Так, ну, значит, если он не интересует покупателей, значит, у нас нам нужно искать в таблице, наверное, заказанных товаров. М, наверное, то есть нам нам нужно количество, короче, наших товаров, которые меньше всего заказали.

50:07

Speaker A

Нет, вообще не интересует. А вообще не интересует. То есть ноль заказов у них было.

50:13

Speaker A

Ну да, тогда товары, которые никто не купил ни разу. Хорошо. То есть, наверное, тогда мы, мм, давай так, короче, короче, select books нет, select, короче, м давай так, select all from from наши, короче, товары, [фыркает] ээ, и за джой с помощью левого джойна,

50:37

Speaker A

короче, лев join наши вот заказанные товары, мм, на получается давай лано по-английски, короче, Select books from не select all from books left join. где у нас потом ээ ор, ну, заказаны товары, он э получается м да, по ссылке на заказанный товар

51:03

Speaker A

полу получается бук вот где бук равно буook ID вот и получается да и где у нас ещё book idээ м типа ну вот так что-то не не запутался ну-ка id в какой таблице так ещё Ещё раз. Давай, давайте.

51:24

Speaker A

У нас две таблицы справа и Кирилл, ты можешь написать, чтобы было удобнее. Просто пиши, но чтобы и всё.

51:31

Speaker A

Ну, смотрите, давайте у нас будет [фыркает] селектим м селектим. Да, ё-моё. Короче, селектим всё.

51:48

Speaker A

Я понял, что уна. Короче, там all не прописывается почему-то. Это так. Select all получается from мм from ну нашей книги.

52:08

Speaker A

Так, ладно, наверное, это неважно уже, короче. From books. М. Дальше нам нужно с помощью левого джоина.

52:22

Speaker A

Так, у нас будут книги, у нас будут эти заказаные товары. Так, select. Так, left join у нас получается джойним заказаны товары наши. М, ну давай, ладно, уже по-английски буду писать.

52:37

Speaker A

Там назовём order items. [фыркает] Ээ, получается, это всё джойним на м Так, наверное, вот у нас есть ID книги.

52:50

Speaker A

Мм, ну да, получается, где там Book ID, ээ, там равен, ну бук бук сейчас букдишник, наверное, вот так вот, смотря просто какие у нас вот тут атрибуты мы пропишем на сление английского языка. Так, ещё нам нужно, чтобы у нас

53:21

Speaker A

Что ещё тут? Наверное, нам подойдёт, не подойдёт. Наверное, ещё добавил бы. М, то есть нам нужно м Мы ещё раз, что мы смотрим. Мы смотрим чтобы мы ищем товары, которых не было ни в одном заказе.

53:35

Speaker A

Угу. Среди заказанных товаров. Угу. Пам-папам-пам-пам-пам-пам. Мм. Так вот если мы остановимся на вот этом селекте, что он нам покажет?

53:50

Speaker A

[фыркает] Так, если мы остановимся на вот этом селекте, м, то есть мы там сем секм книги там левым джойном, то есть у нас слева будут наши м книги м и спра и [откашливается] справа у нас будут ээ эти

54:08

Speaker A

заказанные, короче, книги вот по букоядичнику. А ещё нам нужно, почему я говорил н? Потому что, ну, нужно добавить ещё фильт фильтрацию, потому что нам нужно, где, ээ, получается, где слева у нас будут книги, там, где у нас вообще не не были заказаны, вот то там

54:27

Speaker A

нам нужно А всё, я понял, короче, что к чему. Вот давай сейчас, давайте сейчас я это пропишу. Короче, нам нужно же, что вот где у нас Book ID, ээ, где у нас получается наш, нам же нужно, чтобы наш

54:38

Speaker A

book ID, в общем, был нулём. И тогда это получается, не знаю, нормально объясняю, то есть получается у нас ээ [фыркает] есть есть таблица, в общем, книг, есть таблица заказанных этих товаров. Если мы на левой левом джойноу, короче, джойним,

54:56

Speaker A

то там, где у нас будет совпадение книги и заказного товара, у нас будут, ну, вот какая-то запись. Если у нас записи не будет там, то там будет нул. И нам как раз-таки нужно, чтобы вот наш вот этот вот бук

55:09

Speaker A

у нас был в заказанных товарах нул. Вот. Всё правильно. Либо order ID, вернее, да, либо запись айдишним заказа.

55:18

Speaker A

Всё так, да спасибо. У меня больше вопросов нет. В принципе, у нас по времени уже закончилось.

55:31

Speaker A

Давайте так, ребят, сначала есть ли у кого-то какие-то ещё вопросы для начала? Я бы, если ещё пару минут по фронту поспрашивал немного.

55:40

Speaker A

Угу. [откашливается] А, Кирилл, у тебя есть ещё время минут пять? О, давайте. Ой. А, ну, в принципе, такой простой кейс продолжение того, что обсуждали.

55:51

Speaker A

Представь, что у нас тот же самый вот этот наш есть сайт, а, в котором мы можем заказывать книги. Допустим, есть форма заказа, а у нас там есть кокота книг, и нам всё, что остаётся - это заполнить персональную инфу по клиенту.

56:06

Speaker A

Тут чуть-чуть отойдём от базы данных, от той модели, что у нас есть. У нас там, допустим, FIO номер клиента, электронная почта. Вот. И после этого мы создаём заказ и шлём тот там кредит, который ты описал. Вот. Расскажи, пожалуйста, как

56:20

Speaker A

бы ты аналитики описывал эту форму именно с точки зрения UI? То есть ну вот фронт ты описываешь, да, ТЗ?

56:30

Speaker A

Угу. На какие вещи ты бы сделал акцент? Угу. Опять же у тебя есть там типа пускай две книжки в заказе и далее есть там набор полей.

56:40

Speaker A

Угу. По персональным данным. По персональным данным клиенту. Давай так. У нас персональный данный клиент. Тут нам нужно сразу, наверное, заранее задуматься про то, что у нас, ну, наверное, нам важно тут с точки зрения безопасности. Это вот на будущее,

56:53

Speaker A

наверное, то, что я буду учитывать. Ээ, чего то есть сначала нам нужно мм что ты сказал? То есть мы нам нужно выделить так, значит, данные, то есть у нас давай продумаем с точки зрения, возможно, этого юзкейса, как как бы тут

57:08

Speaker A

пользователь у нас поступает. То есть у нас пользователь ээ так а мы уже на форме находимся, да, на этой.

57:13

Speaker A

Дада. Да, у нас есть форма. Ну, Lightbox, допустим, в нём две книжки. Э, и твоя задача, то есть задача клиенту указать персональные данные, это давай так, одно поле FIO, а одно поле номер телефона и электронная почта. Три поля

57:27

Speaker A

всего. Вот. Далее он может нажать создать заказ. Угу. Так, ну давай. Всё, он ввёл, нажал оформить заказ.

57:35

Speaker A

Дальше нам, наверное, я бы ещё добавил, чтобы у ещё вылетала ещё одна, ээ, так скажем, м, ещё одна запись на фронте, так скажем, где у нас показывается, в общем, суммирование там по итогу нашего заказа, то есть там количество книг,

57:53

Speaker A

то есть сумма, ну, состав там нашей корзины. Вот, ээ, вот так вот это у нас то, что дальше проходит. Потом, ну, нам нужно ещё, наверное, если ты говоришь про сами вот эти вот поля, наверное, нам нужно подумать обязательно с полей. М,

58:06

Speaker A

то есть какие у нас поля обязательные там условно там может не обязательно быть, например, наверное, я бы ещё подумал форматы нашего телефона, то есть там плю7 у нас только ли, вот, или там ещё какие-то другие страны у нас могут

58:19

Speaker A

быть. Формат нашего имейла нужно продумать, что, допустим, может быть, мы там Gmail не принимаем, принимаем только там Mail. Вот, например, [фыркает] что-то вот такое. Мм.

58:29

Speaker A

Также у нас могут быть, ну, какие-то ошибки при вводе чего ещё? Паспортных данных. Также у нас нам нужно ограничить количество наших знаков в, ну, в тех же паспортных данных и в Что там у нас ещё?

58:43

Speaker A

Ну, здесь паспортных данных нет. А, ну не паспортные данные, а вот вот тоже тоже нужно ограничить, то есть не может быть у нас там тысячу этих кочу букв. Скорее всего, там что-то не так. А также ещё с точки зрения самих знаков,

58:56

Speaker A

то есть у нас, скорее всего, у нас только на русском языке там, то есть нам нужно тоже это м ограничить. Вот это, наверное, по этим полям мм чего по этим полям, что бы ещё сделал так по всё, что в голову первой

59:11

Speaker A

приходит наверное или о'кей. А с точки зрения обязательности, необязательности ну обязательное больно не заполнено. И что тогда? Вот, ээ, как бы ты это обрабатывал?

59:21

Speaker A

У. Угу. [фыркает] Так. Ну, смотри, если у нас обязательно поле не заполнено, то, по сути, мы дальше идти не можем. Вот.

59:30

Speaker A

То есть поэтому нам вылетала бы пользователя вылетала бы ошибка, что нужно заполнить это поле. Вот как бы обрабатывал. Ну или ты имеешь что-то как-то типа чисто валидация на фронте.

59:43

Speaker A

Ээ пам-пам-пам. М чисто валидация на фронте. Чтобы тут, наверное, сделал. То есть смотри, что можем сделать. Можем оттуда отправить всю эту инфу туда.

59:53

Speaker A

Папам. У нас, наверное, должна быть какая-то Jon схема. Вот. И если в эту, ну, JС схема, короче, не проходит наш, ну, наш набор этих ээ полей, вот тогда, ну, мы дальше-то не идём. Поэтому, наверное, только на фронте.

60:13

Speaker A

О'кей. Ясно. В принципе, вопросов больше нет по этому кейсу. У меня всё. Спасибо. Тогда у меня следующие вопросы закончили все. Кирилла спрашивате поспрашиваю. Давай продолжим с этой с юайной формой тоже. Вот смотри.

60:35

Speaker A

А если у тебя [фыркает] то есть вот нужно посчитать э что-то на фронте, вот как бы ты это реализовывал? То есть когда тебе нужно что-то, какой-то расчёт сделать? Вот, например, количество книг, которые ты сейчас делал, да, ты там набрал заказ, у

60:54

Speaker A

тебя там 2.500 книг и какая-то сумма. Вот как ты считаешь, где её правильнее делать этот расчёт?

61:03

Speaker A

Ну ты вот это, в общем, вопрос на фронте или на БКЕК, ну, условно, ну, я не знаю. Может быть, где-нибудь внутри кавки. Ты хочешь её посчитать, пока идёт она [фыркает] в топике?

61:17

Speaker A

Так, хорошо. То есть, э, ты спрашиваешь про тот момент, где у нас, ну, условно, в корзине, и мы там в корзине считаем, да, или как?

61:28

Speaker A

Ну, наверное. Ну, смотри, давай. А есть всё разница? Ну, я думаю, да. Смотри, давай так. Если у нас расчёт как бы влияет на нашу м условно итоговую стоимость, ээ ээ, так скажем, там суммы оплаты там, ну, не знаю, может с документами там что-то

61:48

Speaker A

связано, то, да, конечно, ну, как бы на беке лучше делать. А может быть такое, что, допустим, ну, не связанное с оплатой, может быть, у нас есть счётчик этого, ээ, там, не знаю, м не знаю, счётчик времени, там, скидки, которая

62:01

Speaker A

вот идёт там же у нас тоже, возможно, прибавляется просто время, не знаю, может, тоже можно сделать. Это как бы не влияет на нашу оплату. Вот. И это можно как бы условно сделать на фронте. То есть то, что нам

62:12

Speaker A

важно с точки зрения там итоговой стоимости, там оплаты, там документов, вот это точно мы делаем на БКИ. То есть с точки зрения твоего вопроса, мм, так, ну, тут можно сказать, да, что у нас как бы это предварительно, э,

62:27

Speaker A

предварительный подсчёт. Мм, поэтому тут можно как бы, наверное, реализовать на БКЕ и потом уже вот эту всю информацию как бы условно, там мы к одной книге привали ещё одну книгу уже потом её отправить на БК, наверное. Вот так.

62:41

Speaker A

Ну, то есть давай я как понял, [откашливается] а ты скажешь, правильно ли я понял.

62:46

Speaker A

Вот. А то есть ты когда набираешь заказ и когда ты его в момент его набора ты подсчитываешь всю сумму, которая у тебя пришла с БКА, и выводишь её в онлайне и считаешь её на фронте. То есть цифры, которые видит клиент, она на фронте.

63:06

Speaker A

А ты имеешь в виду, правильно а ты имеешь в виду сумму заказа именно там? Ну да, допустим, сумму заказа или или просто я это думал больше про вот ээ сумму сумма товаров в количестве.

63:18

Speaker A

А и неважно. Угу. Давай про сумму заказа. Угу. М Ну давай. Тут, наверное, всё-таки ээ э нужно нам считать на мм то, что задат вопрос, скорее всего, да, нам нужно задать считать это на беке, то есть и клиенту мы уже будем выводить.

63:35

Speaker A

Даже сумма заказа мы будем выводить с того, что у нас как бы с данных, которые пришли с БКА. Вот.

63:44

Speaker A

Угу. То есть, а если ты ещё заказ не создал, а его только формируешь, у тебя на беке нету итоговой суммы.

63:49

Speaker A

Угу. Так, заказ мы только формируем. Мм. Угу. Ну тогда на фронте, если он только формируется.

63:57

Speaker A

А если ты уже оформил заказ, а у тебе потом нужно вернуть какие-то деньги, ты откуда узнаешь, если ты только на фронте её посчитал?

64:06

Speaker A

Угу. Так, [фыркает] заказ оформлен. И какую сумму узнать по сумме товаров наших? Ну, вернуть же надо будет. Я возврат оформляю. Ты ты будешь возвращать те деньги, которые сейчас они продаются.

64:21

Speaker A

Угу. послевоенные деньги или довоенные, например. Так, ну тут вопрос понятен. Тут всё-таки, да, у нас должна быть информация на БКЕК, вот чтобы, ну, просто когда заказ уже оформлен, у нас он как бы ушёл уже туда с фронта, и там

64:36

Speaker A

из базы данных будем вытаскивать. Вот через БК. Угу. [откашливается] Ну да, понятно. Понял тебя. Спасибо большое, Кирилл. Спасибо. У меня закончились вопросы.

64:51

Speaker A

Кирилл, может, у тебя какие-то вопросы появились к там? Появились ли у меня вопросы? Так, ну, по команде понял, поэтому я понял.

65:01

Speaker A

Не знаю, так про график вы сказали. Наверное, всё, наверное, я услышал. Очень хорошо мог бы.

65:07

Speaker A

Смотри, [смех] да. А, смотри, а мы тогда, с ребятами там, ну, что у нас, у нас же пятница, выходные, но я думаю, мы в понедельник вернёмся с обратной связью. Аа далее у нас какая ситуация? Ну, если мы там

65:24

Speaker A

решаем, что нет, всё-таки там ты не подходишь, то всё. Если мы решаем, что подходишь, то у нас будет второй этап, тоже интервью. На нём будет у нас наш, скажем так, IT-лидер, вот руководитель наш по линии IT. А на втором интервью

65:40

Speaker A

будет в основном вопросы там и какие-то кейсы на словах без там картин как разтаки вот нашего лидера. А и, ну, возможно, какие-то, может быть, ещё плюс-минус похожие на сегодняшние кейсы дополнительные от нас.

65:57

Speaker A

Угу. Вот так. Ну, соответственно, после второго интервью там уже будет финальное решение. Хорошо, понял.

66:05

Speaker A

Вот. Ну тогда всё. Спасибо большое за интервью, за беседу. Тогда хороших выходных. Всё, покапока.

66:14

Speaker A

Спасибо, Кирил. Пока. Давай пока. Хорошего. M.

Topics: системный аналитик собеседование Сбер инкассация микросервисы проектирование БД SQL аджайл техинтервью IT-карьера

Учить по этому видео

- [Карточки по этому видео](https://sozai.app/ru/tools/flashcard-maker/?from=transcript&id=87557)
- [Тест по этому видео](https://sozai.app/ru/tools/quiz-generator/?from=transcript&id=87557)
- [Кроссворд по этому видео](https://sozai.app/ru/tools/crossword-maker/?from=transcript&id=87557)
- [Филворд по этому видео](https://sozai.app/ru/tools/word-search-maker/?from=transcript&id=87557)
- [Шпаргалка по этому видео](https://sozai.app/ru/tools/study-guide-maker/?from=transcript&id=87557)

Бесплатно, составлено ИИ по этой расшифровке. Без регистрации.


---
This is the markdown twin of https://sozai.app/transcript/salary-330k-systems-analyst-job-interview/ — the same content, without the markup.
Published by SozAI (https://sozai.app). Reuse and quotation are allowed with attribution and a link back.
Machine-readable index: https://sozai.app/llms.txt · data API: https://sozai.app/api/
