first commit

This commit is contained in:
ilia gu 2025-11-05 22:39:31 +04:00
commit f89a0f731c
16 changed files with 19397 additions and 0 deletions

27
.gitignore vendored Normal file
View File

@ -0,0 +1,27 @@
# Virtual Environment
venv/
env/
ENV/
.venv
# Python
__pycache__/
*.py[cod]
*.class
*.so
.Python
# Distribution / packaging
build/
dist/
*.egg-info/
# IDE
.vscode/
.idea/
*.swp
*.swo
# OS
.DS_Store
Thumbs.db

28
INSTALL_WINE.md Normal file
View File

@ -0,0 +1,28 @@
# Installing Wine for Windows Builds
To build Windows executables from Linux, you need Wine installed.
## Quick Install (Ubuntu/Debian):
```bash
sudo apt-get update
sudo apt-get install wine
winetricks python39
```
## Then run:
```bash
./build_windows.sh
```
## Alternative: Use GitHub Actions
Push to GitHub and the workflow will automatically build Windows executables.
## Or: Build on Windows Machine
Copy project to Windows and run:
```cmd
pip install pyinstaller
pip install -r requirements_build.txt
pyinstaller build_executable.spec --clean
```

709
data_preprocessor.py Normal file
View File

@ -0,0 +1,709 @@
#!/usr/bin/env python3
"""
Data Preprocessor - Clean and normalize Excel data before LLM processing
This module performs programmatic preprocessing to:
1. Parse Excel into structured format
2. Normalize vendor names
3. Normalize statuses and priorities
4. Parse dates into standard format
5. Calculate 24-hour windows
6. Pre-classify items
This reduces LLM errors and improves accuracy.
"""
import re
from datetime import datetime, timedelta
from typing import List, Dict, Optional, Tuple
from pathlib import Path
from collections import defaultdict
from zoneinfo import ZoneInfo
import pandas as pd
class DataPreprocessor:
"""Preprocesses Excel data before sending to LLM."""
def __init__(self, current_date: Optional[datetime] = None):
"""
Initialize preprocessor.
Args:
current_date: Current date for 24-hour calculations (defaults to now in Baltimore/Eastern timezone)
"""
# Use Baltimore/Eastern timezone (America/New_York)
baltimore_tz = ZoneInfo("America/New_York")
if current_date is None:
self.current_date = datetime.now(baltimore_tz)
else:
# If current_date is timezone-naive, assume it's in Baltimore time
if current_date.tzinfo is None:
self.current_date = current_date.replace(tzinfo=baltimore_tz)
else:
# Convert to Baltimore timezone
self.current_date = current_date.astimezone(baltimore_tz)
self.items: List[Dict] = []
self.vendor_normalization_map: Dict[str, str] = {}
self._vendor_groups: Dict[str, List[str]] = {}
def _build_vendor_normalization_map(self, items: List[Dict]) -> None:
"""
Build vendor normalization map by extracting distinct vendors and grouping similar ones.
Args:
items: List of items with vendor_raw field
"""
# Extract all distinct vendor names (case-insensitive)
vendor_variants: Dict[str, List[str]] = defaultdict(list)
for item in items:
vendor_raw = item.get('vendor_raw', '').strip()
if not vendor_raw:
continue
vendor_lower = vendor_raw.lower()
vendor_variants[vendor_lower].append(vendor_raw)
# Normalize each vendor group
for vendor_lower, variants in vendor_variants.items():
# Get distinct variants
distinct_variants = list(set(variants))
# Find the best normalized form
# Prefer variants with mixed case (like "AutStand") over all lowercase
best_variant = None
for variant in distinct_variants:
# Check if variant has mixed case (indicates intentional capitalization)
if variant != variant.lower() and variant != variant.upper():
best_variant = variant
break
# If no mixed case found, use most common variant
if not best_variant:
best_variant = max(distinct_variants, key=lambda v: (variants.count(v), len(v)))
# Normalize the vendor name
normalized = self._normalize_vendor_case(best_variant)
# Map all variants to normalized name
for variant in distinct_variants:
self.vendor_normalization_map[variant.lower()] = normalized
# Store variant group for reference
self._vendor_groups[normalized] = distinct_variants
def _normalize_vendor_case(self, vendor: str) -> str:
"""
Normalize vendor name case using intelligent rules.
Args:
vendor: Raw vendor name
Returns:
Normalized vendor name
"""
if not vendor:
return "MISC"
vendor = vendor.strip()
# Handle combined vendors (Autstand/Beumer, DCS/Autstand)
if '/' in vendor:
parts = []
for part in vendor.split('/'):
part = part.strip()
# Title case each part, but preserve acronyms (all caps)
if part.isupper() or len(part) <= 3:
parts.append(part.upper())
else:
parts.append(part.title())
return '/'.join(parts)
# Handle vendors in parentheses (e.g., "MFO (Amazon)")
if '(' in vendor and ')' in vendor:
main_part = vendor.split('(')[0].strip()
paren_part = vendor.split('(')[1].split(')')[0].strip()
normalized_main = self._normalize_vendor_case(main_part)
normalized_paren = paren_part.title()
return f"{normalized_main} ({normalized_paren})"
# Handle acronyms (all caps short names)
if vendor.isupper() or (len(vendor) <= 4 and vendor.isalpha()):
return vendor.upper()
# Default: title case
return vendor.title()
def normalize_vendor_name(self, vendor: str) -> str:
"""
Normalize vendor name using the built normalization map.
Args:
vendor: Raw vendor name from Excel
Returns:
Normalized vendor name
"""
if not vendor:
return "MISC"
vendor_lower = vendor.strip().lower()
# Check normalization map (built from actual data)
if vendor_lower in self.vendor_normalization_map:
return self.vendor_normalization_map[vendor_lower]
# Fallback: normalize case (for new vendors not seen before)
return self._normalize_vendor_case(vendor.strip())
def normalize_status(self, status: str) -> Tuple[str, bool]:
"""
Normalize status and determine if closed.
Args:
status: Raw status string
Returns:
Tuple of (normalized_status, is_closed)
"""
if not status:
return "Incomplete", False
status_lower = status.lower()
# Check for closed status
if 'complete' in status_lower or 'complette' in status_lower:
return "Complete", True
# Check for monitor status
if 'monitor' in status_lower or 'montor' in status_lower:
return "Monitor", False
# Default to incomplete/open
if 'incomplete' in status_lower:
return "Incomplete", False
return "Incomplete", False
def normalize_priority(self, priority: str) -> Tuple[str, Optional[str]]:
"""
Normalize priority and classify level.
Args:
priority: Raw priority string
Returns:
Tuple of (normalized_priority, priority_level)
priority_level: "very_high", "high", "medium", "low", "monitoring", "complete", None
"""
if not priority:
return "", None
priority_lower = priority.lower()
# Very High priority
if '(1) very high' in priority_lower or '(1) very hgh' in priority_lower:
return priority, "very_high"
if 'very high' in priority_lower or 'very hgh' in priority_lower:
return priority, "very_high"
# High priority (but not Very High)
if '(2) high' in priority_lower or '(2) hgh' in priority_lower:
return priority, "high"
if priority_lower.startswith('2) high') or priority_lower.startswith('2) hgh'):
return priority, "high"
if priority_lower == 'high' and 'very' not in priority_lower:
return priority, "high"
# Medium priority
if '(3) medium' in priority_lower:
return priority, "medium"
if priority_lower == 'medium':
return priority, "medium"
# Low priority
if '(4) low' in priority_lower:
return priority, "low"
if priority_lower == 'low':
return priority, "low"
# Monitoring priority
if '(5) monitoring' in priority_lower:
return priority, "monitoring"
# Complete priority
if '(6) complete' in priority_lower:
return priority, "complete"
return priority, None
def parse_date(self, date_str: str) -> Optional[datetime]:
"""
Parse date from various formats and return timezone-aware datetime in Baltimore/Eastern timezone.
Args:
date_str: Date string in various formats
Returns:
Parsed datetime in Baltimore timezone or None
"""
if not date_str or date_str.strip() == '':
return None
date_str = date_str.strip()
baltimore_tz = ZoneInfo("America/New_York")
# Try different formats
formats = [
"%m/%d/%y", # 10/14/25
"%m/%d/%Y", # 10/14/2025
"%Y-%m-%d %H:%M:%S", # 2025-10-17 00:00:00
"%Y-%m-%d", # 2025-10-17
]
for fmt in formats:
try:
parsed_date = datetime.strptime(date_str, fmt)
# Make timezone-aware in Baltimore timezone
if parsed_date.tzinfo is None:
return parsed_date.replace(tzinfo=baltimore_tz)
else:
return parsed_date.astimezone(baltimore_tz)
except ValueError:
continue
return None
def is_within_24_hours(self, date: Optional[datetime]) -> bool:
"""
Check if date falls within yesterday (previous calendar day) in Baltimore/Eastern timezone.
This checks if the date is on yesterday's date, regardless of the exact time.
Args:
date: Date to check (should be timezone-aware in Baltimore timezone)
Returns:
True if date is yesterday (previous calendar day)
"""
if not date:
return False
# Ensure both dates are timezone-aware in Baltimore timezone
baltimore_tz = ZoneInfo("America/New_York")
# Convert date to Baltimore timezone if needed
if date.tzinfo is None:
# If date is timezone-naive, assume it's in Baltimore time
date_baltimore = date.replace(tzinfo=baltimore_tz)
else:
# Convert to Baltimore timezone
date_baltimore = date.astimezone(baltimore_tz)
# Ensure current_date is also in Baltimore timezone (should already be, but defensive check)
if self.current_date.tzinfo is None:
current_baltimore = self.current_date.replace(tzinfo=baltimore_tz)
else:
current_baltimore = self.current_date.astimezone(baltimore_tz)
# Get yesterday's date (previous calendar day)
yesterday = current_baltimore - timedelta(days=1)
yesterday_date = yesterday.date()
date_to_check = date_baltimore.date()
# Check if the date falls on yesterday
return date_to_check == yesterday_date
def parse_excel_row(self, cols: List[str]) -> Optional[Dict]:
"""
Parse a single Excel row into structured format.
Args:
cols: List of column values (tab-separated)
Returns:
Structured item dict or None if invalid
"""
if len(cols) < 8:
return None
punchlist_name = cols[0].strip()
vendor_raw = cols[1].strip() if len(cols) > 1 else ""
priority_raw = cols[2].strip() if len(cols) > 2 else ""
description = cols[3].strip() if len(cols) > 3 else ""
date_identified_str = cols[4].strip() if len(cols) > 4 else ""
status_updates = cols[5].strip() if len(cols) > 5 else ""
issue_image = cols[6].strip() if len(cols) > 6 else ""
status_raw = cols[7].strip() if len(cols) > 7 else ""
date_completed_str = cols[8].strip() if len(cols) > 8 else ""
if not punchlist_name:
return None
# Normalize fields
vendor = self.normalize_vendor_name(vendor_raw)
status, is_closed = self.normalize_status(status_raw)
priority, priority_level = self.normalize_priority(priority_raw)
# Parse dates
date_identified = self.parse_date(date_identified_str)
date_completed = self.parse_date(date_completed_str)
# Calculate age
age_days = None
if date_identified:
age_days = (self.current_date - date_identified).days
# Check 24-hour updates
is_recent_added = date_identified and self.is_within_24_hours(date_identified) and not is_closed
is_recent_closed = date_completed and self.is_within_24_hours(date_completed) and is_closed
is_recent_monitor = status == "Monitor" and (date_identified and self.is_within_24_hours(date_identified) or
date_completed and self.is_within_24_hours(date_completed))
return {
'punchlist_name': punchlist_name,
'vendor': vendor,
'vendor_raw': vendor_raw, # Keep original for reference
'priority': priority,
'priority_level': priority_level,
'description': description,
'date_identified': date_identified,
'date_identified_str': date_identified_str, # Keep original
'date_completed': date_completed,
'date_completed_str': date_completed_str, # Keep original
'status': status,
'status_raw': status_raw, # Keep original
'is_closed': is_closed,
'status_updates': status_updates,
'issue_image': issue_image,
'age_days': age_days,
'is_recent_added': is_recent_added,
'is_recent_closed': is_recent_closed,
'is_recent_monitor': is_recent_monitor,
}
def process_excel_file(self, excel_path: str) -> List[Dict]:
"""
Process Excel file directly using pandas for reliable parsing.
Args:
excel_path: Path to Excel file
Returns:
List of structured item dictionaries
"""
items = []
try:
xl_file = pd.ExcelFile(excel_path)
for sheet_name in xl_file.sheet_names:
# Read sheet
df = pd.read_excel(xl_file, sheet_name=sheet_name)
# Handle empty dataframe
if df.empty:
continue
# Fill NaN values
df = df.fillna("")
# Process each row (first pass - collect raw vendor names)
raw_items = []
for _, row in df.iterrows():
# Get columns (handle different column names)
cols = []
for i in range(max(9, len(df.columns))):
if i < len(df.columns):
cols.append(str(row.iloc[i]) if pd.notna(row.iloc[i]) else "")
else:
cols.append("")
# Parse without normalization first
vendor_raw = cols[1].strip() if len(cols) > 1 else ""
if cols[0].strip(): # Has punchlist name
raw_items.append({'vendor_raw': vendor_raw, 'cols': cols})
# Build vendor normalization map from actual data
if raw_items:
self._build_vendor_normalization_map(raw_items)
# Second pass - parse with normalization
for raw_item in raw_items:
item = self.parse_excel_row(raw_item['cols'])
if item:
items.append(item)
except Exception as e:
print(f"Error processing Excel file {excel_path}: {e}")
self.items = items
return items
def process_excel_text(self, excel_text: str) -> List[Dict]:
"""
Process raw Excel text into structured items (fallback method).
Args:
excel_text: Raw text from Excel loader
Returns:
List of structured item dictionaries
"""
lines = excel_text.split('\n')
items = []
current_item_cols = None
for line in lines:
# Skip header lines
if line.startswith('FILENAME') or line.startswith('SHEET') or line.startswith('='):
continue
if not line.strip():
continue
# Try tab-separated first (more reliable)
cols = line.split('\t')
# If no tabs, try space-separated (LangChain output)
if len(cols) < 8:
# Split by multiple spaces
cols = re.split(r'\s{2,}', line)
# Check if this looks like a new item (has punchlist name in first column)
if len(cols) >= 8 and cols[0].strip():
# Save previous item if exists
if current_item_cols:
item = self.parse_excel_row(current_item_cols)
if item:
items.append(item)
# Start new item
current_item_cols = cols
elif current_item_cols and len(cols) > 0:
# Continuation line - merge with current item
# Usually status updates continue on next line
if len(current_item_cols) > 5:
current_item_cols[5] += " " + line.strip()
# Don't forget last item
if current_item_cols:
item = self.parse_excel_row(current_item_cols)
if item:
items.append(item)
self.items = items
return items
def get_preprocessed_summary(self) -> Dict:
"""
Generate summary statistics from preprocessed data.
Returns:
Summary dictionary with vendor counts, etc.
"""
vendors = defaultdict(lambda: {
'items': [],
'closed': 0,
'open': 0,
'monitor': 0,
'very_high': [],
'high': [],
'unaddressed': [],
'recent_added': [],
'recent_closed': [],
'recent_monitor': []
})
for item in self.items:
vendor = item['vendor']
vendors[vendor]['items'].append(item)
if item['is_closed']:
vendors[vendor]['closed'] += 1
elif item['status'] == 'Monitor':
vendors[vendor]['monitor'] += 1
else:
vendors[vendor]['open'] += 1
if item['priority_level'] == 'very_high':
vendors[vendor]['very_high'].append(item)
elif item['priority_level'] == 'high':
vendors[vendor]['high'].append(item)
# Unaddressed = not closed AND not in Monitor status (open/incomplete items that need action)
if not item['is_closed'] and item['status'] != 'Monitor':
vendors[vendor]['unaddressed'].append(item)
if item['is_recent_added']:
vendors[vendor]['recent_added'].append(item)
if item['is_recent_closed']:
vendors[vendor]['recent_closed'].append(item)
if item['is_recent_monitor']:
vendors[vendor]['recent_monitor'].append(item)
# Sort unaddressed by date (oldest first)
baltimore_tz = ZoneInfo("America/New_York")
max_datetime = datetime.max.replace(tzinfo=baltimore_tz)
for vendor in vendors.values():
vendor['unaddressed'].sort(key=lambda x: x['date_identified'] or max_datetime)
return dict(vendors)
def format_for_llm(self) -> str:
"""
Format preprocessed data for human inspection.
Returns:
Formatted string with normalized, structured data
"""
summary = self.get_preprocessed_summary()
output_lines = []
output_lines.append("PREPROCESSED EXCEL DATA")
output_lines.append("=" * 80)
# Show timezone-aware datetime with timezone info
if self.current_date.tzinfo:
output_lines.append(f"Current Date (Baltimore/Eastern): {self.current_date.strftime('%Y-%m-%d %H:%M:%S %Z')}")
else:
output_lines.append(f"Current Date: {self.current_date.strftime('%Y-%m-%d %H:%M:%S')}")
output_lines.append(f"Total Items: {len(self.items)}")
output_lines.append("")
for vendor_name, vendor_data in sorted(summary.items()):
output_lines.append(f"VENDOR: {vendor_name}")
output_lines.append("-" * 80)
output_lines.append(f"Total Items: {len(vendor_data['items'])}")
output_lines.append(f" Closed: {vendor_data['closed']}")
output_lines.append(f" Open: {vendor_data['open']}")
output_lines.append(f" Monitor: {vendor_data['monitor']}")
output_lines.append("")
# Recent updates
if vendor_data['recent_added'] or vendor_data['recent_closed'] or vendor_data['recent_monitor']:
output_lines.append("RECENT UPDATES (Yesterday's Date):")
for item in vendor_data['recent_added']:
output_lines.append(f" ADDED: {item['punchlist_name']} | {item['date_identified_str']} | {item['status']}")
for item in vendor_data['recent_closed']:
output_lines.append(f" CLOSED: {item['punchlist_name']} | {item['date_completed_str']} | {item['status']}")
for item in vendor_data['recent_monitor']:
output_lines.append(f" MONITOR: {item['punchlist_name']} | {item['date_identified_str']} | {item['status']}")
output_lines.append("")
# Oldest unaddressed
if vendor_data['unaddressed']:
output_lines.append("OLDEST UNADDRESSED (Top 3):")
for item in vendor_data['unaddressed'][:3]:
output_lines.append(f" {item['punchlist_name']} | Age: {item['age_days']} days | {item['date_identified_str']} | {item['status']}")
output_lines.append("")
# Priority items
if vendor_data['very_high']:
output_lines.append(f"VERY HIGH PRIORITY ({len(vendor_data['very_high'])} items):")
for item in vendor_data['very_high']:
output_lines.append(f" {item['punchlist_name']} | {item['status']} | {item['date_identified_str']}")
output_lines.append("")
if vendor_data['high']:
output_lines.append(f"HIGH PRIORITY ({len(vendor_data['high'])} items):")
for item in vendor_data['high']:
output_lines.append(f" {item['punchlist_name']} | {item['status']} | {item['date_identified_str']}")
output_lines.append("")
# All items
output_lines.append("ALL ITEMS:")
for item in vendor_data['items']:
output_lines.append(
f" {item['punchlist_name']} | "
f"Vendor: {item['vendor']} | "
f"Priority: {item['priority']} ({item['priority_level']}) | "
f"Status: {item['status']} ({'CLOSED' if item['is_closed'] else 'OPEN'}) | "
f"Date: {item['date_identified_str']} | "
f"Description: {item['description'][:50] if item['description'] else 'N/A'}..."
)
output_lines.append("")
output_lines.append("=" * 80)
output_lines.append("")
return "\n".join(output_lines)
def preprocess_excel_data(excel_text: str, current_date: Optional[datetime] = None) -> Tuple[str, Dict]:
"""
Preprocess Excel data and return formatted string for LLM.
Args:
excel_text: Raw Excel text from loader
current_date: Current date for calculations
Returns:
Tuple of (formatted_string, summary_dict)
"""
preprocessor = DataPreprocessor(current_date=current_date)
preprocessor.process_excel_text(excel_text)
formatted = preprocessor.format_for_llm()
summary = preprocessor.get_preprocessed_summary()
return formatted, summary
def preprocess_excel_files(reports_dir: str = "reports", current_date: Optional[datetime] = None) -> Tuple[str, Dict]:
"""
Preprocess Excel files directly (more reliable than text parsing).
Args:
reports_dir: Directory containing Excel files
current_date: Current date for calculations
Returns:
Tuple of (formatted_string, summary_dict)
"""
preprocessor = DataPreprocessor(current_date=current_date)
reports_path = Path(reports_dir)
if not reports_path.exists():
return f"Reports directory '{reports_dir}' not found.", {}
excel_files = list(reports_path.glob("*.xlsx")) + list(reports_path.glob("*.xls"))
if not excel_files:
return f"No Excel files found in '{reports_dir}' directory.", {}
# First pass: collect all items with raw vendor names
all_raw_items = []
for excel_file in excel_files:
try:
xl_file = pd.ExcelFile(str(excel_file))
for sheet_name in xl_file.sheet_names:
df = pd.read_excel(xl_file, sheet_name=sheet_name)
if df.empty:
continue
df = df.fillna("")
for _, row in df.iterrows():
cols = []
for i in range(max(9, len(df.columns))):
if i < len(df.columns):
cols.append(str(row.iloc[i]) if pd.notna(row.iloc[i]) else "")
else:
cols.append("")
if cols[0].strip(): # Has punchlist name
all_raw_items.append({'vendor_raw': cols[1].strip() if len(cols) > 1 else "", 'cols': cols})
except Exception as e:
print(f"Error reading {excel_file}: {e}")
# Build vendor normalization map from all collected data
if all_raw_items:
preprocessor._build_vendor_normalization_map(all_raw_items)
# Second pass: process with normalization
all_items = []
for excel_file in excel_files:
items = preprocessor.process_excel_file(str(excel_file))
all_items.extend(items)
preprocessor.items = all_items
formatted = preprocessor.format_for_llm()
summary = preprocessor.get_preprocessed_summary()
return formatted, summary

128
excel_to_text.py Normal file
View File

@ -0,0 +1,128 @@
#!/usr/bin/env python3
"""
Excel to Tabulated Text Converter
Converts Excel files in the reports directory to tabulated text format
for processing by LLM.
"""
import os
import pandas as pd
from pathlib import Path
from typing import List, Optional
from tabulate import tabulate
def excel_to_tabulated_text(excel_path: str, output_file: Optional[str] = None) -> str:
"""
Convert Excel file to tabulated text format.
Args:
excel_path: Path to Excel file
output_file: Optional path to save output. If None, returns string.
Returns:
Tabulated text representation of Excel data
"""
try:
xl_file = pd.ExcelFile(excel_path)
filename = Path(excel_path).name
output_lines = []
for sheet_name in xl_file.sheet_names:
# Try reading with header first
try:
df = pd.read_excel(xl_file, sheet_name=sheet_name)
if df.empty:
# Try without header
df = pd.read_excel(xl_file, sheet_name=sheet_name, header=None)
except Exception:
# Fallback: read without header
df = pd.read_excel(xl_file, sheet_name=sheet_name, header=None)
if df.empty:
continue
# Add file and sheet headers
output_lines.append(f"FILENAME: {filename}")
output_lines.append(f"SHEET: {sheet_name}")
output_lines.append("")
# Replace NaN with empty string
df = df.fillna("")
# Use tabulate to format the table nicely
# Using 'simple' format for clean, readable tables
# First row as headers if column names exist, otherwise use indices
if df.columns.tolist() and not all(str(col).startswith('Unnamed') for col in df.columns):
# Use column names as headers
table_str = tabulate(df, headers='keys', tablefmt='simple', showindex=False)
else:
# No meaningful headers, use first row or no headers
table_str = tabulate(df, headers='firstrow' if len(df) > 0 else 'keys', tablefmt='simple', showindex=False)
output_lines.append(table_str)
output_lines.append("")
output_lines.append("=" * 80)
output_lines.append("")
result = "\n".join(output_lines)
if output_file:
with open(output_file, 'w', encoding='utf-8') as f:
f.write(result)
return result
except Exception as e:
error_msg = f"Error processing {excel_path}: {str(e)}"
return error_msg
def process_reports_directory(reports_dir: str = "reports") -> str:
"""
Process all Excel files in the reports directory.
Args:
reports_dir: Directory containing Excel files
Returns:
Combined tabulated text from all Excel files
"""
reports_path = Path(reports_dir)
if not reports_path.exists():
return f"Reports directory '{reports_dir}' not found."
all_outputs = []
excel_files = list(reports_path.glob("*.xlsx")) + list(reports_path.glob("*.xls"))
if not excel_files:
return f"No Excel files found in '{reports_dir}' directory."
for excel_file in excel_files:
text_output = excel_to_tabulated_text(str(excel_file))
all_outputs.append(text_output)
return "\n\n".join(all_outputs)
if __name__ == "__main__":
import sys
# Process all files in reports directory
if len(sys.argv) > 1:
# Single file mode
output = excel_to_tabulated_text(sys.argv[1])
print(output)
else:
# Directory mode
output = process_reports_directory()
print(output)
# Optionally save to file
output_path = Path("output")
output_path.mkdir(exist_ok=True)
with open(output_path / "excel_data.txt", 'w', encoding='utf-8') as f:
f.write(output)
print(f"\nOutput saved to: {output_path / 'excel_data.txt'}")

1490
html_generator.py Normal file

File diff suppressed because it is too large Load Diff

89
models.py Normal file
View File

@ -0,0 +1,89 @@
"""
Pydantic Models for Structured Report Output
Defines the data structures for vendor reports matching the exact requirements.
"""
from pydantic import BaseModel, Field
from typing import List, Optional
from datetime import datetime
class PunchlistItem(BaseModel):
"""Represents a single punchlist item with all details."""
punchlist_name: str = Field(description="Name/title of the punchlist item")
description: Optional[str] = Field(default=None, description="Full description of the issue")
priority: Optional[str] = Field(default=None, description="Priority level (e.g., '(1) Very High', '(2) High')")
date_identified: Optional[str] = Field(default=None, description="Date when issue was identified")
date_completed: Optional[str] = Field(default=None, description="Date when issue was completed (if closed)")
status: str = Field(description="Current status: 'Complete', 'Monitor', 'Incomplete', etc.")
status_updates: Optional[str] = Field(default=None, description="Status update history/text")
issue_image: Optional[str] = Field(default=None, description="Issue image filename or link if available")
age_days: Optional[int] = Field(default=None, description="Number of days since date_identified (was calculated)")
class VendorUpdates24h(BaseModel):
"""24-hour updates grouped by type."""
added: List[PunchlistItem] = Field(
default_factory=list,
description="Specific items added in the last 24 hours"
)
closed: List[PunchlistItem] = Field(
default_factory=list,
description="Specific items closed in the last 24 hours"
)
changed_to_monitor: List[PunchlistItem] = Field(
default_factory=list,
description="Specific items changed to monitor status in the last 24 hours"
)
class VendorMetrics(BaseModel):
"""Statistics and metrics for a single vendor - matches exact requirements."""
vendor_name: str = Field(description="Name of the vendor (normalized)")
# Counts per vendor
total_items: int = Field(description="Total number of punchlist items for this vendor")
closed_count: int = Field(description="Number of closed items (status contains 'Complete' or 'complete')")
open_count: int = Field(description="Number of open items (status contains 'Incomplete')")
monitor_count: int = Field(description="Number of items in monitor status (status contains 'Monitor' or 'montor')")
# Updates in the last 24 hours per vendor
updates_24h: VendorUpdates24h = Field(
default_factory=VendorUpdates24h,
description="Updates in the last 24 hours: specific items added, closed, and changed to monitor"
)
# Oldest 3 unaddressed items per vendor
oldest_unaddressed: List[PunchlistItem] = Field(
default_factory=list,
description="Oldest 3 unaddressed items (not closed) for this vendor, sorted by date_identified"
)
# All priority items by vendor
very_high_priority_items: List[PunchlistItem] = Field(
default_factory=list,
description="All 'very high' priority items for this vendor (priority contains '(1) Very High' or 'Very High')"
)
high_priority_items: List[PunchlistItem] = Field(
default_factory=list,
description="All 'high' priority items for this vendor (priority contains '(2) High' or 'High' but not 'Very High')"
)
class FullReport(BaseModel):
"""Complete report containing all vendor metrics."""
report_generated_at: str = Field(
default_factory=lambda: datetime.now().isoformat(),
description="Timestamp when report was generated (ISO format)"
)
vendors: List[VendorMetrics] = Field(
default_factory=list,
description="List of vendor metrics - one entry per vendor with all required statistics"
)
summary: Optional[dict] = Field(
default=None,
description="Optional overall summary statistics across all vendors (total vendors, total items, etc.)"
)

218
output/excel_data.txt Normal file
View File

@ -0,0 +1,218 @@
FILENAME: [MTN6] Ops. Eng. GL Issues Tracker.xlsx
SHEET: _MTN6_ Ops. Eng. GL Issues Trac
Semi-Auto Exception Arm Logic AutStand (1) Very High Exception chute arm disengaged prior to all cartons being filled on semi-autos. Logic needs to be amended. Apply to all areas 10/14/25 10/14 - Interim measure in place to force arm extension, Kevin working on updating logic at all VS fixed 10/14 Complete 10/17
PS Conveyor chute clearing Issues AutStand (1) Very High Chute/conveyor beacon at the top of the problem solve chutes directly off of the sorter are not automatically clearing when the downstream belts are cleared. Indicating that the PS chutes are full or unavailable for packages to divert 10/14/25 complete Complete 2025-10-17 00:00:00
Bypasses Not On Due to Auto-Induct Status Beumer (1) Very High Bypasses were turned off several times during testing 10/14/25 10/14 - Bryan to update code tomorrow
10/15 - Bypasses had to be manually turned on when crossbelt stopped
10/16 - Fix applied, monitor Monitor 10/17
Flow turn Belt Replacement DCS (1) Very High Flow turn belts incorrectly manufactured and need to be replaced 10/10/25 10/29 final belt replacement scheduled for midnite tonight 11/3 - all belts have been replaced Complete
Replicate logic timers from semi VS-D to the rest of the semis Autstand (1) Very High Logic timers from semi-auto at all virtual sorters need to be adjusted 10/14/25 10/16 - fix applied monitor as VS become active Monitor
Tipper timer Autstand (1) Very High Adjust tipper logic to prevent two tippers from dumping at the same time and jamming the line 10/14/25 10/16 - in progress... ECD : 10/20 (dtw needed) 10/19 - inprocess will be complete by EOD
KK 10/19 - Fixed Complete 2025-10-19 00:00:00
SCADA Accurate Status Reads AutStand (1) Very High Update SCADA status accuracy with info sent from Beumer 10/14/25 10/14 - All necessary information received from Beumer to execute change
10/16 - closed Complete 10/17
Destuffit fault at DD225 Gorbel (1) Very High Contact failed and estop jumped out ... could not retract/extend unit 10/15/25 Complete
Semi-Auto Chute Sidepan Reinforcement DCS (2) High Sidepans are flimsy and need to be reinforced; when a heavy box hits the side, the guarding moves, mistakenly blocking the jam photoeye 10/14/25 10/17 -- investigated... no issues identified monitor
11/3: Nothing Mechanical we can do to frim up the side guard it is stanless steel Monitor
Semi-Auto Phantom Jams DCS (2) High Dust accumulation on the reflectors incorrectly creating jam states on the funnels leading to semi-auto inducts 10/14/25 10/17 - DCS surveyed... on going.
10/18 Belts being cauterized to eliminate the flaying . Will update with estimated completion date 10/19 -- in process
10/22: Inbound Completed; Working on Bypass and PS conveyance Complete
Semi-Auto Package marking X's Beumer (2) High Remark induct point X's on conveyance in permanent material (paint, ink, tape, etc.) 10/6/25 10/14 - Beumer to start painting after sort tonight at VS-D
VS B C A complete... VS-d ECD 10/17 night
10/18 confirm if compete Complete
Problem Solve dead rollers AutStand (2) High First few rollers not able to be engaged due to missing part on both Problem Solve lines 10/14/25 10/14 - First problem solve line complete, second will be complete by EOD complete
Jam Clearing Equipment on Mezzanine Startup (Amazon) (2) High Access issues at bypass inhibiting jam clear access for RME. Are all Cottermans installed? 10/14/25 Incomplete
High Multi-Label Read Rate Datalogic (2) High Unexpectedly high multi-read rate from scanners during LOT 10/14/25 10/14 - Datalogic prioritzing deep dive on these issues to identify root cause
10/17 - in process sa01 ab still has issue. investigating 10/19= Modification today, monitor 11/3 - DAta logic is reconfiguring all scan tunnels. SCA01, SCA02 complete. SCA03 and SCA04 to be completed over night 11/3 Incomplete
Jam Reset Button needed at end of NC Jackpots Autstand (2) High There is no reset at the end of the NC sorters need to be at proximity of jam clearing 10/15/25 10/17 - buttons there, programimed, waiting on bracket complete 2025-10-18 00:00:00
Jam Reset buttons on Bulk divert platforms to be relocated Autstand (2) High JR button is behind the saefty fencing move to outside of fencingv (all areas) 10/15/25 10/17 - downtime window needed. 10/21 - to be scheduled Complete
Photoeyes at Caljan not wired properly Caljan (2) High Photoeyes stop the line vs feeding when blocked 10/15/25 Autstand jumped out the photoeyes to get them operational
10/17 SS contacted Caljan... waiting on date for tech Incomplete
Flow Splitter Verification Autstand (2) High Conveyable cartons are entering the non-con at a high rate. Verify all 7 flow splitters are working correctly 10/15/25 10/17 -- adjusted still fine tuning. may reduce nc length..TBD complete
Semi-Auto Chute fullness PE Height AutStand (3) Medium Adjust 50% and 100% Full PE locations to better optimize the load logic for semi-auto inducts 10/14/25 10/17 - load logic was adjusted... monitor PE response.
KK 10/27 - This is a duplicate item related to bulk induct shutes (row 6), I will close it Complete 2025-10-27 00:00:00
VS-D Auto-Induct Jams/Faults Beumer (3) Medium Training for ops on difference between jams/faults, ops seems to think all faults should clear themselves on auto-inducts, maybe something on minor piece 10/14/25 10/14 - Bryan is working on similar issue at SAT9, Deepak from Amazon is helping, Jody will send people to investigate fixed finger gaurds complete
Diverting onto Bellows from Bypass, adjust carrier aim Beumer (3) Medium Confirm divert points for auto and semi-auto inducts 10/14/25 10/14 - Beumer is going to work on re-aiming some of these auto-inducts, retrain ops on induction angles Monitor
Divert Points to Pallet Chutes Beumer (3) Medium Confirm divert points to pallet build chutes, light packages were landing in the wrong chutes or stuck in between 10/14/25 10/14 - Check the chutes that have missorts and jams at the top
10/17 - chutes checked and made adjustments Monitor Monitor
Long-Term Error Tracking Solution Datalogic (3) Medium Currently, manual pull of all images from Datalogic programs is required to ID issues 10/8/25 10/17- DL is proposes to get 2D images. Jody to follow up Incomplete
Pull stats for error codes from Datalogic Datalogic (3) Medium Need ability to pull error code stats from Datalogic 10/14/25 10/17 -- Jody to follow up with DL Incomplete
Jam Cam visibility in SCADA Autstand (3) Medium Autstand needs to set up passwords/remove pw for it to work in the scada 10/15/25 complete Complete
IND2A-22 Carrier Induct Timing Beumer (3) Medium Check induct firing direction and timing at IND2A-22, a few packages were observed falling off the carriers being off to the edge 10/15/25 10/17 - beumer to monitor IMG_4519.jpg Monitor
Chute 14041 Enable Issues AutStand (4) Low DTC chute won't stay enabled even with cart in correct position and button pressed 10/14/25 Complete 10/17
VS-D, S01400 Pallet Chute Beacons - False Fullness AutStand (4) Low Chute fullness indicator beacon illuminated incorrectly, check all chutes but specifically S014020, S014018 10/14/25 Complete 10/15
Semi-Auto Jam Beacons Autstand (4) Low remove jam PE at chute 10/14/25 10/19 PE functionality diabled.. hardware removal to be scheduled TBD
KK 11/4 - hareware was removed on 10/28 Complete 2025-10-28 00:00:00
Throughput Limit on SCADA Beumer (4) Low Throughput Limit is being identified on SCADA and Grafana as an error code, despite not being in SFS. Determine root cause of Throughput Limits being triggered and assign them properly. 10/15/25 10/17 was used for testing is now disabled Complete
No Read Rates - Trigger Timing Concerns Datalogic (5) Monitoring Confirm that the trigger timing from yesterday is fully resolved 10/14/25 10/17 - S01 ad. trigger was moved. appears to be resolved. monitoring Monitor
Confirm D2C is Working MFO (Amazon) (6) Complete Verify all D2C lanes are mapped properly 10/14/25 10/18 -- complete confirmed Complete 10/14/25
SCADA Accurate Status Reads Beumer (6) Complete Beumer not sending full accurate lane status to AutStand for SCADA visualization. Beumer needs to send an updated Excel file for AutStand to update. 10/14/25 10/14 - Autstand now has all of the program info from Beumer to connect statuses
10/17 resolved Complete 10/14/25
NC Dim Data AutStand (6) Complete AutStand not sending DIM data in S01 Message 10/15/25 10/15 - Matt Specht fix mid sort
10/17 - COMPLETE Complete
AWCS Multiple Destinations Amazon (1) Very High AWCS was not sending multiple destinations for NC and Crossbelt in S02 Message 10/15/25 10/15 - Jamari Randle changed NC Config to have two destinations, still waiting for a change to Crossbelt Config Incomplete
NC End of Sorter Chute DCS (2) High Packages getting stuck in chute at dead plate and rollers. Need to look at a mechanical fix to eliminate issue, possibly extend the dead plate. 10/15/25 10/17 --- Changed the PE location.. to trigger the MDR. monitor may need to add UHMW Complete
Jam Reset NC End of Sorter AutStand (2) High Need to add jam reset pb for end of sorter jam pe, currently the only reset is at the head of the nc sorter 10/15/25 duplicate Complete
PS11_11_JR3 AutStand (3) Medium Jam Reset PB is flashing sporadically 10/15/25 10/17 - in process
10/18 KK - Done Complete 2025-10-18 00:00:00
"Destination Not Attempted" Reason Code AutStand (2) High Receiving "Destination Not Attempted" in the wrong use case/scenario for the NC Sorter, see screenshot 10/15/25 10/17 -- follow up
KK 10/21 - Based on container research data from Sherri, this reason code is no longer being sent in our S04 image.png Complete 2025-10-21 00:00:00
Auto-Induct Restart Beumer (2) High After an E-Stop and Restart, Auto-Induction didn't go through its auto clear cycle automatically, someone had to go to the local induction control station 10/15/25 10/17 -- related to the global start? montor
confirmed that it works Complete 10/17
S013089 Blue Beacon AutStand (3) Medium Need to investigate ZMX Sensor, alignment causing false fullness indication 10/15/25 KK 10/18 - Done, beacon replaced Complete
NC Sorter Aligner DCS (3) Medium NC Sorter Aligner has a catch point at the exit, uhmw transfer plates on vertical belt and conveyor tplate 10/15/25 10/17 - fixed. Complete 10/17
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station Jackpot probem solve Autstand (2) High 10/15/25 10/17 fixed Complete 10/17
Still seeing Lost Container / No Reads in NC Jackpot Autstand (2) High 10/15/25 10/16- Reviewed logic/flow. Updated installed at noon. Will be monitoring
KK 10/27 - Issue seems to be resolved Complete 2025-10-27 00:00:00
First chute orange lights keeps turning on without pakages blocking any sensors semi auto vs-d Autstand (2) High 10/15/25 Fixed, realigned PE Complete 10/17
Flashing and steady blue light on a chute without any package present S014020, S014018 Autstand (2) High 10/15/25 Please ensure the cart is loaded centered in the chute, too far to the left or right, or skewed will result in the overhead sensor will read the frame of the cart and prematurely trigger full
10/17 - fixed Complete 10/17
Flashing Green light on D2C , start button doesn't work S014041 Autstand (2) High 10/15/25 Fixed - bad button, has been replaced Complete 10/17
non- con packages still has divert issues packages going straight to jackpot Autstand (2) High 10/15/25 Temporary buttons in placed at the end of each sorter, brackets pending complete 2025-10-18 00:00:00
Scada Map not showing cameras Autstand (2) High 10/15/25 SCADA is showing cameras, the live feeds don't work at the moment, pending AMZ response for configuration (I contacted Davo and JC from ops eng for this)
10/17 fixed Complete 10/17
Scada Map: showing stopped but actually running C Autstand (2) High 10/15/25 10/17 - need more info
KK 10/18 - Need more info
KK 10/21 - No clarification received
KK 10/27 - No clarification received, closing this item Complete 2025-10-27 00:00:00
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station. Autstand (2) High 10/15/25 Fixed - corrected flow control on problem solve rollers Complete
Still seeing Lost Container / No Reads in NC Jackpot as of 1044 Autstand (2) High 10/15/25 Flow/assignment issue - to be addressed by Sherri (AMZ) and MFO today 11/1
10/17 monitor
KK 10/27 - Issue seems to be resolved Complete 2025-10-27 00:00:00
206 - 207 max reach giving us false signals its green on skada but not operational Autstand (2) High 10/15/25 Need further clarification 10/19 - completed
10/19 KK - Done Complete 2025-10-19 00:00:00
NC boxes are diverting to xbelt causing jams particullary at bypass curves Autstand (1) Very High 10/17 - Ian adjusted the 3 merges on MCM2 to max length to xbelt to 42" Monitor and update MCM01 flow splitter 10/17 KK 10/18 - Noncon detection length reduced to 41" Complete 2025-10-18 00:00:00
Bypasses are "going to sleep" Autstand (3) Medium 10/17 - there is no sleep or energy mgt on the bypasses Will die back if induct is not running 10/17 complete 2025-10-18 00:00:00
Flow splitters are rotating boxes, potentially contributing to jams. Timing and height of the pop up rollers need to be evaluated Autstand/DCS (2) Hgh 10/17- Autstand and DCS to evaluate and make adjustmets 10/17 IH 10/18 Updates made to flow splitter logic to refine the window of the "pop-up rollers" complete 2025-10-18 00:00:00
Take away line from shuttle tipper side pan is loose and causing jams/PE mis alignment Autstand (2) Hgh 10/17 DCS investigated and found the PEs on one of the tipper takeaways was installed/attached incorrectly. Autstand was advised to fix PEs 10/17 KK 10/27 - Investigated, found no issues Complete 2025-10-27 00:00:00
Operations requested the Problem Solve chutes from A and C to be disabled since not staffed Beumer (3) Medium 10/17 -- Sherri asked Beumer (Bryan) to disable the 2 chutes from the sorter. Operations to advise when to re-enable 10/17 Complete 10/17
Catch point at DD118 fluid load DCS (2) High 10/17 -Weld failed. DCS bolted sidepan. Check other pans 10/17 10/18 - resolved complete
NC flow splitter has worn rollers DCS (2) High pop up rollers on flow splitter are worn. replace wheels, assure that installation is adjusted/fine-tuned 10/17 10/18 - still pending
10/22: awaiting Down time window will take several down times to complete Complete
Add air pressure valves (autstand request to DCS) DCS (3) Medium 10/18 - no update
10/22: A waiting CR Incomplete
Maxx Reach at DD 332 not working
https://t.corp.amazon.com/V1969041198 Caljan (2) High OB Fluid 10/15/2025 10/17 Sherri contacted Caljan and arranged for RME to have remote tech support Incomplete
Packages not diverting on the correct intralox Autstand (2) High 10/15/2025 KK 10/18 - Need further clarification
KK 10/21 - No clarification received - closed as duplicate (Row 120) Complete
Label auto inducts Autstand (2) High 10/15/2025 Complete 2025-10-20 00:00:00
False blue lights Autstand S014020 (AUTO-CHUTE4020) , S014018 (AUTO-CHUTE4018) 10/25/2025 duplicate Complete 2025-10-18 00:00:00
Non - Con Jam rest button - (2) High NCPRS2-1CH 10/15/2025 duplicate Complette
Auto inducts / By passes do not start up with scata - (2) High 10/15/2025 resolved Complete
Semi induct D - light not allumintating green Autstand/Beumer 10/15/2025 KK 10/18 - Need further clarification
KK 10/19 - Done Complete 2025-10-19 00:00:00
Maxx reach controls do not function as prescribed FMH/Gorbel All OB fluid maxxx reaches 10/15/2025 Gorbel and FMH on site for training/ support Complete
DD218-DESTUFF-IT not properly working packing not able to climb up Gorbel (2) High DD218 Destuff-it 10/15/2025 Complete
oil leak in NON CON near chute S02-202CH DCS (2) High S02-202CH 10/15/2025 No Oil Present at Chute (Fire Suppression Pipe is Leaking) Complete
oil leak in NON CON near chute QAA-3CH DCS (2) High QAA-3CH 10/15/2025 No Oil Present at Chute Complete
Logic for Semi induct D is off very low throughput see video Autstand (2) High Semi Auto D induct 10/16/2025 KK 10/18 - Tweaking logic, continually adding optmizations see video in comments Monitor
S012075 unavailable Autstand (2) High S012075 10/16/2025 KK 10/19 - Done Complete 2025-10-19 00:00:00
supply cabinet in NON Con NON Con 10/16/2025 Incomplete
drop zone banner in Non Con drop zone banner in Non Con 10/16/2025 Incomplete
printer station at both ends in Non Con Non Con 10/16/2025 Incomplete
5s area for emtpy carts in Non Con Non Con 10/16/2025 Incomplete
Fans in Non Con Non Con 10/16/2025 Incomplete
VSD- S014020 BLINKING BLUE WHILE CHUTE IS EMPTY Autstand (2) High Virtual sort- D 10/16/2025 IH 10/18 - Confirmed functionality of the chute. Complete 2025-10-18 00:00:00
VSD- S014018 SOLID BLUE  WHILE CHUTE IS EMPTY Autstand (2) High Virtual sort- D 10/16/2025 IH 10/18 - Confirmed functionality of the chute. Complete 2025-10-18 00:00:00
D2C S014041 flashing green + activation button not illuminating Autstand (2) High Virtual sort D D2C S014041 10/16/2025 Complete 2025-10-18 00:00:00
False Jam ( Rest every 6 mins) Beumer (2) High S013018 10/16/2025 KK 10/18 - Reassigned to Beumer complete
caljan at comm cable was ripped out DCS/Autstand dock door 223 10/16/2025 KK 10/21 - Investigated the unit, did not see anything unusual. Unit is working fine Complete 2025-10-21 00:00:00
Induct 5B (Bypass induct C-&gt;) rejecting packages within MTBH Beumer (2) High IND5B-5 (Induct platform VSB) 10/16/2025 10/18 - will verify Will check calibration, waiting on tool montor
Problem Solve rollers do not correctly inch-and-store packages, causing line to jam prematurely Autstand (2) High 10/16/2025 KK 10/17 - PRS photoeyes have been re-aligned and tightened Complete 2025-10-18 00:00:00
SCADA: We need some type of refrence in SCADA. Suggest adding dock doors that correlate with their belt Autstand (2) High Flow Desk 10/16/2025 Incomplete
SCADA: Need a way to click onto jammed area on main page to see where the jam is located and how to get there Autstand Flow Desk 10/16/2025 10/17 - That exists. Sherri showed several team members an dRME how to do this Complete
Run-up is not enabled on Problem solve collection belts. They all stop when the photoeye at the rollers is blocked. Autstand (2) High Problem solve 10/16/2025 KK 10/17 - PRS photoeyes have been re-aligned and tightened Complete 2025-10-18 00:00:00
Potential PE issue at the problem solve rollers right when the chutes level off. 300 side. Autstand (2) High BC problem solve 10/16/2025 KK 10/17 - PRS photoeyes have been re-aligned and tightened Complete 2025-10-18 00:00:00
SCADA: scada camera view from main map wont allow user to pan camera angles when clicked onto Autstand (2) High Flow Desk 10/16/2025 KK 10/18 - Adjusting the camera angle is not possible from SCADA. Can be done by accessing the camera directly with its IP address. Complete 2025-10-18 00:00:00
PS9-3CH2 - located by semi induct C. Blue light actived with no packages Autstand (2) High Semi induct C 10/16/2025 MC: Blue Light was NOT on when investigated, still went ahead to realign better PE/teach again (10/18/25) Complete 2025-10-18 00:00:00
Max Reach 100% PE logic is backwards All 300 and 100 DD Caljan Outbound 10/16/2025 KK 10/18 - Reassigned to Caljan Incomplete
BYPASS ATOC Auto induct reoccuring flase Jam Beumer 10/16/2025 KK 10/18 - Reassigned to Beumer Incomplete
semi induct c chute 2 Flase blue light PE needs adjusted Autstand (2) High 10/16/2025 MC: Blue Light was NOT on when investigated, still went ahead to realign better PE/teach again (10/18/25) Complete 2025-10-18 00:00:00
Max reach 119  PE at top of max reach needs to be adjusted  , also having to reset line at times for it to move Caljan (2) High 10/16/2025 KK 10/18 - Reassigned to Caljan Incomplete
Allocations are correct - wrong packages coming down Beumer S014024 CHUTE 10/16/2025 10/18 will investigate Incomplete
packages being re inducted into ps bottom belt - hits the belt - needs to be raised DCs (2) High PS collector re induct chutes 10/16/2025 Cannot raise belt Complete
PS collector photo eyes are not feeding into each other Autstand/DCS PS collector photo eyes - both collectors 10/16/2025 KK 10/17 - PRS photoeyes have been re-aligned and tightened Complete 2025-10-18 00:00:00
Auto induct - D back fireing packages that can go - also demissionier is off Beumer (2) High Auto induct - 7d 10/16/2025 10/18 will investigate Incomplete
Non con diverts going down - becon alluminating but belt still running Autstand interlock 10/16/2025 KK 10/18 - Need clarification
KK 10/19 - Closed Complete 2025-10-19 00:00:00
IBNC splitting sending packages to NC that are within the crossbelt MTBH Autstand (2) High Inbound 10/16/2025 KK 10/16 - Splitter logic adjusted Complete 2025-10-16 00:00:00
D2C Chutes are full blue lighting 8 inches short of the go cart full line Autstand (2) High VS-D (But I assume all virtual sorters) 10/16/2025 KK 10/16 - Raised ALL D2C Full height 6-8" above last setting Complete 2025-10-16 00:00:00
chute stays green even when chute is full Autstand (2) High Chute S014073 10/16/2025 IH 10/18 Resolved. IO Mapping issue. Complete
Packages are being directed to the wrong end of the chutes, AA had to take jiffy and scan to D2C Beumer (2) High Chute S014072 10/17/2025 10/18 will investigate Incomplete
Non- con packages coming down to lanes Autstand (2) High VS-D 10/17/2025 KK 10/18 - Noncon detection length reduced to 41" Complete 2025-10-18 00:00:00
BUEMER scada - bypass is showing &quot;die back&quot; in yellow and futher up the belt is showing green. There is a disconnect. Packages arent able to move through in &quot;die back&quot; mode but the belt after is showing green, which looks to be good but isnt Beumer (2) High Bypass DA 10/17/2025 10/18 - will investigate Incomplete
Scada - label each line ex. UL13 , UL14 ect. Autstand (2) High Inbound 3-1 merges 10/17/2025 IH 10/19 SCADA Updated Complete 2025-10-19 00:00:00
PS11-11CH6NC Intralox Sorter (S02) Autstand (2) High PS11-11CH6NC Intralox Sorter (S02) 10/17/2025 KK 10/27 - Need clarification. I don't see the relation between PS11-11 and the intralox sorter. Incomplete
Blue light for semi induct D is on when chute is empty Autstand (2) High PS11-11CH6NC 10/17/2025 KK 10/18 - Realigned and trained photoeye Complete 2025-10-18 00:00:00
Need 1 button to turn on ALL inducts. I am having to turn them on one by one Autstand (2) High Buemer scada 10/17/2025 KK 10/18 - Our global start button is confirmed to start all autStand conveyors and Beumer CMC/SMC conveyors, only if they are not faulted. Complete 2025-10-18 00:00:00
Divert arms are to high and are causing jiffys to get stuck under the arm when diverting DCS (2) High Semi induct A 10/17/2025 10/18 - pending Complete
PS chute lip is catching ps boxes DCs (2) High QAB-2CH 10/17/2025 Pending Complete
10/17/2025 Incomplete
One major issue and one minor issue with the non-con system:
No-reads are really frequent
The PLC is not reporting S04 message divert fails properly (no reads to jackpot, lost container, failed to divert, wrong buildings) Autstand (2) High NON con sorter 1 and 2 not diverting 10/17/2025 KK 10/18 - For the whole sort yesterday we had 13 No Reads out of 500 inducted (2.6%) we will see what can be done to reduce this.
IH 10/19 Datalogic & PLC update conducted. Will continue to monitor.
KK 11/30 - Fixed the "Unknown" S04 message, verified with AWCS data Monitor
false jam Beumer (2) High Lane S014024 10/17/2025 KK 10/19 - Reassigned to beumer, they control crossbelt chute jams Incomplete
DBS sensors - heavier packages meeting weight requirement for main sorter triggering senors; causing sorter to shutdown Beumer (2) High Main Sorter 10/18/2025 10/18 - need update for ops on how DBS works Incomplete
Non-Con running through main sorter causing system to shutdown; Non-con packages not diverting to Non-cons sorter taking up carriers on Sorter Autstand (2) High Main Sorter 10/18/2025 KK 10/18 - Noncon detection length reduced to 41" Complete 2025-10-18 00:00:00
DTW8/CLE5 Non-Con packages not diverting to chutes; running straight through jackpot Autstand (2) High Non-Con sorter 10/18/2025 KK 10/18 - MFO issue
KK 10/19 - Not MFO, need to deep dive tracking/diverting/etc
KK 10/20 - Identified potential issue with a photoeye missing incoming packages at scan tunnel induct, which manifest as unknown/unexpected packages and causing some packages to go off-the-end. We adjusted this sensor and are monitoring. Initial observations seem promising
KK 10/27 - Resolved Complete 2025-10-27 00:00:00
SEMI-D uneven flow of packages to each chute Autstand (2) High SEMI-D 10/18/2025 KK 10/18 - Logic continually being optmized (monitor)
KK 10/27 - This is a duplicate item related to bulk induct shutes (row 6), I will close it Complete 2025-10-27 00:00:00
jiffies getting caught in belows causing sorter to shutdown Beumer (2) High Cells on Main sorter 10/18/2025 Incomplete
Non-con packages with plastic securement strips are not to be ran on sorter. Packages with plastic securement strips gets caught in sorter causing it to shut down/ jam. Autstand/DCS Non-Con sorter 10/18/2025 KK 10/18 - Our system can not tell if a package has plastic securement strips Complete 2025-10-18 00:00:00
Maint jack for tippers DCS (2) High 10/17/25 10/17 - Confirmed that jack was not received/onsite here or MTN2. Asked DCS to confirm if ordered with the tippers.
10/22: PO Pending for 1 Jack
10/23: ETA Shipping Date of Tipper Jack is 10/31/2025 complete
Clean up SCADA Active Jams to not show false jams ex BYBA-15 /BYBD-14 Autstand (2) High 10/18/25 KK 10/21 - Aware of a couple "stuck" alarms - still investigating why RS 10/30 - This issue seems to be fixed
complete
Disable jam pe's that are to be removed (bulk chutes) Autstand (2) High 10/18/25 KK 10/18 - Disabled, pending physical removal Complete 2025-10-18 00:00:00
UL4-15 damaged belt DCS Complete
UL7-17 Belt has a rip DCS/RME Rip in belt the size of a dollar bill 2025-10-18 00:00:00 AM 10/19 - RME replaced this belt complete 2025-10-18 00:00:00
PS3-1 merge DCS/Flow-Turn (2) High Shaft walked causing the belts to come off track and destroy 2 belts 2025-10-18 00:00:00 AM 10/19 - DCS repaired this merge and replaced the 2 belts. This needs to be monitored complete 2025-10-19 00:00:00
PS6-3 DCS Noisy when running, side pan is very warm to the touch 2025-10-18 00:00:00 F14041 Complete
UL7-17 Belt needs to be replaced (again) RME installation (ripped edges, lacing) DCS (1) Very High 2025-10-18 00:00:00 Complete
Provide Bellow clearing procedures Beumer (3) Medium Document the process for clearing bellows for RME 2025-10-17 00:00:00 Incomplete
Air Knife over shooting takeaway conveyor Beumer (3) Medium Too many packages are falling in netting. Add add'l netting ? refocus air knife? 2025-10-19 00:00:00 10/23 - Airknife out of alignment. Beumer adjusted but requested Silman to return to site to recalibrate complete
Evaluate jam logic /die back on bypasses. Autstand (2) High getting "false jams" of box stopped in from of PE when belt stops. Bypass jams are difficult to access need to minimize them 2025-10-19 00:00:00 KK 10/19 - Verified that it is not being caused by runup logic, need to continue to monitor
KK 10/27 - False jams seemed to have stopped being as frequent. There is still no runup logic causing this. Complete 2025-10-27 00:00:00
At inducts evaluate why "conveyable" boxes are being rejected at induction Beumer (2) High Is aligner working as expected? Skewed boxes triggering as oversized 2025-10-19 00:00:00 Incomplete
Non Con Chute/Maint access. Need Latch upgrade DCS (2) High 2025-10-10 00:00:00 10.29 SSI will be on site to evaluate /repair 10/30. 11/3 - SSI completed their evaluation, need to replace/rebuild over 40 latches Complete
UL21-24 Failed (belts and shaft) DCS (1) Very High 2025-10-20 00:00:00 10/21/25 - repair completed complete
Non Con flow issues -- missorts to S02207 Autstand 2025-10-22 00:00:00 KK 10/27 - Resolved Complete 2025-10-27 00:00:00
DTC chutes on VS-B is randomly disabling Autstand 2025-10-22 00:00:00 10/30 RC - Is this still an issue? Chute code was updated to add a debounce period for registering a cart removal. This should mitigate any false removals caused by jiffies triggering the sensor while falling into the cart. Monitor
Bypasses are showing "lane unavailble" at a high rate. should always be available... is it in energy saving mode? or other reason Autstand/Beumer 2025-10-22 00:00:00 10/30 RC - AutStand removed rate management logic that caused Conveyor Not Ready status in SCADA. AutStand to monitor whether bypass jams increase. Beumer to adjust to-bypass discharge rate if necessary. Monitor 2025-10-30 00:00:00
Deep dive missorts (file shared) Beumer 2025-10-22 00:00:00 Incomplete Incomplete
Aligner catch point on IND2C-s Beumer 2025-10-22 00:00:00 Incomplete Incomplete
Issue with needing to reset all inducts (fault). when system starts. Need to automatically reset Beumer 2025-10-22 00:00:00 Incomplete Incomplete
Inductions are going directly on bellowsco Beumer (1) Very Hgh Experiencing too many items on bellow... causing sorter to stop 2025-10-22 00:00:00 complete
Carrier disabled to shut down the sorter Beumer (1) Very Hgh Sorter shutting down too often 2025-10-22 00:00:00 30% disable threshold... confirm reenable complete
Missorts Beumer (1) Very Hgh File with missorts shared. 2025-10-20 00:00:00 11/3 -- Missorts issue with chute trigger settings identified. All chutes evaluated and fixed on 10/30 will evaluate improvements with next Ops report Incomplete
Estop not reporting on BGFusion/Scada Beumer 2) High Sorter stopped could not find root cause. Estop was triggered and not communicated 2025-10-21 00:00:00 complete
Encoder failure (4x) + 2 x Autstand (2) High UL8-7 UL11-7 Problem with port on APF 2025-10-10 00:00:00 10/23 ST soluton is changing the port... LT reseach with Rockwell 10/29 - Rockwell to send engineer to test system 10/30 ; 10/30 RC - Rockwell visit not happening today. TBD. 10/30 - looking to send "capable engineer" to address engineer. today another encoder failed UL18-10 (all merge stop - 20 min swapping) 11/3- Rockwell scheduled to be on site 11/6. Incomplete
SCADA performance issue Autstand (2) High report export crashed system 11/1 RC - SCADA was updated to improve performance yesterday NIGHT.
KK 11/4 - Assuming this is related to SCADA crashing when trying to export large amounts of data (like a week of alarms). We addressed, just tested and it did not crash. Complete 2025-11-04 00:00:00
7:1 merge code update Autstand (2) High 11/3 - testing at BNA8 Incomplete
Motor falling on HSQ gappers.. 2x (3:1 merge) DCS (2) High upgrade the bolts Complete
Packages are being inducted on occupied trays Beumer (1) Very Hgh Causing missorts and DBS/IBS/IOB faults that stop the sorter 2025-10-22 00:00:00 10/23 - Beumer updated PLC to prevent issue but did nto work. Additional logs were addeed to trace root cause of issue (10/24 @730am) complete
PRS4-2 Motor Replacement DCS High Motor Oreded will update when I have an ETA ( Tryignto get this overnight) 2025-10-26 00:00:00 Pending Ship Date complete
3:1 merge code update Autstand (2) High mcm02 by monday 11/4. mcm01 ul 1-3 done. mcm01 complete. 11/3 - no update... Igor at BNA8
pe missing prob solve ak chute Autstand/Beumer (3) Medium 2025-10-29 00:00:00 Completed 10/29 Complete
Lane Not Available Metric too high Beumer (1) Very Hgh 11/3 - Working with Autstand conveyor ready flag as disabled ... will be addressed by full lane signal (fluidload only). Still need to do similar fix on bypass but need to evaluate when to trigger full lane (vs lane not available0
2025-10-30 00:00:00
gap control at non con sorter. autstand code change/ help with box tracking. 2025-10-30 00:00:00 working on it today. /tomorrow
KK 11/4 - 0 gap errors since logic update, closing this item Complete 2025-11-04 00:00:00
NCS1-1 aligner belt failed DCS (1) Very High Belt failed prior to flow splitter. Replaced with belt from noncon 2 (using only non con 1) until belt is delivered. 2025-11-01 00:00:00 11/3 - still waiting on belt to be delivered
Add DHL label to Scan tunnel valid message Datalogic (1) Very High DHL label was not in orignal spec. Need to be able to identify that label and filter out other barcodes. 2025-10-27 00:00:00
Estops are getting damaged on the UL lane Autstand (2) High UL16-1, UL15-3, UL10-2 (both sides) UL8-1 , UL7-3, UL6-1 protect or relocate devices 2025-11-04 00:00:00
) There is a catchpoint of bent metal that is sticking out from the tail assembly on PS10-1 where it transitions to PS11-1. This is catching polys during operation. Jesse is going to look into making proper modifications to eliminate this. DCS (2) High 2025-11-04 00:00:00 11/4 - Wes Matthews reviewed with Jesse
2) When product from PS10-1 is flowing towards PS11-1, there is no snowplow and instead the slide just dead ends with a corner of sidepan. Ive asked Jesse to look into fabricating a UHMW piece that could bridge this corner to push products down onto the belt. DCS (2) High 2025-11-04 00:00:00 11/4 Wes Matthews reviewed with Jesse
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. DCS (2) High 2025-11-04 00:00:00 11/4 Wes Matthews reviewed with Jesse
Raise the fill height ob the DTC's approx 2 " Autstand (2) High 2025-11-04 00:00:00
================================================================================

View File

@ -0,0 +1,518 @@
PREPROCESSED EXCEL DATA
================================================================================
Current Date (Baltimore/Eastern): 2025-11-05 10:08:52 EST
Total Items: 162
VENDOR: Amazon
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
VERY HIGH PRIORITY (1 items):
AWCS Multiple Destinations | Complete | 10/15/25
ALL ITEMS:
AWCS Multiple Destinations | Vendor: Amazon | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: AWCS was not sending multiple destinations for NC ...
================================================================================
VENDOR: Autstand
--------------------------------------------------------------------------------
Total Items: 74
Closed: 67
Open: 3
Monitor: 4
RECENT UPDATES (Yesterday's Date):
ADDED: Estops are getting damaged on the UL lane | 2025-11-04 00:00:00 | Incomplete
ADDED: Raise the fill height ob the DTC's approx 2 " | 2025-11-04 00:00:00 | Incomplete
CLOSED: SCADA performance issue | 2025-11-04 00:00:00 | Complete
CLOSED: gap control at non con sorter. | 2025-11-04 00:00:00 | Complete
OLDEST UNADDRESSED (Top 3):
Estops are getting damaged on the UL lane | Age: 1 days | 2025-11-04 00:00:00 | Incomplete
Raise the fill height ob the DTC's approx 2 " | Age: 1 days | 2025-11-04 00:00:00 | Incomplete
3:1 merge code update | Age: None days | | Incomplete
VERY HIGH PRIORITY (6 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
HIGH PRIORITY (53 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 | 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
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station Jackpot probem solve | Complete | 10/15/25
Still seeing Lost Container / No Reads in NC Jackpot | Complete | 10/15/25
First chute orange lights keeps turning on without pakages blocking any sensors semi auto vs-d | Complete | 10/15/25
Flashing and steady blue light on a chute without any package present S014020, S014018 | Complete | 10/15/25
Flashing Green light on D2C , start button doesn't work S014041 | Complete | 10/15/25
non- con packages still has divert issues packages going straight to jackpot | Complete | 10/15/25
Scada Map not showing cameras | Complete | 10/15/25
Scada Map: showing stopped but actually running C | Complete | 10/15/25
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station. | Complete | 10/15/25
Still seeing Lost Container / No Reads in NC Jackpot as of 1044 | Complete | 10/15/25
206 - 207 max reach giving us false signals its green on skada but not operational | Complete | 10/15/25
Take away line from shuttle tipper side pan is loose and causing jams/PE mis alignment | Complete | 10/17
Packages not diverting on the correct intralox | Complete | 10/15/2025
Label auto inducts | Complete | 10/15/2025
Logic for Semi induct D is off very low throughput see video | Monitor | 10/16/2025
S012075 unavailable | Complete | 10/16/2025
VSD- S014020 BLINKING BLUE WHILE CHUTE IS EMPTY | Complete | 10/16/2025
VSD- S014018 SOLID BLUE  WHILE CHUTE IS EMPTY | Complete | 10/16/2025
D2C S014041 flashing green + activation button not illuminating | Complete | 10/16/2025
Problem Solve rollers do not correctly inch-and-store packages, causing line to jam prematurely | Complete | 10/16/2025
SCADA: We need some type of refrence in SCADA. Suggest adding dock doors that correlate with their belt | Complete | 10/16/2025
Run-up is not enabled on Problem solve collection belts. They all stop when the photoeye at the rollers is blocked. | Complete | 10/16/2025
Potential PE issue at the problem solve rollers right when the chutes level off. 300 side. | Complete | 10/16/2025
SCADA: scada camera view from main map wont allow user to pan camera angles when clicked onto | Complete | 10/16/2025
PS9-3CH2 - located by semi induct C. Blue light actived with no packages | Complete | 10/16/2025
semi induct c chute 2 Flase blue light PE needs adjusted | Complete | 10/16/2025
IBNC splitting sending packages to NC that are within the crossbelt MTBH | Complete | 10/16/2025
D2C Chutes are full blue lighting 8 inches short of the go cart full line | Complete | 10/16/2025
chute stays green even when chute is full | Complete | 10/16/2025
Non- con packages coming down to lanes | Complete | 10/17/2025
Scada - label each line ex. UL13 , UL14 ect. | Complete | 10/17/2025
PS11-11CH6NC Intralox Sorter (S02) | Complete | 10/17/2025
Blue light for semi induct D is on when chute is empty | Complete | 10/17/2025
Need 1 button to turn on ALL inducts. I am having to turn them on one by one | Complete | 10/17/2025
One major issue and one minor issue with the non-con system:
No-reads are really frequent
The PLC is not reporting S04 message divert fails properly (no reads to jackpot, lost container, failed to divert, wrong buildings) | Monitor | 10/17/2025
Non-Con running through main sorter causing system to shutdown; Non-con packages not diverting to Non-cons sorter taking up carriers on Sorter | Complete | 10/18/2025
DTW8/CLE5 Non-Con packages not diverting to chutes; running straight through jackpot | Complete | 10/18/2025
SEMI-D uneven flow of packages to each chute | Complete | 10/18/2025
Clean up SCADA Active Jams to not show false jams ex BYBA-15 /BYBD-14 | Complete | 10/18/25
Disable jam pe's that are to be removed (bulk chutes) | Complete | 10/18/25
Evaluate jam logic /die back on bypasses. | Complete | 2025-10-19 00:00:00
Encoder failure (4x) + 2 x | Complete | 2025-10-10 00:00:00
SCADA performance issue | Complete |
7:1 merge code update | Complete |
3:1 merge code update | Incomplete |
Estops are getting damaged on the UL lane | Incomplete | 2025-11-04 00:00:00
Raise the fill height ob the DTC's approx 2 " | Incomplete | 2025-11-04 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...
PS Conveyor chute clearing Issues | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Chute/conveyor beacon at the top of the problem so...
Replicate logic timers from semi VS-D to the rest of the semis | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Logic timers from semi-auto at all virtual sorters...
Tipper timer | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Adjust tipper logic to prevent two tippers from du...
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: 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 ...
Chute 14041 Enable Issues | Vendor: Autstand | Priority: (4) Low (low) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: DTC chute won't stay enabled even with cart in cor...
VS-D, S01400 Pallet Chute Beacons - False Fullness | Vendor: Autstand | Priority: (4) Low (low) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Chute fullness indicator beacon illuminated incorr...
Semi-Auto Jam Beacons | Vendor: Autstand | Priority: (4) Low (low) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: remove jam PE at chute...
NC Dim Data | Vendor: Autstand | Priority: (6) Complete (complete) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: AutStand not sending DIM data in S01 Message...
Jam Reset NC End of Sorter | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Need to add jam reset pb for end of sorter jam pe,...
PS11_11_JR3 | Vendor: Autstand | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Jam Reset PB is flashing sporadically...
"Destination Not Attempted" Reason Code | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Receiving "Destination Not Attempted" in the wrong...
S013089 Blue Beacon | Vendor: Autstand | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Need to investigate ZMX Sensor, alignment causing ...
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station Jackpot probem solve | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Still seeing Lost Container / No Reads in NC Jackpot | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
First chute orange lights keeps turning on without pakages blocking any sensors semi auto vs-d | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Flashing and steady blue light on a chute without any package present S014020, S014018 | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Flashing Green light on D2C , start button doesn't work S014041 | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
non- con packages still has divert issues packages going straight to jackpot | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Scada Map not showing cameras | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Scada Map: showing stopped but actually running C | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
PS lines stop packages at the top of the line, on the first station. It should push the packages to the last station. | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
Still seeing Lost Container / No Reads in NC Jackpot as of 1044 | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
206 - 207 max reach giving us false signals its green on skada but not operational | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: N/A...
NC boxes are diverting to xbelt causing jams particullary at bypass curves | Vendor: Autstand | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17 - Ian adjusted the 3 merges on MCM2 to max l...
Bypasses are "going to sleep" | Vendor: Autstand | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17 - there is no sleep or energy mgt on the by...
Take away line from shuttle tipper side pan is loose and causing jams/PE mis alignment | Vendor: Autstand | Priority: (2) Hgh (high) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17 DCS investigated and found the PEs on one o...
Packages not diverting on the correct intralox | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: N/A...
Label auto inducts | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: N/A...
False blue lights | Vendor: Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 10/25/2025 | Description: S014020 (AUTO-CHUTE4020) , S014018 (AUTO-CHUTE4018...
Logic for Semi induct D is off very low throughput see video | Vendor: Autstand | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 10/16/2025 | Description: Semi Auto D induct...
S012075 unavailable | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: S012075...
VSD- S014020 BLINKING BLUE WHILE CHUTE IS EMPTY | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Virtual sort- D...
VSD- S014018 SOLID BLUE  WHILE CHUTE IS EMPTY | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Virtual sort- D...
D2C S014041 flashing green + activation button not illuminating | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Virtual sort D D2C S014041...
Problem Solve rollers do not correctly inch-and-store packages, causing line to jam prematurely | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: N/A...
SCADA: We need some type of refrence in SCADA. Suggest adding dock doors that correlate with their belt | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Flow Desk...
SCADA: Need a way to click onto jammed area on main page to see where the jam is located and how to get there | Vendor: Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Flow Desk...
Run-up is not enabled on Problem solve collection belts. They all stop when the photoeye at the rollers is blocked. | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Problem solve...
Potential PE issue at the problem solve rollers right when the chutes level off. 300 side. | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: BC problem solve...
SCADA: scada camera view from main map wont allow user to pan camera angles when clicked onto | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Flow Desk...
PS9-3CH2 - located by semi induct C. Blue light actived with no packages | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Semi induct C...
semi induct c chute 2 Flase blue light PE needs adjusted | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: N/A...
Non con diverts going down - becon alluminating but belt still running | Vendor: Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: interlock...
IBNC splitting sending packages to NC that are within the crossbelt MTBH | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Inbound...
D2C Chutes are full blue lighting 8 inches short of the go cart full line | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: VS-D (But I assume all virtual sorters)...
chute stays green even when chute is full | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Chute S014073...
Non- con packages coming down to lanes | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: VS-D...
Scada - label each line ex. UL13 , UL14 ect. | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Inbound 3-1 merges...
PS11-11CH6NC Intralox Sorter (S02) | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: PS11-11CH6NC Intralox Sorter (S02)...
Blue light for semi induct D is on when chute is empty | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: PS11-11CH6NC...
Need 1 button to turn on ALL inducts. I am having to turn them on one by one | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Buemer scada...
One major issue and one minor issue with the non-con system:
No-reads are really frequent
The PLC is not reporting S04 message divert fails properly (no reads to jackpot, lost container, failed to divert, wrong buildings) | Vendor: Autstand | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 10/17/2025 | Description: NON con sorter 1 and 2 not diverting...
Non-Con running through main sorter causing system to shutdown; Non-con packages not diverting to Non-cons sorter taking up carriers on Sorter | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: Main Sorter...
DTW8/CLE5 Non-Con packages not diverting to chutes; running straight through jackpot | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: Non-Con sorter...
SEMI-D uneven flow of packages to each chute | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: SEMI-D...
Clean up SCADA Active Jams to not show false jams ex BYBA-15 /BYBD-14 | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/25 | Description: N/A...
Disable jam pe's that are to be removed (bulk chutes) | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/25 | Description: N/A...
Evaluate jam logic /die back on bypasses. | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-19 00:00:00 | Description: getting "false jams" of box stopped in from of PE ...
Non Con flow issues -- missorts to S02207 | Vendor: Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: N/A...
DTC chutes on VS-B is randomly disabling | Vendor: Autstand | Priority: (None) | Status: Monitor (OPEN) | Date: 2025-10-22 00:00:00 | Description: N/A...
Encoder failure (4x) + 2 x | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-10 00:00:00 | Description: UL8-7 UL11-7 Problem with port on APF...
SCADA performance issue | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: | Description: report export crashed system...
7:1 merge code update | Vendor: Autstand | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: | Description: N/A...
3:1 merge code update | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: | Description: mcm02 by monday 11/4. mcm01 ul 1-3 done. ...
gap control at non con sorter. | Vendor: Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-30 00:00:00 | Description: code change/ help with box tracking....
Estops are getting damaged on the UL lane | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-04 00:00:00 | Description: UL16-1, UL15-3, UL10-2 (both sides) UL8-1 , UL7-3...
Raise the fill height ob the DTC's approx 2 " | Vendor: Autstand | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-04 00:00:00 | Description: N/A...
================================================================================
VENDOR: Autstand/Beumer
--------------------------------------------------------------------------------
Total Items: 3
Closed: 2
Open: 0
Monitor: 1
ALL ITEMS:
Semi induct D - light not allumintating green | Vendor: Autstand/Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: N/A...
Bypasses are showing "lane unavailble" at a high rate. should always be available... is it in energy saving mode? or other reason | Vendor: Autstand/Beumer | Priority: (None) | Status: Monitor (OPEN) | Date: 2025-10-22 00:00:00 | Description: N/A...
pe missing prob solve ak chute | Vendor: Autstand/Beumer | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 2025-10-29 00:00:00 | Description: N/A...
================================================================================
VENDOR: Autstand/DCS
--------------------------------------------------------------------------------
Total Items: 3
Closed: 3
Open: 0
Monitor: 0
HIGH PRIORITY (1 items):
Flow splitters are rotating boxes, potentially contributing to jams. Timing and height of the pop up rollers need to be evaluated | Complete | 10/17
ALL ITEMS:
Flow splitters are rotating boxes, potentially contributing to jams. Timing and height of the pop up rollers need to be evaluated | Vendor: Autstand/DCS | Priority: (2) Hgh (high) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17- Autstand and DCS to evaluate and make adju...
PS collector photo eyes are not feeding into each other | Vendor: Autstand/DCS | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: PS collector photo eyes - both collectors...
Non-con packages with plastic securement strips are not to be ran on sorter. Packages with plastic securement strips gets caught in sorter causing it to shut down/ jam. | Vendor: Autstand/DCS | Priority: (None) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: Non-Con sorter...
================================================================================
VENDOR: Beumer
--------------------------------------------------------------------------------
Total Items: 32
Closed: 26
Open: 1
Monitor: 5
OLDEST UNADDRESSED (Top 3):
Lane Not Available Metric too high | Age: None days | | Incomplete
VERY HIGH PRIORITY (6 items):
Bypasses Not On Due to Auto-Induct Status | Monitor | 10/14/25
Inductions are going directly on bellowsco | Complete | 2025-10-22 00:00:00
Carrier disabled to shut down the sorter | Complete | 2025-10-22 00:00:00
Missorts | Complete | 2025-10-20 00:00:00
Packages are being inducted on occupied trays | Complete | 2025-10-22 00:00:00
Lane Not Available Metric too high | Incomplete |
HIGH PRIORITY (12 items):
Semi-Auto Package marking X's | Complete | 10/6/25
Auto-Induct Restart | Complete | 10/15/25
False Jam ( Rest every 6 mins) | Complete | 10/16/2025
Induct 5B (Bypass induct C-&gt;) rejecting packages within MTBH | Monitor | 10/16/2025
Auto induct - D back fireing packages that can go - also demissionier is off | Complete | 10/16/2025
Packages are being directed to the wrong end of the chutes, AA had to take jiffy and scan to D2C | Complete | 10/17/2025
BUEMER scada - bypass is showing &quot;die back&quot; in yellow and futher up the belt is showing green. There is a disconnect. Packages arent able to move through in &quot;die back&quot; mode but the belt after is showing green, which looks to be good but isnt | Complete | 10/17/2025
false jam | Complete | 10/17/2025
DBS sensors - heavier packages meeting weight requirement for main sorter triggering senors; causing sorter to shutdown | Complete | 10/18/2025
jiffies getting caught in belows causing sorter to shutdown | Complete | 10/18/2025
At inducts evaluate why "conveyable" boxes are being rejected at induction | Complete | 2025-10-19 00:00:00
Estop not reporting on BGFusion/Scada | Complete | 2025-10-21 00:00:00
ALL ITEMS:
Bypasses Not On Due to Auto-Induct Status | Vendor: Beumer | Priority: (1) Very High (very_high) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Bypasses were turned off several times during test...
Semi-Auto Package marking X's | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/6/25 | Description: Remark induct point X's on conveyance in permanent...
VS-D Auto-Induct Jams/Faults | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Training for ops on difference between jams/faults...
Diverting onto Bellows from Bypass, adjust carrier aim | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Confirm divert points for auto and semi-auto induc...
Divert Points to Pallet Chutes | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Confirm divert points to pallet build chutes, ligh...
IND2A-22 Carrier Induct Timing | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Monitor (OPEN) | Date: 10/15/25 | Description: Check induct firing direction and timing at IND2A-...
Throughput Limit on SCADA | Vendor: Beumer | Priority: (4) Low (low) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Throughput Limit is being identified on SCADA and ...
SCADA Accurate Status Reads | Vendor: Beumer | Priority: (6) Complete (complete) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Beumer not sending full accurate lane status to Au...
Auto-Induct Restart | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: After an E-Stop and Restart, Auto-Induction didn't...
Operations requested the Problem Solve chutes from A and C to be disabled since not staffed | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17 -- Sherri asked Beumer (Bryan) to disable th...
False Jam ( Rest every 6 mins) | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: S013018...
Induct 5B (Bypass induct C-&gt;) rejecting packages within MTBH | Vendor: Beumer | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 10/16/2025 | Description: IND5B-5 (Induct platform VSB)...
BYPASS ATOC Auto induct reoccuring flase Jam | Vendor: Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: N/A...
Allocations are correct - wrong packages coming down | Vendor: Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: S014024 CHUTE...
Auto induct - D back fireing packages that can go - also demissionier is off | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Auto induct - 7d...
Packages are being directed to the wrong end of the chutes, AA had to take jiffy and scan to D2C | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Chute S014072...
BUEMER scada - bypass is showing &quot;die back&quot; in yellow and futher up the belt is showing green. There is a disconnect. Packages arent able to move through in &quot;die back&quot; mode but the belt after is showing green, which looks to be good but isnt | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Bypass DA...
false jam | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Lane S014024...
DBS sensors - heavier packages meeting weight requirement for main sorter triggering senors; causing sorter to shutdown | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: Main Sorter...
jiffies getting caught in belows causing sorter to shutdown | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/18/2025 | Description: Cells on Main sorter...
Provide Bellow clearing procedures | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 2025-10-17 00:00:00 | Description: Document the process for clearing bellows for RME...
Air Knife over shooting takeaway conveyor | Vendor: Beumer | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 2025-10-19 00:00:00 | Description: Too many packages are falling in netting. Add a...
At inducts evaluate why "conveyable" boxes are being rejected at induction | Vendor: Beumer | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-19 00:00:00 | Description: Is aligner working as expected? Skewed boxes tri...
Deep dive missorts (file shared) | Vendor: Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: N/A...
Aligner catch point on IND2C-s | Vendor: Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: N/A...
Issue with needing to reset all inducts (fault). when system starts. Need to automatically reset | Vendor: Beumer | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: N/A...
Inductions are going directly on bellowsco | Vendor: Beumer | Priority: (1) Very Hgh (very_high) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: Experiencing too many items on bellow... causing s...
Carrier disabled to shut down the sorter | Vendor: Beumer | Priority: (1) Very Hgh (very_high) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: Sorter shutting down too often...
Missorts | Vendor: Beumer | Priority: (1) Very Hgh (very_high) | Status: Complete (CLOSED) | Date: 2025-10-20 00:00:00 | Description: File with missorts shared....
Estop not reporting on BGFusion/Scada | Vendor: Beumer | Priority: 2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-21 00:00:00 | Description: Sorter stopped could not find root cause. Esto...
Packages are being inducted on occupied trays | Vendor: Beumer | Priority: (1) Very Hgh (very_high) | Status: Complete (CLOSED) | Date: 2025-10-22 00:00:00 | Description: Causing missorts and DBS/IBS/IOB faults that stop ...
Lane Not Available Metric too high | Vendor: Beumer | Priority: (1) Very Hgh (very_high) | Status: Incomplete (OPEN) | Date: | Description: N/A...
================================================================================
VENDOR: Caljan
--------------------------------------------------------------------------------
Total Items: 4
Closed: 4
Open: 0
Monitor: 0
HIGH PRIORITY (3 items):
Photoeyes at Caljan not wired properly | Complete | 10/15/25
Maxx Reach at DD 332 not working
https://t.corp.amazon.com/V1969041198 | Complete | 10/15/2025
Max reach 119  PE at top of max reach needs to be adjusted  , also having to reset line at times for it to move | Complete | 10/16/2025
ALL ITEMS:
Photoeyes at Caljan not wired properly | Vendor: Caljan | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Photoeyes stop the line vs feeding when blocked...
Maxx Reach at DD 332 not working
https://t.corp.amazon.com/V1969041198 | Vendor: Caljan | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: OB Fluid...
Max Reach 100% PE logic is backwards All 300 and 100 DD | Vendor: Caljan | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Outbound...
Max reach 119  PE at top of max reach needs to be adjusted  , also having to reset line at times for it to move | Vendor: Caljan | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: N/A...
================================================================================
VENDOR: DCS
--------------------------------------------------------------------------------
Total Items: 25
Closed: 20
Open: 4
Monitor: 1
RECENT UPDATES (Yesterday's Date):
ADDED: ) There is a catchpoint of bent metal that is sticking out from the tail assembly on PS10-1 where it transitions to PS11-1. This is catching polys during operation. Jesse is going to look into making proper modifications to eliminate this. | 2025-11-04 00:00:00 | Incomplete
ADDED: 2) When product from PS10-1 is flowing towards PS11-1, there is no snowplow and instead the slide just dead ends with a corner of sidepan. Ive asked Jesse to look into fabricating a UHMW piece that could bridge this corner to push products down onto the belt. | 2025-11-04 00:00:00 | Incomplete
ADDED: 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. | 2025-11-04 00:00:00 | Incomplete
OLDEST UNADDRESSED (Top 3):
NCS1-1 aligner belt failed | Age: 4 days | 2025-11-01 00:00:00 | Incomplete
) There is a catchpoint of bent metal that is sticking out from the tail assembly on PS10-1 where it transitions to PS11-1. This is catching polys during operation. Jesse is going to look into making proper modifications to eliminate this. | Age: 1 days | 2025-11-04 00:00:00 | Incomplete
2) When product from PS10-1 is flowing towards PS11-1, there is no snowplow and instead the slide just dead ends with a corner of sidepan. Ive asked Jesse to look into fabricating a UHMW piece that could bridge this corner to push products down onto the belt. | Age: 1 days | 2025-11-04 00:00:00 | Incomplete
VERY HIGH PRIORITY (4 items):
Flow turn Belt Replacement | Complete | 10/10/25
UL7-17 Belt needs to be replaced (again) RME installation (ripped edges, lacing) | Complete | 2025-10-18 00:00:00
UL21-24 Failed (belts and shaft) | Complete | 2025-10-20 00:00:00
NCS1-1 aligner belt failed | Incomplete | 2025-11-01 00:00:00
HIGH PRIORITY (17 items):
Semi-Auto Chute Sidepan Reinforcement | Monitor | 10/14/25
Semi-Auto Phantom Jams | Complete | 10/14/25
NC End of Sorter Chute | Complete | 10/15/25
Catch point at DD118 fluid load | Complete | 10/17
NC flow splitter has worn rollers | Complete | 10/17
oil leak in NON CON near chute S02-202CH | Complete | 10/15/2025
oil leak in NON CON near chute QAA-3CH | Complete | 10/15/2025
packages being re inducted into ps bottom belt - hits the belt - needs to be raised | Complete | 10/16/2025
Divert arms are to high and are causing jiffys to get stuck under the arm when diverting | Complete | 10/17/2025
PS chute lip is catching ps boxes | Complete | 10/17/2025
Maint jack for tippers | Complete | 10/17/25
Non Con Chute/Maint access. Need Latch upgrade | Complete | 2025-10-10 00:00:00
Motor falling on HSQ gappers.. 2x (3:1 merge) | Complete |
PRS4-2 Motor Replacement | Complete | 2025-10-26 00:00:00
) There is a catchpoint of bent metal that is sticking out from the tail assembly on PS10-1 where it transitions to PS11-1. This is catching polys during operation. Jesse is going to look into making proper modifications to eliminate this. | Incomplete | 2025-11-04 00:00:00
2) When product from PS10-1 is flowing towards PS11-1, there is no snowplow and instead the slide just dead ends with a corner of sidepan. Ive asked Jesse to look into fabricating a UHMW piece that could bridge this corner to push products down onto the belt. | Incomplete | 2025-11-04 00:00:00
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. | Incomplete | 2025-11-04 00:00:00
ALL ITEMS:
Flow turn Belt Replacement | Vendor: DCS | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/10/25 | Description: Flow turn belts incorrectly manufactured and need ...
Semi-Auto Chute Sidepan Reinforcement | Vendor: DCS | Priority: (2) High (high) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Sidepans are flimsy and need to be reinforced; whe...
Semi-Auto Phantom Jams | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Dust accumulation on the reflectors incorrectly cr...
NC End of Sorter Chute | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Packages getting stuck in chute at dead plate and ...
NC Sorter Aligner | Vendor: DCS | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: NC Sorter Aligner has a catch point at the exit, u...
Catch point at DD118 fluid load | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17 | Description: 10/17 -Weld failed. DCS bolted sidepan. Check o...
NC flow splitter has worn rollers | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17 | Description: pop up rollers on flow splitter are worn. repla...
Add air pressure valves (autstand request to DCS) | Vendor: DCS | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: | Description: N/A...
oil leak in NON CON near chute S02-202CH | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: S02-202CH...
oil leak in NON CON near chute QAA-3CH | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: QAA-3CH...
packages being re inducted into ps bottom belt - hits the belt - needs to be raised | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: PS collector re induct chutes...
Divert arms are to high and are causing jiffys to get stuck under the arm when diverting | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: Semi induct A...
PS chute lip is catching ps boxes | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/2025 | Description: QAB-2CH...
Maint jack for tippers | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/17/25 | Description: N/A...
UL4-15 damaged belt | Vendor: DCS | Priority: (None) | Status: Complete (CLOSED) | Date: | Description: N/A...
PS6-3 | Vendor: DCS | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-18 00:00:00 | Description: Noisy when running, side pan is very warm to the t...
UL7-17 Belt needs to be replaced (again) RME installation (ripped edges, lacing) | Vendor: DCS | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 2025-10-18 00:00:00 | Description: N/A...
Non Con Chute/Maint access. Need Latch upgrade | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-10 00:00:00 | Description: N/A...
UL21-24 Failed (belts and shaft) | Vendor: DCS | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 2025-10-20 00:00:00 | Description: N/A...
Motor falling on HSQ gappers.. 2x (3:1 merge) | Vendor: DCS | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: | Description: upgrade the bolts...
PRS4-2 Motor Replacement | Vendor: DCS | Priority: High (high) | Status: Complete (CLOSED) | Date: 2025-10-26 00:00:00 | Description: Motor Oreded will update when I have an ETA ( Tryi...
NCS1-1 aligner belt failed | Vendor: DCS | Priority: (1) Very High (very_high) | Status: Incomplete (OPEN) | Date: 2025-11-01 00:00:00 | Description: Belt failed prior to flow splitter. Replaced wi...
) There is a catchpoint of bent metal that is sticking out from the tail assembly on PS10-1 where it transitions to PS11-1. This is catching polys during operation. Jesse is going to look into making proper modifications to eliminate this. | Vendor: DCS | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-04 00:00:00 | Description: N/A...
2) When product from PS10-1 is flowing towards PS11-1, there is no snowplow and instead the slide just dead ends with a corner of sidepan. Ive asked Jesse to look into fabricating a UHMW piece that could bridge this corner to push products down onto the belt. | Vendor: DCS | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-04 00:00:00 | Description: N/A...
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. | Vendor: DCS | Priority: (2) High (high) | Status: Incomplete (OPEN) | Date: 2025-11-04 00:00:00 | Description: N/A...
================================================================================
VENDOR: DCS/Autstand
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
ALL ITEMS:
caljan at comm cable was ripped out | Vendor: DCS/Autstand | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: dock door 223...
================================================================================
VENDOR: DCS/Flow-Turn
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
HIGH PRIORITY (1 items):
PS3-1 merge | Complete | 2025-10-18 00:00:00
ALL ITEMS:
PS3-1 merge | Vendor: DCS/Flow-Turn | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 2025-10-18 00:00:00 | Description: Shaft walked causing the belts to come off track a...
================================================================================
VENDOR: DCS/RME
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
ALL ITEMS:
UL7-17 Belt has a rip | Vendor: DCS/RME | Priority: (None) | Status: Complete (CLOSED) | Date: 2025-10-18 00:00:00 | Description: Rip in belt the size of a dollar bill...
================================================================================
VENDOR: Datalogic
--------------------------------------------------------------------------------
Total Items: 5
Closed: 3
Open: 1
Monitor: 1
OLDEST UNADDRESSED (Top 3):
Add DHL label to Scan tunnel valid message | Age: 9 days | 2025-10-27 00:00:00 | Incomplete
VERY HIGH PRIORITY (1 items):
Add DHL label to Scan tunnel valid message | Incomplete | 2025-10-27 00:00:00
HIGH PRIORITY (1 items):
High Multi-Label Read Rate | Complete | 10/14/25
ALL ITEMS:
High Multi-Label Read Rate | Vendor: Datalogic | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Unexpectedly high multi-read rate from scanners du...
Long-Term Error Tracking Solution | Vendor: Datalogic | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/8/25 | Description: Currently, manual pull of all images from Datalogi...
Pull stats for error codes from Datalogic | Vendor: Datalogic | Priority: (3) Medium (medium) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Need ability to pull error code stats from Datalog...
No Read Rates - Trigger Timing Concerns | Vendor: Datalogic | Priority: (5) Monitoring (monitoring) | Status: Monitor (OPEN) | Date: 10/14/25 | Description: Confirm that the trigger timing from yesterday is ...
Add DHL label to Scan tunnel valid message | Vendor: Datalogic | Priority: (1) Very High (very_high) | Status: Incomplete (OPEN) | Date: 2025-10-27 00:00:00 | Description: DHL label was not in orignal spec. Need to be ab...
================================================================================
VENDOR: FMH/Gorbel
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
ALL ITEMS:
Maxx reach controls do not function as prescribed | Vendor: FMH/Gorbel | Priority: (None) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: All OB fluid maxxx reaches...
================================================================================
VENDOR: Gorbel
--------------------------------------------------------------------------------
Total Items: 2
Closed: 2
Open: 0
Monitor: 0
VERY HIGH PRIORITY (1 items):
Destuffit fault at DD225 | Complete | 10/15/25
HIGH PRIORITY (1 items):
DD218-DESTUFF-IT not properly working packing not able to climb up | Complete | 10/15/2025
ALL ITEMS:
Destuffit fault at DD225 | Vendor: Gorbel | Priority: (1) Very High (very_high) | Status: Complete (CLOSED) | Date: 10/15/25 | Description: Contact failed and estop jumped out ... could not ...
DD218-DESTUFF-IT not properly working packing not able to climb up | Vendor: Gorbel | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: DD218 Destuff-it...
================================================================================
VENDOR: MFO (Amazon)
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
ALL ITEMS:
Confirm D2C is Working | Vendor: MFO (Amazon) | Priority: (6) Complete (complete) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Verify all D2C lanes are mapped properly...
================================================================================
VENDOR: MISC
--------------------------------------------------------------------------------
Total Items: 7
Closed: 7
Open: 0
Monitor: 0
HIGH PRIORITY (2 items):
Non - Con Jam rest button - | Complete | 10/15/2025
Auto inducts / By passes do not start up with scata - | Complete | 10/15/2025
ALL ITEMS:
Non - Con Jam rest button - | Vendor: MISC | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: NCPRS2-1CH...
Auto inducts / By passes do not start up with scata - | Vendor: MISC | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/15/2025 | Description: N/A...
supply cabinet in NON Con | Vendor: MISC | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: NON Con...
drop zone banner in Non Con | Vendor: MISC | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: drop zone banner in Non Con...
printer station at both ends in Non Con | Vendor: MISC | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Non Con...
5s area for emtpy carts in Non Con | Vendor: MISC | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Non Con...
Fans in Non Con | Vendor: MISC | Priority: (None) | Status: Complete (CLOSED) | Date: 10/16/2025 | Description: Non Con...
================================================================================
VENDOR: Startup (Amazon)
--------------------------------------------------------------------------------
Total Items: 1
Closed: 1
Open: 0
Monitor: 0
HIGH PRIORITY (1 items):
Jam Clearing Equipment on Mezzanine | Complete | 10/14/25
ALL ITEMS:
Jam Clearing Equipment on Mezzanine | Vendor: Startup (Amazon) | Priority: (2) High (high) | Status: Complete (CLOSED) | Date: 10/14/25 | Description: Access issues at bypass inhibiting jam clear acces...
================================================================================

9064
output/report.html Normal file

File diff suppressed because it is too large Load Diff

3516
output/report.json Normal file

File diff suppressed because it is too large Load Diff

1626
output/report_direct.json Normal file

File diff suppressed because it is too large Load Diff

1626
output/test_report.json Normal file

File diff suppressed because it is too large Load Diff

240
report_generator.py Normal file
View File

@ -0,0 +1,240 @@
#!/usr/bin/env python3
"""
Report Generator - Direct Generation (No LLM Required)
Generates vendor reports directly from preprocessed Excel data.
All requirements fulfilled programmatically - no AI needed!
"""
import json
from pathlib import Path
from datetime import datetime
from typing import Optional, Dict, List
from zoneinfo import ZoneInfo
from data_preprocessor import preprocess_excel_files
from models import FullReport, VendorMetrics, VendorUpdates24h, PunchlistItem
from html_generator import generate_html_report
def convert_item_to_punchlist_item(item: Dict) -> PunchlistItem:
"""Convert preprocessed item dict to PunchlistItem Pydantic model."""
return PunchlistItem(
punchlist_name=item.get('punchlist_name', ''),
description=item.get('description') or None,
priority=item.get('priority') or None,
date_identified=item.get('date_identified_str') or None,
date_completed=item.get('date_completed_str') or None,
status=item.get('status', 'Incomplete'),
status_updates=item.get('status_updates') or None,
issue_image=item.get('issue_image') or None,
age_days=item.get('age_days')
)
def generate_report(
reports_dir: str = "reports",
output_file: Optional[str] = None,
verbose: bool = True
) -> dict:
"""
Generate vendor report directly from preprocessed data - NO LLM required!
Args:
reports_dir: Directory containing Excel files
output_file: Optional path to save JSON output
verbose: Whether to print progress messages
Returns:
Dictionary containing the generated report
"""
if verbose:
print("=" * 70)
print("DIRECT REPORT GENERATION (No LLM Required)")
print("=" * 70)
print(f"Loading and preprocessing Excel files from '{reports_dir}'...")
# Preprocess Excel files using Baltimore/Eastern timezone
baltimore_tz = ZoneInfo("America/New_York")
current_date_baltimore = datetime.now(baltimore_tz)
if verbose:
print(f"Using Baltimore/Eastern timezone (America/New_York) for 24h calculations")
print(f"Current time: {current_date_baltimore.strftime('%Y-%m-%d %H:%M:%S %Z')}")
preprocessed_data, summary = preprocess_excel_files(reports_dir, current_date=current_date_baltimore)
if not summary:
print(f"Error: No data processed")
return {}
# Save preprocessed data for inspection
preprocessed_output_path = Path("output/preprocessed_data.txt")
preprocessed_output_path.parent.mkdir(parents=True, exist_ok=True)
with open(preprocessed_output_path, 'w', encoding='utf-8') as f:
f.write(preprocessed_data)
if verbose:
total_items = sum(len(v['items']) for v in summary.values())
print(f"✓ Processed {total_items} items from {len(summary)} vendors")
print(f"✓ Preprocessed data saved to: {preprocessed_output_path}")
print("Generating report directly from preprocessed data...")
# Build vendors list
vendors = []
for vendor_name, vendor_data in sorted(summary.items()):
# Build 24-hour updates
updates_24h = VendorUpdates24h(
added=[convert_item_to_punchlist_item(item) for item in vendor_data['recent_added']],
closed=[convert_item_to_punchlist_item(item) for item in vendor_data['recent_closed']],
changed_to_monitor=[convert_item_to_punchlist_item(item) for item in vendor_data['recent_monitor']]
)
# Get oldest 3 unaddressed (already sorted)
oldest_unaddressed = [
convert_item_to_punchlist_item(item)
for item in vendor_data['unaddressed'][:3]
]
# Get very high priority items
very_high_items = [
convert_item_to_punchlist_item(item)
for item in vendor_data['very_high']
]
# Get high priority items
high_items = [
convert_item_to_punchlist_item(item)
for item in vendor_data['high']
]
# Get all items grouped by status for tabs
all_items = vendor_data.get('items', [])
# Use status field - preprocessor sets status to 'Complete', 'Monitor', or 'Incomplete'
# Also check is_closed flag as backup
closed_items = [convert_item_to_punchlist_item(item) for item in all_items
if item.get('status', '').lower() == 'complete' or item.get('is_closed', False)]
monitor_items = [convert_item_to_punchlist_item(item) for item in all_items
if item.get('status', '').lower() == 'monitor']
open_items = [convert_item_to_punchlist_item(item) for item in all_items
if item.get('status', '').lower() == 'incomplete' and not item.get('is_closed', False)]
# Create vendor metrics
vendor_metrics = VendorMetrics(
vendor_name=vendor_name,
total_items=len(vendor_data['items']),
closed_count=vendor_data['closed'],
open_count=vendor_data['open'],
monitor_count=vendor_data['monitor'],
updates_24h=updates_24h,
oldest_unaddressed=oldest_unaddressed,
very_high_priority_items=very_high_items,
high_priority_items=high_items
)
# Add status-grouped items to vendor metrics (will be serialized to dict)
vendor_dict = vendor_metrics.model_dump()
# Convert Pydantic models to dicts
vendor_dict['closed_items'] = [item.model_dump() for item in closed_items]
vendor_dict['monitor_items'] = [item.model_dump() for item in monitor_items]
vendor_dict['open_items'] = [item.model_dump() for item in open_items]
vendors.append(vendor_dict)
# Create full report
report = FullReport(
report_generated_at=datetime.now().isoformat(),
vendors=vendors,
summary={
"total_vendors": len(vendors),
"total_items": sum(v.get('total_items', 0) if isinstance(v, dict) else v.total_items for v in vendors),
"total_closed": sum(v.get('closed_count', 0) if isinstance(v, dict) else v.closed_count for v in vendors),
"total_open": sum(v.get('open_count', 0) if isinstance(v, dict) else v.open_count for v in vendors),
"total_monitor": sum(v.get('monitor_count', 0) if isinstance(v, dict) else v.monitor_count for v in vendors)
}
)
# Convert to dict - vendors already have closed_items, monitor_items, open_items from above
report_data = report.model_dump()
# Restore the status-grouped items that Pydantic might have stripped
# (FullReport validation may have removed extra fields from vendors)
for i, vendor_dict in enumerate(vendors):
if isinstance(vendor_dict, dict):
# Ensure status-grouped items are preserved
if 'closed_items' in vendor_dict:
report_data['vendors'][i]['closed_items'] = vendor_dict['closed_items']
if 'monitor_items' in vendor_dict:
report_data['vendors'][i]['monitor_items'] = vendor_dict['monitor_items']
if 'open_items' in vendor_dict:
report_data['vendors'][i]['open_items'] = vendor_dict['open_items']
# Save to file if specified
if output_file:
output_path = Path(output_file)
output_path.parent.mkdir(parents=True, exist_ok=True)
with open(output_path, 'w', encoding='utf-8') as f:
json.dump(report_data, f, indent=2, ensure_ascii=False)
if verbose:
file_size = output_path.stat().st_size / 1024
print(f"✓ JSON report saved to: {output_path} ({file_size:.1f} KB)")
# Generate HTML report
if verbose:
print("Generating HTML report...")
html_path = generate_html_report(str(output_path))
if verbose:
html_size = Path(html_path).stat().st_size / 1024
print(f"✓ HTML report saved to: {html_path} ({html_size:.1f} KB)")
if verbose:
print()
print("=" * 70)
print("✓ Report generated successfully!")
print(f" Vendors: {len(vendors)}")
print(f" Total items: {report_data['summary']['total_items']}")
print("=" * 70)
return report_data
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Generate vendor reports from Excel files (no LLM required)")
parser.add_argument(
"--reports-dir",
type=str,
default="reports",
help="Directory containing Excel files (default: reports)"
)
parser.add_argument(
"--output",
type=str,
default="output/report.json",
help="Output JSON file path (default: output/report.json)"
)
parser.add_argument(
"--verbose",
action="store_true",
default=True,
help="Print verbose output"
)
args = parser.parse_args()
report = generate_report(
reports_dir=args.reports_dir,
output_file=args.output,
verbose=args.verbose
)
if report and "error" not in report:
print("\n✓ Report generation complete!")
else:
print("\n✗ Report generation failed.")
import sys
sys.exit(1)

