fix: evaluation report P0/P1/P2 fixes, remove Docker, add upload UI
Backend: - Add NotFoundException + BusinessException, return correct HTTP status (404/400) - Add @Index on reports.project_id and reports.upload_time - Add fileSize column to reports, populate on upload, return in DTO - Cascade delete: deleting project now removes all reports (DB + files + PDFs) - Delete report: also clean up pre-rendered PDF - File upload MIME validation (extension + Content-Type) - Remove duplicate @ExceptionHandler from ReportController - Switch from System.err to SLF4J logger - Handle MethodArgumentNotValid, MissingServletRequestPart, etc. Frontend: - Remove all Docker files (project uses 宝塔 panel deployment) - Upgrade axios 1.6.8 -> 1.7.7 (CVE-2024-39338) - Remove unused @vue-office/pptx + vue-demi (see CHANGELOG for rationale) - Fix vite proxy port 37821 -> 30081 - Remove mock data fallback in production - Add upload report UI (button + modal in ProjectDetail) - Add create project UI (button + modal in ProjectList) - Add filename search box in ProjectDetail - New useApi methods: createProject, uploadReport, deleteProject, deleteReport - FilePreview/ReportCard: show fileSize (was undefined before) Docs: - Add README.md (overview, quick start, structure) - Add CHANGELOG.md (full change log + pptx removal rationale) - Include EVALUATION_REPORT.md and blog-vibe-coding.md Tests: - All 73 backend tests pass - All 43 frontend tests pass - Updated test fixtures for new API contract
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
from playwright.sync_api import sync_playwright
|
||||
|
||||
url = "https://www.1415243231.top/publish_dishboard"
|
||||
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(headless=True)
|
||||
page = browser.new_page(viewport={"width": 1280, "height": 720})
|
||||
|
||||
api_calls = []
|
||||
def on_response(r):
|
||||
if '/api/' in r.url:
|
||||
api_calls.append({'status': r.status, 'url': r.url})
|
||||
|
||||
page.on('response', on_response)
|
||||
page.goto(url, timeout=20000, wait_until='networkidle')
|
||||
page.wait_for_timeout(5000)
|
||||
|
||||
print("API calls made by frontend:")
|
||||
for r in api_calls:
|
||||
print(f" {r['status']} {r['url']}")
|
||||
|
||||
if not api_calls:
|
||||
print(" (no API calls made)")
|
||||
print("\nBody text:", page.inner_text('body')[:200])
|
||||
|
||||
browser.close()
|
||||
Reference in New Issue
Block a user