HttpSelfHostConfigurationBaseAddress

OpenInsightApplicationProgrammingInterface
Infineon.EAF.Runtime 2.49.3
This commit is contained in:
2023-08-02 12:12:54 -07:00
parent c6782d1cb3
commit 2614782d58
46 changed files with 1485 additions and 95 deletions

View File

@ -1,5 +1,4 @@
#if NETFRAMEWORK && NET48
using Adaptation.FileHandlers.TIBCO.Transport;
using System.Web.Http;
using System.Web.Http.Results;

View File

@ -1,7 +1,10 @@
using Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
using Adaptation.FileHandlers.TIBCO.Transport;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
@ -12,7 +15,7 @@ public class BarcodeHelper
#nullable enable
private static string? GetJson(System.Net.Http.HttpContent? httpContent)
private static string? GetJson(HttpContent? httpContent)
{
string? result;
if (httpContent is null)
@ -46,7 +49,7 @@ public class BarcodeHelper
return result;
}
internal static PostReplay? Post(string id, System.Net.Http.HttpContent? httpContent)
internal static PostReplay? Post(string id, HttpContent? httpContent)
{
PostReplay? result;
string? json = GetJson(httpContent);
@ -59,16 +62,46 @@ public class BarcodeHelper
result = null;
else
{
const string hyphen = "-";
Job? job;
string? mid;
List<QaMetTest>? collection;
Dictionary<string, List<QaMetTest>> qaMetTests = new();
Write(TIBCO.FileRead.BarcodeHostFileShare, id, notification.Value);
Job job = GetJob(TIBCO.FileRead.LSL2SQLConnectionString, TIBCO.FileRead.MetrologyFileShare, TIBCO.FileRead.BarcodeHostFileShare, id, notification.Value);
string mid = job.SpecName == hyphen || job.ProcessSpecName == hyphen ? $"{job.ProcessType}" : $"{job.ProcessType}.{job.SpecName}.{job.ProcessSpecName}";
try
{
// https://oi-prod-ec-api.mes.infineon.com/api/oiWizard/materials/rds/
const string hyphen = "-";
HttpClient httpClient = new();
job = GetJob(TIBCO.FileRead.LSL2SQLConnectionString, TIBCO.FileRead.MetrologyFileShare, TIBCO.FileRead.BarcodeHostFileShare, id, notification.Value);
mid = job.SpecName == hyphen || job.ProcessSpecName == hyphen ? $"{job.ProcessType}" : $"{job.ProcessType}.{job.SpecName}.{job.ProcessSpecName}";
string httpClientResult = httpClient.GetStringAsync($"{FileRead.OpenInsightApplicationProgrammingInterface}/materials/rds/{job.LotName}").Result;
Root? root = JsonSerializer.Deserialize<Root>(httpClientResult);
httpClient.Dispose();
if (root is not null)
{
foreach (PrsStage prsStage in root.Rds.ProdSpec.PrsStages)
{
if (prsStage.QaMetTests is null)
continue;
foreach (QaMetTest qaMetTest in prsStage.QaMetTests)
{
if (qaMetTest.ToolClass != notification.Value.ToolClass)
continue;
if (!qaMetTests.TryGetValue(prsStage.Stage, out collection))
{
qaMetTests.Add(prsStage.Stage, new());
if (!qaMetTests.TryGetValue(prsStage.Stage, out collection))
throw new Exception();
}
collection.Add(qaMetTest);
}
}
}
}
catch (Exception) { }
result = new(job, mid, job.RecipeName);
catch (Exception)
{
mid = null;
}
result = new(mid, qaMetTests); // .ProdSpec.PrsStages[0].QaMetTests[0].Recipe);
}
}
return result;

View File

@ -5,12 +5,16 @@ public readonly struct Notification
public KeyPressEvent KeyPressEvent { get; }
public string LastScanServiceResultValue { get; }
public string ToolClass { get; }
public string HttpContentBody { get; }
[System.Text.Json.Serialization.JsonConstructor]
public Notification(KeyPressEvent keyPressEvent, string lastScanServiceResultValue)
public Notification(KeyPressEvent keyPressEvent, string lastScanServiceResultValue, string toolClass, string httpContentBody)
{
KeyPressEvent = keyPressEvent;
LastScanServiceResultValue = lastScanServiceResultValue;
ToolClass = toolClass;
HttpContentBody = httpContentBody;
}
}

