clarat-org / clarat

An Open Source Charity Directory
http://www.clarat.org/
MIT License
8 stars 10 forks source link

Zuweisungen #878

Open Twiek opened 8 years ago

Twiek commented 8 years ago
NilsVollmer commented 8 years ago

Input aus Backend Meeting:

NilsVollmer commented 7 years ago

@Twiek

Vorbereitungen:

Übersicht/Allgemein:

Iteration 1: Assignments für Translations

Iteration 2: sub-assignments (Anfragen)

Iteration 3: field-assignments

NilsVollmer commented 7 years ago

Update: Refactoring (Search & Translation teilweise ins Backend ausgelagert) PRs sind @KonstantinKo zugeschoben.

@Twiek Da ich leider nicht mehr von dem Urlaub fertig geworden bin, bitte Konstantin zuschieben, wenn es vor meiner Rückkehr erledigt werden soll oder einfach bei mir liegen lassen.

Die Automatisierungslogik (Zuweisungen werden erstellt, wenn eine OfferTranslation erstellt oder angepasst wird) sind z.T. im Observer (Backend) schon auskommentiert vorhanden, müssten aber noch in Operations formuliert & entweder von dem translation_generation_worker oder einer Translation-Operation aufgerufen werden. (Weiche 'nur für refugees-Angebote' fehlt noch!)

Die 'Kommentarfunktion' (Sub-Assignments mit parent-Assignment aber ohne assignable_field) und alles was damit zusammenhängt fehlt ebenfalls noch - von Sprache explizit für den Test/die erste Iteration gewünscht und wir brauchen sie ja sowieso.

NilsVollmer commented 7 years ago

Deploy TODO: nachträglich Assignments für alle Translations erstellen:

UPDATE: am 15.12. durchgeführt!

system = User.system_user
translator_teams = {}
translator_teams['ar'] = UserTeam.find_by(name: 'Übersetzer (Arabisch)') || UserTeam.create!(name: 'Übersetzer (Arabisch)')
translator_teams['fa'] = UserTeam.find_by(name: 'Übersetzer (Farsi)') || UserTeam.create!(name: 'Übersetzer (Farsi)')
translator_teams['en'] = UserTeam.find_by(name: 'Übersetzer (Englisch)') || UserTeam.create!(name: 'Übersetzer (Englisch)')
# TODO: sinnvolle IDs für assignment-creator!!

# select offers (should take about 15 minutes and work before timeout)
offers_to_assign = OfferTranslation.select{|t| t.manually_editable? && (t.source == 'GoogleTranslate' || t.possibly_outdated) && t.offer.in_section?('refugees') && t.offer.approved?}

# iterate and assign OfferTranslations to TranslatorTeams
offers_to_assign.each do |t|
object = t.offer
translator_team_id = translator_teams[t.locale.to_s].id
reason = t.possibly_outdated ? 'possibly_outdated' : t.source
t.create_new_assignment! object.created_by, nil, system.id, nil, message = 'Offer created'
t.current_assignment.update_columns created_at: t.created_at, updated_at: t.created_at
t.create_new_assignment! system.id, nil, nil, translator_team_id, message = reason
t.current_assignment.update_columns created_at: t.updated_at, updated_at: t.updated_at
end

# assign the remaining OfferTranslations to the System (this should hopefully work
OfferTranslation.find_each do |t|
next if Assignment.where(assignable_type: 'OfferTranslation').where(assignable_id: t.id).any? 
t.create_new_assignment! system.id, nil, system.id, nil, message = 'Managed by system'
end

OrganizationTranslation.find_each do |t|
object = t.organization
if t.manually_editable? && (t.source == 'GoogleTranslate' || t.possibly_outdated)  && object.section_filters.pluck(:identifier).include?('refugees') && %w(approved all_done).include?(object.aasm_state)
translator_team_id = translator_teams[t.locale.to_s].id
reason = t.possibly_outdated ? 'possibly_outdated' : t.source
t.create_new_assignment! object.created_by, nil, system.id, nil, message = 'Orga created'
t.current_assignment.update_columns created_at: t.created_at, updated_at: t.created_at
t.create_new_assignment! system.id, nil, nil, translator_team_id, message = reason
t.current_assignment.update_columns created_at: t.updated_at, updated_at: t.updated_at
else
t.create_new_assignment! system.id, nil, system.id, nil, message = 'Managed by system'
end
end

TODO:

Twiek commented 7 years ago

Beobachtungen aus Usertest vom 1.12.:

Wichtig:

Optional/generell:

NilsVollmer commented 7 years ago

@Twiek Ich habe gerade den aktuellen Stand auf staging deployed, 20k OfferTranslations (und alle OrgaTranslations) zugewiesen & uns beide dem EN-TranslatorTeam hinzugefügt.

Twiek commented 7 years ago

Updaten und Uberschneidungen mit #879 checken.