Spaces:
Paused
Paused
Update src/app.py
Browse files- src/app.py +48 -12
src/app.py
CHANGED
|
@@ -2,11 +2,47 @@ import streamlit as st
|
|
| 2 |
from compliance_lib import fetch_text, run_check, generate_report, RULES
|
| 3 |
import textwrap, json, datetime, os
|
| 4 |
|
| 5 |
-
st.set_page_config(page_title="
|
| 6 |
layout="wide")
|
| 7 |
|
| 8 |
st.title("🛡️ Anupalan Karta (अनुपालंकर्ता) – unified compliance self-check")
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
# --- sidebar ---------------------------------------------------------------
|
| 11 |
with st.sidebar:
|
| 12 |
st.header("📑 Input options")
|
|
@@ -51,21 +87,21 @@ if run_btn and raw_text.strip():
|
|
| 51 |
f"- {fw}: {sum(ok for _, ok in results[fw])}/{len(results[fw])} passed"
|
| 52 |
for fw in selected_fw
|
| 53 |
)
|
| 54 |
-
prompt
|
| 55 |
-
|
| 56 |
-
outcomes and give prioritized next steps. Use clear headings, bullet
|
| 57 |
-
points and be brief. Results:
|
| 58 |
-
|
| 59 |
-
{bullet}
|
| 60 |
-
|
| 61 |
-
Write the report for a technical audience.
|
| 62 |
-
""")
|
| 63 |
report = generate_report(prompt)
|
| 64 |
st.markdown("#### Draft report")
|
| 65 |
st.code(report, language="markdown")
|
| 66 |
st.download_button("⬇️ Download .md",
|
| 67 |
report.encode("utf-8"),
|
| 68 |
-
file_name="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
mime="text/markdown")
|
| 70 |
else:
|
| 71 |
-
st.info("Awaiting input…")
|
|
|
|
| 2 |
from compliance_lib import fetch_text, run_check, generate_report, RULES
|
| 3 |
import textwrap, json, datetime, os
|
| 4 |
|
| 5 |
+
st.set_page_config(page_title="Anupalan Karta – Compliance Checker",
|
| 6 |
layout="wide")
|
| 7 |
|
| 8 |
st.title("🛡️ Anupalan Karta (अनुपालंकर्ता) – unified compliance self-check")
|
| 9 |
|
| 10 |
+
# --- introduction and how-to guide ------------------------------------------
|
| 11 |
+
st.markdown("""
|
| 12 |
+
## Introduction
|
| 13 |
+
|
| 14 |
+
**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.
|
| 15 |
+
|
| 16 |
+
### Why is this important?
|
| 17 |
+
|
| 18 |
+
- Regulations protect your business from legal risks, fines, and reputational harm.
|
| 19 |
+
- Checking compliance early helps you fix gaps before audits or problems arise.
|
| 20 |
+
- Anupalan Karta gives you a fast, automated review and clear feedback, so you know where you stand.
|
| 21 |
+
|
| 22 |
+
## How to use
|
| 23 |
+
|
| 24 |
+
1. **Choose your input:**
|
| 25 |
+
On the left, either paste your policy text, enter a public website link, or upload a file (.txt, .md, .pdf).
|
| 26 |
+
|
| 27 |
+
2. **Select frameworks:**
|
| 28 |
+
Pick which compliance standards you want to check (you can select more than one).
|
| 29 |
+
|
| 30 |
+
3. **Run the check:**
|
| 31 |
+
Click "Run compliance check" to see which requirements you meet and which need attention.
|
| 32 |
+
|
| 33 |
+
4. **Get your report:**
|
| 34 |
+
Optionally, generate a summary report with next steps, and download it as a Markdown file.
|
| 35 |
+
|
| 36 |
+
**Who is this for?**
|
| 37 |
+
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.
|
| 38 |
+
|
| 39 |
+
---
|
| 40 |
+
|
| 41 |
+
**Need a deeper compliance review or expert guidance?**
|
| 42 |
+
Visit [anktechsol.com](https://anktechsol.com) for professional compliance consulting, detailed policy analysis, and tailored solutions for your business.
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
""")
|
| 46 |
# --- sidebar ---------------------------------------------------------------
|
| 47 |
with st.sidebar:
|
| 48 |
st.header("📑 Input options")
|
|
|
|
| 87 |
f"- {fw}: {sum(ok for _, ok in results[fw])}/{len(results[fw])} passed"
|
| 88 |
for fw in selected_fw
|
| 89 |
)
|
| 90 |
+
from config import AI_REPORT_PROMPT # <-- import the prompt template
|
| 91 |
+
prompt = AI_REPORT_PROMPT.format(bullet=bullet)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
report = generate_report(prompt)
|
| 93 |
st.markdown("#### Draft report")
|
| 94 |
st.code(report, language="markdown")
|
| 95 |
st.download_button("⬇️ Download .md",
|
| 96 |
report.encode("utf-8"),
|
| 97 |
+
file_name="anupalan_karta_report.md",
|
| 98 |
+
mime="text/markdown")
|
| 99 |
+
else:
|
| 100 |
+
st.info("Awaiting input…")
|
| 101 |
+
st.code(report, language="markdown")
|
| 102 |
+
st.download_button("⬇️ Download .md",
|
| 103 |
+
report.encode("utf-8"),
|
| 104 |
+
file_name="anupalan_karta_report.md",
|
| 105 |
mime="text/markdown")
|
| 106 |
else:
|
| 107 |
+
st.info("Awaiting input…")
|