Skip to content

Commit

Permalink
Created ActivityLog models and controllers. Now, each classification …
Browse files Browse the repository at this point in the history
…inserts a log activity on database. Also, added server routes to make feedbacks.
  • Loading branch information
maiquelcraash committed Mar 7, 2018
1 parent b82eae4 commit a41ea69
Show file tree
Hide file tree
Showing 5 changed files with 149 additions and 7 deletions.
42 changes: 42 additions & 0 deletions controller/activityLogController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* Created by maiquel on 07/03/18.
*/

(function () {
"use strict";

const activityLogModel = require("../model/activityLogModel");

let activityLogController = () => {

let createActivity = (classificationResult, callback) => {

let activity = new activityLogModel();
activity.text = classificationResult.text;
activity.result = classificationResult;
activity.datetime = new Date();

activity.save((err, newActivity) => {
if (err) {
console.log(err);
}
else {
console.log("Atividade salva com id: " + newActivity._id);
callback(newActivity)
}
});
};

let updateActivity = (activityID, feedback, callback) => {
activityLogModel.findByIdAndUpdate(activityID, {feedback: feedback}, callback);
};

return {
createActivity: createActivity,
updateActivity: updateActivity
}

};

module.exports = activityLogController();
}());
12 changes: 9 additions & 3 deletions controller/classifierController.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
const natural = require('natural'),
twitterController = require('./twitterController'),
POSTaggerController = require('./POSTaggerController'),
activityLogController = require('./activityLogController'),
properties = require('../config/properties');

let classifier;
Expand All @@ -26,7 +27,7 @@
train(callback);
};

let getClassification = (target) => {
let getClassification = (target, callback) => {
let result = classifier.classify(target);
let details = classifier.getClassifications(target);
let percentuals = {};
Expand All @@ -45,14 +46,19 @@
effectiveResult = "Agressivo";
}

return {
let results = {
text: target,
result: result,
details: details,
percentuals: percentuals,
effectiveResult: effectiveResult,
pos_tag: POSTaggerController.getPOSTags(target)
}
};

activityLogController.createActivity(results, (newActivity) => {
results.activityID = newActivity._id;
callback(results);
});
};

function train(callback) {
Expand Down
25 changes: 21 additions & 4 deletions main-services/classifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
bodyParser = require('body-parser'),
properties = require('../config/properties'),
classifierController = require('../controller/classifierController'),
activityLogController = require('../controller/activityLogController'),
db = require('../config/db');

db.getConnection();
Expand All @@ -22,7 +23,7 @@
}));

classifierController.trainBayesClassifier(() => {
// classifierController.trainLogisticRegressionClassifier(() => {
// classifierController.trainLogisticRegressionClassifier(() => {
app.server.listen(properties.CLASSIFIER_SERVER_PORT);
console.log("Server started on port " + properties.CLASSIFIER_SERVER_PORT);
});
Expand All @@ -39,10 +40,26 @@
let target = req.body.target;

console.log("\nConnection from " + ip + "\n Processing: \"" + target + "\"");
let result = classifierController.getClassification(target);
console.log("Result: " + result.effectiveResult);
classifierController.getClassification(target, (results) => {
console.log("Result: " + results.effectiveResult);
res.json(results);
});
});

app.post('/feedback', (req, res) => {
let activityID = req.body.activityID;
let feedback = req.body.feedback;

res.json(result);
activityLogController.updateActivity(activityID, feedback, (err) => {
if (err) {
res.status(400);
res.json(err);
}
else {
res.status(201);
res.json({"Status": "OK"});
}
})
});

}());
45 changes: 45 additions & 0 deletions main-services/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
next();
});

/* Server Routes */
app.post('/classify', (req, serverRes) => {
let target = req.body.target;

Expand Down Expand Up @@ -72,4 +73,48 @@

});

app.post('/feedback', (req, serverRes) => {
let activityID = req.body.activityID;
let feedback = req.body.feedback;

const postData = {
activityID: activityID,
feedback: feedback
};

let options = {
host: properties.CLASSIFIER_HOST,
port: properties.CLASSIFIER_SERVER_PORT,
method: 'POST',
path: "/feedback",
headers: {
'Accept': 'application/json', //CONTENT NEGOTIATION: indica ao servidor que a requisição espera um json como resposta
'Content-type': 'application/json'
}
};

const classifierRequest = http.request(options, (res) => {
const {statusCode} = res;

res.setEncoding('utf8');
res.on('data', (data) => {
serverRes.json(JSON.parse(data));
});

});

classifierRequest.on('error', (e) => {
classifierRequest.status = 400;
if (e.code === "ECONNREFUSED") {
serverRes.send({error: "Classifier is offline"})
}
else {
serverRes.send(e.message);
}
});

classifierRequest.end(JSON.stringify(postData));

});

}());
32 changes: 32 additions & 0 deletions model/activityLogModel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/**
* Created by maiquel on 07/03/18.
*/

(function () {
"use strict";


let mongoose = require("mongoose"),
Schema = mongoose.Schema;

let activityLogSchema = new Schema({
text: {
type: String,
required: true
},
result: {
type: Object,
required: true
},
datetime: {
type: Date,
required: true
},
feedback: {
type: Boolean,
}
});

module.exports = mongoose.model('ActivityLog', activityLogSchema);

}());

0 comments on commit a41ea69

Please sign in to comment.