Giter Site home page Giter Site logo

hitobito / hitobito_svse Goto Github PK

View Code? Open in Web Editor NEW
0.0 10.0 0.0 159 KB

A hitobito wagon defining the organization hierarchy and additional features for Schweizerischer Sportverband öffentlicher Verkehr.

License: Other

Ruby 90.63% SCSS 6.49% Haml 2.37% Shell 0.51%
hitobito-wagon hitobito

hitobito_svse's Introduction

hitobito logo

Welcome to Hitobito 人人

Hitobito is an open source web application to manage organisation and communities with complex group hierarchies with members, events, courses, mailings, communication and a lot more.

Maintenance Documentation Status GitHub Open Source Helpers Rails Lint and Test

User Guide

A generic user guide in German is available.

Development

Check out our development kit

More detailed development documentation can be found in doc/development.

This is where you also find some Deployment Instructions.

More information about interfaces, api, oauth and oidc is also avaible.

Architecture

The architecture documentation in German can be found in doc/architecture.

Two topics shall be mentioned here explicitly:

Group Hierarchy

Hitobito provides a powerful meta-model to describe group structures. Groups are always of a specific type and are arranged in a tree. Each group type may have several different role types.

This core part of Hitobito does not provide any specific group or role types. They have to be defined in a separate plugin, specific to your organization structure.

An example group type definition might look like this:

class Group::Layer < Group
  self.layer = true

  children Group::Layer, Group::Board, Group::Basic

  class Role < Leader
    self.permissions = [:layer_full, :contact_data]
  end


  class Member < Role
    self.permissions = [:group_read]
  end

  roles Leader, Member
end

A group type always inherits from the class Group. It may be a layer, which defines a set of groups that are in a common permission range. All subgroups of a layer group belong to this range unless a subgroup is a layer itself.

Then all possible child types of the group are listed. When creating subgroups, only these types will be allowed. As shown, types may be organized recursively.

For the ease of maintainability, role types may be defined directly in the group type. Each role type has a set of permissions. They are general indications of what and where. All specific abilities of a user are derived from the role permissions she has in her different groups.

See Gruppen- und Rollentypen for more details and hitobito_generic for a complete example group structure.

Plugin architecture

Hitobito is built on the plugin framework Wagons. With Wagons, arbitrary features and extensions may be created for Hitobito. As mentioned above, as there are no group types coming from Hitobito itself, at least one wagon is required to define group types in order to use Hitobito.

See Wagon Guidelines or Wagons for more information on wagons and its available rake tasks.

Contributing

You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. Before opening any pull request or issue, please search for existing issues (open and closed) and read the contributing guidelines. If you are part of an organisation that uses Hitobito, please discuss your intent with the responsible person of your organisation.

Community

Hitobito made with 💙 and the incredible community:

  • Jungwacht Blauring Schweiz
  • Puzzle ITC GmbH
  • Pfadibewegung Schweiz
  • Hitobito AG
  • CEVI Regionalverband ZH-SH-GL / CEVI Schweiz
  • Pro Natura Jugend
  • Dachverband Schweizer Jugendparlamente DSJ
  • Insieme Schweiz
  • Forschungstelle Digitale Nachhaltigkeit
  • CH Open
  • Digital Impact Network
  • Schweizer Blasmusikverband
  • Grünliberale Partei Schweiz
  • Die Mitte
  • Stiftung für junge Auslandschweizer
  • Swiss Canoe
  • Schweizerischer Sportverband öffentlicher Verkehr (SVSE)
  • Schweizer Wanderwege

Please contact Hitobito if you want to be part of our community.

License

Hitobito is released under the GNU Affero General Public License.

The Hitobito logo is a registered trademark of Hitobito LTD, Switzerland.


btw: Hitobito 人人 means "everyone"

hitobito_svse's People

Contributors

amaierhofer avatar carlobeltrame avatar chrusu avatar daniel-illi avatar kronn avatar luca-bruegger avatar mtnstar avatar njaeggi avatar severinraez avatar thewalkingleek avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hitobito_svse's Issues

