test(aihr): align pilot completion metric
This commit is contained in:
+34
-4
@@ -535,9 +535,9 @@ public class AihrPracticeSeedService {
|
||||
ensureAssignmentTable();
|
||||
ensureCalibrationTable();
|
||||
int trainingCount = count("SELECT COUNT(*) FROM aihr_practice_session WHERE tenant_id = ? AND mode = 'mobile'", TENANT_ID);
|
||||
int pendingAssignments = count("SELECT COUNT(*) FROM aihr_practice_assignment WHERE tenant_id = ? AND status = '待训练'", TENANT_ID);
|
||||
int assignmentTotal = trainingCount + pendingAssignments;
|
||||
boolean completionReady = assignmentTotal > 0 && trainingCount * 100 >= assignmentTotal * 80;
|
||||
int completedPeople = countCompletedPilotPeople();
|
||||
int pilotPeople = countPilotPeople();
|
||||
boolean completionReady = pilotPeople > 0 && completedPeople * 100 >= pilotPeople * 80;
|
||||
int reviewed = count("SELECT COUNT(*) FROM aihr_practice_session WHERE tenant_id = ? AND mode = 'mobile' AND status = '已复盘'", TENANT_ID);
|
||||
CalibrationStats calibrationStats = calibrationStats();
|
||||
AihrSopSeedService.SopReviewStats sopStats = sopSeedService.sopReviewStats();
|
||||
@@ -554,7 +554,9 @@ public class AihrPracticeSeedService {
|
||||
StringBuilder csv = new StringBuilder();
|
||||
appendCsvRow(csv, "metric", "value");
|
||||
appendCsvRow(csv, "training_count", trainingCount);
|
||||
appendCsvRow(csv, "completion_rate", percent(trainingCount, assignmentTotal));
|
||||
appendCsvRow(csv, "completion_people_count", completedPeople);
|
||||
appendCsvRow(csv, "completion_people_total", pilotPeople);
|
||||
appendCsvRow(csv, "completion_rate", percent(completedPeople, pilotPeople));
|
||||
appendCsvRow(csv, "completion_rate_target", "80.0%");
|
||||
appendCsvRow(csv, "completion_rate_ready", completionReady);
|
||||
appendCsvRow(csv, "average_score", String.format(java.util.Locale.ROOT, "%.1f", averageScore == null ? 0 : averageScore));
|
||||
@@ -597,6 +599,34 @@ public class AihrPracticeSeedService {
|
||||
return csv.toString();
|
||||
}
|
||||
|
||||
private int countCompletedPilotPeople() {
|
||||
return count("""
|
||||
SELECT COUNT(*)
|
||||
FROM (
|
||||
SELECT DISTINCT ext_party_id
|
||||
FROM aihr_practice_session
|
||||
WHERE tenant_id = ? AND mode = 'mobile'
|
||||
) completed_people
|
||||
""", TENANT_ID);
|
||||
}
|
||||
|
||||
private int countPilotPeople() {
|
||||
return count("""
|
||||
SELECT COUNT(*)
|
||||
FROM (
|
||||
SELECT ext_party_id
|
||||
FROM aihr_practice_session
|
||||
WHERE tenant_id = ? AND mode = 'mobile'
|
||||
UNION
|
||||
SELECT ext_party_id
|
||||
FROM aihr_practice_assignment
|
||||
WHERE tenant_id = ?
|
||||
AND status = '待训练'
|
||||
AND (source <> 'daily' OR DATE(create_time) = CURRENT_DATE())
|
||||
) pilot_people
|
||||
""", TENANT_ID, TENANT_ID);
|
||||
}
|
||||
|
||||
public ReviewDetailResponse reviewDetail(Long id) {
|
||||
ensurePracticeTable();
|
||||
if (id == null) {
|
||||
|
||||
Reference in New Issue
Block a user