Skip to content

Components

Krish Majumdar edited this page Jan 6, 2023 · 45 revisions

A component is defined as one of the following:

  • a single physical object (for example, a geometry board)
  • a group or assembly of physical objects that can itself be considered as a singular entity (for example, a shipment of geometry boards, or a fully assembled APA). The objects making up the group or assembly do not have to be identical, nor do they have to be single components already recorded in the database

Identifiers

Full UUID
The primary identifier for any component is the full UUID - a 32 character alphanumeric string of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (i.e. characters grouped into 8-4-4-4-12). A component's full UUID is generated automatically by the database when that component is first created. The full UUID remains uniquely associated with the component regardless of any later changes made to the component's information (i.e. it is the same across all versions of a single component), and it cannot be changed after it has been generated and associated with the component.

The full UUID is designated as the primary component identifier because it is the only piece of information that is guaranteed to be available for, and unique to, each and every individual component in the database, regardless of component type and/or any user-defined information.

Short UUID and QR Code
Another component identifier is the short UUID - a 20 to 22 character long alphanumeric string, which is translated directly from the full UUID described above. While this compactness might appear to make the short UUID more approachable, due to technical limitations with the software used for the translation, the reduced number of characters does mean that it cannot in principle be guaranteed that every full UUID will correspond to a unique short UUID and/or vice versa. That being said, the probability of a non-unique short UUID being generated from any given full UUID is extremely small, so short and full UUIDs can be taken as being uniquely paired for all practical purposes.

To reduce the complexity of the database, the short UUID is never directly used - i.e. it cannot be searched for (unlike the full UUID), nor will it ever be displayed in the interface (although it is shown in the component's JSON record). Instead, the short UUID's only use is in a component's QR code. In a general sense, QR codes can be used to encode character strings in a compact visual format, and for this database specifically, the encoded character string is a URL that points to a particular component's information page (with part of the URL string being that component's short UUID). Component QR codes may be printed out, laser-etched onto a surface, and/or otherwise made displayable.

There are two main uses for QR codes in the interface. The first is to simply access the corresponding component's information page - to do this, the QR code only needs to be scanned by a device capable of doing so, and the user will then be taken directly to the information page using device's built-in internet browser (if available). The second use is to enter a component's full UUID into the type form of another entity. In this instance, the QR code scanning must be performed through the interface itself, not through the device's native QR code scanning software. (This is because only the interface contains the bespoke software that is required to correctly decode the QR code, extract the short UUID, translate it back to a full UUID, and finally populate the entity's type form with the full UUID.)

Other Identifiers
Depending on component type and/or user-defined information, certain components may have additional, non-standard identifiers associated with them. For example, geometry boards can also be identified using their 'UKID' numbers, and each assembled APA has an associated 'DUNE PID'. Such component-specific identifiers should be created, assigned and formatted at the discretion of users, and the admin team will not attempt to control and/or otherwise dictate their usage (although we can of course offer guidance on the most efficient approaches to such identifiers).

Clone this wiki locally