101 lines
3.4 KiB
Python
101 lines
3.4 KiB
Python
import sys
|
|
import os
|
|
|
|
# Init path to allow importing lawrisk
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from lawrisk.services import licensing_repo as lic_repo
|
|
from lawrisk.utils.env_loader import load_env
|
|
|
|
def find_permit():
|
|
load_env()
|
|
|
|
# Try to access _lic_pg_conn, handle if it's not directly exposed or named differently
|
|
if hasattr(lic_repo, "_lic_pg_conn"):
|
|
conn_func = getattr(lic_repo, "_lic_pg_conn")
|
|
elif hasattr(lic_repo, "get_connection"):
|
|
conn_func = getattr(lic_repo, "get_connection")
|
|
else:
|
|
# Fallback to looking for connection logic inside licensing_repo (it might be a context manager)
|
|
# But for now assume _lic_pg_conn exists as per audit_risks.py
|
|
conn_func = lic_repo._lic_pg_conn
|
|
|
|
# Check if it returns a connection or context manager
|
|
# _lic_pg_conn in licensing_repo seems to be a context manager based on 'with _lic_pg_conn() as conn'
|
|
# But audit_risks.py calls it as 'conn = lic_repo._lic_pg_conn()' ?
|
|
# Let's check audit_risks.py again.
|
|
# Line 17: conn = lic_repo._lic_pg_conn()
|
|
# Line 94: conn.close()
|
|
# This implies it returns a connection object, not a context manager.
|
|
# But licensing_repo.py line 778 says: 'with _lic_pg_conn() as conn:' ...
|
|
# This means _lic_pg_conn() can be used as a context manager OR returns something that has __enter__.
|
|
# A standard pg8000 connection can be used as a context manager.
|
|
|
|
try:
|
|
conn = conn_func()
|
|
except Exception as e:
|
|
print(f"Error connecting to DB: {e}")
|
|
return
|
|
|
|
cur = conn.cursor()
|
|
|
|
if len(sys.argv) > 1:
|
|
permit_name = sys.argv[1]
|
|
else:
|
|
permit_name = "仅销售预包装食品备案登记"
|
|
print(f"Searching for permit: {permit_name}")
|
|
|
|
# Check strict match
|
|
cur.execute("SELECT id, name FROM permits WHERE name = %s", (permit_name,))
|
|
strict_match = cur.fetchone()
|
|
|
|
if strict_match:
|
|
print(f"Found EXACT match: ID={strict_match[0]}, Name={strict_match[1]}")
|
|
permit_id = strict_match[0]
|
|
|
|
# Check regions
|
|
cur.execute("""
|
|
SELECT r.name
|
|
FROM region_theme_permits rtp
|
|
JOIN regions r ON r.id = rtp.region_id
|
|
WHERE rtp.permit_id = %s
|
|
GROUP BY r.name
|
|
""", (permit_id,))
|
|
regions = cur.fetchall()
|
|
if regions:
|
|
print("Bind to regions:")
|
|
for r_name in regions:
|
|
print(f" - {r_name[0]}")
|
|
else:
|
|
print("No region bindings found.")
|
|
|
|
# Check risks
|
|
cur.execute("""
|
|
SELECT count(*) FROM region_permit_risks WHERE permit_id = %s
|
|
""", (permit_id,))
|
|
risk_count_row = cur.fetchone()
|
|
risk_count = risk_count_row[0] if risk_count_row else 0
|
|
print(f"Total risk entries: {risk_count}")
|
|
|
|
else:
|
|
print("No exact match found.")
|
|
|
|
# Check fuzzy match
|
|
print("\nChecking fuzzy matches...")
|
|
cur.execute("SELECT id, name FROM permits WHERE name ILIKE %s", (f"%{permit_name}%",))
|
|
fuzzy_matches = cur.fetchall()
|
|
|
|
if fuzzy_matches:
|
|
for mid, mname in fuzzy_matches:
|
|
if strict_match and mid == strict_match[0]:
|
|
continue
|
|
print(f"Found partial match: ID={mid}, Name={mname}")
|
|
else:
|
|
if not strict_match:
|
|
print("No fuzzy matches found.")
|
|
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
find_permit()
|