Spaces:
Paused
Paused
| import streamlit as st | |
| from compliance_lib import fetch_text, run_check, generate_report, RULES | |
| import textwrap, json, datetime, os | |
| st.set_page_config(page_title="Anupalan Karta – Compliance Checker", | |
| layout="wide") | |
| st.title("🛡️ Anupalan Karta (अनुपालंकर्ता)") | |
| st.subheader("Unified compliance self-check Tool") | |
| # --- introduction and how-to guide ------------------------------------------ | |
| st.markdown(""" | |
| ## Introduction | |
| **Anupalan Karta** (अनुपालंकर्ता) is a simple tool to help business owners, data architects, and data owners quickly check if their policies and procedures meet important regulations like GDPR, EU AI Act, and ISO 27001. | |
| ### Why is this important? | |
| - Regulations protect your business from legal risks, fines, and reputational harm. | |
| - Checking compliance early helps you fix gaps before audits or problems arise. | |
| - Anupalan Karta gives you a fast, automated review and clear feedback, so you know where you stand. | |
| ## How to use | |
| 1. **Choose your input:** | |
| On the left, either paste your policy text, enter a public website link, or upload a file (.txt, .md, .pdf). | |
| 2. **Select frameworks:** | |
| Pick which compliance standards you want to check (you can select more than one). | |
| 3. **Run the check:** | |
| Click "Run compliance check" to see which requirements you meet and which need attention. | |
| 4. **Get your report:** | |
| Optionally, generate a summary report with next steps, and download it as a Markdown file. | |
| **Who is this for?** | |
| This tool is designed for business owners, data architects, and anyone responsible for data and compliance in their organization. No technical expertise is needed—just your policy documents. | |
| --- | |
| **Need a deeper compliance review or expert guidance?** | |
| Visit [anktechsol.com](https://anktechsol.com) for professional compliance consulting, detailed policy analysis, and tailored solutions for your business. | |
| --- | |
| """) | |
| # --- sidebar --------------------------------------------------------------- | |
| with st.sidebar: | |
| st.header("📑 Input options") | |
| mode = st.radio("Choose data source:", | |
| ("Paste text", "URL of public policy", "Upload file")) | |
| if mode == "Paste text": | |
| raw_text = st.text_area("Paste your policy / procedures here") | |
| elif mode == "URL of public policy": | |
| url = st.text_input("Public URL (HTTPS)") | |
| raw_text = fetch_text(url) if url else "" | |
| else: | |
| up = st.file_uploader("Upload .txt, .md or .pdf", type=["txt", "md", "pdf"]) | |
| raw_text = up.read().decode("utf-8", errors="ignore") if up else "" | |
| st.markdown("---") | |
| selected_fw = st.multiselect( | |
| "Frameworks to check", | |
| list(RULES.keys()), | |
| default=list(RULES.keys()) | |
| ) | |
| run_btn = st.button("Run compliance check") | |
| # --- main body -------------------------------------------------------------- | |
| if run_btn and raw_text.strip(): | |
| with st.spinner("Running rule-based checks…"): | |
| results = run_check(raw_text) | |
| st.subheader("📊 Checklist results") | |
| for fw in selected_fw: | |
| passed = sum(1 for _, ok in results[fw] if ok) | |
| total = len(results[fw]) | |
| st.write(f"**{fw}: {passed}/{total} items passed**") | |
| st.progress(passed / total) | |
| for label, ok in results[fw]: | |
| st.write(("✅" if ok else "❌") + " " + label) | |
| st.markdown("---") | |
| # --- AI report section -------------------------------------------------- | |
| st.subheader("📝 Generate narrative report") | |
| if st.button("Generate AI report"): | |
| with st.spinner("Calling model… this may take ~30 s"): | |
| bullet = "\n".join( | |
| f"- {fw}: {sum(ok for _, ok in results[fw])}/{len(results[fw])} passed" | |
| for fw in selected_fw | |
| ) | |
| from config import AI_REPORT_PROMPT # <-- import the prompt template | |
| prompt = AI_REPORT_PROMPT.format(bullet=bullet) | |
| report = generate_report(prompt) | |
| st.markdown("#### Draft report") | |
| st.code(report, language="markdown") | |
| st.download_button("⬇️ Download .md", | |
| report.encode("utf-8"), | |
| file_name="anupalan_karta_report.md", | |
| mime="text/markdown") | |
| else: | |
| st.info("Awaiting input…") | |