|
|
| import pandas as pd
|
| from datetime import datetime
|
|
|
| def save_with_instructions(df: pd.DataFrame, output_path: str, min_qty: int = 50, weights: dict = None):
|
| """
|
| Save the priority results to Excel with an instructions sheet
|
| """
|
| if weights is None:
|
| weights = {"AGE_WEIGHT": 60, "COMPONENT_WEIGHT": 30, "MANUAL_WEIGHT": 10}
|
|
|
| with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
|
|
|
| df.to_excel(writer, sheet_name='Priority_Results', index=False)
|
|
|
|
|
| instructions_data = [
|
| ['Manufacturing Priority Decision Results'],
|
| [''],
|
| ['METHODOLOGY:'],
|
| [f'Age Weight: {weights["AGE_WEIGHT"]}%'],
|
| [f'Component Simplicity Weight: {weights["COMPONENT_WEIGHT"]}%'],
|
| [f'Manual Priority Weight: {weights["MANUAL_WEIGHT"]}%'],
|
| [f'Minimum Quantity Threshold: {min_qty}'],
|
| [''],
|
| ['COLUMNS EXPLANATION:'],
|
| ['OrderAgeDays: Days since oldest product required'],
|
| ['ComponentCount: Number of unique components needed'],
|
| ['QtyThresholdOK: Whether quantity meets minimum threshold'],
|
| ['AgeScore: Weighted age contribution to priority'],
|
| ['SimplicityScore: Weighted simplicity contribution to priority'],
|
| ['ManualScore: Weighted manual priority contribution'],
|
| ['PriorityScore: Final calculated priority (0-1 scale)'],
|
| [''],
|
| ['Higher PriorityScore = Higher Manufacturing Priority'],
|
| [f'Generated on: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}']
|
| ]
|
|
|
| instructions_df = pd.DataFrame(instructions_data, columns=['Instructions'])
|
| instructions_df.to_excel(writer, sheet_name='Instructions', index=False) |