IMPORT: Anpassungen Funktionen

Es werden noch ein paar Anpassungen zum Import der Funktionen benötigt (rake import:functions).

Tech-Spec

Freimitglieder auf Dachverband

Der SVSE kennt keine Freimitglieder. Nur die Sektionen.

Ombudsmann:frau einer Sportart

rake db/seeds/production/functions.csv muss erweitert werden. Neu das Feld sport_name liefern.
Neues Query:

SELECT biz_contact.firstname AS first_name, biz_contact.lastname AS last_name, biz_address.addressline1 AS address, biz_function.name AS function_name, section.name AS section_name, sport.lovlic AS sport_name FROM biz_contact_function LEFT JOIN biz_contact ON biz_contact_function.contactid=biz_contact.id INNER JOIN biz_function ON biz_contact_function.functionid=biz_function.id LEFT JOIN aes_org AS section ON biz_contact_function.ownersuborgid=section.id LEFT JOIN biz_address ON biz_contact.praddressid=biz_address.id LEFT JOIN aes_lov AS sport ON biz_contact_function.sportid=sport.id WHERE biz_contact.deleted='f';

sport_name kann aber bei Ombudspersonen auch "COMMON" sein... Diejenigen ignorieren & nicht importieren

RECHNUNG: Rechnungsbrief aktivieren

Auf SVSE Produktion folgende Optionen aktivieren:

  • Rechnungsbrief erstellen
  • Druckauftrag erstellen
    Auf Integration folgende Optionen aktivieren
  • Druckauftrag erstellen

PERSON: Korrespondenzsprache --> DB-Migration

Seit dem Hinzufügen der Korrespondenzsprache, ist diese Standardmässig bei allen auf Detusch eingestellt.

Alle Mitglieder der französischen Sektionen sollen einmalig als Korrespondenzsprache Französisch eingestellt erhalten.

grafik

IMPORT: Rollen zuweisen

Zum SVSE Import sollen die Personen den entsprechenden Gruppen anhand des besthenden SQL Dumps zugewiesen werden.

Tech-Spec

