Compare commits

..

14 Commits

Author SHA1 Message Date
khisametdinov
8ee5ca5528 feat (connectme): add request for city
Some checks failed
platform/multy-stub/pipeline/head There was a failure building this commit
2025-02-01 11:53:10 +03:00
e1e335098e Merge pull request '[feat] add interaction telegram bot' (#81) from sberhubproject into master
Reviewed-on: #81
2025-02-01 11:20:30 +03:00
619975d1e0 [feat] add interaction telegram bot 2025-02-01 11:19:41 +03:00
f29bc83d56 Merge pull request '[feat][refactor] add Gigachat and edit data users' (#80) from sberhubproject into master
Reviewed-on: #80
2025-02-01 09:39:46 +03:00
61347d1aee [feat][refactor] add Gigachat and edit data users 2025-02-01 09:38:54 +03:00
ac7a99ef15 Merge pull request 'kazan-explore services data fixed' (#79) from kazan-explore into master
Reviewed-on: #79
2025-02-01 03:43:02 +03:00
eb3f1f7e3f kazan-explore services data fixed 2025-02-01 03:42:16 +03:00
3e02ea5843 Merge pull request 'kazan-explore services data added' (#78) from kazan-explore into master
Reviewed-on: #78
2025-02-01 03:27:43 +03:00
d06aeeb246 kazan-explore services data added 2025-02-01 03:19:45 +03:00
e331f69885 Merge pull request '[refactor] edit data interests' (#77) from sberhubproject into master
Reviewed-on: #77
2025-02-01 01:10:39 +03:00
23f1277edb [refactor] edit data interests 2025-02-01 01:09:22 +03:00
16bffcafa6 Merge pull request 'feat: add vercel/ai package; gigachat api; refactor dictionaries; add units put request' (#72) from kfu-m-24-1/eng-it-lean into master
Reviewed-on: #72
2025-01-31 18:37:55 +03:00
922909397d Merge pull request 'kazan-explore changes' (#75) from kazan-explore into master
Reviewed-on: #75
2025-01-31 18:03:08 +03:00
233192ba01 kazan-explore changes 2025-01-31 18:00:56 +03:00
18 changed files with 692 additions and 429 deletions

View File

@@ -89,6 +89,7 @@ app.use("/freetracker", require("./routers/freetracker"))
app.use("/dhs-testing", require("./routers/dhs-testing"))
app.use("/gamehub", require("./routers/gamehub"))
app.use("/esc", require("./routers/esc"))
app.use('/connectme', require('./routers/connectme'))
app.use(require("./error"))

View File

@@ -0,0 +1,8 @@
const { Router } = require('express')
const router = Router()
router.get('/cities', (request, response) => {
response.send(require('./json/cities.json'))
})
module.exports = router

View File

@@ -0,0 +1,85 @@
{
"data": [
{
"id": 1,
"title": "Моска"
},
{
"id": 2,
"title": "Санкт-петербург"
},
{
"id": 3,
"title": "Новосибирска"
},
{
"id": 4,
"title": "Екатеринбург"
},
{
"id": 5,
"title": "Казань"
},
{
"id": 6,
"title": "Нижний новгород"
},
{
"id": 7,
"title": "Челябинск"
},
{
"id": 8,
"title": "Самара"
},
{
"id": 9,
"title": "Омск"
},
{
"id": 10,
"title": "Ростов-на-дону"
},
{
"id": 11,
"title": "Уфа"
},
{
"id": 12,
"title": "Красноярск"
},
{
"id": 13,
"title": "Пермь"
},
{
"id": 14,
"title": "Воронеж"
},
{
"id": 15,
"title": "Волгоград"
},
{
"id": 16,
"title": "Краснодар"
},
{
"id": 17,
"title": "Тюмень"
},
{
"id": 18,
"title": "Ижевск"
},
{
"id": 19,
"title": "Барнаул"
},
{
"id": 20,
"title": "Владивосток"
}
],
"count": 20
}

View File

@@ -1,3 +1,3 @@
exports.KAZAN_EXPLORE_RESULTS_MODEL_NAME = 'KAZAN_EXPLORE_RESULTS'
exports.TOKEN_KEY = "KAZAN_EXPLORE_TOP_SECRET_TOKEN_KEY"
exports.TOKEN_KEY = "kazan-explore_top_secret_key_hbfhqf9jq9prg"

View File

@@ -1,44 +1,9 @@
const router = require('express').Router();
const { expressjwt } = require('express-jwt')
const axios = require('axios');
const jwt = require('jsonwebtoken')
const { ResultsModel } = require('./model/results')
router.get('/getQuizResults/:userId', async (request, response) => {
const { userId } = request.params;
try {
const results = await ResultsModel.findOne({ userId : userId }).exec();
if (!results) {
return response.status(404).send({ message: 'Quiz results not found' });
}
response.send(results.items);
} catch (error) {
response.status(500).send({ message: 'An error occurred while fetching quiz results' });
}
});
router.post('/addQuizResult', async (request, response) => {
const { userId, quizId, result } = request.body;
if (!userId || !quizId || !result) {
return response.status(400).send({ message: 'Invalid input data' });
}
try {
let userResults = await ResultsModel.findOne({ userId : userId }).exec();
if (!userResults) {
userResults = new ResultsModel({ userId, items: [] });
}
userResults.items.push({ quizId, result });
await userResults.save();
response.status(200).send({ message: 'Quiz result added successfully', data: userResults });
} catch (error) {
response.status(500).send({ message: 'An error occurred while adding quiz result' });
}
});
const { TOKEN_KEY } = require('./const')
// First page
router.get('/getInfoAboutKazan', (request, response) => {
@@ -52,6 +17,16 @@ router.get('/getInfoAboutKazan', (request, response) => {
}
});
router.get('/getServices', (request, response) => {
const lang = request.query.lang || 'ru';
try {
const data = require(`./json/first/services/${lang}/success.json`);
response.send(data);
} catch (error) {
response.status(404).send({ message: 'Language not found' });
}
})
router.get('/getNews', (request, response) => {
const lang = request.query.lang || 'ru';
try {
@@ -247,4 +222,89 @@ router.post('/registration', async (request, response) => {
}
});
router.post('/signin', async (req, res) => {
const { user } = req.body
if (!user || !user.token) {
return res.status(404).json({error : "No user found"});
}
const valRes = await axios.get('https://antd-table-v2-backend.onrender.com/api/auth/check',
{
headers: {
'authorization': `Bearer ${user.token}`
}
}
)
if (valRes.status !== 200) {
return res.status(401).json({error : "User authorization error"});
}
const accessToken = jwt.sign({
...JSON.parse(JSON.stringify(user._id)),
}, TOKEN_KEY, {
expiresIn: '12h'
})
user.token = accessToken;
res.json(user)
})
router.use(
expressjwt({
secret: TOKEN_KEY,
algorithms: ['HS256'],
getToken: function fromHeaderOrQuerystring(req) {
if (req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer")
return req.headers.authorization.split(" ")[1];
else if (req.query && req.query.token)
return req.query.token;
return null;
}
})
)
router.get('/getQuizResults/:userId', async (request, response) => {
const { userId } = request.params;
try {
const results = await ResultsModel.findOne({ userId: userId }).exec();
if (!results)
return response.status(404).send({ message: 'Quiz results not found' });
response.send(results.items);
} catch (error) {
response.status(500).send({ message: 'An error occurred while fetching quiz results' });
}
});
router.post('/addQuizResult', async (request, response) => {
const { userId, quizId, result } = request.body;
if (!userId || !quizId || !result)
return response.status(400).send({ message: 'Invalid input data' });
try {
let userResults = await ResultsModel.findOne({ userId: userId }).exec();
if (!userResults) {
userResults = new ResultsModel({ userId, items: [] });
}
const itemToOverride = userResults.items.find(item => item.quizId === quizId)
if (!itemToOverride) {
userResults.items.push({ quizId, result });
}
else {
itemToOverride.result = result;
}
await userResults.save();
response.status(200).send({ message: 'Quiz result added successfully' });
} catch (error) {
response.status(500).send({ message: 'An error occurred while adding quiz result' });
}
});
module.exports = router;

View File

@@ -0,0 +1,102 @@
{
"banks": [
{
"name": "Sberbank of Russia",
"description": "One of the largest and most popular banks in Russia. There are many branches and ATMs in Kazan. Sberbank offers a wide range of services, including loans, deposits, insurance, business services, and online banking."
},
{
"name": "VTB",
"description": "The second largest bank in Russia, with many offices and ATMs in Kazan. VTB offers various financial products for individuals and businesses, including loans, deposits, investment solutions, and cards."
},
{
"name": "Tinkoff Bank",
"description": "Although Tinkoff does not have traditional offices in Kazan, its products and services are available in the city through online banking and remote services. Tinkoff offers favorable terms for credit cards, deposits, and services for small and medium-sized businesses."
},
{
"name": "Alfa-Bank",
"description": "One of the largest private banks in Russia, with offices in Kazan. Alfa-Bank offers standard banking services such as loans, deposits, cards, as well as investment and insurance products."
},
{
"name": "Rosselkhozbank",
"description": "Rosselkhozbank is also present in Kazan, specializing in servicing the agro-industrial complex, but also provides services for individuals and businesses, including loans, deposits, and cards."
},
{
"name": "RBC Bank",
"description": "A Russian bank with several offices and ATMs in Kazan. It offers loans, cards, deposits, and business services."
},
{
"name": "Bank Saint Petersburg",
"description": "A local bank that also provides services in Kazan. It offers a wide range of banking products for individuals and businesses."
}
],
"hospitals": [
{
"name": "Kazan City Clinical Hospital No. 1",
"description": "One of the largest multidisciplinary hospitals in Kazan, offering services in surgery, traumatology, neurology, cardiology, and other medical fields. Modern technologies and highly qualified staff."
},
{
"name": "Republican Clinical Hospital",
"description": "The main medical organization of the Republic of Tatarstan, providing a wide range of services for adults and children, including emergency care, high-tech surgeries, and diagnostics."
},
{
"name": "City Hospital No. 7",
"description": "A hospital specializing in providing medical care in therapeutic, surgical, and resuscitation medicine. The hospital employs experienced specialists and uses modern treatment methods."
},
{
"name": "Kazan Children's Clinical Hospital",
"description": "A specialized medical facility for children, providing services for the treatment of diseases related to pediatrics, surgery, cardiology, and other fields for children of all ages."
},
{
"name": "Kazan Oncology Dispensary",
"description": "A medical institution specializing in the treatment of oncological diseases. It uses the latest methods of cancer diagnosis and treatment, including chemotherapy, radiotherapy, and surgical interventions."
},
{
"name": "City Hospital No. 18",
"description": "A multidisciplinary medical institution offering treatment in various medical fields, including traumatology, neurology, and cardiology. The hospital has a rehabilitation department for patients recovering from serious diseases."
},
{
"name": "Republican Hospital for War Veterans",
"description": "A medical institution providing specialized care for World War II veterans, disabled individuals, and elderly people. It also offers a wide range of services for citizens with chronic diseases."
}
],
"pharmacies": [
{
"name": "Apteka 36.6",
"description": "A pharmacy chain with a wide range of medications, vitamins, cosmetics, and health products. Loyalty programs and online orders for customer convenience."
},
{
"name": "Rigla",
"description": "One of the largest pharmacy chains in Russia. It offers a wide range of medicines, medical products, and cosmetics. It also provides the option to order online."
},
{
"name": "Zdorovaya Semya",
"description": "A pharmacy chain focused on the sale of medicines and health products, including medical equipment. Often runs promotions and discounts on popular items."
},
{
"name": "A5 Pharmacy Chain",
"description": "Pharmacies offering a wide range of products, including medicines, vitamins, cosmetics, and children's products. Convenient delivery and online order services."
},
{
"name": "Samson-Pharma Pharmacy",
"description": "A pharmacy chain offering customers all necessary medicines and health products. Pharmacies offer various discount and bonus programs for regular customers."
},
{
"name": "Tsvetnoy Pharmacy Chain",
"description": "Pharmacies known for their convenient locations and high-quality service. They sell medicines, vitamins, self-care products, and medical equipment."
},
{
"name": "Doctor Stoletev Pharmacy",
"description": "A pharmacy chain focused on selling pharmaceutical products, medical goods, and cosmetics. Convenient service and promotions for customers."
}
],
"airports": [
{
"name": "Kazan International Airport",
"description": "The main airport of the city of Kazan, serving international and domestic flights. The airport is equipped with modern terminals, comfortable waiting areas, shops, and restaurants. It is one of the largest in the Volga region and an important transport hub for Tatarstan."
},
{
"name": "Kazan-2 (when it was operational)",
"description": "Previously used for domestic flights and military needs. It is no longer fully operational as all passenger flights have been redirected to Kazan International Airport. The airport building is closed for commercial air traffic."
}
]
}

View File

@@ -0,0 +1,102 @@
{
"banks": [
{
"name": "Сбербанк России",
"description": "Один из крупнейших и самых популярных банков в России. В Казани есть множество отделений и банкоматов. Сбербанк предлагает широкий спектр услуг, включая кредиты, депозиты, страхование, обслуживание бизнеса и онлайн-банкинг."
},
{
"name": "ВТБ",
"description": "Второй по величине банк в России, с большим количеством офисов и банкоматов в Казани. ВТБ предлагает различные финансовые продукты для физических и юридических лиц, включая кредиты, вклады, инвестиционные решения и карты."
},
{
"name": "Тинькофф Банк",
"description": "Несмотря на то что у Тинькофф нет традиционных офисов в Казани, его продукты и услуги доступны в городе через онлайн-банкинг и удаленное обслуживание. Тинькофф предлагает выгодные условия по кредитным картам, вклады, а также услуги для малого и среднего бизнеса."
},
{
"name": "Альфа-Банк",
"description": "Один из крупных частных банков в России, с офисами в Казани. Альфа-Банк предлагает стандартные банковские услуги, такие как кредиты, депозиты, карты, а также инвестиционные и страховые продукты."
},
{
"name": "Россельхозбанк",
"description": "В Казани также присутствует Россельхозбанк, специализирующийся на обслуживании агропромышленного комплекса, но также предоставляет услуги для физических и юридических лиц, включая кредиты, депозиты и карты."
},
{
"name": "РБК Банк",
"description": "Российский банк с рядом офисов и банкоматов в Казани. Предлагает кредиты, карты, депозиты, а также обслуживание для бизнеса."
},
{
"name": "Банк Санкт-Петербург",
"description": "Местный банк, который также предоставляет услуги в Казани. Предлагает широкий выбор банковских продуктов для частных лиц и бизнеса."
}
],
"hospitals": [
{
"name": "Казанская городская клиническая больница №1",
"description": "Одна из крупнейших многопрофильных больниц Казани, предлагающая услуги в области хирургии, травматологии, неврологии, кардиологии и других медицинских направлений. Современные технологии и высококвалифицированный персонал."
},
{
"name": "Республиканская клиническая больница",
"description": "Основная медицинская организация Республики Татарстан, предоставляющая широкий спектр услуг для взрослых и детей, включая экстренную помощь, высокотехнологичные операции и диагностику."
},
{
"name": "Городская больница №7",
"description": "Больница, специализирующаяся на оказании медицинской помощи в области терапевтической, хирургической и реанимационной медицины. В больнице работают опытные специалисты, используемые современные методы лечения."
},
{
"name": "Казанская детская клиническая больница",
"description": "Профильное медицинское учреждение для детей, которое предоставляет услуги по лечению заболеваний, связанных с педиатрией, хирургией, кардиологией и другими направлениями для детей всех возрастов."
},
{
"name": "Казанский онкологический диспансер",
"description": "Медицинское учреждение, специализирующееся на лечении онкологических заболеваний. Использует новейшие методы диагностики и лечения рака, включая химиотерапию, радиотерапию и операционные вмешательства."
},
{
"name": "Городская больница №18",
"description": "Многопрофильное медицинское учреждение, предлагающее лечение в различных областях медицины, включая травматологию, неврологию и кардиологию. В больнице есть отделение для реабилитации пациентов после тяжелых заболеваний."
},
{
"name": "Республиканская больница для ветеранов войн",
"description": "Медицинское учреждение, оказывающее специализированную помощь ветеранам Великой Отечественной войны, инвалидам и пожилым людям. Также предлагает широкий спектр услуг для граждан с хроническими заболеваниями."
}
],
"pharmacies": [
{
"name": "Аптека 36,6",
"description": "Сеть аптек с большим ассортиментом лекарственных средств, витаминов, косметики и товаров для здоровья. Программы лояльности и онлайн-заказы для удобства клиентов."
},
{
"name": "Ригла",
"description": "Одна из крупнейших аптечных сетей в России. Предлагает широкий выбор лекарств, медицинских товаров и косметики. Также предоставляет возможность заказа через интернет."
},
{
"name": "Здоровая семья",
"description": "Аптечная сеть, ориентированная на продажу лекарств и товаров для здоровья, включая медицинскую технику. Часто проводятся акции и скидки на популярные товары."
},
{
"name": "Аптечная сеть 'А5'",
"description": "Аптеки, предлагающие широкий ассортимент товаров, включая лекарства, витамины, косметику и товары для детей. Удобные услуги доставки и онлайн-заказов."
},
{
"name": "Аптека 'Самсон-Фарма'",
"description": "Сеть аптек, предоставляющая клиентам все необходимые лекарства и товары для здоровья. Аптеки предлагают различные программы скидок и бонусов для постоянных клиентов."
},
{
"name": "Аптечная сеть 'Цветной'",
"description": "Аптеки, известные своими удобными местоположениями и качественным обслуживанием. В продаже лекарства, витамины, товары для ухода за собой и медтехника."
},
{
"name": "Аптека 'Доктор Столетов'",
"description": "Сеть аптек, ориентированная на продажу фармацевтической продукции, медицинских товаров и косметики. Удобный сервис и акции для клиентов."
}
],
"airports": [
{
"name": "Международный аэропорт Казань",
"description": "Главный аэропорт города Казани, обслуживающий международные и внутренние рейсы. Аэропорт оснащен современными терминалами, удобными зонами ожидания, магазинами и ресторанами. Он является одним из крупнейших в Поволжье и важным транспортным узлом для Татарстана."
},
{
"name": "Казань-2 (когда был действующим)",
"description": "Ранее используемый аэропорт для внутренних рейсов и военных нужд. В настоящее время не функционирует в полном объеме, поскольку все пассажирские рейсы перенаправлены в Международный аэропорт Казань. Здание аэропорта закрыто для коммерческих авиаперевозок."
}
]
}

View File

@@ -0,0 +1,102 @@
{
"banks": [
{
"name": "Россия Сбербанкы",
"description": "Россиядәге иң зур һәм популяр банкларның берсе. Казан шәһәрендә күпсанлы бүлекләр һәм банкоматлар бар. Сбербанк киң спектрлы хезмәтләр тәкъдим итә, шул исәптән кредитлар, депозиты, иминиятләштерү, бизнеска хезмәт күрсәтү һәм онлайн-банкчылык."
},
{
"name": "ВТБ",
"description": "Россиядә икенче зурлыктагы банк, Казан шәһәрендә күп санлы офислар һәм банкоматлар белән. ВТБ физик һәм юридик затлар өчен төрле финанс продуктларын тәкъдим итә, шул исәптән кредитлар, депозитлар, инвестицион чишелешләр һәм карталар."
},
{
"name": "Тинькофф Банк",
"description": "Тинькофф Казан шәһәрендә традицион офисларга ия булмаса да, аның продуктлары һәм хезмәтләре шәһәрдә онлайн-банкчылык һәм ерак хезмәт күрсәтү аша тәкъдим ителә. Тинькофф кредит карталары, депозитлар, шулай ук кечкенә һәм урта бизнес өчен хезмәтләр тәкъдим итә."
},
{
"name": "Альфа-Банк",
"description": "Россиядәге зур шәхси банкларның берсе, Казанда офислары белән. Альфа-Банк стандарт банк хезмәтләрен тәкъдим итә, шул исәптән кредитлар, депозитлар, карталар, шулай ук инвестицион һәм иминият продуктлары."
},
{
"name": "Россельхозбанк",
"description": "Казан шәһәрендә Россельхозбанк та бар, ул агропромышленность өлкәсендә хезмәт күрсәтүгә махсуслашкан, ләкин шулай ук физик һәм юридик затлар өчен хезмәтләр тәкъдим итә, шул исәптән кредитлар, депозитлар һәм карталар."
},
{
"name": "РБК Банк",
"description": "Казан шәһәрендә офислары һәм банкоматлары булган Россия банкы. Кредитлар, карталар, депозитлар һәм бизнеска хезмәт күрсәтү тәкъдим итә."
},
{
"name": "Санкт-Петербург Банкы",
"description": "Казан шәһәрендә дә хезмәт күрсәткән җирле банк. Ул шәхси затлар һәм бизнес өчен киң банк продуктлары сайлау тәкъдим итә."
}
],
"hospitals": [
{
"name": "Казан шәһәр клиник хастаханәсе №1",
"description": "Казанның иң зур күппрофильле хастаханәләренең берсе, хирургия, травматология, неврология, кардиология һәм башка медицина юнәлешләре буенча хезмәтләр тәкъдим итә. Замана технологияләре һәм югары квалификацияле персонал."
},
{
"name": "Республиканың клиник хастаханәсе",
"description": "Татарстан Республикасы өчен төп медицина оешмасы, зур спектрдагы хезмәтләрне тәкъдим итә, шул исәптән ашыгыч ярдәм, югары технологияле операцияләр һәм диагностика."
},
{
"name": "Шәһәр хастаханәсе №7",
"description": "Терапевтик, хирургик һәм реанимация медицинасы өлкәсендә медицина ярдәме күрсәтүгә махсуслашкан хастаханә. Хастаханәдә тәҗрибәле белгечләр эшли, заманча дәвалау ысуллары кулланыла."
},
{
"name": "Казан балалар клиник хастаханәсе",
"description": "Балалар өчен профильле медицина учреждениесе, педиатрия, хирургия, кардиология һәм башка юнәлешләр буенча хезмәтләр тәкъдим итә."
},
{
"name": "Казан онкология диспансеры",
"description": "Онкологик авыруларны дәвалауга махсуслашкан медицина учреждениесе. Рак диагнозын һәм дәвалауны үткәрүдә заманча ысуллар кулланыла, шул исәптән химиотерапия, радиотерапия һәм операцияләр."
},
{
"name": "Шәһәр хастаханәсе №18",
"description": "Күппрофильле медицина учреждениесе, төрле медицина өлкәләрендә дәвалау тәкъдим итә, шул исәптән травматология, неврология һәм кардиология. Хастаханәдә авыр авырулардан соң реабилитация бүлекләре бар."
},
{
"name": "Ветераннар өчен республика хастаханәсе",
"description": "Бөек Ватан сугышы ветераннарына, инвалидларга һәм картларга махсус медицина ярдәме күрсәтүче учреждение. Шулай ук хроник авырулары булган гражданнар өчен хезмәтләр тәкъдим итә."
}
],
"pharmacies": [
{
"name": "Аптека 36,6",
"description": "Дәреслекләр, витаминнар, косметика һәм сәламәтлек товарларының киң ассортименты булган аптека челтәре. Лояльлек программалары һәм онлайн-заказлар клиентлар өчен уңайлы."
},
{
"name": "Ригла",
"description": "Россиядәге иң зур аптекалар челтәрләренең берсе. Дәреслекләр, медицина товарлары һәм косметика тәкъдим итә. Шулай ук интернет аша заказ бирү мөмкинлеге бар."
},
{
"name": "Здоровая семья",
"description": "Дәреслекләр һәм сәламәтлек товарлары, шул исәптән медицина техникасы сатуга юнәлдерелгән аптека челтәре. Популяр товарларга акцияләр һәм ташламалар еш үткәрелә."
},
{
"name": "Аптечная сеть 'А5'",
"description": "Дәреслекләр, витаминнар, косметика һәм балалар товарларының киң ассортименты булган аптека челтәре. Уңайлы җибәрү һәм онлайн-заказлар хезмәтләре."
},
{
"name": "Аптека 'Самсон-Фарма'",
"description": "Дәреслекләр һәм сәламәтлек товарлары тәкъдим итә торган аптека челтәре. Аптекалар даими клиентлар өчен скидкалар һәм бонуслар тәкъдим итә."
},
{
"name": "Аптечная сеть 'Цветной'",
"description": "Уңайлы урнашкан һәм сыйфатлы хезмәт күрсәтү белән танылган аптекалар. Дәреслекләр, витаминнар, үз-үзеңне карау товарлары һәм медицина техникасы сатыла."
},
{
"name": "Аптека 'Доктор Столетов'",
"description": "Фармацевтик продукция, медицина товарлары һәм косметика сату белән шөгыльләнгән аптека челтәре. Уңайлы хезмәт һәм клиентлар өчен акцияләр."
}
],
"airports": [
{
"name": "Казан Халыкара Аэропорты",
"description": "Казанның төп аэропорты, халыкара һәм эчке рейсларны башкаручы. Аэропорт заманча терминаллар, уңайлы көтү зоналары, кибетләр һәм рестораннар белән җиһазландырылган. Ул Поволжье төбәгендә иң зур аэропортларның берсе һәм Татарстан өчен мөһим транспорт узелы."
},
{
"name": "Казан-2 (эшләгән вакытта)",
"description": "Элекке эчке рейслар һәм хәрби кирәклекләр өчен кулланылган аэропорт. Хәзерге вакытта тулы көченә эшләми, чөнки барлык пассажир рейслары Казан Халыкара Аэропортына күчерелгән. Аэропорт бинасы коммерция авиаперевозкалары өчен ябык."
}
]
}

View File

@@ -1,27 +1 @@
[
{ "id": 1, "description": "1000 часто используемых", "imageFilename": "kart1.jpg", "words": [0, 1] },
{
"id": 2,
"description": "10 слов в Data Science",
"imageFilename": "kart1.jpg",
"words": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
},
{
"id": 3,
"description": "Job Interview",
"imageFilename": "kart1.jpg",
"words": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
},
{
"id": 4,
"description": "ReactJS",
"imageFilename": "kart1.jpg",
"words": [23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
},
{
"id": 5,
"description": "NodeJS",
"imageFilename": "kart1.jpg",
"words": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42]
}
]
[{"id":1,"description":"10 слов в Data Science","imageFilename":"kart1.jpg","words":[2,3,4,5,6,7,8,9,10,11,12]}]

View File

@@ -132,306 +132,5 @@
"During model validation, its ability to make accurate predictions on new data is checked.",
"Validation showed that the model is robust against changes in data and has low generalization error."
]
},
{
"id": 13,
"word": "resume",
"translation": "резюме",
"definition": "a document containing a summary of your work experience, education, and skills that you submit when applying for a job",
"synonyms": ["CV", "curriculum vitae"],
"examples": [
"Make sure to update your resume before the interview."
]
},
{
"id": 14,
"word": "interviewer",
"translation": "интервьюер",
"definition": "the person who conducts an interview, typically a representative of the company or organization offering the job",
"synonyms": ["questioner", "examiner"],
"examples": [
"The interviewer asked about my previous work experiences."
]
},
{
"id": 15,
"word": "qualification",
"translation": "квалификация",
"definition": "a quality, skill, or attribute that makes someone suitable for a particular job or activity",
"synonyms": ["credential", "competence"],
"examples": [
"Do you have any qualifications in project management?"
]
},
{
"id": 16,
"word": "experience",
"translation": "опыт",
"definition": "practical contact with and observation of facts or events, especially those gained through employment",
"synonyms": ["background", "track record"],
"examples": [
"She has five years of experience in marketing."
]
},
{
"id": 17,
"word": "skillset",
"translation": "набор навыков",
"definition": "the range of skills and abilities possessed by an individual",
"synonyms": ["abilities", "talents"],
"examples": [
"Her skillset includes proficiency in several programming languages."
]
},
{
"id": 18,
"word": "cover letter",
"translation": "сопроводительное письмо",
"definition": "a document sent with your resume that provides additional information on why you're qualified for the position",
"synonyms": ["application letter", "letter of introduction"],
"examples": [
"Always include a well-written cover letter with your application."
]
},
{
"id": 19,
"word": "hiring manager",
"translation": "менеджер по найму",
"definition": "the person responsible for making hiring decisions within a company or department",
"synonyms": ["recruiter", "HR manager"],
"examples": [
"The hiring manager will review all applications and select candidates for interviews."
]
},
{
"id": 20,
"word": "job description",
"translation": "описание вакансии",
"definition": "a detailed account of the responsibilities, duties, required skills, and working conditions associated with a specific job",
"synonyms": ["position profile", "role specification"],
"examples": [
"Read the job description carefully to understand what the employer is looking for."
]
},
{
"id": 21,
"word": "salary negotiation",
"translation": "переговоры о зарплате",
"definition": "the process of discussing and agreeing upon the compensation for a job, including salary, benefits, and other forms of remuneration",
"synonyms": ["compensation discussion", "pay bargaining"],
"examples": [
"It's important to prepare for salary negotiations during the final stages of the interview process."
]
},
{
"id": 22,
"word": "reference",
"translation": "рекомендация",
"definition": "a person who can vouch for your qualifications, character, and work ethic, often contacted by potential employers",
"synonyms": ["endorsement", "testimonial"],
"examples": [
"Be prepared to provide references from former supervisors or colleagues."
]
},
{
"id": 23,
"word": "component",
"translation": "компонент",
"definition": "A reusable piece of code that renders part of the user interface.",
"synonyms": ["module", "widget"],
"examples": [
"In React, components are the building blocks of the UI."
]
},
{
"id": 24,
"word": "props",
"translation": "пропсы",
"definition": "Short for 'properties', these are read-only components passed down from parent components to child components.",
"synonyms": ["attributes", "parameters"],
"examples": [
"Props allow you to pass data between components."
]
},
{
"id": 25,
"word": "state",
"translation": "состояние",
"definition": "An object that holds data specific to a component which may change over time.",
"synonyms": ["data", "context"],
"examples": [
"Managing state is crucial for dynamic web applications."
]
},
{
"id": 26,
"word": "render",
"translation": "рендеринг",
"definition": "The process of updating the DOM to match the current state of a component.",
"synonyms": ["update", "refresh"],
"examples": [
"React efficiently handles rendering to ensure smooth updates."
]
},
{
"id": 27,
"word": "virtual DOM",
"translation": "виртуальный DOM",
"definition": "A lightweight copy of the actual DOM maintained by React to improve performance by minimizing updates to the real DOM.",
"synonyms": ["shadow tree", "virtual representation"],
"examples": [
"Virtual DOM allows React to update only necessary parts of the UI."
]
},
{
"id": 28,
"word": "JSX",
"translation": "JSX",
"definition": "A syntax extension to JavaScript used in React to describe what the user interface should look like.",
"synonyms": ["template language", "syntax extension"],
"examples": [
"JSX makes it easier to write and understand React components."
]
},
{
"id": 29,
"word": "hooks",
"translation": "хуки",
"definition": "Functions that let you use state and other React features without writing a class.",
"synonyms": ["functionalities", "utilities"],
"examples": [
"Hooks make functional components more powerful."
]
},
{
"id": 30,
"word": "event handling",
"translation": "обработка событий",
"definition": "The mechanism by which React components respond to user actions such as clicks, key presses, etc.",
"synonyms": ["interaction management", "action response"],
"examples": [
"Event handlers in React allow you to define how components react to user interactions."
]
},
{
"id": 31,
"word": "lifecycle methods",
"translation": "методы жизненного цикла",
"definition": "Methods called at different stages of a component's existence, allowing developers to perform tasks at each stage.",
"synonyms": ["phase callbacks", "stage handlers"],
"examples": [
"Lifecycle methods help manage the behavior of components throughout their lifecycle."
]
},
{
"id": 32,
"word": "routing",
"translation": "маршрутизация",
"definition": "The process of defining and managing navigation paths within a single-page application.",
"synonyms": ["navigation control", "path management"],
"examples": [
"React Router is commonly used for routing in React apps."
]
},
{
"id": 33,
"word": "server-side",
"translation": "серверная сторона",
"definition": "Refers to operations performed by the server in contrast to client-side operations.",
"synonyms": ["backend", "back-end"],
"examples": [
"Node.js is primarily used for server-side development."
]
},
{
"id": 34,
"word": "asynchronous",
"translation": "асинхронный",
"definition": "Programming model where operations execute independently of other operations, allowing efficient handling of multiple requests simultaneously.",
"synonyms": ["non-blocking", "concurrent"],
"examples": [
"Node.js uses asynchronous I/O to handle many concurrent connections efficiently."
]
},
{
"id": 35,
"word": "callback",
"translation": "коллбек",
"definition": "A function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.",
"synonyms": ["handler", "continuation"],
"examples": [
"Callbacks are widely used in Node.js for handling asynchronous operations."
]
},
{
"id": 36,
"word": "event loop",
"translation": "цикл событий",
"definition": "Mechanism in Node.js that handles asynchronous operations and ensures non-blocking I/O by offloading operations to the system kernel whenever possible.",
"synonyms": ["event-driven architecture", "runtime environment"],
"examples": [
"The event loop is fundamental to understanding how Node.js works."
]
},
{
"id": 37,
"word": "package manager",
"translation": "менеджер пакетов",
"definition": "Tool used to install, update, configure, and remove packages in Node.js projects.",
"synonyms": ["dependency manager", "library manager"],
"examples": [
"npm and yarn are popular package managers for Node.js."
]
},
{
"id": 38,
"word": "middleware",
"translation": "промежуточное ПО",
"definition": "Software that sits between an application and the backend infrastructure, providing additional functionality to the request-response cycle.",
"synonyms": ["interceptor", "filter"],
"examples": [
"Express.js uses middleware to handle common tasks like logging, authentication, and error handling."
]
},
{
"id": 39,
"word": "REST API",
"translation": "REST API",
"definition": "Architectural style for building APIs using HTTP methods to perform CRUD operations on resources.",
"synonyms": ["web service", "API design pattern"],
"examples": [
"Many Node.js applications implement RESTful APIs to communicate with clients."
]
},
{
"id": 40,
"word": "streams",
"translation": "потоки",
"definition": "Data structures that facilitate continuous transfer of data in chunks rather than loading everything into memory at once.",
"synonyms": ["data flow", "pipeline"],
"examples": [
"Streams are useful for handling large files or continuous data in Node.js."
]
},
{
"id": 41,
"word": "cluster module",
"translation": "модуль кластера",
"definition": "Built-in module in Node.js that allows an application to be split into multiple processes running on separate CPU cores, improving performance and scalability.",
"synonyms": ["multi-processing", "parallel execution"],
"examples": [
"Using the cluster module can significantly enhance the throughput of a Node.js application."
]
},
{
"id": 42,
"word": "event emitter",
"translation": "излучатель событий",
"definition": "Class in Node.js that facilitates communication between objects in an application by emitting named events that other objects can listen to.",
"synonyms": ["publisher-subscriber", "observer pattern"],
"examples": [
"Event emitters are useful for implementing custom event-based systems in Node.js."
]
}
]

View File

@@ -9,13 +9,13 @@
"id": 2,
"name": "Командная встреча",
"description": "Ежеквартальная встреча для согласования целей",
"date": "2025-02-02T00:00:00Z"
"date": 1672444800000
},
{
"id": 3,
"name": "День рождения",
"description": "Празднование 30-летия Ивана",
"date": "2025-02-02T00:00:00Z"
"date": "2025-01-25"
},
{
"id": 4,

View File

@@ -0,0 +1,83 @@
const { v4: uuidv4 } = require('uuid');
const axios = require('axios');
const https = require('https');
process.env.GIGACHAT_AUTH =
'YzA2ODg0NTYtYzE3Yi00OGJkLTkyY2MtMzdkM2U0YjE4ZmQ5Ojc0ZWVhN2YxLTI5MWYtNDNiZS05MTY2LWIyZjg5MGY2YWQ3Ng==';
const agent = new https.Agent({
rejectUnauthorized: false
});
class controller {
async getText(req, res) {
try {
const { text } = req.body;
const headers = {
Authorization: `Basic ${process.env.GIGACHAT_AUTH}`,
RqUID: uuidv4(),
'Content-Type': 'application/x-www-form-urlencoded',
Accept: 'application/json'
};
const access_token = await axios
.post('https://ngw.devices.sberbank.ru:9443/api/v2/oauth', encodeURI(`scope=GIGACHAT_API_PERS`), {
headers: headers,
httpsAgent: agent
})
.then((response) => {
return response.data.access_token;
})
.catch((error) => {
return error;
});
const systemMessage = ` Создай анализ совместимости между двумя людьми и отобрази результат исключительно в формате JSON, который будет результатом работы 'JSON.stringify()'. Он должен состоять из следующих частей:
1. **Совместимость** в процентах.
2. **Список точек соприкосновения**. Перечисли их через запятую.
3. **Список потенциальных различий**. Перечисли через запятую.
Результат должен быть строкой JSON, полученной через 'JSON.stringify()', и не содержать дополнительных пояснений или текста.
Пример:
{"compatibility": 70, "pointsOfContact": ["общие интересы", "совместные увлечения", "взаимное уважение"], "potentialDifferences": ["различные жизненные цели", "противоположные характеры", "несовпадающие ценности"]}
`;
const textAI = await axios
.post(
'https://gigachat.devices.sberbank.ru/api/v1/chat/completions',
JSON.stringify({
model: 'GigaChat:latest',
messages: [
{
role: 'user',
content: systemMessage + text
}
],
profanity_check: true
}),
{
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${access_token}`
},
httpsAgent: agent
}
)
.then((response) => {
return response.data.choices[0].message.content;
})
.catch((error) => {
return error;
});
res.status(200).json({ text: textAI });
} catch (e) {
res.status(400).json({ message: e });
}
}
}
module.exports = new controller();

View File

@@ -0,0 +1,6 @@
const router = require('express').Router();
const controller = require('./controller');
router.post('/', controller.getText);
module.exports = router;

View File

@@ -2,8 +2,19 @@ const router = require('express').Router();
const interestsRouter = require('./interests');
const usersRouter = require('./users');
const eventsRouter = require('./events');
const gigachatRouter = require('./gigachat');
const telegramRouter = require('./telegram');
module.exports = router;
const delay =
(ms = 1000) =>
(req, res, next) => {
setTimeout(next, ms);
};
router.use(delay());
router.use('/interests', interestsRouter);
router.use('/users', usersRouter);
router.use('/events', eventsRouter);
router.use('/gigachat', gigachatRouter);
router.use('/telegram', telegramRouter);

View File

@@ -1,19 +1,19 @@
[
{"value":"Стартапы, поиск команды и нетворкинг", "label":"Стартапы, поиск команды и нетворкинг"},
{"value":"Искусство, фотография и дизайн", "label":"Искусство, фотография и дизайн"},
{"value":"Музыка", "label":"Музыка"},
{"value":"Хореография", "label":"Хореография"},
{"value":"Спорт, фитнес и ЗОЖ", "label":"Спорт, фитнес и ЗОЖ"},
{"value":"Литература и история", "label":"Литература и история"},
{"value":"Политика, социология, активизм и дебаты", "label":"Политика, социология, активизм и дебаты"},
{"value":"Кино и другое многомодальное искусство", "label":"Кино и другое многомодальное искусство"},
{"value":"Психология и психическое здоровье", "label":"Психология и психическое здоровье"},
{"value":"Соревновательные видеоигры", "label":"Соревновательные видеоигры"},
{"value":"Новые технологии, ИИ, техника", "label":"Новые технологии, ИИ, техника"},
{"value":"Математика, физика и информатика", "label":"Математика, физика и информатика"},
{"value" :"Волонтерство и благотворительность", "label": "Волонтерство и благотворительность"},
{"value" :"Настольные игры", "label": "Настольные игры"},
{"value" :"Путешествия и туризм", "label": "Путешествия и туризм"},
{"value" :"Английский (иностранные языки)", "label": "Английский (иностранные языки)"},
{"value" :"Цифровые кафедры", "label": "Цифровые кафедры"}
"Стартапы, поиск команды и нетворкинг",
"Искусство, фотография и дизайн",
"Музыка",
"Хореография",
"Спорт, фитнес и ЗОЖ",
"Литература и история",
"Политика, социология, активизм и дебаты",
"Кино и другое многомодальное искусство",
"Психология и психическое здоровье",
"Соревновательные видеоигры",
"Новые технологии, ИИ, техника",
"Математика, физика и информатика",
"Волонтерство и благотворительность",
"Настольные игры",
"Путешествия и туризм",
"Английский (иностранные языки)",
"Цифровые кафедры"
]

View File

@@ -0,0 +1,24 @@
const axios = require('axios');
process.env.TELEGRAM_TOKEN = '7866617284:AAHDOfPQJdKmufOdRgFza6XA8ZWRHPeA_Yc';
class controller {
async sendMessage(req, res) {
try {
const { chat_id, text } = req.body;
const response = await axios.get(`https://api.telegram.org/bot${process.env.TELEGRAM_TOKEN}/sendMessage`, {
params: {
chat_id: chat_id,
text: text,
parse_mode: 'html'
}
});
res.json(response.data);
} catch (e) {
res.status(400).json({ message: e.message });
}
}
}
module.exports = new controller();

View File

@@ -0,0 +1,6 @@
const router = require('express').Router();
const controller = require('./controller');
router.post('/', controller.sendMessage);
module.exports = router;

View File

@@ -6,8 +6,8 @@
"about": "Разработчик с 10-летним стажем, увлекаюсь новыми технологиями.",
"email": "ivan.ivanov@example.com",
"interests": [
{ "value": "Новые технологии, ИИ, техника", "label": "Новые технологии, ИИ, техника" },
{ "value": "Музыка", "label": "Музыка" }
"Новые технологии, ИИ, техника",
"Музыка"
]
},
{
@@ -17,8 +17,8 @@
"about": "Люблю путешествия и фотографию, обожаю изучать новые культуры.",
"email": "maria.smirnova@example.com",
"interests": [
{ "value": "Путешествия и туризм", "label": "Путешествия и туризм" },
{ "value": "Искусство, фотография и дизайн", "label": "Искусство, фотография и дизайн" }
"Путешествия и туризм",
"Искусство, фотография и дизайн"
]
},
{
@@ -28,8 +28,8 @@
"about": "Финансовый аналитик, интересуюсь инвестициями и рынками.",
"email": "aleksey.kuznetsov@example.com",
"interests": [
{ "value": "Политика, социология, активизм и дебаты", "label": "Политика, социология, активизм и дебаты" },
{ "value": "Математика, физика и информатика", "label": "Математика, физика и информатика" }
"Политика, социология, активизм и дебаты",
"Математика, физика и информатика"
]
},
{
@@ -39,8 +39,8 @@
"about": "Дизайнер интерьеров, люблю создавать уютные и стильные пространства.",
"email": "olga.petrovna@example.com",
"interests": [
{ "value": "Искусство, фотография и дизайн", "label": "Искусство, фотография и дизайн" },
{ "value": "Кино и другое многомодальное искусство", "label": "Кино и другое многомодальное искусство" }
"Искусство, фотография и дизайн",
"Кино и другое многомодальное искусство"
]
},
{
@@ -50,8 +50,8 @@
"about": "Тренер по фитнесу, придерживаюсь здорового образа жизни.",
"email": "dmitriy.sidorov@example.com",
"interests": [
{ "value": "Спорт, фитнес и ЗОЖ", "label": "Спорт, фитнес и ЗОЖ" },
{ "value": "Волонтерство и благотворительность", "label": "Волонтерство и благотворительность" }
"Спорт, фитнес и ЗОЖ",
"Волонтерство и благотворительность"
]
},
{
@@ -61,8 +61,8 @@
"about": "Психолог, занимаюсь личностным ростом и развитием.",
"email": "elena.volkova@example.com",
"interests": [
{ "value": "Психология и психическое здоровье", "label": "Психология и психическое здоровье" },
{ "value": "Литература и история", "label": "Литература и история" }
"Психология и психическое здоровье",
"Литература и история"
]
},
{
@@ -72,8 +72,8 @@
"about": "Ведущий мероприятий и организатор, люблю работать с людьми.",
"email": "artem.morozov@example.com",
"interests": [
{ "value": "Настольные игры", "label": "Настольные игры" },
{ "value": "Кино и другое многомодальное искусство", "label": "Кино и другое многомодальное искусство" }
"Настольные игры",
"Кино и другое многомодальное искусство"
]
},
{
@@ -83,8 +83,8 @@
"about": "Веду блог о моде и стиле, увлекаюсь новыми трендами.",
"email": "irina.fedorova@example.com",
"interests": [
{ "value": "Мода", "label": "Мода" },
{ "value": "Путешествия и туризм", "label": "Путешествия и туризм" }
"Мода",
"Путешествия и туризм"
]
},
{
@@ -94,8 +94,8 @@
"about": "Разработчик мобильных приложений, увлекаюсь игровыми технологиями.",
"email": "sergey.chernov@example.com",
"interests": [
{ "value": "Соревновательные видеоигры", "label": "Соревновательные видеоигры" },
{ "value": "Новые технологии, ИИ, техника", "label": "Новые технологии, ИИ, техника" }
"Соревновательные видеоигры",
"Новые технологии, ИИ, техника"
]
},
{
@@ -105,8 +105,8 @@
"about": "Работаю в области маркетинга, увлекаюсь продвижением брендов.",
"email": "tatyana.lebedeva@example.com",
"interests": [
{ "value": "Маркетинг", "label": "Маркетинг" },
{ "value": "Литература и история", "label": "Литература и история" }
"Маркетинг",
"Литература и история"
]
},
{
@@ -116,8 +116,8 @@
"about": "Инженер-программист, увлекаюсь разработкой игр и виртуальной реальностью.",
"email": "andrey.vasilyev@example.com",
"interests": [
{ "value": "Разработка игр", "label": "Разработка игр" },
{ "value": "Виртуальная реальность", "label": "Виртуальная реальность" }
"Разработка игр",
"Виртуальная реальность"
]
},
{
@@ -127,8 +127,8 @@
"about": "Преподаватель литературы, люблю поэзию и классическую литературу.",
"email": "natalya.kozlova@example.com",
"interests": [
{ "value": "Литература и история", "label": "Литература и история" },
{ "value": "Образование и наука", "label": "Образование и наука" }
"Литература и история",
"Образование и наука"
]
},
{
@@ -138,8 +138,8 @@
"about": "Спортсмен, занимаюсь бегом и триатлоном.",
"email": "pavel.novikov@example.com",
"interests": [
{ "value": "Спорт, фитнес и ЗОЖ", "label": "Спорт, фитнес и ЗОЖ" },
{ "value": "Путешествия и туризм", "label": "Путешествия и туризм" }
"Спорт, фитнес и ЗОЖ",
"Путешествия и туризм"
]
},
{
@@ -149,8 +149,8 @@
"about": "Архитектор, увлекаюсь современным дизайном и урбанистикой.",
"email": "ekaterina.mikhailova@example.com",
"interests": [
{ "value": "Искусство, фотография и дизайн", "label": "Искусство, фотография и дизайн" },
{ "value": "Урбанистика", "label": "Урбанистика" }
"Искусство, фотография и дизайн",
"Урбанистика"
]
},
{
@@ -160,8 +160,8 @@
"about": "Бизнес-консультант, помогаю компаниям развиваться.",
"email": "viktor.sokolov@example.com",
"interests": [
{ "value": "Бизнес и предпринимательство", "label": "Бизнес и предпринимательство" },
{ "value": "Политика, социология, активизм и дебаты", "label": "Политика, социология, активизм и дебаты" }
"Бизнес и предпринимательство",
"Политика, социология, активизм и дебаты"
]
},
{
@@ -171,8 +171,8 @@
"about": "Художник, работаю в стиле абстракционизма.",
"email": "anna.pavlova@example.com",
"interests": [
{ "value": "Искусство, фотография и дизайн", "label": "Искусство, фотография и дизайн" },
{ "value": "Кино и другое многомодальное искусство", "label": "Кино и другое многомодальное искусство" }
"Искусство, фотография и дизайн",
"Кино и другое многомодальное искусство"
]
},
{
@@ -182,8 +182,8 @@
"about": "Ученый, занимаюсь исследованиями в области биотехнологий.",
"email": "denis.ivanov@example.com",
"interests": [
{ "value": "Биология и биотехнологии", "label": "Биология и биотехнологии" },
{ "value": "Образование и наука", "label": "Образование и наука" }
"Биология и биотехнологии",
"Образование и наука"
]
},
{
@@ -193,8 +193,8 @@
"about": "Повар, специализируюсь на авторской кухне.",
"email": "lyudmila.kuznetsova@example.com",
"interests": [
{ "value": "Кулинария", "label": "Кулинария" },
{ "value": "Путешествия и туризм", "label": "Путешествия и туризм" }
"Кулинария",
"Путешествия и туризм"
]
},
{
@@ -204,8 +204,8 @@
"about": "Музыкант, играю на гитаре и пишу песни.",
"email": "grigoriy.petrov@example.com",
"interests": [
{ "value": "Музыка", "label": "Музыка" },
{ "value": "Кино и другое многомодальное искусство", "label": "Кино и другое многомодальное искусство" }
"Музыка",
"Кино и другое многомодальное искусство"
]
},
{
@@ -215,8 +215,8 @@
"about": "Врач, специализируюсь на профилактической медицине.",
"email": "valentina.semenova@example.com",
"interests": [
{ "value": "Медицина и здоровье", "label": "Медицина и здоровье" },
{ "value": "Спорт, фитнес и ЗОЖ", "label": "Спорт, фитнес и ЗОЖ" }
"Медицина и здоровье",
"Спорт, фитнес и ЗОЖ"
]
},
{
@@ -226,8 +226,8 @@
"about": "Люблю путешествия и фотографию, обожаю изучать новые культуры.",
"email": "maria.smirnova@example.com",
"interests": [
{ "value": "Путешествия и туризм", "label": "Путешествия и туризм" },
{ "value": "Искусство, фотография и дизайн", "label": "Искусство, фотография и дизайн" }
"Путешествия и туризм",
"Искусство, фотография и дизайн"
]
}
]