文件
csp/backend/CMakeLists.txt
cryptocommuniums-afk cfbe9a0363 feat: problems local stats, user status, admin panel enhancements, rating text
- 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>
2026-02-16 17:35:22 +08:00

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)