add user stats & store db/classifier on updates

This commit is contained in:
Armaël Guéneau 2024-11-23 12:33:54 +01:00
parent b420e1608d
commit 0e17ff90e6
3 changed files with 12 additions and 12 deletions

File diff suppressed because one or more lines are too long

View file

@ -101,15 +101,6 @@ impl UserData {
} }
impl Db { impl Db {
fn new() -> Db {
Db {
users: HashMap::new(),
is_spam: HashMap::new(),
tokens: HashMap::new(),
score: HashMap::new(),
}
}
fn recompute_tokens(&mut self) { fn recompute_tokens(&mut self) {
for (id, user) in &self.users { for (id, user) in &self.users {
self.tokens.insert(*id, user.to_tokens()); self.tokens.insert(*id, user.to_tokens());
@ -462,8 +453,13 @@ async fn index(data: web::Data<AppState>) -> impl Responder {
users.sort_by_key(|(_, _, score)| 1000 - (score * 1000.) as u64); users.sort_by_key(|(_, _, score)| 1000 - (score * 1000.) as u64);
users.truncate(50); users.truncate(50);
let users_count = db.users.len();
let classified_count = db.is_spam.len();
let mut context = tera::Context::new(); let mut context = tera::Context::new();
context.insert("users", &users); context.insert("users", &users);
context.insert("unclassified_users_count", &(users_count - classified_count));
context.insert("total_users_count", &users_count);
eprintln!("rendering template..."); eprintln!("rendering template...");
let page = TEMPLATES.render("index.html", &context).unwrap(); let page = TEMPLATES.render("index.html", &context).unwrap();
eprintln!("done"); eprintln!("done");
@ -487,6 +483,9 @@ async fn apply(
set_spam(db, classifier, &updates); set_spam(db, classifier, &updates);
db.store_to_path(Path::new("db.json")).unwrap();
classifier.save(&mut File::create(Path::new("model.json")).unwrap(), false).unwrap();
HttpResponse::SeeOther() HttpResponse::SeeOther()
.insert_header(("Location", "/")) .insert_header(("Location", "/"))
.finish() .finish()

View file

@ -109,8 +109,10 @@
<body> <body>
<form method="post"> <form method="post">
<div class="main"> <div class="main">
<div class="stats">
Users: unclassified: {{unclassified_users_count}} | total: {{total_users_count}}
</div>
<div class="users"> <div class="users">
{% for id_user_score in users %} {% for id_user_score in users %}
{% set user_id = id_user_score[0] %} {% set user_id = id_user_score[0] %}
{% set user = id_user_score[1] %} {% set user = id_user_score[1] %}