| import streamlit as st |
| import pandas as pd |
| from transformers import pipeline |
|
|
| |
| decision_model = pipeline("text-classification", model="distilbert-base-uncased") |
|
|
| |
| def fetch_supplier_master(): |
| return pd.read_excel("supplier_master.xlsx") |
|
|
| def fetch_contractor_master(): |
| return pd.read_excel("contractor_master.xlsx") |
|
|
| def check_msa_validity(msa_df): |
| expired = msa_df[msa_df['EndDate'] < pd.Timestamp.today()] |
| return expired |
|
|
| def check_po_validity(po_df): |
| expired = po_df[po_df['EndDate'] < pd.Timestamp.today()] |
| return expired |
|
|
| def generate_performance_report(contractor_df): |
| top_performers = contractor_df[contractor_df['Performance'] == 'Top'] |
| below_par = contractor_df[contractor_df['Performance'] == 'Below'] |
| role_distribution = contractor_df.groupby('Role').size() |
| budget_utilization = contractor_df['Cost'].sum() |
| return top_performers, below_par, role_distribution, budget_utilization |
|
|
| def main(): |
| st.title("Contractor Workflow AI Agent") |
|
|
| supplier_data = fetch_supplier_master() |
| contractor_data = fetch_contractor_master() |
|
|
| st.subheader("MSA & PO Validation") |
| expired_msa = check_msa_validity(supplier_data) |
| expired_po = check_po_validity(supplier_data) |
|
|
| if not expired_msa.empty: |
| st.warning("Expired MSAs found! Notify procurement team.") |
| st.write(expired_msa) |
|
|
| if not expired_po.empty: |
| st.warning("Expired POs found! Notify procurement team.") |
| st.write(expired_po) |
|
|
| st.subheader("Contractor Performance Report") |
| top, below, roles, budget = generate_performance_report(contractor_data) |
|
|
| st.write("β
Top Performers", top) |
| st.write("β οΈ Below Par Performers", below) |
| st.write("π Role Distribution", roles) |
| st.write(f"π° Overall Budget Utilization: {budget}") |
|
|
| st.subheader("Onboarding / Offboarding Actions") |
| for _, row in contractor_data.iterrows(): |
| if row['EndDate'] < pd.Timestamp.today(): |
| st.error(f"Contractor {row['Name']} expired. Offboard immediately.") |
| elif row.get('ExtendFlag', False): |
| st.info(f"Contractor {row['Name']} requires extension. Notify user.") |
| elif row.get('ManagerChanged', False): |
| st.info(f"Update hiring manager for {row['Name']}.") |
|
|
| if __name__ == "__main__": |
| main() |
|
|