Binary file not shown.

114
requirements.txt Normal file
View File

@ -0,0 +1,114 @@
aiofiles==25.1.0
aiohappyeyeballs==2.6.1
aiohttp==3.13.2
aiosignal==1.4.0
altair==5.5.0
annotated-types==0.7.0
anyio==4.11.0
attrs==25.4.0
backoff==2.2.1
beautifulsoup4==4.14.2
blinker==1.9.0
cachetools==6.2.1
certifi==2025.10.5
cffi==2.0.0
charset-normalizer==3.4.4
click==8.3.0
cryptography==46.0.3
dataclasses-json==0.6.7
emoji==2.15.0
et_xmlfile==2.0.0
filetype==1.2.0
frozenlist==1.8.0
gitdb==4.0.12
GitPython==3.1.45
greenlet==3.2.4
h11==0.16.0
html5lib==1.1
httpcore==1.0.9
httpx==0.28.1
httpx-sse==0.4.3
idna==3.11
Jinja2==3.1.6
joblib==1.5.2
jsonpatch==1.33
jsonpointer==3.0.0
jsonschema==4.25.1
jsonschema-specifications==2025.9.1
langchain==1.0.3
langchain-classic==1.0.0
langchain-community==0.4.1
langchain-core==1.0.3
langchain-ollama==1.0.0
langchain-text-splitters==1.0.0
langdetect==1.0.9
langgraph==1.0.2
langgraph-checkpoint==3.0.1
langgraph-prebuilt==1.0.2
langgraph-sdk==0.2.9
langsmith==0.4.41
lxml==6.0.2
MarkupSafe==3.0.3
marshmallow==3.26.1
msoffcrypto-tool==5.4.2
multidict==6.7.0
mypy_extensions==1.1.0
narwhals==2.10.2
networkx==3.5
nltk==3.9.2
numpy==2.3.4
olefile==0.47
ollama==0.6.0
openpyxl==3.1.5
orjson==3.11.4
ormsgpack==1.12.0
packaging==25.0
pandas==2.3.3
pillow==12.0.0
propcache==0.4.1
protobuf==6.33.0
psutil==7.1.3
pyarrow==21.0.0
pycparser==2.23
pydantic==2.12.3
pydantic-settings==2.11.0
pydantic_core==2.41.4
pydeck==0.9.1
pypdf==6.1.3
python-dateutil==2.9.0.post0
python-dotenv==1.2.1
python-iso639==2025.2.18
python-magic==0.4.27
python-oxmsg==0.0.2
pytz==2025.2
PyYAML==6.0.3
RapidFuzz==3.14.3
referencing==0.37.0
regex==2025.11.3
requests==2.32.5
requests-toolbelt==1.0.0
rpds-py==0.28.0
six==1.17.0
smmap==5.0.2
sniffio==1.3.1
soupsieve==2.8
SQLAlchemy==2.0.44
streamlit==1.51.0
tabulate==0.9.0
tenacity==9.1.2
toml==0.10.2
tornado==6.5.2
tqdm==4.67.1
typing-inspect==0.9.0
typing-inspection==0.4.2
typing_extensions==4.15.0
tzdata==2025.2
unstructured==0.18.15
unstructured-client==0.42.3
urllib3==2.5.0
watchdog==6.0.0
webencodings==0.5.1
wrapt==2.0.0
xxhash==3.6.0
yarl==1.22.0
zstandard==0.25.0

4
requirements_minimal.txt Normal file
View File

@ -0,0 +1,4 @@
# Minimal requirements for direct report generation (no LLM needed)
pandas>=2.0.0
openpyxl>=3.0.0
pydantic>=2.0.0