- Add main application files (main.py, models.py, schemas.py, etc.) - Add routers for all features (waiting, attendance, members, etc.) - Add HTML templates for admin and user interfaces - Add migration scripts and utility files - Add Docker configuration - Add documentation files - Add .gitignore to exclude database and cache files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
import requests
|
|
from datetime import datetime, timedelta
|
|
|
|
# Test the store comparison API
|
|
base_url = "http://localhost:8000"
|
|
franchise_id = 1
|
|
|
|
# Calculate date range (last month)
|
|
end_date = datetime.now().date()
|
|
start_date = (datetime.now() - timedelta(days=30)).date()
|
|
|
|
url = f"{base_url}/api/franchise/stats/{franchise_id}/store_comparison"
|
|
params = {
|
|
"start_date": str(start_date),
|
|
"end_date": str(end_date)
|
|
}
|
|
|
|
print(f"Testing URL: {url}")
|
|
print(f"Parameters: {params}")
|
|
print("-" * 50)
|
|
|
|
try:
|
|
# Note: This will fail without authentication, but we can test the SQL directly
|
|
response = requests.get(url, params=params)
|
|
print(f"Status Code: {response.status_code}")
|
|
print(f"Response: {response.json()}")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
print("\nTesting SQL query directly...")
|
|
|
|
import sqlite3
|
|
conn = sqlite3.connect('waiting_system.db')
|
|
cursor = conn.cursor()
|
|
|
|
query = """
|
|
SELECT s.id, s.name,
|
|
COUNT(CASE WHEN w.status = 'attended' THEN w.id ELSE NULL END) as attendance_count
|
|
FROM store s
|
|
LEFT JOIN waiting_list w ON s.id = w.store_id
|
|
AND w.status = 'attended'
|
|
AND w.attended_at >= ?
|
|
AND w.attended_at <= ?
|
|
WHERE s.franchise_id = ? AND s.is_active = 1
|
|
GROUP BY s.id, s.name
|
|
ORDER BY s.name
|
|
"""
|
|
|
|
cursor.execute(query, (
|
|
f"{start_date} 00:00:00",
|
|
f"{end_date} 23:59:59",
|
|
franchise_id
|
|
))
|
|
|
|
results = cursor.fetchall()
|
|
print("\nDirect SQL Results:")
|
|
print("-" * 50)
|
|
for row in results:
|
|
print(f"ID: {row[0]}, Name: {row[1]}, Count: {row[2]}")
|
|
|
|
# Simulate API response
|
|
print("\nSimulated API Response:")
|
|
print("-" * 50)
|
|
api_response = [
|
|
{
|
|
"store_name": row[1].replace("셀스타", "").strip(),
|
|
"count": row[2]
|
|
}
|
|
for row in results
|
|
]
|
|
print(api_response)
|
|
|
|
conn.close()
|