Commit f570e895 by Иван Кубота

5 category

parent 435843c5
Pipeline #561 failed with stage
категория,номер вопроса,Заголовок,карточка,множественный выбор,Тип вопроса,Тип ответа
5,1,"Какое из утверждений о ""Биточке курином с перцем"" НЕ верно:",1,нет,текст с картинкой,текст
5,2,"Какая начинка у ""Замороженных блинчиков с вишней""?",2,нет,текст с картинкой,текст
5,3,"Какое из определений ниже, верно описывает ""Волованы с клюквой""?",3,нет,текст с картинкой,текст
5,4,"Как можно использовать ""Ягоды сушеной голубики""?",4,да,текст с картинкой,текст
5,5,"Из чего состоит мясная прослойка в ""Картофельной запеканке с мясом""?",5,нет,текст с картинкой,текст
5,6,"Что можете сказать про ""Йогурт высокобелковый 2,1%""? ",6,нет,текст с картинкой,текст
5,7,"Из чего приготовленны котлеты в продукте ""Картофель с рыбными котлетами ""?",7,нет,текст с картинкой,текст
5,8,"Что такое ""Кокодукт ""Греческий"" с ананасом""?",8,нет,текст с картинкой,текст
5,9,"В чем отличие ""Колечек заварных воздушных"" от сушек?",9,нет,текст с картинкой,текст
5,10,"Какое из ниже перечисленных описаний наиболее точно подходит к продукту ""Конфеты кокосовые с какао""",10,нет,текст с картинкой,текст
5,11,"С чем вы порекомендуете употребить ""Лепёшки заварные с семенами""?",11,да,текст с картинкой,текст
5,12,"Какие из нижеперечисленных фактов относятся к продукту ""Топленое молоко""?",12,да,текст с картинкой,текст
5,13,"Чем обеспечена польза цельного молока для костей, суставов, нормального сна и кислотности желудка?",13,нет,текст с картинкой,текст
5,14,"Каким действиями обладает ""Молочко для тела для мам и малышей""?",14,да,текст с картинкой,текст
5,15,"Как можно использовать ""Кокосовый мусс""?",15,да,текст с картинкой,текст
5,16,"Какой вкус у ""Творожного шоколадного мусса с малиной""?",16,нет,текст с картинкой,текст
5,17,"Какого ингридиента нет в продукте ""Омлет с помидорами""?",17,нет,текст с картинкой,текст
5,18,"Кому вы порекомендуете ""Паштет куриный""?",18,да,текст с картинкой,текст
5,19,"Какие из нижепредставленных фактов относятся к продукту ""Подсолнечная паста с белым шоколадом""?",19,да,текст с картинкой,текст
5,20,"Какие из ниже представленных фактов относятся к продукту ""Нешлифованный красный рис"".",20,да,текст с картинкой,текст
5,21,"Кому вы предложите ""Салями с оливками""?",21,нет,текст с картинкой,текст
5,22,"За счет чего у ""Сарделек детских"" относительно длинный срок хранения? 30 суток",22,нет,текст с картинкой,текст
5,23,"Какими свойствами обладает продукт ""Смородина красная протёртая с сахаром""?",23,да,текст с картинкой,текст
5,24,"Как вы порекомендуете использовать продукт ""Сом филе-ломтики под соусом Унаги г/к""?",24,да,текст с картинкой,текст
5,25,"Кому вы порекомендуете ""Суп мексиканский""?",25,нет,текст с картинкой,текст
5,26,"Что вы можете рассказать о новинке: ""Суп Уха""?",26,нет,текст с картинкой,текст
5,27,"Какое мясо используется при приготовлении ""Супа- гуляш""?",27,нет,текст с картинкой,текст
5,28,"С чем можно сочетать ""Творожный сыр""?",28,да,текст с картинкой,текст
5,29,"Где присутствует орехи в ""Творожном сырке"" с фундуком?",29,нет,текст с картинкой,текст
5,30,"Какие из нижеперечисленных фактов относятся к продукту ""Творог обезжиренный""",30,да,текст с картинкой,текст
5,31,"Из чего состоит десерт ""Эстерхази""",31,нет,текст с картинкой,текст
5,32,"Кому можно порекомендовать продукт ""Фасоль белая натуральная без сахара""?",32,да,текст с картинкой,текст
5,33,"Кому вы порекомендуете ""Филе грудки индейки нарезка"".",33,да,текст с картинкой,текст
5,34,"Какая текстура у ""Хлеба ржано-пшеничного цельнозернового бездрожжевого""",34,нет,текст с картинкой,текст
5,35,Кому вы порекомендуете Чизкейк творожный ванильный?,35,нет,текст с картинкой,текст
\ No newline at end of file
......@@ -447,7 +447,8 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
{p: '1cards_2020_02_28.csv', i: '1components.csv'},
{q: '2questions.csv', a: '2answers.csv', c: '2cards_2020_2_21.csv'},
{q: '3questions.csv', a: '3answers.csv', c: '3cards.csv'},
{q: '4questions.csv', a: '4answers.csv', c: '4cards.csv'}
{q: '4questions.csv', a: '4answers.csv', c: '4cards.csv'},
{c: 'top-35-march-c.csv', q: 'top-35-march-q.csv', a: 'top-35-march-a.csv'},
]);
let id = 1;
let theInc = ()=>id++;
......@@ -538,7 +539,8 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
'номер карточки': 'id',
'Текст карточки': 'description',
'Картинка': 'image',
'Название': 'title'
'Название': 'title',
'категория': 'category_id'
},
types: {
id: Number,
......@@ -582,7 +584,8 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
'Тип вопроса': 'image',
'множественный выбор': 'multiple',
'Тип ответа': 'answer_type',
'\\': 'category'
'\\': 'category',
'категория': 'category'
},
types: {
qID: Number,
......@@ -598,10 +601,10 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
a.cardInfoID = adishen+a.cardInfoID;
a.qID = adishen+a.qID;
a.category_id = moreElement.q[0]|0;
a.category_id = moreElement.q[0]|a.category|0;
a.answers = [];
a.multiple = ( a.multiple + '' )[ 0 ].toLowerCase() in { 'д': 1, '1': 1, 'y': '1', 'c': '1' };
a.image = null;
a.image = a.image.indexOf('с ')>-1? was[a.qID].image :null;
},
index: 'qID'
} );
......@@ -645,7 +648,7 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
data.after && data.after(data);
var tags = {},
max = 10;
console.log(JSON.stringify(Object.keys(data.products).reduce((s, n)=>{
/*console.log(JSON.stringify(Object.keys(data.products).reduce((s, n)=>{
var norm = normalizeText(data.products[n].title);
if(data.products[n].use || data.products[n].subcat){
if(!(data.products[n].subcat in tags)){
......@@ -662,7 +665,7 @@ data = {tags:[], connections:[], more:[], standardQuestions: {}, standardAnswers
}
return s
},{}),null,2));
},{}),null,2));*/
})();
......
......@@ -141,6 +141,19 @@ module.exports = {
}
},
'/api/get/questions': {
method: 'GET',
summary: 'Get questions attached to standard card',
options:{
id: {required: true, description: 'Item ID', type: Number},
category: {required: false, description: 'Item Category', type: Number},
title: {required: false, description: 'Item Category', type: String}
},
fn: async function(args) {
debugger
ctx.probabilityRand
}
},
'/api/generate/random': {
method: 'GET',
summary: 'Generate random quiz',
......@@ -196,11 +209,23 @@ module.exports = {
type: {required: false, description: '1 - products, 2 - standards', type: Number},
nolog: {required: false, description: 'remove human readable log', type: Boolean},
stats: {required: false, description: 'aggregate stats and explain questions', type: Boolean},
human: {required: false, description: 'aggregate stats and explain questions', type: Boolean}
human: {required: false, description: 'aggregate stats and explain questions', type: Boolean},
category: {required: false, description: 'comma sepparated categories', type: String},
},
fn: async function(args, req, res) {
await ctx.ready; const rand = ctx.rand, seeded = ctx.seeded;
let useCategory = false,
categoryHash = {};
if(args.category){
useCategory = true;
categoryHash = args.category
.split(',')
.map(a=>a.trim())
.reduce((s,c)=>{s[c]=1; return s}, {});
}
let error = false;
let seed = args.seed || Math.random().toString(36).substr(2);
ctx.seeded.setStringSeed( seed );
let used = {}, generated = 0;
......@@ -222,7 +247,7 @@ module.exports = {
p: photo,//seeded() > 0.7,
c: 1
};
if( seeded() > 0.3 ){
if( (useCategory && !categoryHash[1]) || seeded() > 0.3 ){
//if( last.c === 1 && seeded() > 0.5 ){
cur = {
c: 2
......@@ -247,13 +272,30 @@ module.exports = {
result = ctx.quizGenerator( cur.m ? 'checkbox' : 'radio', cur.p );
}else{
let counter = 0, r = 2;
do{
r = rand( 1, countStdQ );
let q = data.standardQuestions[ r ];
if(q && !(q.category_id+'.'+q.qID in used))
if(useCategory){
let possible = Object.values(data.standardQuestions)
.map( ( q ) => ( { q, c: q.category_id, n: q.qID } ) )
.filter( q => q.c in categoryHash )
.filter( q => !(q.c +'.'+q.n in used) )
.map( q => q.n );
if(possible.length){
r = rand( possible )
}else{
error = 'Not enough questions';
break;
counter++;
}while(counter < 100);
}
}else{
do{
r = rand( 1, countStdQ );
let q = data.standardQuestions[ r ];
if( q && !( q.category_id + '.' + q.qID in used ) )
break;
counter++;
}while( counter < 100 );
}
debugger
result = ctx.standardGenerator(()=>r);
......@@ -267,6 +309,8 @@ module.exports = {
if(tries === 100)
break;
}while(result.categoryId+'.'+result.productId in used || (cur.c>1 && result.categoryId === cur.c));
if(error)
break;
if(tries !== 100){
cur.c = result.categoryId;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment