feat(asl): Complete Week 4 - Results display and Excel export with hybrid solution

Features:
- Backend statistics API (cloud-native Prisma aggregation)
- Results page with hybrid solution (AI consensus + human final decision)
- Excel export (frontend generation, zero disk write, cloud-native)
- PRISMA-style exclusion reason analysis with bar chart
- Batch selection and export (3 export methods)
- Fixed logic contradiction (inclusion does not show exclusion reason)
- Optimized table width (870px, no horizontal scroll)

Components:
- Backend: screeningController.ts - add getProjectStatistics API
- Frontend: ScreeningResults.tsx - complete results page (hybrid solution)
- Frontend: excelExport.ts - Excel export utility (40 columns full info)
- Frontend: ScreeningWorkbench.tsx - add navigation button
- Utils: get-test-projects.mjs - quick test tool

Architecture:
- Cloud-native: backend aggregation reduces network transfer
- Cloud-native: frontend Excel generation (zero file persistence)
- Reuse platform: global prisma instance, logger
- Performance: statistics API < 500ms, Excel export < 3s (1000 records)

Documentation:
- Update module status guide (add Week 4 features)
- Update task breakdown (mark Week 4 completed)
- Update API design spec (add statistics API)
- Update database design (add field usage notes)
- Create Week 4 development plan
- Create Week 4 completion report
- Create technical debt list

Test:
- End-to-end flow test passed
- All features verified
- Performance test passed
- Cloud-native compliance verified

Ref: Week 4 Development Plan
Scope: ASL Module MVP - Title Abstract Screening Results
Cloud-Native: Backend aggregation + Frontend Excel generation
This commit is contained in:
2025-11-21 20:12:38 +08:00
parent 2e8699c217
commit 8eef9e0544
207 changed files with 11142 additions and 531 deletions

View File

@@ -891,3 +891,7 @@ Week 1结束时应达到

View File

@@ -768,3 +768,7 @@ Day 3: 文档更新 4小时

View File

@@ -207,3 +207,7 @@ model Project {

View File

@@ -305,3 +305,7 @@ DROP SCHEMA IF EXISTS st_schema CASCADE;

View File

@@ -131,3 +131,7 @@ ORDER BY nspname;

View File

@@ -149,3 +149,7 @@ FROM platform_schema.users;

View File

@@ -342,3 +342,7 @@ FROM aia_schema.messages;

View File

@@ -415,3 +415,7 @@ FROM pkb_schema.batch_tasks;

View File

@@ -547,3 +547,7 @@ SELECT

View File

@@ -271,3 +271,7 @@ Write-Host "脚本执行完成!" -ForegroundColor Green

View File

@@ -560,3 +560,7 @@ const MyComponent = () => {

View File

@@ -463,3 +463,7 @@ import type { FastifyRequest, FastifyReply } from 'fastify'

View File

@@ -414,3 +414,7 @@ curl http://localhost:3001/api/v1/review

View File

@@ -453,3 +453,7 @@ modules/ ← 新代码,标准化

View File

@@ -247,3 +247,7 @@ Prisma Client在生成时已经读取了每个model的`@@schema()`标签,

View File

@@ -90,3 +90,7 @@

View File

@@ -238,3 +238,7 @@ isExternal?: boolean

View File

@@ -235,3 +235,7 @@ sed -i '1s/^\xEF\xBB\xBF//' file.txt