From 617a4989e27e1a541adf20186ea690d91d66a13d Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Mon, 3 Oct 2022 11:08:24 -0700 Subject: [PATCH] Ready to test Max RDS --- .Data/RdsMaxRepo.json | 5162 +++++++++++++++++ Archive/Controllers/ExportController.cs | 2 + Archive/Controllers/PagesController.cs | 47 +- Archive/Models/AppSettings.cs | 18 +- Archive/Models/Binder/AppSettings.cs | 2 + Archive/Models/Binder/Max.cs | 31 + Archive/Program.cs | 1 + Archive/Repositories/MetrologyRepo.cs | 3 +- Archive/Repositories/RdsMaxRepo.cs | 286 + .../Repositories/SQLDbConnectionFactory.cs | 6 + Archive/Views/Pages/RdsMax.cshtml | 43 + Archive/appsettings.Development.json | 1 + Archive/appsettings.json | 1 + Shared/DataModels/RDS/Max.cs | 28 + Shared/Infineon/Monitoring/MonA/MonIn.cs | 57 +- Shared/Models/IWorkingDirectory.cs | 3 +- Shared/Repositories/IRdsMaxRepo.cs | 11 + Tests/Models/AppSettings.cs | 18 +- Tests/Models/Binder/AppSettings.cs | 2 + Tests/Tests.csproj | 7 +- Tests/UnitTestArchive.cs | 30 +- Tests/UnitTestExample.cs | 2 +- Tests/appsettings.Development.json | 61 - Tests/appsettings.json | 61 - Viewer/Controllers/PagesController.cs | 6 +- Viewer/Models/AppSettings.cs | 18 +- Viewer/Models/Binder/AppSettings.cs | 2 + Viewer/Repositories/MetrologyRepo.cs | 3 +- Viewer/appsettings.Development.json | 1 + Viewer/appsettings.json | 1 + 30 files changed, 5747 insertions(+), 167 deletions(-) create mode 100644 .Data/RdsMaxRepo.json create mode 100644 Archive/Models/Binder/Max.cs create mode 100644 Archive/Repositories/RdsMaxRepo.cs create mode 100644 Archive/Views/Pages/RdsMax.cshtml create mode 100644 Shared/DataModels/RDS/Max.cs create mode 100644 Shared/Repositories/IRdsMaxRepo.cs delete mode 100644 Tests/appsettings.Development.json delete mode 100644 Tests/appsettings.json diff --git a/.Data/RdsMaxRepo.json b/.Data/RdsMaxRepo.json new file mode 100644 index 0000000..40b3314 --- /dev/null +++ b/.Data/RdsMaxRepo.json @@ -0,0 +1,5162 @@ +[ + { + "reactor_type": null, + "reactor": 60, + "ls_id": null, + "zone": null, + "load_lock_side": "R", + "rds_no": 549528, + "ps_no": null, + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": null, + "spec_thick_mrecipe": null, + "spec_res_mtool": null, + "spec_res_mrecipe": null, + "spec_cres_mtool": null, + "spec_cres_mrecipe": null, + "ci_no": 2509030, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 21, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545697, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1045424, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 21, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545697, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2505019, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 21, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545697, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2505019, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 21, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545697, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2505019, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 24, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 548743, + "ps_no": "2601", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1053945, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 24, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 548743, + "ps_no": "2601", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508214, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 24, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 548743, + "ps_no": "2601", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508214, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 24, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 548743, + "ps_no": "2601", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508214, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 37, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548330, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1052867, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 37, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548330, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507792, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 37, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548330, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507792, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 37, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548330, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507792, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 38, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549053, + "ps_no": "3260", + "recipe_name": "Boron", + "recipe_no": 903, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1054837, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 38, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549053, + "ps_no": "3260", + "recipe_name": "Boron", + "recipe_no": 903, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508540, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 38, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549053, + "ps_no": "3260", + "recipe_name": "Boron", + "recipe_no": 903, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508540, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 38, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549053, + "ps_no": "3260", + "recipe_name": "Boron", + "recipe_no": 903, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508540, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 39, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549538, + "ps_no": "2713", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1056251, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 39, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549538, + "ps_no": "2713", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2509040, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 41, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549607, + "ps_no": "3021", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1056458, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 41, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549607, + "ps_no": "3021", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2509109, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 44, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550521, + "ps_no": "3205", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1059007, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 44, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550521, + "ps_no": "3205", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2510069, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "6IN_EPP ROTR", + "spec_ss_samp_qty": 4 + }, + { + "reactor_type": "A", + "reactor": 44, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550521, + "ps_no": "3205", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2510069, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_EPP_100", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 46, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550456, + "ps_no": "3625", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1058820, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 46, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550456, + "ps_no": "3625", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2510001, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "6IN_EPP ROTR", + "spec_ss_samp_qty": 4 + }, + { + "reactor_type": "A", + "reactor": 46, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550456, + "ps_no": "3625", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2510001, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_EPP_100", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 49, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549651, + "ps_no": "2544", + "recipe_name": "Phosphorus", + "recipe_no": 900, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1056582, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 49, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549651, + "ps_no": "2544", + "recipe_name": "Phosphorus", + "recipe_no": 900, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2509153, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 53, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548110, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1052254, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 53, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548110, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507556, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 53, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548110, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507556, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 53, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548110, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2507556, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 57, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549163, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1055163, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 57, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549163, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508654, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 59, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549167, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1055175, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 59, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549167, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508658, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 59, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549167, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508658, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 59, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549167, + "ps_no": "3102", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508658, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 61, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545735, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1045538, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 61, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 545735, + "ps_no": "2656", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2505057, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 63, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548972, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1054593, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 63, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548972, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508455, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "GEN5_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 63, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548972, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508455, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_100ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 63, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548972, + "ps_no": "3203", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508455, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_25ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "A", + "reactor": 74, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549123, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1055044, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "A", + "reactor": 74, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549123, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508612, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "A", + "reactor": 74, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549123, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508612, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "A", + "reactor": 74, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549123, + "ps_no": "3260", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508612, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 22, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 534815, + "ps_no": "3601", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1014618, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 22, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 534815, + "ps_no": "3601", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2493552, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 22, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 534815, + "ps_no": "3601", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2493552, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 22, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 534815, + "ps_no": "3601", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2493552, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 26, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 547570, + "ps_no": "3073", + "recipe_name": "Boron", + "recipe_no": 949, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1050689, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 26, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 547570, + "ps_no": "3073", + "recipe_name": "Boron", + "recipe_no": 949, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507001, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 26, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 547570, + "ps_no": "3073", + "recipe_name": "Boron", + "recipe_no": 949, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507001, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 26, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 547570, + "ps_no": "3073", + "recipe_name": "Boron", + "recipe_no": 949, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507001, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 28, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549919, + "ps_no": "2793", + "recipe_name": "Phosphorus", + "recipe_no": 888, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "6inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509439, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 28, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549919, + "ps_no": "2793", + "recipe_name": "Phosphorus", + "recipe_no": 888, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "6inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509439, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 28, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549919, + "ps_no": "2793", + "recipe_name": "Phosphorus", + "recipe_no": 888, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "6inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509439, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 29, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549189, + "ps_no": "3512", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1055239, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 29, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549189, + "ps_no": "3512", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508680, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 29, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549189, + "ps_no": "3512", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508680, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 29, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549189, + "ps_no": "3512", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508680, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 31, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547517, + "ps_no": "2797", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1050532, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 31, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547517, + "ps_no": "2797", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506948, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 31, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547517, + "ps_no": "2797", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506948, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 31, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547517, + "ps_no": "2797", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506948, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 32, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547115, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1049408, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 32, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547115, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506545, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "SP1 1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 32, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547115, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506545, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 32, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547115, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506545, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 34, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549492, + "ps_no": "2557", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inchthin", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508994, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 35, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549481, + "ps_no": "1559", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508983, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 35, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549481, + "ps_no": "1559", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508983, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 35, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549481, + "ps_no": "1559", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508983, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 36, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549565, + "ps_no": "3632", + "recipe_name": "Phosphorus", + "recipe_no": 915, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1056332, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 36, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549565, + "ps_no": "3632", + "recipe_name": "Phosphorus", + "recipe_no": 915, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2509067, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 43, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548085, + "ps_no": "3014", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1052181, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 43, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548085, + "ps_no": "3014", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2507531, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1049852, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1049852, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1049852, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 45, + "ls_id": "L2", + "zone": "", + "load_lock_side": "R", + "rds_no": 547279, + "ps_no": "631", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506710, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 47, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 540073, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1029437, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 47, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 540073, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2499075, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 47, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 540073, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2499075, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 47, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 540073, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2499075, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 48, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550442, + "ps_no": "3623", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "14PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1058776, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 48, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550442, + "ps_no": "3623", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "14PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2509987, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 50, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550458, + "ps_no": "3624", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1058826, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 50, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550458, + "ps_no": "3624", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2510003, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 52, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550424, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1058722, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 52, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550424, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509968, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 54, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550425, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1058725, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 54, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550425, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 743, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509969, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 55, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549142, + "ps_no": "3303", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 1055099, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 55, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549142, + "ps_no": "3303", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "8inch", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "8IN5PT_N", + "ci_no": 2508631, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "2", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054373, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "2", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508371, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508371, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Thin/IRC5PTpat", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054373, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "L2", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054373, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 62, + "ls_id": "L2", + "zone": "", + "load_lock_side": "L", + "rds_no": 548888, + "ps_no": "631", + "recipe_name": "Arsenic", + "recipe_no": 884, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC5pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC5pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508371, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 64, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549548, + "ps_no": "245", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Recipe", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509050, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 64, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549548, + "ps_no": "245", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Recipe", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509050, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 64, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549548, + "ps_no": "245", + "recipe_name": "Phosphorus", + "recipe_no": 942, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "5\"Recipe", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Hi_Rho", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509050, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 65, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547614, + "ps_no": "3123", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1050821, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 65, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547614, + "ps_no": "3123", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2507045, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 66, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549465, + "ps_no": "1783", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC19um", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC19um", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508967, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 66, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549465, + "ps_no": "1783", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC19um", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC19um", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508967, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 66, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549465, + "ps_no": "1783", + "recipe_name": "Phosphorus", + "recipe_no": 932, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC19um", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC19um", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508967, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 68, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548632, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1053630, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 68, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548632, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508103, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "E", + "reactor": 68, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548632, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508103, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "E", + "reactor": 68, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548632, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508103, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "E", + "reactor": 73, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549351, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1055685, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 73, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 549351, + "ps_no": "3073", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "Wacker", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Wacker2", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508852, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 77, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548464, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1053254, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "E", + "reactor": 77, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 548464, + "ps_no": "3258", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2507932, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 27, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547653, + "ps_no": "3503", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1050938, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 27, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547653, + "ps_no": "3503", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507090, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "H", + "reactor": 27, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547653, + "ps_no": "3503", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507090, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "H", + "reactor": 27, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 547653, + "ps_no": "3503", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507090, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "H", + "reactor": 40, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550509, + "ps_no": "3507", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1058973, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 40, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550509, + "ps_no": "3507", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2510057, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR1", + "spec_surfscan_recipe": "6IN_EPP ROTR", + "spec_ss_samp_qty": 4 + }, + { + "reactor_type": "H", + "reactor": 40, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550509, + "ps_no": "3507", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2510057, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_EPP_100", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "H", + "reactor": 42, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550510, + "ps_no": "3507", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1058976, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 42, + "ls_id": "L1", + "zone": "", + "load_lock_side": "", + "rds_no": 550510, + "ps_no": "3507", + "recipe_name": "Phosphorus", + "recipe_no": 974, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2510058, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 56, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 546872, + "ps_no": "2916", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1048797, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 56, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 546872, + "ps_no": "2916", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506281, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "H", + "reactor": 56, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 546872, + "ps_no": "2916", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506281, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "H", + "reactor": 56, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 546872, + "ps_no": "2916", + "recipe_name": "Phosphorus", + "recipe_no": 943, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2506281, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "H", + "reactor": 72, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547603, + "ps_no": "3704", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1050788, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 72, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547603, + "ps_no": "3704", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507034, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "8IN_IFX_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "H", + "reactor": 72, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547603, + "ps_no": "3704", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507034, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "IFX100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "H", + "reactor": 72, + "ls_id": "L1", + "zone": "", + "load_lock_side": "L", + "rds_no": 547603, + "ps_no": "3704", + "recipe_name": "Phosphorus", + "recipe_no": 931, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "HTR_6N", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507034, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "IFX25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "H", + "reactor": 75, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549447, + "ps_no": "3241", + "recipe_name": "Boron", + "recipe_no": 948, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 1055978, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 75, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549447, + "ps_no": "3241", + "recipe_name": "Boron", + "recipe_no": 948, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "HgCv", + "spec_cres_mrecipe": "6IN5PT_N", + "ci_no": 2508949, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "H", + "reactor": 79, + "ls_id": "L1", + "zone": "", + "load_lock_side": "R", + "rds_no": 549211, + "ps_no": "3221", + "recipe_name": "Phosphorus", + "recipe_no": 945, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "IRC6in_6mm", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "IRC6mm", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508702, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054401, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054401, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1054401, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 20, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "", + "rds_no": 548900, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 946, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508383, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 23, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548518, + "ps_no": "3476", + "recipe_name": "Phosphorus", + "recipe_no": 944, + "spec_type": "", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1053389, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 23, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548518, + "ps_no": "3476", + "recipe_name": "Phosphorus", + "recipe_no": 944, + "spec_type": "", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507986, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "8IN_THIN ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "8IN100_ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 30, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 549696, + "ps_no": "3147", + "recipe_name": "Phosphorus", + "recipe_no": 904, + "spec_type": "Pre-Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2509198, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "8IN25_ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 33, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 548307, + "ps_no": "3476", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1052815, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 33, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 548307, + "ps_no": "3476", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507769, + "spec_clean_tool": null, + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "6IN_PTYPE ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 51, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 547030, + "ps_no": "3147", + "recipe_name": "Boron", + "recipe_no": 952, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2506445, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "6IN_PTYPE_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_25ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_100ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1052797, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "GEN5_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_100ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "GEN5_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_25ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L1", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1052797, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1052797, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_25ROTR", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR2", + "spec_surfscan_recipe": "GEN5_ROTR", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 58, + "ls_id": "L2", + "zone": "1", + "load_lock_side": "R", + "rds_no": 548297, + "ps_no": "2892", + "recipe_name": "Phosphorus", + "recipe_no": 698, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2507749, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "GEN5_100ROTR", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1053857, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "", + "spec_res_mrecipe": "", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1053857, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L1", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "4PP", + "spec_res_mrecipe": "Lsl 6in / 6in9pt", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 3, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_25", + "spec_ss_samp_qty": 25 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 1053857, + "spec_clean_tool": "", + "mv_no": null, + "scan_tool": null, + "spec_surfscan_recipe": null, + "spec_ss_samp_qty": null + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 1, + "scan_tool": "TENCOR3", + "spec_surfscan_recipe": "EPISIL", + "spec_ss_samp_qty": 3 + }, + { + "reactor_type": "P", + "reactor": 70, + "ls_id": "L2", + "zone": "2", + "load_lock_side": "L", + "rds_no": 548716, + "ps_no": "3708", + "recipe_name": "Phosphorus", + "recipe_no": 960, + "spec_type": "Production", + "spec_thick_mtool": "FTIR", + "spec_thick_mrecipe": "EpiPro9pt/6in_9pt", + "spec_res_mtool": "HgCv", + "spec_res_mrecipe": "6IN5pt_N.SET", + "spec_cres_mtool": "", + "spec_cres_mrecipe": "", + "ci_no": 2508187, + "spec_clean_tool": null, + "mv_no": 2, + "scan_tool": null, + "spec_surfscan_recipe": "EPISIL_100", + "spec_ss_samp_qty": 6 + } + ] \ No newline at end of file diff --git a/Archive/Controllers/ExportController.cs b/Archive/Controllers/ExportController.cs index 0234c8e..ad59eca 100644 --- a/Archive/Controllers/ExportController.cs +++ b/Archive/Controllers/ExportController.cs @@ -82,6 +82,8 @@ public class ExportController : Controller ModelState.AddModelError("Exception", ex.Message); string errorMessage = $"Error exporting: {ex}"; _Logger.LogError(message: errorMessage); + MonIn monIn = MonIn.GetInstance(); + _ = monIn.SendStatus(_AppSettings.MonASite, _AppSettings.MonAResource, "Heartbeat", State.Warning); } } return View("Index", model); diff --git a/Archive/Controllers/PagesController.cs b/Archive/Controllers/PagesController.cs index aa400fb..fcf25ad 100644 --- a/Archive/Controllers/PagesController.cs +++ b/Archive/Controllers/PagesController.cs @@ -4,18 +4,21 @@ using OI.Metrology.Archive.Models; using OI.Metrology.Shared.Repositories; using OI.Metrology.Shared.ViewModels; using System; +using System.Collections.Generic; using IO = System.IO; namespace OI.Metrology.Archive.Controllers; public class PagesController : Controller { - private readonly IMetrologyRepo _Repo; private readonly bool _IsTestDatabase; + private readonly IRdsMaxRepo _RdsMaxRepo; + private readonly IMetrologyRepo _MetrologyRepo; - public PagesController(AppSettings appSettings, IMetrologyRepo repo) + public PagesController(AppSettings appSettings, IMetrologyRepo metrologyRepo, IRdsMaxRepo rdsMaxRepo) { - _Repo = repo; + _RdsMaxRepo = rdsMaxRepo; + _MetrologyRepo = metrologyRepo; _IsTestDatabase = appSettings.ConnectionString.Contains("test", StringComparison.InvariantCultureIgnoreCase); } @@ -33,7 +36,8 @@ public class PagesController : Controller [HttpGet] [Route("/AwaitingDispo")] [Route("/Metrology/AwaitingDispo")] - public IActionResult AwaitingDispo() => View(); + public IActionResult AwaitingDispo() => + View(); [HttpGet] [Route("/RunInfo")] @@ -48,7 +52,7 @@ public class PagesController : Controller }; if (headerid > 0) { - m.HeaderAttachmentID = _Repo.GetHeaderAttachmentID(tooltypeid, headerid); + m.HeaderAttachmentID = _MetrologyRepo.GetHeaderAttachmentID(tooltypeid, headerid); } return View(m); } @@ -56,11 +60,13 @@ public class PagesController : Controller [HttpGet] [Route("/RunHeaders")] [Route("/Metrology/RunHeaders")] - public IActionResult RunHeaders() => View(); + public IActionResult RunHeaders() => + View(); [HttpGet] [Route("/Crash")] - public IActionResult Crash() => throw new Exception("Test unhandled exception"); + public IActionResult Crash() => + throw new Exception("Test unhandled exception"); [HttpGet] [Route("/Step1")] @@ -72,33 +78,48 @@ public class PagesController : Controller _ = IO.Directory.CreateDirectory(directory); string[] model = new string[] { mod, equipment, layer, zone, rds, initials }; if (!string.IsNullOrEmpty(initials)) - IO.File.WriteAllLines(IO.Path.Combine(directory, $"{DateTime.Now.Ticks}.rsv"), model); + IO.File.WriteAllLines(IO.Path.Combine(directory, $"{DateTime.Now.Ticks}-{initials}.rsv"), model); return View(model); } [HttpGet] [Route("/Step2")] [Route("/Metrology/Step2")] - public IActionResult Step2(string mod) => View(new string[] { mod }); + public IActionResult Step2(string mod) => + View(new string[] { mod }); [HttpGet] [Route("/Step3")] [Route("/Metrology/Step3")] - public IActionResult Step3(string mod, string equipment) => View(new string[] { mod, equipment }); + public IActionResult Step3(string mod, string equipment) => + View(new string[] { mod, equipment }); [HttpGet] [Route("/Step4")] [Route("/Metrology/Step4")] - public IActionResult Step4(string mod, string equipment, string layer) => View(new string[] { mod, equipment, layer }); + public IActionResult Step4(string mod, string equipment, string layer) => + View(new string[] { mod, equipment, layer }); [HttpGet] [Route("/Step5")] [Route("/Metrology/Step5")] - public IActionResult Step5(string mod, string equipment, string layer, string zone) => View(new string[] { mod, equipment, layer, zone }); + public IActionResult Step5(string mod, string equipment, string layer, string zone) => + View(new string[] { mod, equipment, layer, zone }); [HttpGet] [Route("/Step6")] [Route("/Metrology/Step6")] - public IActionResult Step6(string mod, string equipment, string layer, string zone, string rds) => View(new string[] { mod, equipment, layer, zone, rds }); + public IActionResult Step6(string mod, string equipment, string layer, string zone, string rds) => + View(new string[] { mod, equipment, layer, zone, rds }); + + [HttpGet] + [Route("/RdsMax")] + [Route("/Metrology/RdsMax")] + public IActionResult RdsMax() + { + Shared.DataModels.RDS.Max[] collection = _RdsMaxRepo.GetMaxRDS(); + List results = _RdsMaxRepo.Convert(collection); + return View(results); + } } \ No newline at end of file diff --git a/Archive/Models/AppSettings.cs b/Archive/Models/AppSettings.cs index 3e90e78..a5a06b6 100644 --- a/Archive/Models/AppSettings.cs +++ b/Archive/Models/AppSettings.cs @@ -18,11 +18,26 @@ public class AppSettings public string MonAResource { init; get; } public string MonASite { init; get; } public string OIExportPath { init; get; } + public string Oi2SqlConnectionString { init; get; } public string URLs { init; get; } public string WorkingDirectoryName { init; get; } [JsonConstructor] - public AppSettings(string apiLoggingContentTypes, string apiLoggingPathPrefixes, string apiLogPath, string attachmentPath, string buildNumber, string company, string connectionString, string gitCommitSeven, string inboundApiAllowedIPList, string monAResource, string monASite, string oiExportPath, string urls, string workingDirectoryName) + public AppSettings(string apiLoggingContentTypes, + string apiLoggingPathPrefixes, + string apiLogPath, + string attachmentPath, + string buildNumber, + string company, + string connectionString, + string gitCommitSeven, + string inboundApiAllowedIPList, + string monAResource, + string monASite, + string oi2SqlConnectionString, + string oiExportPath, + string urls, + string workingDirectoryName) { ApiLoggingContentTypes = apiLoggingContentTypes; ApiLoggingPathPrefixes = apiLoggingPathPrefixes; @@ -35,6 +50,7 @@ public class AppSettings InboundApiAllowedIPList = inboundApiAllowedIPList; MonAResource = monAResource; MonASite = monASite; + Oi2SqlConnectionString = oi2SqlConnectionString; OIExportPath = oiExportPath; URLs = urls; WorkingDirectoryName = workingDirectoryName; diff --git a/Archive/Models/Binder/AppSettings.cs b/Archive/Models/Binder/AppSettings.cs index 72549e3..5b416de 100644 --- a/Archive/Models/Binder/AppSettings.cs +++ b/Archive/Models/Binder/AppSettings.cs @@ -20,6 +20,7 @@ public class AppSettings [Display(Name = "Inbound Api Allowed IP List"), Required] public string InboundApiAllowedIPList { get; set; } [Display(Name = "MonA Resource"), Required] public string MonAResource { get; set; } [Display(Name = "MonA Site"), Required] public string MonASite { get; set; } + [Display(Name = "Oi 2 Sql Connection String"), Required] public string Oi2SqlConnectionString { get; set; } [Display(Name = "OI Export Path"), Required] public string OIExportPath { get; set; } [Display(Name = "URLs"), Required] public string URLs { get; set; } [Display(Name = "Working Directory Name"), Required] public string WorkingDirectoryName { get; set; } @@ -47,6 +48,7 @@ public class AppSettings appSettings.InboundApiAllowedIPList, appSettings.MonAResource, appSettings.MonASite, + appSettings.Oi2SqlConnectionString, appSettings.OIExportPath, appSettings.URLs, appSettings.WorkingDirectoryName); diff --git a/Archive/Models/Binder/Max.cs b/Archive/Models/Binder/Max.cs new file mode 100644 index 0000000..0e4d553 --- /dev/null +++ b/Archive/Models/Binder/Max.cs @@ -0,0 +1,31 @@ +namespace OI.Metrology.Archive.Models.Binder; + +public class Max +{ + +#pragma warning disable + + public string reactor_type { get; set; } + public int reactor { get; set; } + public string ls_id { get; set; } + public string zone { get; set; } + public string load_lock_side { get; set; } + public int rds_no { get; set; } + public string ps_no { get; set; } + public string recipe_name { get; set; } + public int recipe_no { get; set; } + public string spec_type { get; set; } + public string spec_thick_mtool { get; set; } + public string spec_thick_mrecipe { get; set; } + public string spec_res_mtool { get; set; } + public string spec_res_mrecipe { get; set; } + public string spec_cres_mtool { get; set; } + public string spec_cres_mrecipe { get; set; } + public int ci_no { get; set; } + public string spec_clean_tool { get; set; } + public int? mv_no { get; set; } + public string scan_tool { get; set; } + public string spec_surfscan_recipe { get; set; } + public int? spec_ss_samp_qty { get; set; } + +} \ No newline at end of file diff --git a/Archive/Program.cs b/Archive/Program.cs index 064a011..9cb14c0 100644 --- a/Archive/Program.cs +++ b/Archive/Program.cs @@ -70,6 +70,7 @@ public class Program _ = webApplicationBuilder.Services.AddScoped(); _ = webApplicationBuilder.Services.AddScoped(); _ = webApplicationBuilder.Services.AddScoped(); + _ = webApplicationBuilder.Services.AddScoped(); _ = webApplicationBuilder.Services.AddSingleton(); _ = webApplicationBuilder.Services.AddSwaggerGen(); _ = webApplicationBuilder.Services.AddSession(sessionOptions => diff --git a/Archive/Repositories/MetrologyRepo.cs b/Archive/Repositories/MetrologyRepo.cs index 27046c8..78ce1d9 100644 --- a/Archive/Repositories/MetrologyRepo.cs +++ b/Archive/Repositories/MetrologyRepo.cs @@ -25,7 +25,8 @@ public class MetrologyRepo : IMetrologyRepo private DbConnection GetDbConnection() => _DBConnectionFactory.GetDbConnection(); - protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => DbProviderFactories.GetFactory(conn.GetType().Namespace); + protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => + DbProviderFactories.GetFactory(conn.GetType().Namespace); public bool IsTestDatabase() { diff --git a/Archive/Repositories/RdsMaxRepo.cs b/Archive/Repositories/RdsMaxRepo.cs new file mode 100644 index 0000000..b2cd86e --- /dev/null +++ b/Archive/Repositories/RdsMaxRepo.cs @@ -0,0 +1,286 @@ +using Microsoft.Extensions.Caching.Memory; +using OI.Metrology.Shared.DataModels.RDS; +using OI.Metrology.Shared.Repositories; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Data.SqlClient; +using System.Linq; +using System.Text; + +namespace OI.Metrology.Archive.Repositories; + +public class RdsMaxRepo : IRdsMaxRepo +{ + + private readonly IMemoryCache _Cache; + private readonly Models.AppSettings _AppSettings; + + public RdsMaxRepo(Models.AppSettings appSettings, IMemoryCache memoryCache) + { + _Cache = memoryCache; + _AppSettings = appSettings; + } + + protected void CacheItem(string key, object v) + { + System.Diagnostics.Debug.WriteLine("CacheItem: " + key); + + _ = _Cache.Set(key, v, new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(1))); + } + + private static string GetMaxRdsSql() + { + StringBuilder result = new(); + _ = result.Append(" select "). + Append(" rt.reactor_type "). + Append(" , rr.reactor "). + Append(" , rt.ls_id "). + Append(" , rt.zone "). + Append(" , rr.load_lock_side "). + Append(" , rr.rds_no "). + Append(" , rt.ps_no "). + Append(" , rr.recipe_name "). + Append(" , rr.recipe_no "). + Append(" , rr.spec_type "). + Append(" , rt.spec_thick_mtool "). + Append(" , rt.spec_thick_mrecipe "). + Append(" , rt.spec_res_mtool "). + Append(" , rt.spec_res_mrecipe "). + Append(" , rt.spec_cres_mtool "). + Append(" , rt.spec_cres_mrecipe "). + Append(" , ci.ci_no "). + Append(" , ci.spec_clean_tool "). + Append(" , cr.mv_no "). + Append(" , cr.scan_tool "). + Append(" , cr.spec_surfscan_recipe "). + Append(" , cr.spec_ss_samp_qty "). + Append(" from ( "). + Append(" select rds_no "). + Append(" from lsl2sql.dbo.react_run qa "). + Append(" inner join ( "). + Append(" select max(qb.rds_no) max_rds_no, qb.reactor "). + Append(" from lsl2sql.dbo.react_run qb "). + Append(" where qb.load_sig != '' "). + Append(" and qb.load_sig_dtm > @load_sig_dtm "). + Append(" group by qb.reactor "). + Append(" ) qb "). + Append(" on qa.rds_no = qb.max_rds_no "). + Append(" ) as qc "). + Append(" inner join lsl2sql.dbo.react_run rr "). + Append(" on qc.rds_no = rr.rds_no "). + Append(" left join [lsl2sql].[dbo].[rds_test] rt "). + Append(" on rr.rds_no = rt.rds_no "). + Append(" left join [lsl2sql].[dbo].[clean_insp] ci "). + Append(" on rr.rds_no = ci.rds_no "). + Append(" and ci.stage = 'LWI' "). + Append(" left join [lsl2sql].[dbo].[clean_insp_scan_results] cr "). + Append(" on ci.ci_no = cr.ci_no "). + Append(" order by "). + Append(" rr.reactor "). + Append(" , rt.ls_id "). + Append(" , rt.zone "). + Append(" for json path "); + return result.ToString(); + } + + private string GetMaxRDSJson(string commandText) + { + StringBuilder result = new(); + try + { + using DbConnection dbConnection = SqlClientFactory.Instance.CreateConnection(); + dbConnection.ConnectionString = _AppSettings.Oi2SqlConnectionString; + dbConnection.Open(); + using DbCommand dbCommand = dbConnection.CreateCommand(); + dbCommand.CommandText = commandText; + using DbDataReader reader = dbCommand.ExecuteReader(CommandBehavior.SequentialAccess); + while (reader.Read()) + _ = result.Append(reader.GetString(0)); + dbConnection.Close(); + } + catch (Exception) + { } + return result.ToString(); + } + + public Max[] GetMaxRDS() + { + Max[] cached; + string cacheKey = "GetMaxRDS"; + if (_Cache.TryGetValue(cacheKey, out cached)) + return cached; + + string loadSigDTM = DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd 00:00:00.000"); + string sql = GetMaxRdsSql(); + string commandText = sql.Replace("@load_sig_dtm", $"'{loadSigDTM}'"); + string json = GetMaxRDSJson(commandText); + Max[] r = System.Text.Json.JsonSerializer.Deserialize(json); + + CacheItem(cacheKey, r); + + return r; + } + + private static Dictionary> GetReactorToRecords(Max[] collection) + { + Dictionary> results = new(); + foreach (Max max in collection) + { + if (!results.ContainsKey(max.Reactor)) + results.Add(max.Reactor, new()); + results[max.Reactor].Add(max); + } + return results; + } + + private static (string[], int[], int[], int[]) GetDistinct(Max[] collection) + { + List layerCollection = new(); + List comboCollection = new(); + List zoneCollection = new(); + List cleanCollection = new(); + foreach (Max max in collection) + { + if (!string.IsNullOrEmpty(max.LsId) && max.LsId[0] == 'L' && !layerCollection.Contains(max.LsId)) + layerCollection.Add(max.LsId); + if (!string.IsNullOrEmpty(max.LsId) && max.LsId[0] != 'L' && int.TryParse(max.LsId, out int comboCheck) && !comboCollection.Contains(comboCheck)) + comboCollection.Add(comboCheck); + if (!string.IsNullOrEmpty(max.Zone) && int.TryParse(max.Zone, out int zoneCheck) && !zoneCollection.Contains(zoneCheck)) + zoneCollection.Add(zoneCheck); + if (max.MvNo.HasValue && !cleanCollection.Contains(max.MvNo.Value)) + cleanCollection.Add(max.MvNo.Value); + } + return new(layerCollection.OrderBy(l => l).ToArray(), comboCollection.OrderBy(l => l).ToArray(), zoneCollection.OrderBy(l => l).ToArray(), cleanCollection.OrderBy(l => l).ToArray()); + } + + private static Max[] GetLayerZoneCollection(Dictionary> layerZoneToCollection) + { + Max[] results; + List<(string Sort, Max Max)> collection = new(); + foreach (KeyValuePair> keyValuePair in layerZoneToCollection) + collection.AddRange(keyValuePair.Value); + results = (from l in collection orderby l.Sort select l.Max).ToArray(); + return results; + } + + private static Max[] GetLayerZoneCollection(string[] layerCollection, int[] comboCollection, int[] zoneCollection, List collection) + { + Max[] results; + string key; + string sort; + string distinct; + List distinctCollection = new(); + Dictionary> layerZoneToCollection = new(); + foreach (string layer in layerCollection) + { + layerZoneToCollection.Add(string.Concat(layer, '.'), new()); + foreach (int zone in zoneCollection) + layerZoneToCollection.Add(string.Concat(layer, '.', zone), new()); + } + foreach (int combo in comboCollection) + { + layerZoneToCollection.Add(string.Concat(combo, '.'), new()); + foreach (int zone in zoneCollection) + layerZoneToCollection.Add(string.Concat(combo, '.', zone), new()); + } + foreach (Max max in collection) + { + if (string.IsNullOrEmpty(max.LsId)) + continue; + sort = string.Concat(max.LsId.PadLeft(2, 'Z'), '.', max.Zone); + key = string.Concat(max.LsId, '.', max.Zone); + distinct = string.Concat(max.LsId, '\t', max.Zone, '\t', max.LoadLockSide, '\t', max.RdsNo, '\t', max.PsNo, '\t', max.RecipeName, '\t', max.SpecType, '\t', max.SpecThickMtool, '\t', max.SpecThickMrecipe, '\t', max.SpecResMtool, '\t', max.SpecResMrecipe, '\t', max.SpecCresMtool, '\t', max.SpecCresMrecipe); + if (distinctCollection.Contains(distinct)) + continue; + distinctCollection.Add(distinct); + layerZoneToCollection[key].Add(new(sort, max)); + } + results = GetLayerZoneCollection(layerZoneToCollection); + return results; + } + + private static Max[] GetCleanCollection(Dictionary> layerZoneToCollection) + { + Max[] results; + List<(int Sort, Max Max)> collection = new(); + foreach (KeyValuePair> keyValuePair in layerZoneToCollection) + collection.AddRange(keyValuePair.Value); + results = (from l in collection orderby l.Sort select l.Max).ToArray(); + return results; + } + + private static Max[] GetCleanCollection(int[] cleanCollection, List collection) + { + Max[] results; + int key; + string distinct; + List distinctCollection = new(); + Dictionary> cleanToCollection = new(); + foreach (int clean in cleanCollection) + cleanToCollection.Add(clean, new()); + foreach (Max max in collection) + { + if (max.MvNo is null) + continue; + key = max.MvNo.Value; + distinct = string.Concat(max.MvNo, '\t', max.ScanTool, '\t', max.SpecSurfscanRecipe, '\t', max.SpecSsSampQty); + if (distinctCollection.Contains(distinct)) + continue; + distinctCollection.Add(distinct); + cleanToCollection[key].Add(new(key, max)); + } + results = GetCleanCollection(cleanToCollection); + return results; + } + + public List Convert(Max[] collection) + { + List results = new(); + string[] row; + Max[] cleanCollectionB; + List res = new(); + Max[] layerZoneCollection; + List clean = new(); + List thick = new(); + List centerRes = new(); + StringBuilder stringBuilder = new(); + _ = stringBuilder.Append($"Reactor\tReactorType\tRDS\tPSN\tName\tSpecType\tRes\tThick\tCenter Res\tClean"); + row = stringBuilder.ToString().Split('\t'); + results.Add(row); + Dictionary> reactorToRecords = GetReactorToRecords(collection); + (string[] layerCollection, int[] comboCollection, int[] zoneCollection, int[] cleanCollection) = GetDistinct(collection); + foreach (KeyValuePair> reactorToRecord in reactorToRecords) + { + res.Clear(); + clean.Clear(); + thick.Clear(); + centerRes.Clear(); + _ = stringBuilder.Clear(); + foreach (Max max in reactorToRecord.Value) + { + _ = stringBuilder.Append($"R{max.Reactor}\t{max.ReactorType}\t{max.RdsNo}\t{max.PsNo}\t{max.RecipeName}\t{max.SpecType}\t"); + break; + } + layerZoneCollection = GetLayerZoneCollection(layerCollection, comboCollection, zoneCollection, reactorToRecord.Value); + foreach (Max max in layerZoneCollection) + { + res.Add(string.Concat(max.LsId, '.', max.Zone, " - ", max.SpecResMtool, " {", max.SpecResMrecipe, '}')); + thick.Add(string.Concat(max.LsId, '.', max.Zone, " - ", max.SpecThickMtool, " {", max.SpecThickMrecipe, '}')); + centerRes.Add(string.Concat(max.LsId, '.', max.Zone, " - ", max.SpecCresMtool, " {", max.SpecCresMrecipe, '}')); + } + _ = stringBuilder.Append($"{string.Join("
", res.ToArray())}\t"); + _ = stringBuilder.Append($"{string.Join("
", thick.ToArray())}\t"); + _ = stringBuilder.Append($"{string.Join("
", centerRes.ToArray())}\t"); + cleanCollectionB = GetCleanCollection(cleanCollection, reactorToRecord.Value); + foreach (Max max in cleanCollectionB) + clean.Add(string.Concat(max.MvNo, " - {", max.SpecSurfscanRecipe, "} [", max.SpecSsSampQty, "] ", max.ScanTool)); + _ = stringBuilder.Append($"{string.Join("
", clean.ToArray())}"); + row = stringBuilder.ToString().Split('\t'); + results.Add(row); + } + return results; + } + +} \ No newline at end of file diff --git a/Archive/Repositories/SQLDbConnectionFactory.cs b/Archive/Repositories/SQLDbConnectionFactory.cs index 99174f7..fc85caa 100644 --- a/Archive/Repositories/SQLDbConnectionFactory.cs +++ b/Archive/Repositories/SQLDbConnectionFactory.cs @@ -12,6 +12,12 @@ public class SQLDbConnectionFactory : IDbConnectionFactory public SQLDbConnectionFactory(AppSettings appSettings) => _AppSettings = appSettings; + public SQLDbConnectionFactory(string json) + { + AppSettings appSettings = System.Text.Json.JsonSerializer.Deserialize(json); + _AppSettings = appSettings; + } + public DbConnection GetDbConnection() { DbProviderFactories.RegisterFactory( diff --git a/Archive/Views/Pages/RdsMax.cshtml b/Archive/Views/Pages/RdsMax.cshtml new file mode 100644 index 0000000..79ce7a8 --- /dev/null +++ b/Archive/Views/Pages/RdsMax.cshtml @@ -0,0 +1,43 @@ +@model System.Collections.Generic.List +@{ + ViewData["Title"] = "Max RDS per Reactor with Recipes"; +} + + + +

Max RDS per Reactor with Recipes

+ + + @foreach (string[] row in Model) + { + + @foreach (string column in row) + { + + } + + } +
@Html.Raw(column)
+ + diff --git a/Archive/appsettings.Development.json b/Archive/appsettings.Development.json index c74d050..3f7265b 100644 --- a/Archive/appsettings.Development.json +++ b/Archive/appsettings.Development.json @@ -19,6 +19,7 @@ "InboundApiAllowedIPList": "", "MonAResource": "OI_Metrology_Archive_IFX", "MonASite": "auc", + "Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", "Serilog": { "Using": [ diff --git a/Archive/appsettings.json b/Archive/appsettings.json index cb88e6b..8780533 100644 --- a/Archive/appsettings.json +++ b/Archive/appsettings.json @@ -19,6 +19,7 @@ "InboundApiAllowedIPList": "", "MonAResource": "OI_Metrology_Archive_EC", "MonASite": "auc", + "Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", "Serilog": { "Using": [ diff --git a/Shared/DataModels/RDS/Max.cs b/Shared/DataModels/RDS/Max.cs new file mode 100644 index 0000000..375b73d --- /dev/null +++ b/Shared/DataModels/RDS/Max.cs @@ -0,0 +1,28 @@ +using System.Text.Json.Serialization; + +namespace OI.Metrology.Shared.DataModels.RDS; + +public record Max( + [property: JsonPropertyName("reactor_type")] string ReactorType, + [property: JsonPropertyName("reactor")] int Reactor, + [property: JsonPropertyName("ls_id")] string LsId, + [property: JsonPropertyName("zone")] string Zone, + [property: JsonPropertyName("load_lock_side")] string LoadLockSide, + [property: JsonPropertyName("rds_no")] int RdsNo, + [property: JsonPropertyName("ps_no")] string PsNo, + [property: JsonPropertyName("recipe_name")] string RecipeName, + [property: JsonPropertyName("recipe_no")] int RecipeNo, + [property: JsonPropertyName("spec_type")] string SpecType, + [property: JsonPropertyName("spec_thick_mtool")] string SpecThickMtool, + [property: JsonPropertyName("spec_thick_mrecipe")] string SpecThickMrecipe, + [property: JsonPropertyName("spec_res_mtool")] string SpecResMtool, + [property: JsonPropertyName("spec_res_mrecipe")] string SpecResMrecipe, + [property: JsonPropertyName("spec_cres_mtool")] string SpecCresMtool, + [property: JsonPropertyName("spec_cres_mrecipe")] string SpecCresMrecipe, + [property: JsonPropertyName("ci_no")] int CiNo, + [property: JsonPropertyName("spec_clean_tool")] string SpecCleanTool, + [property: JsonPropertyName("mv_no")] int? MvNo, + [property: JsonPropertyName("scan_tool")] string ScanTool, + [property: JsonPropertyName("spec_surfscan_recipe")] string SpecSurfscanRecipe, + [property: JsonPropertyName("spec_ss_samp_qty")] int? SpecSsSampQty + ); \ No newline at end of file diff --git a/Shared/Infineon/Monitoring/MonA/MonIn.cs b/Shared/Infineon/Monitoring/MonA/MonIn.cs index 57b310e..640e6f2 100644 --- a/Shared/Infineon/Monitoring/MonA/MonIn.cs +++ b/Shared/Infineon/Monitoring/MonA/MonIn.cs @@ -51,21 +51,24 @@ public class MonIn : IMonIn, IDisposable _WebClient.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password)); } - public string SendStatus(string site, string resource, string stateName, State state) => SendStatus(site, new DateTime?(), resource, string.Empty, stateName, state, string.Empty); + public string SendStatus(string site, string resource, string stateName, State state) => + SendStatus(site, new DateTime?(), resource, string.Empty, stateName, state, string.Empty); public string SendStatus( string site, DateTime timeStamp, string resource, string stateName, - State state) => SendStatus(site, new DateTime?(timeStamp), resource, string.Empty, stateName, state, string.Empty); + State state) => + SendStatus(site, new DateTime?(timeStamp), resource, string.Empty, stateName, state, string.Empty); public string SendStatus( string site, string resource, string stateName, State state, - string description) => SendStatus(site, new DateTime?(), resource, string.Empty, stateName, state, description); + string description) => + SendStatus(site, new DateTime?(), resource, string.Empty, stateName, state, description); public string SendStatus( string site, @@ -73,14 +76,16 @@ public class MonIn : IMonIn, IDisposable string resource, string stateName, State state, - string description) => SendStatus(site, new DateTime?(timeStamp), resource, string.Empty, stateName, state, description); + string description) => + SendStatus(site, new DateTime?(timeStamp), resource, string.Empty, stateName, state, description); public string SendStatus( string site, string resource, string subresource, string stateName, - State state) => SendStatus(site, new DateTime?(), resource, subresource, stateName, state, string.Empty); + State state) => + SendStatus(site, new DateTime?(), resource, subresource, stateName, state, string.Empty); public string SendStatus( string site, @@ -88,7 +93,8 @@ public class MonIn : IMonIn, IDisposable string resource, string subresource, string stateName, - State state) => SendStatus(site, new DateTime?(timeStamp), resource, subresource, stateName, state, string.Empty); + State state) => + SendStatus(site, new DateTime?(timeStamp), resource, subresource, stateName, state, string.Empty); public string SendStatus( string site, @@ -96,7 +102,8 @@ public class MonIn : IMonIn, IDisposable string subresource, string stateName, State state, - string description) => SendStatus(site, new DateTime?(), resource, subresource, stateName, state, description); + string description) => + SendStatus(site, new DateTime?(), resource, subresource, stateName, state, description); public string SendStatus( string site, @@ -116,21 +123,24 @@ public class MonIn : IMonIn, IDisposable string site, string resource, string performanceName, - double value) => SendPerformanceMessage(site, new DateTime?(), resource, string.Empty, performanceName, value, string.Empty, string.Empty, new int?()); + double value) => + SendPerformanceMessage(site, new DateTime?(), resource, string.Empty, performanceName, value, string.Empty, string.Empty, new int?()); public string SendPerformanceMessage( string site, DateTime? timeStamp, string resource, string performanceName, - double value) => SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, string.Empty, new int?()); + double value) => + SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, string.Empty, new int?()); public string SendPerformanceMessage( string site, string resource, string performanceName, double value, - string description) => SendPerformanceMessage(site, new DateTime?(), resource, string.Empty, performanceName, value, description, string.Empty, new int?()); + string description) => + SendPerformanceMessage(site, new DateTime?(), resource, string.Empty, performanceName, value, description, string.Empty, new int?()); public string SendPerformanceMessage( string site, @@ -138,7 +148,8 @@ public class MonIn : IMonIn, IDisposable string resource, string performanceName, double value, - string description) => SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, description, string.Empty, new int?()); + string description) => + SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, description, string.Empty, new int?()); public string SendPerformanceMessage( string site, @@ -146,7 +157,8 @@ public class MonIn : IMonIn, IDisposable string resource, string performanceName, double value, - int? interval) => SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, string.Empty, interval); + int? interval) => + SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, string.Empty, interval); public string SendPerformanceMessage( string site, @@ -154,7 +166,8 @@ public class MonIn : IMonIn, IDisposable DateTime? timeStamp, string performanceName, double value, - string unit) => SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, unit, new int?()); + string unit) => + SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, unit, new int?()); public string SendPerformanceMessage( string site, @@ -163,14 +176,16 @@ public class MonIn : IMonIn, IDisposable string performanceName, double value, string unit, - int? interval) => SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, unit, interval); + int? interval) => + SendPerformanceMessage(site, timeStamp, resource, string.Empty, performanceName, value, string.Empty, unit, interval); public string SendPerformanceMessage( string site, string resource, string subresource, string performanceName, - double value) => SendPerformanceMessage(site, new DateTime?(), resource, subresource, performanceName, value, string.Empty, string.Empty, new int?()); + double value) => + SendPerformanceMessage(site, new DateTime?(), resource, subresource, performanceName, value, string.Empty, string.Empty, new int?()); public string SendPerformanceMessage( string site, @@ -178,7 +193,8 @@ public class MonIn : IMonIn, IDisposable string resource, string subresource, string performanceName, - double value) => SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, string.Empty, new int?()); + double value) => + SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, string.Empty, new int?()); public string SendPerformanceMessage( string site, @@ -186,7 +202,8 @@ public class MonIn : IMonIn, IDisposable string subresource, string performanceName, double value, - string description) => SendPerformanceMessage(site, new DateTime?(), resource, subresource, performanceName, value, description, string.Empty, new int?()); + string description) => + SendPerformanceMessage(site, new DateTime?(), resource, subresource, performanceName, value, description, string.Empty, new int?()); public string SendPerformanceMessage( string site, @@ -195,7 +212,8 @@ public class MonIn : IMonIn, IDisposable string subresource, string performanceName, double value, - int? interval) => SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, string.Empty, interval); + int? interval) => + SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, string.Empty, interval); public string SendPerformanceMessage( string site, @@ -204,7 +222,8 @@ public class MonIn : IMonIn, IDisposable string subresource, string performanceName, double value, - string unit) => SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, unit, new int?()); + string unit) => + SendPerformanceMessage(site, timeStamp, resource, subresource, performanceName, value, string.Empty, unit, new int?()); public string SendPerformanceMessage( string site, diff --git a/Shared/Models/IWorkingDirectory.cs b/Shared/Models/IWorkingDirectory.cs index 4990bcf..fa914c0 100644 --- a/Shared/Models/IWorkingDirectory.cs +++ b/Shared/Models/IWorkingDirectory.cs @@ -3,6 +3,7 @@ namespace OI.Metrology.Shared.Models; public interface IWorkingDirectory { - static string GetWorkingDirectory(string? executingAssemblyName, string subDirectoryName) => WorkingDirectory.GetWorkingDirectory(executingAssemblyName, subDirectoryName); + static string GetWorkingDirectory(string? executingAssemblyName, string subDirectoryName) => + WorkingDirectory.GetWorkingDirectory(executingAssemblyName, subDirectoryName); } \ No newline at end of file diff --git a/Shared/Repositories/IRdsMaxRepo.cs b/Shared/Repositories/IRdsMaxRepo.cs new file mode 100644 index 0000000..28fd4f7 --- /dev/null +++ b/Shared/Repositories/IRdsMaxRepo.cs @@ -0,0 +1,11 @@ +namespace OI.Metrology.Shared.Repositories; + +using DataModels.RDS; +using System.Collections.Generic; + +public interface IRdsMaxRepo +{ + + Max[] GetMaxRDS(); + List Convert(Max[] collection); +} \ No newline at end of file diff --git a/Tests/Models/AppSettings.cs b/Tests/Models/AppSettings.cs index 053348f..672e8ab 100644 --- a/Tests/Models/AppSettings.cs +++ b/Tests/Models/AppSettings.cs @@ -17,12 +17,27 @@ public class AppSettings public string InboundApiAllowedIPList { init; get; } public string MonAResource { init; get; } public string MonASite { init; get; } + public string Oi2SqlConnectionString { init; get; } public string OIExportPath { init; get; } public string URLs { init; get; } public string WorkingDirectoryName { init; get; } [JsonConstructor] - public AppSettings(string apiLoggingContentTypes, string apiLoggingPathPrefixes, string apiLogPath, string attachmentPath, string buildNumber, string company, string connectionString, string gitCommitSeven, string inboundApiAllowedIPList, string monAResource, string monASite, string oiExportPath, string urls, string workingDirectoryName) + public AppSettings(string apiLoggingContentTypes, + string apiLoggingPathPrefixes, + string apiLogPath, + string attachmentPath, + string buildNumber, + string company, + string connectionString, + string gitCommitSeven, + string inboundApiAllowedIPList, + string monAResource, + string monASite, + string oi2SqlConnectionString, + string oiExportPath, + string urls, + string workingDirectoryName) { ApiLoggingContentTypes = apiLoggingContentTypes; ApiLoggingPathPrefixes = apiLoggingPathPrefixes; @@ -35,6 +50,7 @@ public class AppSettings InboundApiAllowedIPList = inboundApiAllowedIPList; MonAResource = monAResource; MonASite = monASite; + Oi2SqlConnectionString = oi2SqlConnectionString; OIExportPath = oiExportPath; URLs = urls; WorkingDirectoryName = workingDirectoryName; diff --git a/Tests/Models/Binder/AppSettings.cs b/Tests/Models/Binder/AppSettings.cs index 246a49a..5c137f7 100644 --- a/Tests/Models/Binder/AppSettings.cs +++ b/Tests/Models/Binder/AppSettings.cs @@ -20,6 +20,7 @@ public class AppSettings [Display(Name = "Inbound Api Allowed IP List"), Required] public string InboundApiAllowedIPList { get; set; } [Display(Name = "MonA Resource"), Required] public string MonAResource { get; set; } [Display(Name = "MonA Site"), Required] public string MonASite { get; set; } + [Display(Name = "Oi 2 Sql Connection String"), Required] public string Oi2SqlConnectionString { get; set; } [Display(Name = "OI Export Path"), Required] public string OIExportPath { get; set; } [Display(Name = "URLs"), Required] public string URLs { get; set; } [Display(Name = "Working Directory Name"), Required] public string WorkingDirectoryName { get; set; } @@ -47,6 +48,7 @@ public class AppSettings appSettings.InboundApiAllowedIPList, appSettings.MonAResource, appSettings.MonASite, + appSettings.Oi2SqlConnectionString, appSettings.OIExportPath, appSettings.URLs, appSettings.WorkingDirectoryName); diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj index 777ac1f..9deff53 100644 --- a/Tests/Tests.csproj +++ b/Tests/Tests.csproj @@ -44,10 +44,13 @@ - + Always - + + Always + + Always diff --git a/Tests/UnitTestArchive.cs b/Tests/UnitTestArchive.cs index 3bf4fd8..59522bd 100644 --- a/Tests/UnitTestArchive.cs +++ b/Tests/UnitTestArchive.cs @@ -1,10 +1,15 @@ +using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using OI.Metrology.Archive.Repositories; using OI.Metrology.Shared.Models; +using OI.Metrology.Shared.Repositories; using OI.Metrology.Tests.Models; using Serilog; using System.Reflection; +using System.Text.Json; -namespace View_by_Distance.Tests; +namespace OI.Metrology.Tests; [TestClass] public class UnitTestArchive @@ -13,6 +18,7 @@ public class UnitTestArchive private readonly ILogger _Logger; private readonly AppSettings _AppSettings; private readonly string _WorkingDirectory; + private readonly IMemoryCache? _MemoryCache; private readonly IConfigurationRoot _ConfigurationRoot; public UnitTestArchive() @@ -27,13 +33,17 @@ public class UnitTestArchive .AddEnvironmentVariables() .AddJsonFile("appsettings.Development.json"); configurationRoot = configurationBuilder.Build(); - appSettings = OI.Metrology.Tests.Models.Binder.AppSettings.Get(configurationRoot); + appSettings = Models.Binder.AppSettings.Get(configurationRoot); workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName); Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory); _ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot); Log.Logger = loggerConfiguration.CreateLogger(); logger = Log.ForContext(); logger.Information("Complete"); + ServiceCollection services = new(); + ServiceProvider serviceProvider = services.BuildServiceProvider(); + _ = services.AddMemoryCache(); + _MemoryCache = serviceProvider.GetService(); _Logger = logger; _AppSettings = appSettings; _WorkingDirectory = workingDirectory; @@ -56,7 +66,23 @@ public class UnitTestArchive Assert.IsFalse(_AppSettings is null); Assert.IsFalse(_WorkingDirectory is null); Assert.IsFalse(_ConfigurationRoot is null); + } + [TestMethod] + public void TestMethodArchiveJson() + { + string json; + string jsonFile = Path.Combine(AppContext.BaseDirectory, "RdsMaxRepo.json"); + Assert.IsTrue(File.Exists(jsonFile)); + json = JsonSerializer.Serialize(_AppSettings); + IDbConnectionFactory dbConnectionFactory = new SQLDbConnectionFactory(json); + IRdsMaxRepo rdsMaxRepo = new RdsMaxRepo(dbConnectionFactory, _MemoryCache); + json = File.ReadAllText(jsonFile); + Shared.DataModels.RDS.Max[]? collection = JsonSerializer.Deserialize(json); + if (collection is null) + throw new NullReferenceException(nameof(collection)); + List data = rdsMaxRepo.Convert(collection); + Assert.IsTrue(data.Any()); } } \ No newline at end of file diff --git a/Tests/UnitTestExample.cs b/Tests/UnitTestExample.cs index c23e218..7b729a8 100644 --- a/Tests/UnitTestExample.cs +++ b/Tests/UnitTestExample.cs @@ -4,7 +4,7 @@ using OI.Metrology.Tests.Models; using Serilog; using System.Reflection; -namespace View_by_Distance.Tests; +namespace OI.Metrology.Tests; [TestClass] public class UnitTestExample diff --git a/Tests/appsettings.Development.json b/Tests/appsettings.Development.json deleted file mode 100644 index c7a5540..0000000 --- a/Tests/appsettings.Development.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "AllowedHosts": "*", - "ApiLoggingContentTypes": "application/json", - "ApiLoggingPathPrefixes": "/api/inbound", - "ApiLogPath": "D:\\Metrology\\MetrologyAPILogs", - "AttachmentPath": "\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments", - "BuildNumber": "1", - "Company": "Infineon Technologies Americas Corp.", - "ConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;", - "GitCommitSeven": "1234567", - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Log4netProvider": "Debug", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "InboundApiAllowedIPList": "", - "MonASite": "auc", - "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", - "Serilog": { - "Using": [ - "Serilog.Sinks.Console", - "Serilog.Sinks.File" - ], - "MinimumLevel": "Debug", - "WriteTo": [ - { - "Name": "Debug", - "Args": { - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}" - } - }, - { - "Name": "Console", - "Args": { - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}" - } - }, - { - "Name": "File", - "Args": { - "path": "%workingDirectory% - Log/log-.txt", - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}", - "rollingInterval": "Hour" - } - } - ], - "Enrich": [ - "FromLogContext", - "WithMachineName", - "WithThreadId" - ], - "Properties": { - "Application": "Sample" - } - }, - "URLs": "https://localhost:7130;http://localhost:5126", - "WorkingDirectoryName": "IFXApps" -} \ No newline at end of file diff --git a/Tests/appsettings.json b/Tests/appsettings.json deleted file mode 100644 index 341b245..0000000 --- a/Tests/appsettings.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "AllowedHosts": "*", - "ApiLoggingContentTypes": "application/json", - "ApiLoggingPathPrefixes": "/api/inbound", - "ApiLogPath": "D:\\Metrology\\MetrologyAPILogs", - "AttachmentPath": "\\\\messv02ecc1.ec.local\\EC_Metrology_Si\\MetrologyAttachments", - "BuildNumber": "1", - "Company": "Infineon Technologies Americas Corp.", - "ConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Integrated Security=True;Initial Catalog=Metrology_Archive;", - "GitCommitSeven": "1234567", - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Log4netProvider": "Debug", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "InboundApiAllowedIPList": "", - "MonASite": "auc", - "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", - "Serilog": { - "Using": [ - "Serilog.Sinks.Console", - "Serilog.Sinks.File" - ], - "MinimumLevel": "Debug", - "WriteTo": [ - { - "Name": "Debug", - "Args": { - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}" - } - }, - { - "Name": "Console", - "Args": { - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}" - } - }, - { - "Name": "File", - "Args": { - "path": "%workingDirectory% - Log/log-.txt", - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}.{MethodName}) ({InstanceId}) ({RemoteIpAddress}) {Message}{NewLine}{Exception}", - "rollingInterval": "Hour" - } - } - ], - "Enrich": [ - "FromLogContext", - "WithMachineName", - "WithThreadId" - ], - "Properties": { - "Application": "Sample" - } - }, - "URLs": "http://localhost:5002;", - "WorkingDirectoryName": "IFXApps" -} \ No newline at end of file diff --git a/Viewer/Controllers/PagesController.cs b/Viewer/Controllers/PagesController.cs index c258ddf..0b7b21c 100644 --- a/Viewer/Controllers/PagesController.cs +++ b/Viewer/Controllers/PagesController.cs @@ -32,7 +32,8 @@ public class PagesController : Controller [HttpGet] [Route("/AwaitingDispo")] [Route("/Metrology/AwaitingDispo")] - public IActionResult AwaitingDispo() => View(); + public IActionResult AwaitingDispo() => + View(); [HttpGet] [Route("/RunInfo")] @@ -55,7 +56,8 @@ public class PagesController : Controller [HttpGet] [Route("/RunHeaders")] [Route("/Metrology/RunHeaders")] - public IActionResult RunHeaders() => View(); + public IActionResult RunHeaders() => + View(); [HttpGet] [Route("/Crash")] diff --git a/Viewer/Models/AppSettings.cs b/Viewer/Models/AppSettings.cs index 75d75c2..e5ed6a1 100644 --- a/Viewer/Models/AppSettings.cs +++ b/Viewer/Models/AppSettings.cs @@ -17,12 +17,27 @@ public class AppSettings public string InboundApiAllowedIPList { init; get; } public string MonAResource { init; get; } public string MonASite { init; get; } + public string Oi2SqlConnectionString { init; get; } public string OIExportPath { init; get; } public string URLs { init; get; } public string WorkingDirectoryName { init; get; } [JsonConstructor] - public AppSettings(string apiLoggingContentTypes, string apiLoggingPathPrefixes, string apiLogPath, string attachmentPath, string buildNumber, string company, string connectionString, string gitCommitSeven, string inboundApiAllowedIPList, string monAResource, string monASite, string oiExportPath, string urls, string workingDirectoryName) + public AppSettings(string apiLoggingContentTypes, + string apiLoggingPathPrefixes, + string apiLogPath, + string attachmentPath, + string buildNumber, + string company, + string connectionString, + string gitCommitSeven, + string inboundApiAllowedIPList, + string monAResource, + string monASite, + string oi2SqlConnectionString, + string oiExportPath, + string urls, + string workingDirectoryName) { ApiLoggingContentTypes = apiLoggingContentTypes; ApiLoggingPathPrefixes = apiLoggingPathPrefixes; @@ -35,6 +50,7 @@ public class AppSettings InboundApiAllowedIPList = inboundApiAllowedIPList; MonAResource = monAResource; MonASite = monASite; + Oi2SqlConnectionString = oi2SqlConnectionString; OIExportPath = oiExportPath; URLs = urls; WorkingDirectoryName = workingDirectoryName; diff --git a/Viewer/Models/Binder/AppSettings.cs b/Viewer/Models/Binder/AppSettings.cs index 8eb6df8..ac05701 100644 --- a/Viewer/Models/Binder/AppSettings.cs +++ b/Viewer/Models/Binder/AppSettings.cs @@ -20,6 +20,7 @@ public class AppSettings [Display(Name = "Inbound Api Allowed IP List"), Required] public string InboundApiAllowedIPList { get; set; } [Display(Name = "MonA Resource"), Required] public string MonAResource { get; set; } [Display(Name = "MonA Site"), Required] public string MonASite { get; set; } + [Display(Name = "Oi 2 Sql Connection String"), Required] public string Oi2SqlConnectionString { get; set; } [Display(Name = "OI Export Path"), Required] public string OIExportPath { get; set; } [Display(Name = "URLs"), Required] public string URLs { get; set; } [Display(Name = "Working Directory Name"), Required] public string WorkingDirectoryName { get; set; } @@ -47,6 +48,7 @@ public class AppSettings appSettings.InboundApiAllowedIPList, appSettings.MonAResource, appSettings.MonASite, + appSettings.Oi2SqlConnectionString, appSettings.OIExportPath, appSettings.URLs, appSettings.WorkingDirectoryName); diff --git a/Viewer/Repositories/MetrologyRepo.cs b/Viewer/Repositories/MetrologyRepo.cs index 6fc706e..fc46dc9 100644 --- a/Viewer/Repositories/MetrologyRepo.cs +++ b/Viewer/Repositories/MetrologyRepo.cs @@ -25,7 +25,8 @@ public class MetrologyRepo : IMetrologyRepo private DbConnection GetDbConnection() => _DBConnectionFactory.GetDbConnection(); - protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => DbProviderFactories.GetFactory(conn.GetType().Namespace); + protected DbProviderFactory GetDbProviderFactory(IDbConnection conn) => + DbProviderFactories.GetFactory(conn.GetType().Namespace); public bool IsTestDatabase() { diff --git a/Viewer/appsettings.Development.json b/Viewer/appsettings.Development.json index b27f8b2..98784eb 100644 --- a/Viewer/appsettings.Development.json +++ b/Viewer/appsettings.Development.json @@ -19,6 +19,7 @@ "InboundApiAllowedIPList": "", "MonAResource": "OI_Metrology_Viewer_IFX", "MonASite": "auc", + "Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", "Serilog": { "Using": [ diff --git a/Viewer/appsettings.json b/Viewer/appsettings.json index dbf0a14..2baa8b7 100644 --- a/Viewer/appsettings.json +++ b/Viewer/appsettings.json @@ -19,6 +19,7 @@ "InboundApiAllowedIPList": "", "MonAResource": "OI_Metrology_Viewer_EC", "MonASite": "auc", + "Oi2SqlConnectionString": "Data Source=messv01ec.ec.local\\PROD1,53959;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;", "OIExportPath": "\\\\openinsight-db-srv.na.infineon.com\\apps\\Metrology\\Data", "Serilog": { "Using": [