Skip to content

Instantly share code, notes, and snippets.

@johanmendezb
Last active November 21, 2023 00:48
Show Gist options
  • Save johanmendezb/a163c247270994c08bf040ebf77520bd to your computer and use it in GitHub Desktop.
Save johanmendezb/a163c247270994c08bf040ebf77520bd to your computer and use it in GitHub Desktop.
Big Track model example
classDiagram
class ExtractionState {
name: 'sentToGeology, registeredWithOutGrade, waitingForLaboratoryResult, storageZoneAssigned'
}
class StockPileItem { // Editable in Admin
capacity: number
name: string
}
class StockPile {
currentStock: number // Cupo actual/Capacidad
averageGrade: number // Promedio de Ley
uuid: string
ExtractionRecords: ExtractionRegistry[]
history: StockPileHistory[]
details: StockPileItem
}
class LaboratoryAnalysisResult {
grade: number // Ley
humidity: number // Humedad
analysisType: 'Absorción atómica, Ensayo al fuego, Gavimetría' // Tipo de prueba
sampleSize: string // V2
analystComments: string // V2
analysisEquipment: string // V2
date: string
}
class LaboratorySample {
source: 'extraction, stockpile, grinding' // Origen
uuid: string
status: 'pending, completed, rejected, inProgress'
date: string
project: Project
sourceUUID: string // Link to the registry id
analysisResult: LaboratoryAnalysisResult
type: "wet", "head", "tail",
}
class ExtractionHistory {
step: string
date: string
uuid: string
}
class ExtractionRecordType {
uuid: string
mineral: string
grade: number
}
class StockPileHistory {
step: 'in, grinding, leaching'
date: string
owner: Employee
stockPileID: stockPile['uuid']
}
"Modulo de Planta de Producción - Molienda"
class Grinding {
mineralSource: string; "third_party" o "own" o "mixed" // Origen de mineral,
weight: number // "Peso de banda promedio(kg Pie de banda)"
speed: number // "Velocidad banda(m/s)(opcional)"
timeWorked: number // "Tiempo operado hora, minutos" 8.1
humidity: number // Value coming from lab result
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
date: string // para V1.1
temperature: number // V2
machinePower: number // V2
grinderType: string // V2
feedSize: string // V2
}
class GravimetricConcentration {
weight: number
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
}
class FlotationConcentration {
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
leachingType: string // V2
reagentsUsed: string[] // V2
frothHeight: number // V2
airFlowRate: number // V2
frotherDosingRate: number // V2
collectorDosingRate: number // V2
pHLevel: number // V2
}
"Modulo de Planta de Producción - Concentración gravimétrica/Jig y flotación"
class Concentration {
gravimetricConcentration: GravimetricConcentration // Optional
flotationConcentration: FlotationConcentration
date: string // V1.1
pulpDensity: number // V2
solidPercentage: number // V2
pHLevel: number // V2
concentrationTime: number // V2
particleSize: number // V2
chemicalDosingRate: number // V2
settlingRate: number // V2
overflowRate: number // V2
}
class Shaker { "Setting inicial del proyecto"
name: string;
capacity: number; "capacidad en m3"
diameter: number; "diámetro en mts"
isActive: boolean;
project: Project;
}
"Modulo de Planta de Producción - Lixiviación"
class Leaching {
leach_type: string; // Setting inicial en el admin puede ser "continuous" o "batch" son campos fijos por proyecto
shaker?: Shaker; // "Seleccionar el agitador", setting del setup inicial en el admin
start_day_time?: string; // "Fecha y Hora de inicio"
free_height?: number; // "Altura Libre (mts)"
average_flow?: number; // "Flujo promedio (m3/h)"
solid_percentage: number // "Porcentaje de sólidos"
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
end_day_time?: string; // "Fecha y Hora de inicio"
}
"Modulo de Planta de Producción - Solución/precipitación"
class SolutionPrecipitation {
cubic_meters: number; // "Metros cúbicos"
time_worked: number; // "Horas operadas"
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
precipitationChemicals: string[] // V2
precipitationTemperature: number // V2
precipitationTime: number; // V2
coagulantDosingRate: number; // V2
pHLevel: number; // V2
settlingTankSize: number; // V2
}
class GoldBar {
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
weight: number; // "Peso barra/lingote (gr)"
origin: string; // "Procedencia" puede ser "concentrate" o "gravity"
}
"Modulo de Planta de Producción - Fundición"
class Foundry {
delivery_type: string; // setting del setup inicial en el admin pede ser "free_gold", "precipitate" o "mixed"
processed_precipitate?: number // "Kg Precipitado Procesados"
gravimetric_concentrate?: number // "Kg concentrado gravimétrico"
grams_refined_gold?: number // "Gramos Doré precipitado"
gravimetric_dore_grams?: number; // "Gramos Doré gravimétrico"
time_worked: number; // "Horas Operadas"
gold_bars: GoldBar[]
date: string // V1.1
meltingTemperature: number // V2
castingMachineType: string // V2
moldType: string // V2
fluxComposition: string[] // V2
refiningEfficiency: number // V2
}
class Shift { // Editable in Admin
name: string
hoursPerShift: string
}
class EmployeeShift {
shift: Shift
project: Project
}
class ExtractionRegistry {
date: string
extractionLevelName: string // Nivel de extracción
extractionSourceName: string // Área de extracción
advancedMeters: number // Metros avanzados
mineral: number
noLaboratorySample: boolean // Sin registro de muestra
sterileMineral: string // Toneladas de esteril
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
code: string // UUID v1
state: ExtractionState
grade: number // Lab and Geology can edit this
stockPile: StockPile['name'] // Editable at geology step
history: ExtractionHistory[]
}
class EmployeeHistory {
registres: Registres[]// Depends on the operation done
}
class User {
userName: string
password: string
company: Company
}
class Employee {// relationship with User
projects: Project[]
shift: Shift[]
fullName: string
employeeID: string
role: 'mineAdmin, geology, extraction, plant, laboratory, owner, dashboardViewer, '
contactNumber: string
email: string
history: EmployeeHistory
}
class Project {
name: string
status: string
employees: Employee[]
stockPileItem: StockPileItem[]
shifts: Shift[]
shakers: Shaker[]
}
class Company {
projects: Project[]
shifts: Shift[]
fullName: string
employeeID: string
position: string
contactNumber: string
email: string
users: User[]
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
}
class Cyanidation { // WIP
leachingType: string
date: string
uuid: string
status: string
date: string
project: string
sourceUUID: string
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
}
class SolutionPrecipitation { // WIP
precipitationChemicals: string[]
precipitationTemperature: number
date: string
precipitationTime: number
coagulantDosingRate: number
pHLevel: number
settlingTankSize: number
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
}
class Foundry { // WIP
processedPrecipitate: number
gramsRefinedGold: number
date: string
gramsGoldDore: number
meltingTemperature: number
castingMachineType: string
moldType: string
fluxComposition: string[]
refiningEfficiency: number
laboratorySamples: LaboratorySample[] // One-to-many relationship with LaboratorySample
}
ExtractionRegistry --|> LaboratorySample
ExtractionRegistry --|> ExtractionHistory
StockPile --|> ExtractionRecordType
StockPile --|> StockPileHistory
Grinding --|> LaboratorySample
Concentration --|> LaboratorySample
FlotationConcentration --|> LaboratorySample
Cyanidation --|> LaboratorySample
SolutionPrecipitation --|> LaboratorySample
Foundry --|> LaboratorySample
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment