Open Twiek opened 8 years ago
Input aus Backend Meeting:
@Twiek
Vorbereitungen:
Übersicht/Allgemein:
Iteration 1: Assignments für Translations
Iteration 2: sub-assignments (Anfragen)
Iteration 3: field-assignments
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.
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:
Beobachtungen aus Usertest vom 1.12.:
Wichtig:
Optional/generell:
@Twiek Ich habe gerade den aktuellen Stand auf staging deployed, 20k OfferTranslations (und alle OrgaTranslations) zugewiesen & uns beide dem EN-TranslatorTeam hinzugefügt.
Updaten und Uberschneidungen mit #879 checken.