View File

@ -1,20 +1,21 @@
using Adaptation.FileHandlers.TIBCO.Transport;
using Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
using System.Collections.Generic;
namespace Adaptation.FileHandlers.MoveAllFiles.ApiController;
public class PostReplay
{
public Job Job { get; }
public string MId { get; }
public string Recipe { get; }
#nullable enable
public string? MId { get; }
public Dictionary<string, List<QaMetTest>> QaMetTests { get; }
[System.Text.Json.Serialization.JsonConstructor]
public PostReplay(Job job, string mid, string recipe)
public PostReplay(string? mid, Dictionary<string, List<QaMetTest>> qaMetTests)
{
Job = job;
MId = mid;
Recipe = recipe;
QaMetTests = qaMetTests;
}
}

View File

@ -19,6 +19,9 @@ public class FileRead : Shared.FileRead, IFileRead
#nullable enable
public const string HttpSelfHostConfigurationBaseAddress = "http://localhost:8080/";
public const string OpenInsightApplicationProgrammingInterface = "https://oi-prod-ec-api.mes.infineon.com/api/oiWizard";
private long? _TickOffset;
#if NETFRAMEWORK && NET48
private readonly HttpSelfHostServer? _HttpSelfHostServer;
@ -36,14 +39,26 @@ public class FileRead : Shared.FileRead, IFileRead
throw new Exception(cellInstanceConnectionName);
if (_IsDuplicator)
throw new Exception(cellInstanceConnectionName);
string barcodeHostFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Barcode.Host.FileShare");
if (barcodeHostFileShare != TIBCO.FileRead.BarcodeHostFileShare)
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.BarcodeHostFileShare)}]");
string httpSelfHostConfigurationBaseAddress = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Http.Self.Host.Configuration.Base.Address");
if (httpSelfHostConfigurationBaseAddress != HttpSelfHostConfigurationBaseAddress)
throw new NotSupportedException($"Update configuration for [{nameof(HttpSelfHostConfigurationBaseAddress)}]");
string lsl2SQLConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "ConnectionString.LSL2SQL");
if (lsl2SQLConnectionString != TIBCO.FileRead.LSL2SQLConnectionString)
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.LSL2SQLConnectionString)}]");
string metrologyFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Metrology.FileShare");
if (metrologyFileShare != TIBCO.FileRead.MetrologyFileShare)
throw new NotSupportedException($"Update configuration for [{nameof(TIBCO.FileRead.MetrologyFileShare)}]");
string openInsightApplicationProgrammingInterface = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.Application.Programming.Interface");
if (openInsightApplicationProgrammingInterface != OpenInsightApplicationProgrammingInterface)
throw new NotSupportedException($"Update configuration for [{nameof(OpenInsightApplicationProgrammingInterface)}]");
#if NETFRAMEWORK && NET48
if (!_IsEAFHosted)
_HttpSelfHostServer = null;
else
{
// string propertyName = string.Concat("CellInstance.", cellInstanceName, ".HttpSelfHostConfiguration.BaseAddress");
// string httpSelfHostConfigurationBaseAddress = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, propertyName);
string httpSelfHostConfigurationBaseAddress = "http://localhost:8080/";
HttpSelfHostConfiguration config = new(httpSelfHostConfigurationBaseAddress);
_ = config.Routes.MapHttpRoute("API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
_HttpSelfHostServer = new(config);

View File

@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class BackSide
{
[JsonPropertyName("scratches")]
public int? Scratches { get; set; }
[JsonPropertyName("scratchLen")]
public int? ScratchLen { get; set; }
[JsonPropertyName("nodules")]
public object Nodules { get; set; }
[JsonPropertyName("spikes")]
public object Spikes { get; set; }
}

View File

@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class CleanInsp
{
[JsonPropertyName("keyId")]
public int KeyId { get; set; }
[JsonPropertyName("stage")]
public string Stage { get; set; }
[JsonPropertyName("cleans")]
public Cleans Cleans { get; set; }
[JsonPropertyName("inspection")]
public Inspection Inspection { get; set; }
[JsonPropertyName("surfScan")]
public SurfScan SurfScan { get; set; }
}

View File

@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Cleans
{
[JsonPropertyName("cleanRecipe")]
public object CleanRecipe { get; set; }
[JsonPropertyName("cleanSigReq")]
public bool CleanSigReq { get; set; }
[JsonPropertyName("cleanTools")]
public List<object> CleanTools { get; set; }
[JsonPropertyName("specs")]
public Spec Specs { get; set; }
[JsonPropertyName("operations")]
public List<object> Operations { get; set; }
}

View File

@ -0,0 +1,9 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class CustEpiPart
{
[JsonPropertyName("keyId")]
public string KeyId { get; set; }
}

View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class EpiPart
{
[JsonPropertyName("keyID")]
public int KeyID { get; set; }
[JsonPropertyName("waferSize")]
public string WaferSize { get; set; }
}

View File

@ -0,0 +1,33 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class FrontSide
{
[JsonPropertyName("lpd")]
public int? Lpd { get; set; }
[JsonPropertyName("scratches")]
public int? Scratches { get; set; }
[JsonPropertyName("scratchLen")]
public string ScratchLen { get; set; }
[JsonPropertyName("pits")]
public int? Pits { get; set; }
[JsonPropertyName("mounds")]
public int? Mounds { get; set; }
[JsonPropertyName("stackFaults")]
public int? StackFaults { get; set; }
[JsonPropertyName("spikes")]
public int? Spikes { get; set; }
[JsonPropertyName("spots")]
public int? Spots { get; set; }
[JsonPropertyName("blDefects")]
public int? BlDefects { get; set; }
}

View File

@ -0,0 +1,27 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Inspection
{
[JsonPropertyName("microscope")]
public bool Microscope { get; set; }
[JsonPropertyName("brightlight")]
public bool Brightlight { get; set; }
[JsonPropertyName("inspSigReq")]
public bool InspSigReq { get; set; }
[JsonPropertyName("inspInterval")]
public int? InspInterval { get; set; }
[JsonPropertyName("frontSide")]
public FrontSide FrontSide { get; set; }
[JsonPropertyName("backSide")]
public BackSide BackSide { get; set; }
[JsonPropertyName("specs")]
public Spec Specs { get; set; }
}

View File

@ -0,0 +1,49 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class ProdSpec
{
[JsonPropertyName("keyId")]
public int KeyId { get; set; }
[JsonPropertyName("specType")]
public string SpecType { get; set; }
[JsonPropertyName("status")]
public string Status { get; set; }
[JsonPropertyName("minutesPerWafer")]
public double MinutesPerWafer { get; set; }
[JsonPropertyName("proveInTime")]
public double ProveInTime { get; set; }
[JsonPropertyName("layerType")]
public string LayerType { get; set; }
[JsonPropertyName("reactorType")]
public string ReactorType { get; set; }
[JsonPropertyName("susceptorType")]
public string SusceptorType { get; set; }
[JsonPropertyName("tubePressureType")]
public string TubePressureType { get; set; }
[JsonPropertyName("recipeLayers")]
public List<RecipeLayer> RecipeLayers { get; set; }
[JsonPropertyName("prodVers")]
public List<ProdVer> ProdVers { get; set; }
[JsonPropertyName("epiPart")]
public EpiPart EpiPart { get; set; }
[JsonPropertyName("custEpiParts")]
public List<CustEpiPart> CustEpiParts { get; set; }
[JsonPropertyName("prsStages")]
public List<PrsStage> PrsStages { get; set; }
}

View File

@ -0,0 +1,9 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class ProdVer
{
[JsonPropertyName("keyId")]
public int KeyId { get; set; }
}

View File

@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class PrsStage
{
[JsonPropertyName("keyId")]
public string KeyId { get; set; }
[JsonPropertyName("psn")]
public int Psn { get; set; }
[JsonPropertyName("stage")]
public string Stage { get; set; }
[JsonPropertyName("cleans")]
public Cleans Cleans { get; set; }
[JsonPropertyName("inspection")]
public Inspection Inspection { get; set; }
[JsonPropertyName("surfscan")]
public SurfScan Surfscan { get; set; }
[JsonPropertyName("qaMetTests")]
public List<QaMetTest> QaMetTests { get; set; }
}

View File

@ -0,0 +1,51 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class QaMetTest
{
[JsonPropertyName("test")]
public string Test { get; set; }
[JsonPropertyName("property")]
public string Property { get; set; }
[JsonPropertyName("propertyDesc")]
public string PropertyDesc { get; set; }
[JsonPropertyName("toolClass")]
public string ToolClass { get; set; }
[JsonPropertyName("recipe")]
public string Recipe { get; set; }
[JsonPropertyName("recipePattern")]
public string RecipePattern { get; set; }
[JsonPropertyName("min")]
public double Min { get; set; }
[JsonPropertyName("max")]
public double Max { get; set; }
[JsonPropertyName("phaseMin")]
public double? PhaseMin { get; set; }
[JsonPropertyName("slots")]
public object Slots { get; set; }
[JsonPropertyName("wfrQty")]
public int WfrQty { get; set; }
[JsonPropertyName("reactSched")]
public bool ReactSched { get; set; }
[JsonPropertyName("interval")]
public int Interval { get; set; }
[JsonPropertyName("start")]
public int Start { get; set; }
[JsonPropertyName("sequence")]
public string Sequence { get; set; }
}

View File

@ -0,0 +1,97 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Rds
{
[JsonPropertyName("keyId")]
public int KeyId { get; set; }
[JsonPropertyName("reactor")]
public int Reactor { get; set; }
[JsonPropertyName("workOrder")]
public int WorkOrder { get; set; }
[JsonPropertyName("cassNo")]
public int CassNo { get; set; }
[JsonPropertyName("combStatus")]
public string CombStatus { get; set; }
[JsonPropertyName("partNo")]
public int PartNo { get; set; }
[JsonPropertyName("PSN")]
public int PSN { get; set; }
[JsonPropertyName("entryId")]
public string EntryId { get; set; }
[JsonPropertyName("entryDtm")]
public string EntryDtm { get; set; }
[JsonPropertyName("preEpiSig")]
public string PreEpiSig { get; set; }
[JsonPropertyName("preEpiSigDtm")]
public string PreEpiSigDtm { get; set; }
[JsonPropertyName("operatorIn")]
public string OperatorIn { get; set; }
[JsonPropertyName("dtmIn")]
public string DtmIn { get; set; }
[JsonPropertyName("operatorOut")]
public string OperatorOut { get; set; }
[JsonPropertyName("dtmOut")]
public string DtmOut { get; set; }
[JsonPropertyName("postEpiSig")]
public string PostEpiSig { get; set; }
[JsonPropertyName("postEpiSigDtm")]
public string PostEpiSigDtm { get; set; }
[JsonPropertyName("supVerSig")]
public string SupVerSig { get; set; }
[JsonPropertyName("supVerSigDtm")]
public string SupVerSigDtm { get; set; }
[JsonPropertyName("shipDtm")]
public object ShipDtm { get; set; }
[JsonPropertyName("subPartNo")]
public int SubPartNo { get; set; }
[JsonPropertyName("shipNo")]
public object ShipNo { get; set; }
[JsonPropertyName("cassWaferQty")]
public int CassWaferQty { get; set; }
[JsonPropertyName("loadLockSide")]
public string LoadLockSide { get; set; }
[JsonPropertyName("waferSize")]
public string WaferSize { get; set; }
[JsonPropertyName("reactorType")]
public string ReactorType { get; set; }
[JsonPropertyName("prodSpec")]
public ProdSpec ProdSpec { get; set; }
[JsonPropertyName("cleanInsp")]
public List<CleanInsp> CleanInsp { get; set; }
[JsonPropertyName("woMatQA")]
public WoMatQA WoMatQA { get; set; }
[JsonPropertyName("rdsLayers")]
public List<RdsLayer> RdsLayers { get; set; }
}

View File

@ -0,0 +1,63 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class RdsLayer
{
[JsonPropertyName("keyID")]
public string KeyID { get; set; }
[JsonPropertyName("EpiTime")]
public double EpiTime { get; set; }
[JsonPropertyName("DiluentAdjParam")]
public int DiluentAdjParam { get; set; }
[JsonPropertyName("DopantFlow")]
public double DopantFlow { get; set; }
[JsonPropertyName("HCLFlow")]
public object HCLFlow { get; set; }
[JsonPropertyName("BakeTime")]
public string BakeTime { get; set; }
[JsonPropertyName("EpiH2Flow")]
public int EpiH2Flow { get; set; }
[JsonPropertyName("TCSFlow")]
public int TCSFlow { get; set; }
[JsonPropertyName("DCSFlow")]
public object DCSFlow { get; set; }
[JsonPropertyName("FOffset")]
public int FOffset { get; set; }
[JsonPropertyName("SOffset")]
public int SOffset { get; set; }
[JsonPropertyName("ROffset")]
public int ROffset { get; set; }
[JsonPropertyName("Etch1")]
public string Etch1 { get; set; }
[JsonPropertyName("Etch2")]
public string Etch2 { get; set; }
[JsonPropertyName("Etch3")]
public string Etch3 { get; set; }
[JsonPropertyName("AUX1")]
public object AUX1 { get; set; }
[JsonPropertyName("AUX2")]
public object AUX2 { get; set; }
[JsonPropertyName("ULTemp")]
public int ULTemp { get; set; }
[JsonPropertyName("SuscEtch")]
public object SuscEtch { get; set; }
}

View File

@ -0,0 +1,69 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class RecipeLayer
{
[JsonPropertyName("layerNo")]
public int LayerNo { get; set; }
[JsonPropertyName("layerId")]
public string LayerId { get; set; }
[JsonPropertyName("layerType")]
public string LayerType { get; set; }
[JsonPropertyName("layerRecipe")]
public int LayerRecipe { get; set; }
[JsonPropertyName("layerDopant")]
public string LayerDopant { get; set; }
[JsonPropertyName("layerThickMin")]
public double LayerThickMin { get; set; }
[JsonPropertyName("layerThickTarget")]
public double LayerThickTarget { get; set; }
[JsonPropertyName("layerThickMax")]
public double LayerThickMax { get; set; }
[JsonPropertyName("layerThickUnits")]
public string LayerThickUnits { get; set; }
[JsonPropertyName("layerThickAMin")]
public object LayerThickAMin { get; set; }
[JsonPropertyName("layerThickATarget")]
public object LayerThickATarget { get; set; }
[JsonPropertyName("layerThickAMaxes")]
public object LayerThickAMaxes { get; set; }
[JsonPropertyName("layerThickAUnits")]
public object LayerThickAUnits { get; set; }
[JsonPropertyName("layerResMin")]
public double LayerResMin { get; set; }
[JsonPropertyName("layerResTarget")]
public int LayerResTarget { get; set; }
[JsonPropertyName("layerResMax")]
public double LayerResMax { get; set; }
[JsonPropertyName("layerResUnits")]
public string LayerResUnits { get; set; }
[JsonPropertyName("layerSResMin")]
public object LayerSResMin { get; set; }
[JsonPropertyName("layerSResTarget")]
public object LayerSResTarget { get; set; }
[JsonPropertyName("layerSResMax")]
public object LayerSResMax { get; set; }
[JsonPropertyName("layerSResUnits")]
public object LayerSResUnits { get; set; }
}

View File

@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Root
{
[JsonPropertyName("rds")]
public Rds Rds { get; set; }
[JsonPropertyName("_links")]
public object Links { get; set; }
[JsonPropertyName("_class")]
public string Class { get; set; }
}

View File

@ -0,0 +1,73 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Spec
{
[JsonPropertyName("recipe")]
public string Recipe { get; set; }
[JsonPropertyName("defect")]
public int Defect { get; set; }
[JsonPropertyName("haze")]
public int Haze { get; set; }
[JsonPropertyName("sampleQty")]
public int SampleQty { get; set; }
[JsonPropertyName("tools")]
public List<object> Tools { get; set; }
[JsonPropertyName("recipes")]
public List<object> Recipes { get; set; }
[JsonPropertyName("microscopeReq")]
public bool MicroscopeReq { get; set; }
[JsonPropertyName("brightlightReq")]
public bool BrightlightReq { get; set; }
[JsonPropertyName("lpd")]
public int Lpd { get; set; }
[JsonPropertyName("scratches")]
public int Scratches { get; set; }
[JsonPropertyName("scratchLen")]
public int ScratchLen { get; set; }
[JsonPropertyName("pits")]
public int Pits { get; set; }
[JsonPropertyName("mounds")]
public int Mounds { get; set; }
[JsonPropertyName("stackFaults")]
public int StackFaults { get; set; }
[JsonPropertyName("spikes")]
public int Spikes { get; set; }
[JsonPropertyName("spots")]
public int Spots { get; set; }
[JsonPropertyName("fov")]
public int Fov { get; set; }
[JsonPropertyName("blDefects")]
public int BlDefects { get; set; }
[JsonPropertyName("bsideScratches")]
public int BsideScratches { get; set; }
[JsonPropertyName("bsideScratchLen")]
public int BsideScratchLen { get; set; }
[JsonPropertyName("bsideNodules")]
public object BsideNodules { get; set; }
[JsonPropertyName("bsideSpikes")]
public object BsideSpikes { get; set; }
}

View File

@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class SurfScan
{
[JsonPropertyName("surfscanSigReq")]
public bool SurfscanSigReq { get; set; }
[JsonPropertyName("surfscanRecipes")]
public List<SurfscanRecipe> SurfscanRecipes { get; set; }
}

View File

@ -0,0 +1,10 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class SurfScan2
{
[JsonPropertyName("specs")]
public List<Spec> Specs { get; set; }
}

View File

@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class SurfscanRecipe
{
[JsonPropertyName("recipe")]
public string Recipe { get; set; }
[JsonPropertyName("defects")]
public int Defects { get; set; }
[JsonPropertyName("haze")]
public int Haze { get; set; }
[JsonPropertyName("sampleSize")]
public int SampleSize { get; set; }
}

View File

@ -0,0 +1,73 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class Test
{
[JsonPropertyName("stage")]
public string Stage { get; set; }
[JsonPropertyName("profile")]
public string Profile { get; set; }
[JsonPropertyName("prop")]
public string Prop { get; set; }
[JsonPropertyName("toolClass")]
public string ToolClass { get; set; }
[JsonPropertyName("recipe")]
public string Recipe { get; set; }
[JsonPropertyName("recipePattern")]
public string RecipePattern { get; set; }
[JsonPropertyName("specMin")]
public double SpecMin { get; set; }
[JsonPropertyName("specMax")]
public double SpecMax { get; set; }
[JsonPropertyName("specSlot")]
public object SpecSlot { get; set; }
[JsonPropertyName("testSlot")]
public object TestSlot { get; set; }
[JsonPropertyName("testResult")]
public List<double> TestResult { get; set; }
[JsonPropertyName("testSig")]
public string TestSig { get; set; }
[JsonPropertyName("testSigDtm")]
public string TestSigDtm { get; set; }
[JsonPropertyName("specStdDev")]
public object SpecStdDev { get; set; }
[JsonPropertyName("testStdDev")]
public object TestStdDev { get; set; }
[JsonPropertyName("specWfrQty")]
public int SpecWfrQty { get; set; }
[JsonPropertyName("dataPoints")]
public List<List<object>> DataPoints { get; set; }
[JsonPropertyName("testResultMin")]
public List<object> TestResultMin { get; set; }
[JsonPropertyName("testResultMax")]
public List<object> TestResultMax { get; set; }
[JsonPropertyName("testOutOfSpec")]
public bool TestOutOfSpec { get; set; }
[JsonPropertyName("phaseMin")]
public object PhaseMin { get; set; }
[JsonPropertyName("failReason")]
public object FailReason { get; set; }
}

View File

@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.MoveAllFiles.OpenInsight;
public class WoMatQA
{
[JsonPropertyName("keyId")]
public string KeyId { get; set; }
[JsonPropertyName("tests")]
public List<Test> Tests { get; set; }
}