Compare commits

..

2 Commits

20 changed files with 30553 additions and 42415 deletions

View File

@ -679,22 +679,6 @@ def preprocess_excel_files(reports_dir: str = "reports", current_date: Optional[
if not excel_files:
return f"No Excel files found in '{reports_dir}' directory.", {}
# Log which files will be processed
import logging
logger = logging.getLogger(__name__)
logger.info(f"Processing {len(excel_files)} Excel file(s) from {reports_dir}:")
for excel_file in excel_files:
file_size = excel_file.stat().st_size
mtime = excel_file.stat().st_mtime
mtime_str = datetime.fromtimestamp(mtime).strftime('%Y-%m-%d %H:%M:%S')
logger.info(f" - {excel_file.name} ({file_size} bytes, modified: {mtime_str})")
# WARNING: If multiple files found, this will combine data from all files
if len(excel_files) > 1:
logger.warning(f"WARNING: Found {len(excel_files)} Excel file(s). Report will combine data from ALL files!")
logger.warning("This may cause incorrect results. Only ONE file should exist in the reports directory.")
logger.warning(f"Files found: {[f.name for f in excel_files]}")
# First pass: collect all items with raw vendor names
all_raw_items = []
for excel_file in excel_files:

View File

@ -1,7 +1,7 @@
PREPROCESSED EXCEL DATA
================================================================================
Current Date (Baltimore/Eastern): 2025-11-07 12:05:51 EST
Total Items: 167
Current Date (Baltimore/Eastern): 2025-11-09 06:19:52 EST
Total Items: 171
VENDOR: Amazon
--------------------------------------------------------------------------------
@ -11,7 +11,7 @@ Total Items: 1
Monitor: 0
OLDEST UNADDRESSED (Top 3):
AWCS Multiple Destinations | Age: 23 days | 10/15/25 | Incomplete
AWCS Multiple Destinations | Age: 25 days | 10/15/25 | Incomplete
VERY HIGH PRIORITY (1 items):
AWCS Multiple Destinations | Incomplete | 10/15/25
@ -23,32 +23,30 @@ ALL ITEMS:
VENDOR: Autstand
--------------------------------------------------------------------------------
Total Items: 79
Closed: 64
Open: 9
Monitor: 6
RECENT UPDATES (Yesterday's Date):
ADDED: Fix tippers faulting mid-dump sequence | 2025-11-06 00:00:00 | Incomplete
ADDED: PS8-5 Jammed but not showing on SCADA | 2025-11-06 00:00:00 | Incomplete
Total Items: 83
Closed: 66
Open: 10
Monitor: 7
OLDEST UNADDRESSED (Top 3):
Encoder failure (4x) + 2 x | Age: 28 days | 2025-10-10 00:00:00 | Incomplete
Jam Reset buttons on Bulk divert platforms to be relocated | Age: 23 days | 10/15/25 | Incomplete
PS11-11CH6NC Intralox Sorter (S02) | Age: 21 days | 10/17/2025 | Incomplete
Encoder failure (4x) + 2 x | Age: 30 days | 2025-10-10 00:00:00 | Incomplete
PS11-11CH6NC Intralox Sorter (S02) | Age: 23 days | 10/17/2025 | Incomplete
Bypass improvements | Age: 6 days | 2025-11-03 00:00:00 | Incomplete
VERY HIGH PRIORITY (6 items):
VERY HIGH PRIORITY (8 items):
Semi-Auto Exception Arm Logic | Complete | 10/14/25
PS Conveyor chute clearing Issues | Complete | 10/14/25
Replicate logic timers from semi VS-D to the rest of the semis | Monitor | 10/14/25
Tipper timer | Complete | 10/14/25
SCADA Accurate Status Reads | Complete | 10/14/25
NC boxes are diverting to xbelt causing jams particullary at bypass curves | Complete | 10/17
Jiffys to noncon | Incomplete | 2025-11-07 00:00:00
Over-width noncons diverting to crossbelt | Incomplete | 2025-11-07 00:00:00
HIGH PRIORITY (58 items):
HIGH PRIORITY (60 items):
Problem Solve dead rollers | Complete | 10/14/25
Jam Reset Button needed at end of NC Jackpots | Complete | 10/15/25
Jam Reset buttons on Bulk divert platforms to be relocated | Incomplete | 10/15/25
Jam Reset buttons on Bulk divert platforms to be relocated | Complete | 10/15/25
Flow Splitter Verification | Complete | 10/15/25
Jam Reset NC End of Sorter | Complete | 10/15/25
"Destination Not Attempted" Reason Code | Complete | 10/15/25
@ -106,6 +104,8 @@ The PLC is not reporting S04 message divert fails properly (no reads to jackpot,
Bypass improvements | Incomplete | 2025-11-03 00:00:00
Sorter statistics on SCADA | Monitor | 2025-11-03 00:00:00
Update SCADA to show inch and store status of conveyors with such functionality | Incomplete | 2025-11-07 00:00:00
NCP1-6-TPE1 did not alarm correctly on SCADA when jammed | Complete | 2025-11-07 00:00:00
PS8-6 flow splitter eating packages | Monitor | 2025-11-07 00:00:00
ALL ITEMS:
Semi-Auto Exception Arm Logic | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Exception chute arm disengaged prior to all carton...
@ -115,7 +115,7 @@ ALL ITEMS:
SCADA Accurate Status Reads | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Update SCADA status accuracy with info sent from B...
Problem Solve dead rollers | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: First few rollers not able to be engaged due to mi...
Jam Reset Button needed at end of NC Jackpots | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: There is no reset at the end of the NC sorters n...
Jam Reset buttons on Bulk divert platforms to be relocated | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 10/15/25 | Description: JR button is behind the saefty fencing move to out...
Jam Reset buttons on Bulk divert platforms to be relocated | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: JR button is behind the saefty fencing move to out...
Flow Splitter Verification | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Conveyable cartons are entering the non-con at a h...
Semi-Auto Chute fullness PE Height | Vendor: Autstand | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Adjust 50% and 100% Full PE locations to better op...
Jam Cam visibility in SCADA | Vendor: Autstand | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Autstand needs to set up passwords/remove pw for ...
@ -189,6 +189,10 @@ The PLC is not reporting S04 message divert fails properly (no reads to jackpot,
Bypass improvements | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-03 00:00:00 | Description: Bypass showing lane unavailable when not running, ...
Sorter statistics on SCADA | Vendor: Autstand | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 2025-11-03 00:00:00 | Description: Add crossbelt sorter statistics to ignition SCADA ...
Update SCADA to show inch and store status of conveyors with such functionality | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-07 00:00:00 | Description: Update SCADA to show inch and store conveyors as Y...
NCP1-6-TPE1 did not alarm correctly on SCADA when jammed | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-11-07 00:00:00 | Description: Jiffy got to noncon and stuck in a T-plate causing...
Jiffys to noncon | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Incomplete (OPEN) | Date: 2025-11-07 00:00:00 | Description: Jiffys are getting to noncon causing jams and pote...
Over-width noncons diverting to crossbelt | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Incomplete (OPEN) | Date: 2025-11-07 00:00:00 | Description: Packages that are over-width that should pass thro...
PS8-6 flow splitter eating packages | Vendor: Autstand | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 2025-11-07 00:00:00 | Description: PS8-6 flow splitter is sucking in packages at the ...
================================================================================
@ -231,9 +235,9 @@ Total Items: 32
Monitor: 5
OLDEST UNADDRESSED (Top 3):
BYPASS ATOC Auto induct reoccuring flase Jam | Age: 22 days | 10/16/2025 | Incomplete
Allocations are correct - wrong packages coming down | Age: 22 days | 10/16/2025 | Incomplete
Auto induct - D back fireing packages that can go - also demissionier is off | Age: 22 days | 10/16/2025 | Incomplete
BYPASS ATOC Auto induct reoccuring flase Jam | Age: 24 days | 10/16/2025 | Incomplete
Allocations are correct - wrong packages coming down | Age: 24 days | 10/16/2025 | Incomplete
Auto induct - D back fireing packages that can go - also demissionier is off | Age: 24 days | 10/16/2025 | Incomplete
VERY HIGH PRIORITY (6 items):
Bypasses Not On Due to Auto-Induct Status | Monitor | 10/14/25
@ -301,10 +305,10 @@ Total Items: 4
Monitor: 0
OLDEST UNADDRESSED (Top 3):
Photoeyes at Caljan not wired properly | Age: 23 days | 10/15/25 | Incomplete
Photoeyes at Caljan not wired properly | Age: 25 days | 10/15/25 | Incomplete
Maxx Reach at DD 332 not working
https://t.corp.amazon.com/V1969041198 | Age: 23 days | 10/15/2025 | Incomplete
Max Reach 100% PE logic is backwards All 300 and 100 DD | Age: 22 days | 10/16/2025 | Incomplete
https://t.corp.amazon.com/V1969041198 | Age: 25 days | 10/15/2025 | Incomplete
Max Reach 100% PE logic is backwards All 300 and 100 DD | Age: 24 days | 10/16/2025 | Incomplete
HIGH PRIORITY (3 items):
Photoeyes at Caljan not wired properly | Incomplete | 10/15/25
@ -329,8 +333,8 @@ Total Items: 25
Monitor: 1
OLDEST UNADDRESSED (Top 3):
NCS1-1 aligner belt failed | Age: 6 days | 2025-11-01 00:00:00 | Incomplete
3) The black UHMW strip under the belt which transitions the belt from slider bed to tail roller is too sharp and is shaving the bottom side of the belt. Jesse and his team are going to look into pulling this uhmw strip out, properly chamfering it and then re-installing. | Age: 3 days | 2025-11-04 00:00:00 | Incomplete
NCS1-1 aligner belt failed | Age: 8 days | 2025-11-01 00:00:00 | Incomplete
3) The black UHMW strip under the belt which transitions the belt from slider bed to tail roller is too sharp and is shaving the bottom side of the belt. Jesse and his team are going to look into pulling this uhmw strip out, properly chamfering it and then re-installing. | Age: 5 days | 2025-11-04 00:00:00 | Incomplete
Add air pressure valves (autstand request to DCS) | Age: None days | | Incomplete
VERY HIGH PRIORITY (4 items):
@ -434,9 +438,9 @@ Total Items: 5
Monitor: 1
OLDEST UNADDRESSED (Top 3):
Long-Term Error Tracking Solution | Age: 30 days | 10/8/25 | Incomplete
High Multi-Label Read Rate | Age: 24 days | 10/14/25 | Incomplete
Pull stats for error codes from Datalogic | Age: 24 days | 10/14/25 | Incomplete
Long-Term Error Tracking Solution | Age: 32 days | 10/8/25 | Incomplete
High Multi-Label Read Rate | Age: 26 days | 10/14/25 | Incomplete
Pull stats for error codes from Datalogic | Age: 26 days | 10/14/25 | Incomplete
VERY HIGH PRIORITY (1 items):
Add DHL label to Scan tunnel valid message | Incomplete | 2025-10-27 00:00:00
@ -504,9 +508,9 @@ Total Items: 7
Monitor: 0
OLDEST UNADDRESSED (Top 3):
supply cabinet in NON Con | Age: 22 days | 10/16/2025 | Incomplete
drop zone banner in Non Con | Age: 22 days | 10/16/2025 | Incomplete
printer station at both ends in Non Con | Age: 22 days | 10/16/2025 | Incomplete
supply cabinet in NON Con | Age: 24 days | 10/16/2025 | Incomplete
drop zone banner in Non Con | Age: 24 days | 10/16/2025 | Incomplete
printer station at both ends in Non Con | Age: 24 days | 10/16/2025 | Incomplete
HIGH PRIORITY (2 items):
Non - Con Jam rest button - | Complete | 10/15/2025
@ -531,7 +535,7 @@ Total Items: 1
Monitor: 0
OLDEST UNADDRESSED (Top 3):
Jam Clearing Equipment on Mezzanine | Age: 24 days | 10/14/25 | Incomplete
Jam Clearing Equipment on Mezzanine | Age: 26 days | 10/14/25 | Incomplete
HIGH PRIORITY (1 items):
Jam Clearing Equipment on Mezzanine | Incomplete | 10/14/25

View File

@ -587,9 +587,9 @@
<header>
<h1>Vendor Punchlist Report</h1>
<div class="meta">
Generated: 2025-11-08 17:29:31 |
Generated: 2025-11-08 15:18:53 |
Total Vendors: 16 |
Total Items: 180
Total Items: 181
</div>
</header>
@ -649,7 +649,7 @@
<p>Vendors</p>
</div>
<div class="summary-card">
<h3>180</h3>
<h3>181</h3>
<p>Total Items</p>
</div>
<div class="summary-card success">
@ -661,11 +661,11 @@
<p>Monitor</p>
</div>
<div class="summary-card danger">
<h3>7</h3>
<h3>8</h3>
<p>Open</p>
</div>
<div class="summary-card danger">
<h3>7</h3>
<h3>8</h3>
<p>Incomplete</p>
</div>
</div>
@ -8849,7 +8849,7 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="vendor-name">MISC</div>
<div class="vendor-stats">
<div class="stat-item">
<div class="stat-value">7</div>
<div class="stat-value">8</div>
<div class="stat-label">Total</div>
</div>
<div class="stat-item">
@ -8861,11 +8861,11 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="stat-label">Monitor</div>
</div>
<div class="stat-item">
<div class="stat-value" style="color: #ef4444;">0</div>
<div class="stat-value" style="color: #ef4444;">1</div>
<div class="stat-label">Open</div>
</div>
<div class="stat-item">
<div class="stat-value" style="color: #dc2626;">0</div>
<div class="stat-value" style="color: #dc2626;">1</div>
<div class="stat-label">Incomplete</div>
</div>
</div>
@ -8873,13 +8873,13 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="vendor-content">
<div class="status-tabs">
<button class="status-tab active" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="all">All (7)</button>
<button class="status-tab active" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="all">All (8)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="updates_24h">Yesterday's Updates (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="oldest_unaddressed">Oldest Unaddressed (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="oldest_unaddressed">Oldest Unaddressed (1)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="closed">Closed (7)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="monitor">Monitor (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="open">Open (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="incomplete">Incomplete (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="open">Open (1)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="incomplete">Incomplete (1)</button>
</div>
<div class="status-tab-content active" data-status="all" data-vendor="MISC">
@ -8933,7 +8933,7 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="section">
<div class="section-title">No Priority (5 items)</div>
<div class="section-title">No Priority (6 items)</div>
<ul class="item-list">
<li>
@ -9023,6 +9023,24 @@ https://t.corp.amazon.com/V1969041198</div>
</div>
</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
@ -9046,12 +9064,30 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="status-tab-content" data-status="oldest_unaddressed" data-vendor="MISC">
<div class="section">
<div class="section-title">Oldest 3 Unaddressed Items</div>
<div class="section-title">Oldest 3 Unaddressed Items (1)</div>
<ul class="item-list">
<li class="empty">No unaddressed items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>
<div class="status-tab-content" data-status="closed" data-vendor="MISC">
@ -9200,18 +9236,54 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="status-tab-content" data-status="open" data-vendor="MISC">
<div class="section">
<div class="section-title">Open Items (0)</div>
<div class="section-title">Open Items (1)</div>
<ul class="item-list">
<li class="empty">No open items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>
<div class="status-tab-content" data-status="incomplete" data-vendor="MISC">
<div class="section">
<div class="section-title">Incomplete Items (0)</div>
<div class="section-title">Incomplete Items (1)</div>
<ul class="item-list">
<li class="empty">No incomplete items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>

View File

@ -1,5 +1,5 @@
{
"report_generated_at": "2025-11-08T17:29:31.912420",
"report_generated_at": "2025-11-08T15:18:53.184680",
"vendors": [
{
"vendor_name": "Amazon",
@ -3761,16 +3761,28 @@
},
{
"vendor_name": "MISC",
"total_items": 7,
"total_items": 8,
"closed_count": 7,
"open_count": 0,
"open_count": 1,
"monitor_count": 0,
"updates_24h": {
"added": [],
"closed": [],
"changed_to_monitor": []
},
"oldest_unaddressed": [],
"oldest_unaddressed": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"very_high_priority_items": [],
"high_priority_items": [
{
@ -3876,9 +3888,33 @@
}
],
"monitor_items": [],
"open_items": [],
"incomplete_items": [],
"incomplete_count": 0
"open_items": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"incomplete_items": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"incomplete_count": 1
},
{
"vendor_name": "Startup (Amazon)",
@ -3927,10 +3963,10 @@
],
"summary": {
"total_vendors": 16,
"total_items": 180,
"total_items": 181,
"total_closed": 156,
"total_open": 7,
"total_open": 8,
"total_monitor": 17,
"total_incomplete": 7
"total_incomplete": 8
}
}

View File

@ -587,9 +587,9 @@
<header>
<h1>Vendor Punchlist Report</h1>
<div class="meta">
Generated: 2025-11-08 17:41:02 |
Generated: 2025-11-08 15:21:12 |
Total Vendors: 16 |
Total Items: 180
Total Items: 181
</div>
</header>
@ -649,7 +649,7 @@
<p>Vendors</p>
</div>
<div class="summary-card">
<h3>180</h3>
<h3>181</h3>
<p>Total Items</p>
</div>
<div class="summary-card success">
@ -661,11 +661,11 @@
<p>Monitor</p>
</div>
<div class="summary-card danger">
<h3>7</h3>
<h3>8</h3>
<p>Open</p>
</div>
<div class="summary-card danger">
<h3>7</h3>
<h3>8</h3>
<p>Incomplete</p>
</div>
</div>
@ -8849,7 +8849,7 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="vendor-name">MISC</div>
<div class="vendor-stats">
<div class="stat-item">
<div class="stat-value">7</div>
<div class="stat-value">8</div>
<div class="stat-label">Total</div>
</div>
<div class="stat-item">
@ -8861,11 +8861,11 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="stat-label">Monitor</div>
</div>
<div class="stat-item">
<div class="stat-value" style="color: #ef4444;">0</div>
<div class="stat-value" style="color: #ef4444;">1</div>
<div class="stat-label">Open</div>
</div>
<div class="stat-item">
<div class="stat-value" style="color: #dc2626;">0</div>
<div class="stat-value" style="color: #dc2626;">1</div>
<div class="stat-label">Incomplete</div>
</div>
</div>
@ -8873,13 +8873,13 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="vendor-content">
<div class="status-tabs">
<button class="status-tab active" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="all">All (7)</button>
<button class="status-tab active" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="all">All (8)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="updates_24h">Yesterday's Updates (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="oldest_unaddressed">Oldest Unaddressed (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="oldest_unaddressed">Oldest Unaddressed (1)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="closed">Closed (7)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="monitor">Monitor (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="open">Open (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="incomplete">Incomplete (0)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="open">Open (1)</button>
<button class="status-tab" onclick="switchStatusTab(this, '" + escape_js_string(vendor_name) + "')" data-status="incomplete">Incomplete (1)</button>
</div>
<div class="status-tab-content active" data-status="all" data-vendor="MISC">
@ -8933,7 +8933,7 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="section">
<div class="section-title">No Priority (5 items)</div>
<div class="section-title">No Priority (6 items)</div>
<ul class="item-list">
<li>
@ -9023,6 +9023,24 @@ https://t.corp.amazon.com/V1969041198</div>
</div>
</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
@ -9046,12 +9064,30 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="status-tab-content" data-status="oldest_unaddressed" data-vendor="MISC">
<div class="section">
<div class="section-title">Oldest 3 Unaddressed Items</div>
<div class="section-title">Oldest 3 Unaddressed Items (1)</div>
<ul class="item-list">
<li class="empty">No unaddressed items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>
<div class="status-tab-content" data-status="closed" data-vendor="MISC">
@ -9200,18 +9236,54 @@ https://t.corp.amazon.com/V1969041198</div>
<div class="status-tab-content" data-status="open" data-vendor="MISC">
<div class="section">
<div class="section-title">Open Items (0)</div>
<div class="section-title">Open Items (1)</div>
<ul class="item-list">
<li class="empty">No open items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>
<div class="status-tab-content" data-status="incomplete" data-vendor="MISC">
<div class="section">
<div class="section-title">Incomplete Items (0)</div>
<div class="section-title">Incomplete Items (1)</div>
<ul class="item-list">
<li class="empty">No incomplete items</li>
<li>
<div class="item-header">
<div class="item-name">Testing Vendor report tool</div>
<div class="badges">
<span class="badge badge-success">Incomplete</span>
</div>
</div>
<div class="item-details">
</div>
</li>
</ul>
</div>
</div>

View File

@ -1,5 +1,5 @@
{
"report_generated_at": "2025-11-08T17:41:02.563427",
"report_generated_at": "2025-11-08T15:21:12.285618",
"vendors": [
{
"vendor_name": "Amazon",
@ -3761,16 +3761,28 @@
},
{
"vendor_name": "MISC",
"total_items": 7,
"total_items": 8,
"closed_count": 7,
"open_count": 0,
"open_count": 1,
"monitor_count": 0,
"updates_24h": {
"added": [],
"closed": [],
"changed_to_monitor": []
},
"oldest_unaddressed": [],
"oldest_unaddressed": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"very_high_priority_items": [],
"high_priority_items": [
{
@ -3876,9 +3888,33 @@
}
],
"monitor_items": [],
"open_items": [],
"incomplete_items": [],
"incomplete_count": 0
"open_items": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"incomplete_items": [
{
"punchlist_name": "Testing Vendor report tool",
"description": null,
"priority": null,
"date_identified": null,
"date_completed": null,
"status": "Incomplete",
"status_updates": null,
"issue_image": null,
"age_days": null
}
],
"incomplete_count": 1
},
{
"vendor_name": "Startup (Amazon)",
@ -3927,10 +3963,10 @@
],
"summary": {
"total_vendors": 16,
"total_items": 180,
"total_items": 181,
"total_closed": 156,
"total_open": 7,
"total_open": 8,
"total_monitor": 17,
"total_incomplete": 7
"total_incomplete": 8
}
}

View File

@ -587,7 +587,7 @@
<header>
<h1>Vendor Punchlist Report</h1>
<div class="meta">
Generated: 2025-11-08 16:57:00 |
Generated: 2025-11-08 15:24:16 |
Total Vendors: 16 |
Total Items: 174
</div>

View File

@ -1,5 +1,5 @@
{
"report_generated_at": "2025-11-08T16:57:00.566153",
"report_generated_at": "2025-11-08T15:24:16.444403",
"vendors": [
{
"vendor_name": "Amazon",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff