
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Master: 
重新创建数据库并恢复数据(同开发环境设置步骤)
直接访问
bash# 生产环境 docker exec -it -u postgres db psql -d tkt_oodi # Staging环境 docker exec -it -u postgres db_staging psql -d tkt_oodi_staging
备份信息
/var/toska/tkt_oodi/backups/postgres//home/tkt_oodi/backups/latest-pg.bak.bz2手动创建备份
bashdocker exec -u postgres db pg_dump tkt_oodi > `date +%Y-%m-%d`.bak
oodikone2-backend包含从WebOodi获取学生数据的更新脚本,分为学生列表更新器和学生信息更新器,生产和staging环境各有独立的更新器,分别位于/oodikone.cs.helsinki.fi/updater和/oodikone.cs.helsinki.fi/staging/updater目录,容器名称为production_updater和staging_updater(以下用CONTAINER_NAME指代)。
学生列表更新器
用于获取有效学生编号,在updater目录中通过_update_student_list.sh运行,在独立容器中后台执行,可通过graylog或debug.log查看进度。
环境变量:INCREMENT(控制从当前最大学生编号开始搜索的新编号数量,当前未设置)
保存学生编号到文本文件:
bashdocker-compose run -d CONTAINER_NAME node src/services/doo_api_database_updater/student_list_updater.js /updater_files/all_student_numbers.txt
学生信息更新器(数据库更新器)
用于更新数据库中的学生信息:
bash# 基本用法 docker-compose run -d CONTAINER_NAME npm run update_database # 可选参数:指定学生编号文件和起始行 docker-compose run -d CONTAINER_NAME npm run update_database file="<文件名>" index=<数字>
使用https://github.com/UniversityOfHelsinkiCS/oodikone2-cli%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%EF%BC%9A
为Anonyymioodi私有仓库创建部署密钥,保存为private.key放在cli目录中
本地开发使用***数据:选择2) Anon setup(可运行E2E测试)
E2E测试:
bash# 本地运行 npm run cypress:open # 在ToskaWatch中运行 npm run cypress:run
通过脚本单独计算教师排行榜统计数据:
bash# 更新学年50(1999-20)到70(2018-19)的教师排名 docker-compose run -d CONTAINER_NAME npm run update_top_teachers from=50 to=70 # 更新单个学年的教师排名(省略to参数) docker-compose run -d CONTAINER_NAME npm run update_top_teachers from=50
create_defa_report npm脚本可快速聚合DEFA学生数据并生成CSV格式报告,仅在Oodikone生产服务器上运行有效。
输入文件
输入文件需放置在/home/tkt_oodi/oodikone.cs.helsinki.fi/defa目录(或后端容器中挂载为/usr/src/app/defa的目录):
params.json:定义输入/输出文件路径及时间范围
json{ "out": { "report": "/usr/src/app/defa/defa-report.csv", "stats": "/usr/src/app/defa/defa-stats.csv" }, "in": { "course_ids": "/usr/src/app/defa/ids.txt", "included_courses": "/usr/src/app/defa/included.txt", "required_courses": "/usr/src/app/defa/required.txt", "timeframe": { "start": "2018-09-01T01:00:00.000Z", "end": "2019-06-30T01:00:00.000Z" } } }
ids.txt:DEFA课程的courseunitrealisation ID列表
126240934 126237007 126238082
included.txt:需包含的课程learningopportunity ID列表(AY课程可省略AY前缀以匹配两种形式)
TKT10002 TKT10003 MAT11001
required.txt:DEFA学生必须完成的课程ID列表(需同时在included.txt中)
运行命令
bash# 直接执行 docker exec <backend容器> npm run create_defa_report defa/<参数json文件> # 使用现成脚本 /home/tkt_oodi/oodikone.cs.helsinki.fi/defa/create_report.sh
输出文件
旧输出文件会被覆盖,除非已重命名或移动。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务