Changes between Version 16 and Version 17 of BadgesOld


Ignore:
Timestamp:
Nov 14, 2013, 8:14:48 AM (10 years ago)
Author:
brevilo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • BadgesOld

    v16 v17  
    44
    55== Note ==
    6 ''The following represents a proposal, a basis for discussion. It's still work in progress! ''
     6''The following represents a proposal, a basis for discussion. Consider it work in progress! ''
    77
    88== Requirements ==
     
    1010
    1111 * Origin: badges should be assignable by projects and, eventually, in a cross-project way.
    12  * Numbers: the numbers of assigned badges shouldn't be constrained. The could be tens of badges per volunteer, so prepare to visualise those.
    13  * Assignment: assignments should support temporary (incl. renewal) and unlimited badges.
     12 * Numbers: the numbers of assigned badges shouldn't be constrained. There could be tens of badges per volunteer, so prepare to visualise those.
     13 * Assignment: assignments should support temporary (incl. renewal) and permanent badges.
    1414 * Visibility: badges should be visible across the whole BOINC universe, at least in managers (desktop/mobile) and the web front-end (forums/profile), eventually even on the stats sites.
    1515 * Types: badges should be represented by icons/images, supported by textual descriptions. There should also be the means to represent different levels of the same badge type (e.g. a "Continued Support" badge in "Bronze", "Silver" or "Gold")
     
    3232 * Display
    3333   * Forums
    34      * Be sure to avoid clutter: limit number and link to full list
     34     * Be sure to avoid clutter: limit number of badges displayed and link to full list
    3535     * Make entire badge display optional via community preference
    3636   * Support badges display as port of "user of the month" feature
    37    * Show descriptive text when hovering over badge (mouse/tool-tip)
     37   * Show descriptive text when hovering over badge (mouse/tool-tip), full glory as part of badge list in profile
    3838   * Teams
    3939     * Show team badges also in profiles of team members (somewhat separately)
     40     * Should member badges be accumulated on team page as well?
    4041   * Search (web)
    4142     * Support user profile searches filtered by badges
     
    8687We refrained from adding another relation for tags and de-normalised this attribute in favour of performance. We could use MySQL's SET type to support a bitmap of up to 64 pre-defined tags. However, that list would become part of the data model and would hence be very inflexible. Thus we propose to use JSON as textual representation that can be searched using regular LIKE statements and can be modified easily by available JSON support, e.g. in PHP. Upcoming versions of MySQL and MariaDB are going to include JSON support and will allow more optimised processing. XML would be far too heavy-weight for this purpose.
    8788
    88 Badge assignments provide the means to expire old ones by filtering (or even removal) based on the `create_dt` attribute. Sorting of badge assignments can be done based on the `reassign_dt`, e.g. newest-first.
     89Badge assignments provide the means to expire old ones by filtering (or even removal) based on the reassign_dt attribute. Sorting of badge assignments can be done based on create_dt, e.g. newest-first.
    8990
    9091=== Badge assignment process ===
    91  * A script runs periodically (e.g. a project task) and updates all badge assignments
    92  * The script iterates over all defined badges (`badge` table) and executes the respective SQL rules
     92 * A script runs periodically (e.g. a project task) and updates the badge assignments
     93 * The script iterates over '''all''' defined badges (`badge` table) and executes the respective SQL rules
    9394   * Each SQL rule (one per badge) returns a list if user IDs or team IDs (see next item)
    94    * The attribute !badge:team defines a badge to be team or user assignable
     95   * The attribute `badge:team` defines a badge to be team or user assignable
    9596   * Upsert (insert or update) the user/team IDs for the current badge ID into the `user_badge` and `team_badge` tables respectively
    9697     * An update (only) resets the `reassign_dt` attribute to the current time