""" Demo test script for the Enterprise Comment API. Sends multiple separate code snippets (one per request) and prints clean, presentation-friendly output. """ import json import requests URL = "http://127.0.0.1:8000/generate_comment" test_cases = [ { "name": "payment_terms", "code": """def compute_due_date(invoice_date, terms): # terms could include credit_days, installment_percentages, etc. credit_days = terms.get("credit_days", 0) due_date = add_days(invoice_date, credit_days) return due_date""", }, { "name": "payment_entry_allocation_and_outstanding_balances", "code": """def allocate_payment(payment_amount: float, references: list[dict]): allocated = [] remaining = payment_amount for ref in references: # e.g. invoices with outstanding_amount take = min(ref["outstanding_amount"], remaining) allocated.append({ "reference_doctype": ref["doctype"], "reference_name": ref["name"], "allocated_amount": take, }) remaining -= take if remaining <= 0: break if remaining > 0: raise ValueError("Payment exceeds referenced outstanding balances") return allocated""", }, { "name": "chart_of_accounts_account_and_account_number", "code": """def validate_account_hierarchy(account: dict): # group accounts vs ledger accounts if account["account_type"] == "Group": assert account.get("parent_account") is not None else: assert account["parent_account"] is not None # uniqueness for account_number if account_number_exists(account["account_number"], exclude=account["name"]): raise ValueError("account_number must be unique")""", }, { "name": "make_acc_dimensions_offsetting_entry", "code": """def make_acc_dimensions_offsetting_entry(gl_map): accounting_dimensions_to_offset = get_accounting_dimensions_for_offsetting_entry( gl_map, gl_map[0].company ) no_of_dimensions = len(accounting_dimensions_to_offset) if no_of_dimensions == 0: return""", }, { "name": "fiscal_year_accounting_period_and_ledger_entry", "code": """def validate_transaction_in_fiscal_year(posting_date: str, company: str) -> None: fy = get_fiscal_year(company=company, posting_date=posting_date) if fy is None: raise ValueError("Posting date must be within an active fiscal year")""", }, ] def code_preview(code: str, max_lines: int = 8) -> str: lines = code.strip("\n").splitlines() shown = lines[:max_lines] preview = "\n".join(shown) if len(lines) > max_lines: preview += "\n..." return preview def main() -> None: print("Enterprise Comment API - RAG End-to-End Test (5 sets)") print(f"URL: {URL}") for i, case in enumerate(test_cases, start=1): print("\n" + "=" * 90) print(f"SET {i}/{len(test_cases)}: {case['name']}") print("- Code (preview) -") print(code_preview(case["code"])) print("- Requesting API -") resp = requests.post(URL, json={"code": case["code"]}) if resp.status_code != 200: print(f"[ERROR] Status Code: {resp.status_code}") print(resp.text) continue result = resp.json() print("[RESPONSE]") print(json.dumps(result, indent=2, ensure_ascii=True)) print("\n" + "=" * 90) print("Done.") if __name__ == "__main__": main()