- Problems page: replace Luogu pass rate with local submission stats
(local_submit_count, local_ac_count)
- Problems page: add user AC/fail status column (user_ac, user_fail_count)
- Admin users: add total_submissions and total_ac columns
- Admin users: add detail panel with submissions/rating/redeem tabs
- Admin: new endpoint GET /api/v1/admin/users/{id}/rating-history
- Rating history: note field includes problem title via JOIN
- Me page: translate task codes to friendly labels with icons
- Me page: problem links in rating history are clickable
- Wrong book service, learning note scoring, note image controller
- Backend SQL uses batch queries for performance
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
124 行
3.0 KiB
CMake
124 行
3.0 KiB
CMake
cmake_minimum_required(VERSION 3.28)
|
|
project(csp_backend LANGUAGES CXX)
|
|
|
|
# Drogon 1.8.x on Ubuntu still uses legacy CMake commands.
|
|
cmake_policy(SET CMP0153 OLD)
|
|
|
|
find_package(Drogon CONFIG REQUIRED)
|
|
find_package(Catch2 3 REQUIRED)
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
add_library(csp_core
|
|
src/version.cc
|
|
src/db/sqlite_db.cc
|
|
src/app_state.cc
|
|
src/services/crypto.cc
|
|
src/services/auth_service.cc
|
|
src/services/problem_service.cc
|
|
src/services/user_service.cc
|
|
src/services/wrong_book_service.cc
|
|
src/services/kb_service.cc
|
|
src/services/contest_service.cc
|
|
src/services/daily_task_service.cc
|
|
src/services/submission_service.cc
|
|
src/services/solution_access_service.cc
|
|
src/services/redeem_service.cc
|
|
src/services/problem_workspace_service.cc
|
|
src/services/problem_solution_runner.cc
|
|
src/services/kb_import_runner.cc
|
|
src/services/problem_gen_runner.cc
|
|
src/services/submission_feedback_service.cc
|
|
src/services/learning_note_scoring_service.cc
|
|
src/services/submission_feedback_runner.cc
|
|
src/services/import_service.cc
|
|
src/services/import_runner.cc
|
|
src/domain/enum_strings.cc
|
|
src/domain/json.cc
|
|
)
|
|
|
|
target_include_directories(csp_core PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
/usr/include/jsoncpp
|
|
)
|
|
|
|
target_link_libraries(csp_core PUBLIC
|
|
SQLite3_lib
|
|
OpenSSL::Crypto
|
|
)
|
|
|
|
add_library(csp_web
|
|
src/controllers/auth_controller.cc
|
|
src/controllers/problem_controller.cc
|
|
src/controllers/submission_controller.cc
|
|
src/controllers/me_controller.cc
|
|
src/controllers/note_image_controller.cc
|
|
src/controllers/contest_controller.cc
|
|
src/controllers/leaderboard_controller.cc
|
|
src/controllers/admin_controller.cc
|
|
src/controllers/kb_controller.cc
|
|
src/controllers/import_controller.cc
|
|
src/controllers/meta_controller.cc
|
|
src/controllers/problem_gen_controller.cc
|
|
src/health_controller.cc
|
|
)
|
|
|
|
target_include_directories(csp_web PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
)
|
|
|
|
target_link_libraries(csp_web PRIVATE
|
|
Drogon::Drogon
|
|
csp_core
|
|
)
|
|
|
|
add_executable(csp_server
|
|
src/main.cc
|
|
)
|
|
|
|
target_include_directories(csp_server PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
)
|
|
|
|
target_link_libraries(csp_server PRIVATE
|
|
Drogon::Drogon
|
|
csp_core
|
|
"$<LINK_LIBRARY:WHOLE_ARCHIVE,csp_web>"
|
|
)
|
|
|
|
enable_testing()
|
|
add_executable(csp_tests
|
|
tests/test_main.cc
|
|
tests/version_test.cc
|
|
tests/sqlite_db_test.cc
|
|
tests/auth_service_test.cc
|
|
tests/auth_http_test.cc
|
|
tests/domain_test.cc
|
|
tests/problem_service_test.cc
|
|
tests/kb_service_test.cc
|
|
tests/contest_service_test.cc
|
|
tests/daily_task_service_test.cc
|
|
tests/submission_service_test.cc
|
|
tests/me_http_test.cc
|
|
tests/problem_http_test.cc
|
|
tests/problem_workspace_service_test.cc
|
|
tests/problem_workspace_http_test.cc
|
|
tests/contest_http_test.cc
|
|
tests/submission_http_test.cc
|
|
tests/import_service_test.cc
|
|
tests/import_http_test.cc
|
|
)
|
|
|
|
target_include_directories(csp_tests PRIVATE
|
|
/usr/include/jsoncpp
|
|
)
|
|
|
|
target_link_libraries(csp_tests PRIVATE
|
|
Catch2::Catch2WithMain
|
|
Drogon::Drogon
|
|
csp_core
|
|
"$<LINK_LIBRARY:WHOLE_ARCHIVE,csp_web>"
|
|
)
|
|
|
|
include(CTest)
|
|
add_test(NAME csp_tests COMMAND csp_tests)
|