SQL Dump: https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/7_Verschiedenes/Gesamtexport/Files%20f%C3%BCr%20TEST_Import&fileid=3863790

  • Sportarten einer Person: Sportarten-Untergruppen in jeder Sektion + Mitgliedsrolle darin -> Bei erneutem Import komplett löschen und darüber importieren um Aktualisierungen zu berücksichtigen
  • Login-Lernende, Freimitglied, Ehrenmitglied, Junior (im alten System Funktion genannt): Rollen auf Dachverband und Sektion -> Bei erneutem Import komplett löschen und darüber importieren um Aktualisierungen zu berücksichtigen
  • Partnerfirmen (werden in hitobito_svse#21 als Personen mit Firma-Flag importiert): Rolle "Sponsor" auf Dachverband -> Bei erneutem Import komplett löschen und darüber importieren

Grundstruktur: Rollen und Berechtigungen

Rollen und Berechtigungen anlegen

  • Rollen anlegen
  • Berechtigungen vergeben
  • Rollen den Gruppen zuordnen
  • Fixtures anpassen
  • Seeds ggf. anpassen
  • Basis-Specs sicherstellen

See: #1

Rollen, Berechtigungen

Dachverband

  • Geschäftsleitung (Alle Mitglieder der Geschäftsleitung haben dieselben Rechte)
    • Mitglied: [:group_and_below_full]
    • Kassier:
  • Ressortmitarbeitende:
    • Mitglied: []
  • TK (Technische Komission) (1 Leiter Pro Sportart)
    • Mitglied: [:group_and_below_full]
  • Ehrenmitglieder (aktuell kein Login, in Zukunft gerne)
    • Mitglied: []
  • Externe Kontakte / Sponsoren
    • Kontakt: []
  • Sektion
    • Mutationsführer [:group_and_below_full]
    • Mitglied: []
    • NichtMitglied: []
    • ReadOnly: [:group_read]
    • Kassier: [:group_and_below_full]
      -> Sportart als Bezeichnung auf der Rolle abgebildet als Gruppe
    • NichtMitglied []
    • Eherenmitglied []
    • Sportart Gruppe:
      • Ombutsmann/Frau: [:group_full]
      • Mitglied: []
    • Externe Kontakte / Sponsoren
      • Kontakt: []

EVENTS: Kurse aktivieren

Ist

In SVSE können heute keine Kurse administriert werden. (Menupunkte nicht vorhanden)

Soll

Kurse können in SVSE administriert und damit die Qualifikationen genutzt werden

Tech-Spec

  • Kurse sollen auf allen Layern aktiviert werden
  • Sicherstellen das Kurse in den Development Seeds geseedet werden

PERSON: Gruppenstruktur importieren

See: hitobito/hitobito#1243

Als Gruppen

  • Sportarten einer Person: Sportarten-Untergruppen in jeder Sektion + Mitgliedsrolle darin

Grundsätzliche Struktur

  • Dachverband
    • Sektion
      • Sportart

Rollentypen anlegen (noch ohne Import)

  • Präsident, Kassier, Mutationsführer: Rolle auf Dachverband und Sektionen ermöglichen, SVSE verteilt Rollen selber
  • Obmann Sportart: Rolle auf Sektionen ermöglichen, SVSE verteilt Rollen selber
    • Berechtigungen: Schreib und Leserechte auf Gruppe
  • Sponsor auf Dachverband
    • Berechtigungen: Keine
  • Login-Lernende, Freimitglied, Ehrenmitglied, Junior auf Dachverband und Sektion
    • Leserechte auf Sektion

RECHNUNG: Konzeption Rechnungsmodul

Konzeption Rechnungsmodul

https://codimd.puzzle.ch/5PpFejBqSZ6WncLvFCab0g

DoD: Tickets für die Umsetzung spezifiziert

Codi Besprechung 22.6: https://codimd.puzzle.ch/4yZxtrzbS9-Xl8qzjURcww#

GROUPS: Gruppenstruktur anpassen

Legende:
geändert
neu 🆕
gelöscht

  • SVSE

    • SVSE
      • Präsident: [:group_full]
      • Mutationsführer: [:layer_and_below_full]
      • Login Lernende: [:group_read]
      • Freimitglied: []
      • Sponsor []
      • Ehrenmitglieder (Gruppentyp)
        • Mitglied: []
      • Ehemalige (Gruppentyp) 🆕
        • Mitglied: [] 🆕
      • Externe Kontakte (Gruppentyp) 🆕
        • Mitglied: [] 🆕
      • Passivmitglieder (Gruppentyp) 🆕
        • Mitglied []
      • Junior: [:group_read]
      • IT Support: [:layer_and_below_full, :contact_data, :admin, :impersonation]
      • Ressortmitarbeitende
        • Mitglied: []
      • Technische Komission
        • Mitglied: [:layer_full] --> keine schreibrechte, darf aber anlässe, kurse und abos managen
      • Geschäftsleitung (Gruppe)
        • Mitglied [:layer_read, :contact_data]
        • Kassier: [:finance, :contact_data] --> keine Quali-Rechte
  • Sektion

    • Sektion
      • Präsident:
      • Vorstand (Gruppentyp) 🆕
        • Mitglied [:layer_and_below_full, :contact_data] 🆕
      • Obfrau/Obmann: [:layer_full]
      • Mutationsführer: [:layer_and_below_full] --> inkl. Qualis
      • Kassier: [:finance, :layer_and_below_full, :contact_data]
      • Mitglied: []
      • Ehrenmitglied: []
      • Read Only: []
      • Ehemalige 🆕
        • Mitglied [] 🆕
      • Passivmitglieder 🆕
        • Mitglied [] 🆕
      • Externe Kontakte
        • Mitglied []
      • Funktionäre 🆕
        • Mitglied [:layer_full] 🆕
      • Login Lernende: [:group_read]
      • Freimitglied: []
      • Junior: [:group_read]
      • Sponsor [] 🆕
    • Sportart
      • Obfrau/Obmann: [:group_full]
      • Mitglied: []
  • Global

    • Externe Kontakte
      • Kontakt: []

Tech-Spec

ToDo

⚠️ Es muss keine DB migration erstellt werden da die Prod DB vor dem go live Ende Jahr komplett resetted wird.

  • Gruppenstruktur in models anpassen
  • Development Seeds anpassen
  • gelöschte Gruppen/Rollen aus Import entfernen
  • Fixtures ggf. anpassen, specs fixen
  • Integrationsumgebung prüfen und ggf. nach Rücksprache mit Kunde neu Seeden (dann sicheres Passwort für int user setzen)
  • Lösung für aktuelle Prod Umgebung finden. Ungültige Rollen manuell aus der DB löschen? DB resetten?

PERSON: SVSE spezifische Felder

Um alle Daten aus der alten Plattform übernehmen zu können, müssen zusätzliche Felder auf der Person angelegt werden

Felder

Geworben durch Person

  • UseCase: Wettbewerb "Mitglieder werben Mitglieder"
    • geworben von (recruited_by)
    • geworben am (recruited_at)
    • (nur durch Puzzle importierbar)

Titel

  • Textfeld

Identifikation
- Mitgliedernummer (bisherige soll übernommen werden)
- Aufsteigend (wenn möglich)
- Unique

Eintrittsdatum

  • muss übernommen werden von bisherigen
  • Nullable
  • Bei neuen (nicht importierten) Mitgliedern, wird dies automatisch gesetzt.
  • created_at verwenden und auf Detailansicht Person, Personenliste und in Exporten anbieten

Verstorben am

  • Todesdatum muss ersichtlich sein für Export

Status

  • Optionen: Aktiv, Passiv, Ausgetreten, Verstorben

Bank/Post

  • IBAN-Nummer
  • keine Validation

Beruf

  • Textfeld

Weitere Infos:
https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/1_Dokumentation&fileid=786344
Bisherige Daten als SQL sind hier gespeichert: https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/7_Verschiedenes/Gesamtexport&fileid=3863786

IMPORT: SVSE-Verband

Aktuell wird noch ein SVSE Verband als Sektion importiert. Dort werden zudem Personen fälschlicherweise mittels Rollen zugewiesen.

Nach Absprache mit Bruno war dennoch nicht ganz klar welche Personen weshalb diese Sektion zugewiesen bekommen.

Tech-Spec

Theorien

  • Nationalteams?
  • Dachverband?

RECHNUNG: Gutschriften

Helfer bei Events erhalten eine Gutschrift auf den Mitgliederbeitrag.

Pro Tag werden folgende Beiträge gutgeschrieben:

  1. Tag (-25.-)
  2. Tag (-20.-)

Weitere Tage werden nicht vergütet, es ist also auch nicht möglich, Geld zurückzuerhalten (Mitgliederbeitrag ist 45.-)

Umgesetz werden kann dies im Hitobito mit Rechnungsartikeln, welche einen negativen Betrag aufweisen.

Tasks

  • Entsprechendes Beispiel auf Integration erstellen und mit SVSE anschauen
  • Falls nötig Ticket für kundenspezifische Anpassungen erstellen

EVENTS: Anhänge auch im Ausgeloggten Zustand anzeigen.

BITTE DIREKT AN REFINEMENT SCHÄTZEN IN STUNDEN

Bisher werden Anhänge bei Anlässen nur angezeigt, wenn der Benutzer eingeloggt ist.

Neu sollen diese auch angezeigt werden, wenn der Benutzer nicht eingeloggt ist.

image.png

Fix im Core umsetzen

GROUP: Sportart-Gruppen

Beim Erstellen einer Sportart Gruppe wird anstatt einem Namen ausgefüllt eine Sportart aus #17 zugewiesen:

  • pro Layer kann eine Sportart nur einmal einer Untergruppe zugewiesen werden
  • zur Auswahl stehen nur die Sportarten welche nicht bereits einer anderen Untergruppe des Layers zugewiesen wurde
  • Als Name der Gruppe wird überall die Sportart verwendet (getter für Group::Sportart überschreiben)
  • Die Sportart wird in der aktuellen Sprache des Web UIs angezeigt
  • Die Sportart einer Gruppe kann nicht mehr geändert werden

Tech-Spec

Bugfixing Import SVSE

SVSE-Verband

Herausfinden, was dies genau ist. SVSE-Dachverband? Nationalteams? Korrekt zuordnen.


Status berücksichtigen

  • Verstorben
  • Passiv
  • Aktiv
  • Ausgetreten

Geburtsdatum fehlt

  • Keine grosse Sache das nachzuführen. Mit Duplikaten ca. 2-3 Stunden

Duplikate

https://db.svse.ch/de/full?q=bruno+schmid&button=

  • Telefonnummern werden dupliziert importiert
    • Wenn 2 Duplikat --> 3 Nummern auf Original
  • Dupplizierte Rollen (SVSE, SVSE Verband)

Fehlende Mitglieder analysieren

Aktuelle Mitglieder: 5426
Importierte Mitglieder: 2432
ESV Aarau: 62 vs. 10
Analysieren, wo die fehlenden Mitglieder geblieben sind.


Freimitglieder auf SVSE

Der SVSE kennt keine Freimitglieder. Nur die Sektionen. Viele Personen haben aber diese Rolle.
https://db.svse.ch/de/groups/1/people/1573

Ombudsmann:frau einer Sportart

Ist in den Daten und in unserem CSV Import schon vorhanden. rake import:functions muss nur leicht angepassen werden


Adressüberprüfung

  • Deaktivieren

Funktionen

  • Ehrenmitglied (:+1: )
  • SVSE Datenbankkontaktperson
    • als Tag
    • von Hand
  • Kader Tischtennisnationalteam --> Gruppe auf SVSE-Dachverband

PEOPLE: Personen Status Passiv entfernen

Es gibt keinen Status Passiv mehr für Personen.

Alle Personen, welche aktuell den Status "Passiv" haben, sollen den Status "Aktiv" erhalten.

Tech-Spec

IMPORT: Personen importieren

See hitobito/hitobito#1243

Import sollte Aktualisierungen erlauben (idempotent). Das heisst, bei jeder Person soll der Importer zuerst entscheiden, ob diese Person in der Datenbank bereits existiert, und wenn ja nur diese Person aktualisieren. Kriterien dazu sind noch zu bestimmen, etwa Vorname+Nachname+Geburtsdatum.

Datenquelle: Postgres-Backup-Datei zuunterst in https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/7_Verschiedenes/Gesamtexport/Files%20f%C3%BCr%20TEST_Import&fileid=3863790

Alle "normalen" Felder aus dem Datenbankdump, welche direkt zu hitobito-Feldern passen, sollen importiert werden. Zusätzlich folgende Spezialfälle:

Importieren in SVSE-spezifische Felder

  • Geworben durch: recruited_by
  • Geworben am: recruited_at
  • Titel: title
  • Verstorben am: died_at
  • Bank / IBAN: iban
  • Beruf: occupation

Importieren in Core-Felder

  • Familie: Haushalt (aufteilen auf mehere Personen wenn möglich)
  • Kommunikation (wenn möglich): weitere E-Mailadressen und Telefonnummern. Kommunikations-Adresse kann ignoriert werden.
  • Eintrittsdatum: In Spalte created_at der Person importieren.

Partnerfirmen als Personen mit "Firma" Flag importieren.

Tabelle Personen in DB dump: biz_contact

IMPORT: Fehlende Personenfelder

Im Import der Personen fehlen soweit noch Daten. Konkret Status und Geburtsdatum.

Tech-Spec

Der db/seeds/production/people.csv rake task soll angepasst werden, dass neu die Felder

  • status
  • birthdate

auch ins CSV exportiert werden. https://github.com/hitobito/hitobito_svse/blob/master/lib/tasks/migration.rake#L31

Platzierung vom status Feld im Dump ist noch unklar... => biz_contact.contactstatusid FK auf aes_lov.id

birthdate befindet sich in der biz_contact Tabelle

Mögliche Stati in Hitobito

  • Verstorben
  • Passiv
  • Aktiv
  • Ausgetreten

Wenn "Ausgetreten" -> importieren in Sektion, aber ohne Rollen.

Grundpaket SVSE

Ziel: Aufbau Grundpaket/Umgebung für die SKV

Inhalt:

  • Wagon
  • Integrationsumgebung
  • Gruppenstruktur
  • Rollen und Berechtigung
  • Anpassungen am Design
  • Mehrsprachigkeit
  • Produktionsumgebung
  • Github Actions

Bereits in Integration/Produktionsumgebung-Issues enthalten?

  • Wartung und Support

RECHNUNG: Spezialfälle (Belchenberglauf / Schweizermeisterschaften)

Der ESV Olten benötigt für seine Events (Belchenberglauf / Schweizermeisterschaften) separate Konten für die Rechnungsstellung.

  • Heute ist nur ein Rechnungskonto pro Layer konfigurierbar

Lösungsansatz

Neuer Layer (Gruppentyp/Gremium) "Anlass" (Unterhalb von ESV-Olten):

  • es können beliebig viele Gruppen von diesem Typ erfasst werden
  • Was für Rollen soll es auf dieser Gruppe geben:
    • Kassier
    • Organisationsmitglied

Parent dieser Gruppe ist die Sektion (ESV Olten)

Tech Specs

RECHNUNG: ESV-Olten-Logo in Rechnung

Die Sektion ESV-Olten wünscht sich sein Logo (statt desjenigen vom SVSE Schweiz) in der Rechnung zu haben.

image

Aktuell gibt es die Möglichkeit dies über einen Rechungsbrief im Abomodul zu machen.

  • Beispiel auf Integrationsumgebung erstellen und SVSE zeigen
  • Falls dann von SVSE immer noch gewünscht, Ticket für Integration Logo bei normalen Rechnungen
    (nicht Rechnungsbrief) allgemein erstellen

INVOICES: Rechnungen werden nicht generiert

Auf SVSE integration können keine Rechnungen via Sammelrechnungen generiert werden.

https://sentry.puzzle.ch/pitc/hitobito-backend/issues/48831/

aus irgend einem Grund scheinen die recipient_ids leer zu sein:

Person.where(id: recipient_ids.split(','))

NoMethodError: undefined method split' for nil:NilClass`

Schritte zum reproduzieren

  1. Auf einer Personenliste 'Rechnung erstellen' wählen
  2. Form für Rechnung ausfüllen und speichern
  3. Flash Message bestätigt das die Rechnungen im Hintergrund erstellt werden
  4. DelayedJob fällt auf die 👃

Tech-Spec

ToDo

  • Bug fixen
  • Sentry error Resolven

Anpassungen am Import

Der Import aus der bisherigen Mitgliederverwaltung soll in einzelnen Aspekten noch angepasst werden

Anforderungen

  • Den Benutzern eine Hauptsektion zuweisen
    • im Import eine fixe Regel einbauen, dass jeder Benutzer eine Hauptsektion hat. Einfachste Möglichkeit wählen (z.B. die erste oder letzte Sektion, welche im Import der Person vorkommt, so wies am einfachsten geht)
  • Kontrolle, ob beim Email-Import alles klappt (siehe Kommentar).
  • Ältestes Eintrittsdatum verwenden (wenn einfach umsetzbar). Eintrittsdatum ist beim SVSE in created_at gespeichert. https://github.com/hitobito/hitobito_svse/blob/master/lib/tasks/import.rake#L30

Links

https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/7_Verschiedenes&openfile=4136771

Transifex fertig einrichten

IST

Irgendwas ist bei Transifex nicht ganz fertig!

image

SOLL

Ich möchte im Transifex die Übersetzungen machen können.

Abos: Timeout weil zuviele Personen

Mögliche Lösungen

Variante 1 (0.5 PT)

  • Alle Rollen hinzufügen
  • Personen ausschliessen, welche keine Werbung wollen

Variante 2

  • Pagination

PERSON: Anpassungen Gruppenstruktur

Organization Hierarchy

  • Schweizerischer Kanu-Verband

    • Vorstand
      • Präsident*in: [:group_full]
      • Finanzchef*in: [:group_full, :finance]
      • Vorstandsmitglied: [:group_read]
    • Geschäftsleitung
      • Mitarbeitende*r: [:layer_and_below_full]
    • Mitarbeitende
      • Trainer*in: [:group_full]
      • Mitarbeitende*r: [:group_read]
      • Back-Office [:layer_and_below_full, :admin]
    • Externe Kontakte
      • Externer Kontakt: []
      • Swiss Canoe Partner: []
    • Fachkommission
      • Chef*in: [:group_full]
      • Mitglied: [:group_read]
    • Mitglieder
      • Mitglied: [:group_read]
      • Ehrenmitglied: []
      • Nachwuchsmitglied: []
    • Paddle Level
      • Anbieter*in: [:group_read]
      • Assessor*in: [:group_read]
      • Koordinator*in: [:group_read]
    • Nationalmannschaft
      • Trainer*in: [:group_full]
      • Kaderathlet*in: [:group_read]
    • Regionale Leistungszentrum
      • Leitung: [:group_full]
      • Mitglied: [:group_read]
  • Kantonalverband

    • Vorstand
      • Präsident*in: [:layer_and_below_full]
      • Vorstandsmitglied: [:layer_and_below_full]
      • Finanzchef*in: [:group_read, :finance]
  • Global

    • Sektion (LAYER)
      • Vorstand
        • Präsident:in [:group_full]
        • Kassier:in [:finance]
        • Sekretär:in [:group_full]
        • Vorstandsmitglied [:group_full]
      • Projektgruppe
        • Mitglied [:group_read]
        • Leitung [:group_full]
      • Finanzchef*in: [:group_read, :finance]
      • J+S Coach: [:group_full]
      • Junior*in: [:group_read]
      • Aktivmitglied: [:group_read]
      • Passivmitglied: [:group_read]
      • Ehrenmitglied: []
  • Sektionen als Layer statt Gruppe

  • neue Rollen

PEOPLE: Export Rollenbezeichnung als Feld

Die Funktionen TK (Technische Komission einer Sportart auf Verbandsebene) und L TK (Leitung Technische Komission) sollen beim Export klar ersichtlich sein.

Aktuell wurde dies der entsprechenden Rolle als Rollenbezeichnung angehängt. Dies ist zwar im Export ersichtlich, aber unübersichtlich.

Ideal wäre ein separates Feld.

Lösungsvorschläge?

RECHNUNG: Verschiedene Mitgliedsarten

Bei den Mitgliedern wird unterschieden zwischen folgenden Jahresbeiträgen:

  • Mitglied (zahlt vollen Beitrag)
  • Passivmitglied (zahlt reduzierten Beitrag)
  • Nichtmitglied (muss gegenüber dem Dachverband keinen Beitrag leisten)

Tech-Spec

  • Zusätzliche Rolle Passivmitglied auf Sektion

Bei einem Gruppentyp Erfassen

Grundpaket: Gruppenstruktur

Definition der Gruppenstuktur

  • Gruppen
  • Seeds anpassen
  • Fixtures anpassen
  • Basis-Specs sicherstellen
  • Gruppenstruktur in der Integration seeden

See: #1

Rollen, Berechtigungen

Layer Dachverband

  • Rollen:
    • Geschaeftsleitung: [:group_and_below_full]
    • Kassier
  • Ressortmitarbeitende:
    • Mitglied: []
  • TK (Technische Komission) (1 Leiter Pro Sportart)
    • Mitglied: [:group_and_below_full]
  • Ehrenmitglieder (aktuell kein Login, in Zukunft gerne)
    • Mitglied: []
  • Externe Kontakte / Sponsoren
    • Kontakt: []

Layer Sektionen

  • Sektion
    • Mutationsführer [:group_and_below_full]
    • Mitglied: []
    • NichtMitglied: []
    • ReadOnly: [:group_read]
    • Kassier: [:group_and_below_full]
      -> Sportart als Bezeichnung auf der Rolle abgebildet als Gruppe
    • Eherenmitglied []
    • Sportart Gruppe:
      • Ombutsmann/Frau: [:group_full]
      • Mitglied: []
    • Externe Kontakte / Sponsoren
      • Kontakt: []

Person: Tags einer Person zuweisen

Refs hitobito/hitobito#1243

Import sollte Aktualisierungen erlauben (idempotent).

Datenquelle: Postgres-Backup-Datei zuunterst in https://files.puzzle.ch/apps/files/?dir=/swe/projects/SVSE_Sportverband%20%C3%B6ffentlicher%20Verkehr/7_Verschiedenes/Gesamtexport/Files%20f%C3%BCr%20TEST_Import&fileid=3863790

Tech-Spec

Als Tag abbilden

Personen die im alten System nicht als "Mitglied" markiert waren, bekommen ein Tag "Nicht Mitglied im Dachverband". -> Bei erneutem Import komplett löschen und darüber importieren um Aktualisierungen zu berücksichtigen

PEOPLE: Naming Obmann/Ombundsmann

Aktuell gibt es einen Mix mit den Obmännern, Obfrauen, Ombunds-personen etc.

Diese sollen vereinheitlicht werden. Alle diese Rollen solle neu folgendermassen heissen:

Obfrau/-Mann

Tech Spec

  • locales anpassen

Grundpaket: Mehrsprachigkeit

Gewünschte Sprachen DE, FR einbauen

  • settings.yml
  • transifex -> eigenes Projekt (für Wagon spezifische Übersetzungen)

See: #1

PERSON: Mitgliedschaft im Abo einer Person zuweisen

Importieren als Mitgliedschaft in Abo

  • Werbung SVSE: Abo auf Dachverband
  • Bulletin: Abo auf Dachverband
  • Newsletter: Abo auf Dachverband
  • Abonnement 3: Abo "Versand" auf jeder Sektion in der die Person ist
  • Abonnement 4: Abo "Newsletter" auf jeder Sektion in der die Person ist

Bei erneutem Import Abos komplett löschen und darüber importieren um Aktualisierungen zu berücksichtigen

IMPORT: Personen Duplikate

Soweit werden noch Personen dupliziert importiert. Selbiges mit den Rollen und Telefonnummern.
Siehe https://db.svse.ch/de/full?q=bruno+schmid&button=

Mitunder dadurch ist die Anzahl Mitglieder aus dem Dachverband mittels "Alle Ebenen" Filter noch inkorrekt.

Aktuelle Mitglieder im alten System Stand 23.09.2021: 5426
Importierte Mitglieder anhand Filter: 2432
ESV Aarau: 62 vs. 10

Der Person.count stimmt jedoch mit den Excel von der SVSE überein. Jedoch sind in diesem Excel Duplikate auch aufgeführt.

Das heisst abzüglich Duplikate sollten es dann ca. 5426 Personen sein.

Tech-Spec

Duplikate

Dazu muss der import:people rake task bearbeitet werden.

  • Personen --> Entweder seedfu verwenden oder id (falls vorhanden) noch ins upsert
  • Telefonnummern --> Wenn Person bereits Nummern hat, ignorieren.

Dazu muss der import:functions rake task bearbeitet werden.

  • Rollen --> Sollten noch auf exists? geprüft werden

Fehlende Mitglieder analysieren

Nach diesen Anpassungen und wenn keine Duplikate mehr vorhanden sind, analysieren weshalb diese Anzahlen variieren.

Der "Alle Ebenen" Filter zeigt alle Personen an welche:

  • Eine Rolle im Dachverband haben.
  • visible_from_above nicht auf false gesetzt haben.

Grundpaket: Integrationsumgebung

Setup der Integrationsumgebung, die via svse.puzzle.ch sein soll.

  • Openshift-Projekt
  • Basic setup mit Secrets
  • kustomize-overlay
  • mailtrap
  • dns (svse.puzzle.ch)
  • composition-repo
  • jenkins-job
  • Credentials im Cryptopus
  • Github Actions

See: #1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.