|
0 / 0 / 0
Регистрация: 12.12.2020
Сообщений: 23
|
|
Задача с json, "сервис подписки"01.05.2023, 19:49. Показов 935. Ответов 1
Метки нет (Все метки)
Необъяснимая аномалия! На серверах Яндекс Маркета отказывает оборудование: ломаются жесткие диски, плавится оперативная память, выходит из строя система охлаждения. Системные администраторы локализовали проблему — причиной поломок оказалась используемая база данных. Руководители приняли решение срочно вывести из эксплуатации упомянутую базу данных и заменить ее самописной. Вам нужно как можно скорее предоставить MVP, который поддерживает:
частичное обновление товарных предложений в базе данных уведомление сервисов-подписчиков при обновлении данных Товарное предложение в базе описывается следующей JSON схемой: { "$id": "offer.schema.json", "type": "object", "properties": { "id": { "type": "string", "description": "Offer identifier, only numerical symbols are allowed" }, "price": { "type": "integer", "description": "Offer price, value in range from 0 to 10̂9" }, "stock_count": { "type": "integer", "description": "Items left on stocks, value in range from 0 to 10̂9" }, "partner_content": { "type": "object", "properties": { "title": { "type": "string", "description": "Offer title filled in by the partner" }, "description": { "type": "string", "description": "Offer description filled in by the partner" } } } }, "required": [ "id" ] } При межсервисном взаимодействии к товарному предложению добавляется контекст, который содержит идентификатор для сквозной трассировки, его схема: { "$id": "message.schema.json", "type": "object", "properties": { "trace_id": { "type": "string" }, "offer": { "$ref": "offer.schema.json" } }, "required": [ "trace_id", "offer" ] } Сервис, который отправляет запрос на обновление товарного предложения, обязательно заполняет идентификатор оффера (поле offer.id ) и идентификатор для трассировки (поле trace_id). Все остальные поля в запросе опциональны. В таком случае при применении обновления будет происходить слияние полей. Например, в базе у оффера заполнены поля price=9990, и приходит обновление stock_count=100 , тогда в базе будут сохранены оба поля price=9990; stock_count=100 . Гарантируется, что все входящие запросы валидны и соответствуют схеме. Так как это прототип, удаление товаров из базы и очищение полей было решено не поддерживать. Помимо хранения товарных предложений в базе, в сервисе необходима функция доставки обновлений в сервисы-подписчиков. Одна подписка включает в себя два набора полей: trigger и shipment, не обязательно листовых. Когда изменяется любое trigger поле или поле, вложенное в trigger поле, подписчику отправляется сообщение. В сообщении находятся все shipment и trigger поля этого подписчика, а также идентификаторы оффера и трассировки из запроса, который привел к этому сообщению. Инициализация поля также считается за его изменении и создает сообщение об обновлении. Формат ввода Первая строка входных данных содержит два целых числа n и m ( 1≤n≤50,1≤m≤10,000) — количество сервисов подписчиков и количество запросов на обновления. Следующие n строк содержат описания сервисов подписчиков: i -я строка содержит описание i -го подписчика. В начале строки задается ai и bi — количество trigger и shipment полей соответственно. Далее ai trigger полей, и bi shipment полей. Следующие m строк содержат запросы на обновление, каждая строка — это валидный json, удовлетворяющий схеме message.schema.json Формат вывода На каждое событие обновления выведите kj сообщений в формате message.schema.json , где kj — это количество сервисов-подписчиков, которым данное событие интересно. Сообщения должны идти в том же порядке, что и обновления, которые привели к ним. Сообщения в рамках одного обновления должны быть отсортированы по порядковому номеру подписчика. Пример Ввод Вывод 2 5 2 0 price stock_count 1 0 partner_content {"trace_id": "1", "offer": {"id": "1", "price": 9990}} {"trace_id": "2", "offer": {"id": "1", "stock_count": 100}} {"trace_id": "3", "offer": {"id": "2", "partner_content": {"title": "Backpack"}}} {"trace_id": "4", "offer": {"id": "1", "stock_count": 100}} {"trace_id": "5", "offer": {"id": "2", "partner_content": {"description": "Best backpack ever"}}} {"trace_id":"1","offer":{"id":"1","price ":9990}} {"trace_id":"2","offer":{"id":"1","price ":9990,"stock_count":100}} {"trace_id":"3","offer":{"id":"2","partn er_content":{"title":"Backpack"}}} {"trace_id":"5","offer":{"id":"2","partn er_content":{"description":"Best backpack ever","title":"Backpack"}}} Примечания Для решений на языке Python доступны библиотеки json, requests и urllib.
0
|
|
| 01.05.2023, 19:49 | |
|
Ответы с готовыми решениями:
1
Сервис для разработчиков чтобы объединяться в общие подписки
Подписки MSDN -> подписки VS |
|
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
|
||
| 01.05.2023, 22:12 | ||
|
вы бы хоть спасибо говорили в виде кнопки спасибо иногда, а то прям реально иногда думаю, что решаешь задачи для реальных людей на должностях программеров в компаниях, и без спасибо ну и еще интересно, я периодически интересуюсь, вы там в своих ВУЗах сами то что-нибудь решаете или все сюда скидываете для решения?
1
|
||
| 01.05.2023, 22:12 | |
|
Помогаю со студенческими работами здесь
2
Задача на Json Java, JSON и JSON Simple. Непонятка с созданием объекта JSON на сервере для отправки на фронт Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object PHP и Json простенькая задача Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|