219 Commits
403 changed files with 317621 additions and 3756 deletions

No files matched your search

+3
View File
@@ -8,6 +8,9 @@ MYSQL_USER=jiaowu
MYSQL_PASSWORD=
MYSQL_ROOT_PASSWORD=
CLICKHOUSE_USER=jiaowu_analytics
CLICKHOUSE_PASSWORD=
RABBITMQ_USER=jiaowu
RABBITMQ_PASSWORD=
BACKGROUND_JOB_AUTOMATIC_SCHEDULE_CONCURRENCY=1
+30 -4
View File
@@ -2,6 +2,13 @@
ASPNETCORE_ENVIRONMENT=Production
ASPNETCORE_URLS=http://0.0.0.0:8080
# 反向代理必须在转发请求时设置 X-Forwarded-For 和 X-Forwarded-Proto。
# 仅填写实际直接连接 API 的代理 IP;多个代理依次使用 __0、__1……。
# 使用 Docker 时通常是宿主机/代理容器在 Docker 网络中的 IP,而非访客 IP。
# 默认仅信任 127.0.0.1 和 ::1。
# ReverseProxy__TrustedProxies__0=127.0.0.1
# ReverseProxy__TrustedProxies__1=::1
Database__Provider=MySql
Database__ApplyMigrationsOnStartup=false
Database__CommandTimeoutSeconds=30
@@ -18,6 +25,7 @@ BackgroundJobs__AutomaticScheduleConcurrency=1
BackgroundJobs__SchedulePublishConcurrency=1
BackgroundJobs__MakeupExamAutoConcurrency=1
BackgroundJobs__ExamArrangementConcurrency=1
BackgroundJobs__CourseGradeStatisticsRefreshConcurrency=1
# RabbitMq__HostName=rabbitmq.example.edu.cn
# RabbitMq__Port=5671
# RabbitMq__UserName=jiaowu
@@ -36,15 +44,15 @@ Cache__AnalyticsExpirationMinutes=3
Cache__AnalyticsLocalExpirationSeconds=30
Cache__MaximumPayloadKilobytes=2048
# OpenTelemetry 默认收集 HTTP、运行时和数据库指标;配置 OTLP 地址后才会外发。
# 应用日志建立接口与慢 SQL 基线;日志系统可按 DurationMs、RequestId、QueryName 聚合。
Observability__Enabled=true
Observability__ServiceName=jiaowu-api
Observability__LogAllApiRequests=true
Observability__SlowRequestThresholdMilliseconds=1000
Observability__SlowQueryThresholdMilliseconds=500
# 默认不记录完整 SQL,避免日志或追踪系统接触业务数据。
Observability__IncludeSqlText=false
Observability__MaximumSqlTextLength=2000
# OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.example.edu.cn:4317
# OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20REPLACE_WITH_TOKEN
# 系统内“运维与审计 → 系统性能”从 Prometheus 只读查询汇总指标。
PerformanceReporting__Enabled=false
@@ -54,6 +62,18 @@ PerformanceReporting__Enabled=false
PerformanceReporting__CacheSeconds=30
PerformanceReporting__TimeoutSeconds=10
# ClickHouse 仅作为异步分析读模型,不参与教务事务写入。启用前请为应用创建
# 仅能操作该分析库的独立账号,并通过 TLS 或受信任的内网访问。
ClickHouseAnalytics__Enabled=false
# ClickHouseAnalytics__Endpoint=https://clickhouse.example.edu.cn:8443
# ClickHouseAnalytics__Database=jiaowu_analytics
# ClickHouseAnalytics__UserName=jiaowu_analytics
# ClickHouseAnalytics__Password=REPLACE_WITH_A_STRONG_PASSWORD
ClickHouseAnalytics__CreateSchemaOnStartup=true
ClickHouseAnalytics__SyncIntervalSeconds=60
ClickHouseAnalytics__SourceLookbackDays=90
ClickHouseAnalytics__BatchSize=1000
# 运维控制台备份目录必须位于持久化、仅服务账号可写的位置。
Operations__BackupDirectory=/var/lib/jiaowu/backups
Operations__BackupWarningHours=24
@@ -64,6 +84,12 @@ Operations__MySqlClientPath=mysql
# Operations__MySqlAdditionalArguments__0=--ssl-mode=VERIFY_IDENTITY
# Operations__MySqlAdditionalArguments__1=--ssl-ca=/etc/jiaowu/mysql-ca.pem
# 签名插件包存储目录必须持久化,并仅允许服务账号写入。发布者公钥使用 RSA PEM。
Plugins__StoragePath=/var/lib/jiaowu/plugins
Plugins__MaximumPackageMegabytes=20
# Plugins__TrustedPublishers__0__Id=school-it
# Plugins__TrustedPublishers__0__PublicKeyPath=/etc/jiaowu/plugin-publishers/school-it-public.pem
Jwt__Issuer=Jiaowu.Api
Jwt__Audience=Jiaowu.Web
Jwt__Key=REPLACE_WITH_AT_LEAST_32_RANDOM_BYTES
@@ -94,8 +120,8 @@ Cors__Origins__1=capacitor://localhost
Cors__Origins__2=https://localhost
Cors__Origins__3=http://localhost
# 学校与平台名称统一在 src/Jiaowu.Api/appsettings.json 的 Branding 节配置。
# 二维码使用的公网根地址;反向代理部署时必须填写最终 HTTPS 地址。
OfficialDocuments__InstitutionName=明序大学
OfficialDocuments__IssuingOffice=教务处
OfficialDocuments__DocumentNumberPrefix=MXU
OfficialDocuments__PublicBaseUrl=https://jiaowu.example.edu.cn
+12 -4
View File
@@ -28,10 +28,13 @@ jobs:
- name: Check out repository
uses: https://github.com/actions/checkout@v4
- name: Initialize CaptchaKit submodule
run: git submodule update --init --recursive packages/CaptchaKit
- name: Set up .NET
uses: https://github.com/actions/setup-dotnet@v4
with:
dotnet-version: "10.0.302"
dotnet-version: "10.0.400"
- name: Set up Node.js
uses: https://github.com/actions/setup-node@v4
@@ -46,6 +49,11 @@ jobs:
npm ci
npm run build
- name: Install Chinese PDF font for backend tests
run: |
sudo apt-get update
sudo apt-get install --yes fonts-noto-cjk
- name: Run backend tests
run: dotnet test Jiaowu.slnx --configuration Release
@@ -73,7 +81,7 @@ jobs:
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "profile=$profile" >> "$GITHUB_OUTPUT"
- name: Build self-contained platform packages
- name: Build framework-dependent platform packages
shell: bash
run: |
bash ./scripts/publish-platform-packages.sh \
@@ -150,12 +158,12 @@ jobs:
files: |
artifacts/packages/*
body: |
已发布大学教务管理系统 ${{ gitea.ref_name }}:
已发布校园综合服务平台 ${{ gitea.ref_name }}:
- Windows x64:`.zip`
- Linux x64 / ARM64:`.tar.gz`
- `SHA256SUMS`:发布包校验值
- 自包含程序包无需预装 .NET 或 ASP.NET Core Runtime
- 二进制程序包不包含 .NET 或 ASP.NET Core Runtime;请先安装匹配版本的 ASP.NET Core Runtime
Windows ARM64 与 macOS Intel / Apple Silicon 包可通过手动运行工作流并启用扩展平台生成。
Loaded 3 of 403 files, more files were not shown because too many files have changed in this diff. Show more