Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# 致每一位潜在开源贡献者
## 很高兴like-minded的同学加入,愿开源精神在SCUT发扬。

### 上传资料注意先检索是否有此学科再考虑是否创建文件夹,如果有,一定比较现有资料和你所拥有资料是否重复,我们CSer不要把资料变成包打听资料那么混乱哦!

### 上传资料注意先检索是否有此学科再考虑是否创建文件夹,如果有,一定比较现有资料和你所拥有资料是否重复,我们CSer不要把资料变成包打听资料那么混乱哦!(Update:重复也没有关系,甚至是你自己和ai关于这个学科的对话markdown也没有关系,只需要在该学科新建文件夹:chore,这些材料都会每年度进行向量、语法构建入corpus,用于RAG智能复习助手的索引材料)
## 📁 参与开源方法一,不clone到本地,云端进行操作,适合微量资料上传的同学:

#### 场景一:在仓库根目录(主页)添加文件
Expand Down
59 changes: 40 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,30 @@
> **覆盖专业**:计算机类、计算机科学与技术、网络工程、信息安全等。

>**关键词**:SCUT, 华南理工大学, 计院, 历年卷, 期末复习, 实验报告, 课设, 华为智能基座。

<img align="right" src="https://visitor-badge.laobi.icu/badge?page_id=/SCUTCSWeaver/SCUT_CS">

[![GitHub license](https://badgen.net/github/license/Naereen/Strapdown.js)](https://github.com/Naereen/StrapDown.js/blob/master/LICENSE)
![index](resources_for_repo/index.png)

## 项目概览
欢迎来到华南理工大学计算机科学与工程学院学习资料汇总仓库!这里是专属于 SCUTCSer 的全新’‘鲤工包打听’‘,旨在为同学们提供丰富、实用的学习资料 。**本仓库亦作为华南理工华为智能基座内部开源资料及2026-2027年度试维护项目(即第三期仓库)。欢迎加入SCUT华为智能基座的“特工组”,享受全部免费的资料!**
欢迎来到华南理工大学计算机科学与工程学院学习方仓!这里是专属于 SCUTCSer ’‘鲤工包打听’‘,旨在为同学们提供丰富、实用的学习资料 。**本仓库亦作为华南理工华为智能基座内部开源资料及2026-2027年度试维护项目(即第三期仓库)。欢迎加入SCUT华为智能基座的“特工组”,享受全部免费的资料!**
## 项目目的
#### 本人遍览Github所有相关项目,发现基本存在以下痛点:
- 更新时间古早,不具有时效性
- 并非计院仓库,不具有针对性
- 备考资料收费,不具有开源性

## 📚 课程资源概览 (务必查看使用攻略)
## 课程资源概览 (务必查看仓库使用攻略)

> **搜索指南**:本仓库已覆盖华南理工大学计算机学院核心课程及公共课,支持通过 `Ctrl+F` 快速检索学科关键词。

> **💡 搜索指南**:本仓库已覆盖华南理工大学计算机学院核心课程及公共课,支持通过 `Ctrl+F` 快速检索学科关键词。
> **项目阶段**:第三期试维护阶段(目标规模 15G),资源持续扩充中。
> **项目阶段**:第三期维护阶段(仓库规模约20G+),资源持续扩充中。

<details>
<summary><b>🚀 点击展开:查看已覆盖的 50+ 门学科列表 (含历年卷/笔记/实验)</b></summary>
<summary><b> 点击展开:查看已覆盖的 50+ 门学科列表 (含历年卷/笔记/实验)</b></summary>

### 🖥️ 专业核心课 (Core CS Courses)
### 专业核心课 (Core CS Courses)
> *涵盖计院本科阶段重难点,包含大量实验报告及代码实现*

- `计算机网络(全英 & 普通)` `数据结构` `数据结构课程设计` `计算机组成原理`
Expand All @@ -35,23 +37,23 @@

---

### 💻 编程与开发 (Programming & Tech)
### 编程与开发 (Programming & Tech)
> *从零基础入门到高阶智能算法*

- `C++(上及下)` `Java` `Python 程序设计` `Android 开发` `IT 前沿技术`
- `人工智能入门:千方百智` `人工智能导论` `智能算法` `算法设计与分析`

---

### 📐 数学与物理 (Math & Physics)
### 数学与物理 (Math & Physics)
> *SCUTCSer 挂科重灾区,提供详尽的刷题记录与实验合辑*

- `工科数学分析 I & II` `线性代数` `概率论` `离散数学` `信息安全数学基础`
- `大物上 / 下` `大物上 / 下实验合辑` `数学建模` `电工学` `电工实验`

---

### 🚩 公共基础与素质课 (General Education)
### 公共基础与素质课 (General Education)
> *打破信息差,助力绩点提升*

- **思政类**:`习概` `国史` `思想道德与法治` `毛概` `近代史` `马原`
Expand All @@ -60,12 +62,13 @@

---

### 🔄 持续更新中
### 持续更新中
> 更多学科资料正在由诸多学长逐步录入。如果你有珍贵的资料愿意分享,欢迎提交 PR 或联系组织成员加入“特工组”!

</details>
<br/>
<details>
<summary><b>📂 点击展开:仓库使用攻略(⚠ ⚠ ⚠ 请务必查看此条)</b></summary>
<summary><b> 点击展开:仓库使用攻略(⚠ ⚠ ⚠ 请务必查看此条)</b></summary>

## 使用攻略
#### 1.仓库内容(主干位于学科资料文件夹下)
Expand All @@ -79,7 +82,7 @@
##### III.学科作业(平时/实验报告/课程设计)/考试高度总结笔记(加密)
**加密原因:**
- 1:避免平时作业出现大量重复情况,以至于**院方**可能对此采取措施,节外生枝
- 2:高度总结笔记一般每科平均2-4面,可以节省大量的知识点复习时间,高效复习,但存在破坏复习平衡的可能,可以去看KK学长的语雀笔记代替哦
- 2:高度总结笔记一般每科平均2-4面,可以节省大量的知识点复习时间,高效复习,但存在破坏复习平衡的可能,为避免不必要的麻烦而加密,大家可以去看KK学长的语雀笔记代替哦
- 3:作业有开源人的信息,此部分未毕业前加密。
- 4:介于git-lfs限额问题,加密资料现开放通过**付费**获取⬇️,金额将全部用于git-lfs期末月的限额拓展...
- 1科 - 1USD - 7
Expand Down Expand Up @@ -126,8 +129,9 @@ SCUT 老学长已完成 PLAN-3:在单课程问答、考试复习、错题讲
- 整体download下载具有不实时性,且会占用大量的git-lfs限额。在本仓库资源并未稳定的情况下,至少2027年前不建议整体下载本地。

</details>
<br/>
<details>
<summary><b>📅 点击展开:项目开发计划书</b></summary>
<summary><b> 点击展开:项目开发计划书</b></summary>

## 项目开发阶段概览
##### 一期仓库初期规模5.73G,最终在12.9G时发觉现有方式难以满足需求,进行迭代。此期内容为1-4学期,此阶段加密采用统一字符,并未开源上机考试,并未涵盖高度复习笔记
Expand All @@ -150,22 +154,39 @@ SCUT 老学长已完成 PLAN-3:在单课程问答、考试复习、错题讲
<a href="https://github.com/AlexBybye/How_Git-">
<img align="center" src="https://github-readme-stats-fast.vercel.app/api/pin/?username=alexbybye&repo=How_Git-&theme=slateorange" />
</a>
<br/>
<br/>

**注意:校内查重以及维普查重一般公共课较多,本仓库虽然可以节省你的时间,但是也请为自己的行为负责,不如站在前人的肩膀上**

# 请 诚 信 学 习 !

## 支持我们
如果觉得仓库内容有帮助,可通过 *buy us a coffee*,**如果有相关自愿捐赠,将全额用于此仓库git-lfs限额期末月拓展**,你的支持会让我们更有动力完善资料~
## 支持我们⬇️
如果觉得仓库内容有帮助,可通过 **buy us a coffee**, 如果有相关自愿捐赠,**将全额用于此仓库git-lfs限额期末月拓展、RAG后续迭代开发以及服务器筹备搭建,你的支持会让我们更有动力完善资料~**
<details>
<summary><b> 点击展开:支持方式</b></summary>


**By wechat(通过与相关负责人联系,一般为现任主席):**
- 注意:此方式需要人工联系我们开发组;
<a href="https://github.com/SCUTCSWeaver/SCUT_CS/blob/master/resources_for_repo/sponsorship.jpg">
<img src= "https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png">
<img src= "https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="160px" align="right">
</a>
<br/>

- 注意:此方式需要人工联系我们开发组;

<tr>


**如果有Visa等,你也可以通过github渠道来自愿捐赠,这可以额外让你获取sponsor徽章!**
<a href="https://github.com/sponsors/AlexBybye">
<img src= "https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="160px" align="right">
</a>
<br/>

- 注意:此方式需要查看你的github关联邮箱!接收我们自动化邮件并按指引回复;
[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-AlexBybye-ea4aaa?style=for-the-badge&logo=github-sponsors&logoColor=white)](https://github.com/sponsors/AlexBybye)

若使用中遇问题或有建议,欢迎随时反馈,期待你我共同完善这份学习资料宝库!
</details>
<br/>

若使用中遇问题或有建议,欢迎随时反馈,期待你我共同完善这份学习资料宝库!♥️
20 changes: 16 additions & 4 deletions apps/scut-senior/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ PLAN-1 建立了课程学习助手的基础能力和边界:
- 面向首批 10 门课程组织经过校验的课程资料与历年题,回答可以关联具体资料、页码、幻灯片或题号;
- 提供 `knowledge_qa`、`exam_review`、`problem_tutor`、`mistake_review` 和 `temporary_material_reading` 五类固定 Workflow,覆盖知识答疑、备考、题目讲解、错题复盘和临时材料精读;
- 所有问答绑定 GitHub 登录身份,并保存可追溯的会话、运行记录、真实执行 Trace、反馈和错题历史;
- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道,模型、供应商和调用路由均由服务端受控
- 平台每日免费额度模型与用户自带 Key(BYOK)分为独立通道;平台目录由服务端维护,BYOK 可保存用户自己的 OpenAI-compatible 供应商连接
- 模型输出必须经过课程范围、来源、引用和安全回答块校验,资料不足时明确标记证据边界,不将通用知识伪装为课程资料结论。

### PLAN-2:统一输入、混合检索与受限 Agent Runtime
Expand Down Expand Up @@ -199,6 +199,18 @@ scripts\debug-windows.cmd
scripts\start-all-windows.cmd
```

切换分支后重启全部服务(自动结束本项目占用的 8000 和 5173 端口,再重新启动):

```cmd
scripts\restart-all-windows.cmd
```

在 PowerShell 中运行时需加 `./`:

```powershell
.\scripts\restart-all-windows.cmd
```

需要同时启用 Tailscale Funnel 时,请从管理员终端运行:

```cmd
Expand Down Expand Up @@ -231,9 +243,9 @@ make dev-api

## 真实身份与模型通道

真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型和 BYOK 凭据由服务端固定目录管理;用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。
真实 GitHub OAuth 使用 HTTPS 回调地址、服务端 SQLite 和安全 Cookie。平台模型由服务端目录管理;BYOK 由登录用户填写连接 ID、显示名称、HTTPS Base URL、模型 ID 和 API Key,目前支持 OpenAI Chat Completions 协议。用户 Key 使用服务端 AES-256-GCM 主密钥加密,前端只接收脱敏连接状态。凭据、OAuth Secret、数据库、附件和日志不进入 Git、前端构建产物或 Docker 镜像。

本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。模型供应商适配遵循 `ModelGateway` 与 `UserKeyModelGateway` 接口,新增 Terra 等供应商时只需接入固定目录和对应适配器,不改变课程、引用、权限和流式协议边界
本地测试仍推荐使用 Mock 配置。真实平台模型调用必须启用 GitHub OAuth 和正式 SQLite 身份存储,并通过环境变量提供服务端 Secret。BYOK Base URL 只接受 HTTPS,拒绝账号密码、查询参数、localhost 和明显私网地址,且调用不跟随重定向;当前尚未实现模型自动发现,也不能把这些基础校验描述为完整的 DNS rebinding/SSRF 防护


## 在线部署:本地运行 + HTTPS 隧道(当前启用路径)
Expand Down Expand Up @@ -302,7 +314,7 @@ BYOK 真实调用另需稳定的 32 字节 AES 主密钥(见上文“本地验

- [ ] `https://<隧道域名>/` 能打开 SPA;
- [ ] GitHub 登录回调完成(`/api/v1/auth/github/callback` 302 到首页);
- [ ] 登录后 `/api/v1/models` 显示平台三模型或已保存 Key 的 BYOK;
- [ ] 登录后 `/api/v1/models` 显示平台模型,`/api/v1/model-credentials` 显示当前账号已保存的脱敏 BYOK 连接
- [ ] 一次真实模型 Workflow run 返回 `run_status=completed`;
- [ ] `/api/v1/feedback` 提交与列表可用。

Expand Down
63 changes: 63 additions & 0 deletions apps/scut-senior/api/migrations/0018_custom_byok_connections.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
-- Replace the fixed four-provider key ring with user-defined OpenAI-compatible
-- connections. Existing keys receive the profile formerly supplied by the
-- fixed catalog, so this migration does not discard encrypted credentials.

ALTER TABLE model_credentials RENAME TO model_credentials_fixed;

CREATE TABLE model_credentials (
user_id TEXT NOT NULL,
provider_id TEXT NOT NULL CHECK (
length(provider_id) BETWEEN 1 AND 64
AND provider_id NOT GLOB '*[^a-z0-9-]*'
AND substr(provider_id, 1, 1) BETWEEN 'a' AND 'z'
AND provider_id NOT GLOB '*--*'
AND substr(provider_id, -1, 1) <> '-'
),
display_name TEXT NOT NULL CHECK (length(display_name) BETWEEN 1 AND 100),
base_url TEXT NOT NULL CHECK (length(base_url) BETWEEN 1 AND 2048),
model_id TEXT NOT NULL CHECK (length(model_id) BETWEEN 1 AND 100),
protocol TEXT NOT NULL CHECK (protocol = 'openai_chat_completions'),
ciphertext BLOB NOT NULL CHECK (length(ciphertext) > 16),
nonce BLOB NOT NULL CHECK (length(nonce) = 12),
algorithm TEXT NOT NULL CHECK (algorithm = 'AES-256-GCM'),
key_version INTEGER NOT NULL CHECK (key_version > 0),
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
expires_at TEXT NOT NULL,
PRIMARY KEY (user_id, provider_id),
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE
);

INSERT INTO model_credentials (
user_id, provider_id, display_name, base_url, model_id, protocol,
ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at
)
SELECT
user_id,
provider_id,
CASE provider_id
WHEN 'openrouter' THEN 'OpenRouter'
WHEN 'deepseek' THEN 'DeepSeek'
WHEN 'siliconflow' THEN '硅基流动'
WHEN 'zhipu' THEN '智谱 AI'
END,
CASE provider_id
WHEN 'openrouter' THEN 'https://openrouter.ai/api/v1'
WHEN 'deepseek' THEN 'https://api.deepseek.com'
WHEN 'siliconflow' THEN 'https://api.siliconflow.cn/v1'
WHEN 'zhipu' THEN 'https://open.bigmodel.cn/api/paas/v4'
END,
CASE provider_id
WHEN 'openrouter' THEN 'deepseek/deepseek-v4-flash-0731'
WHEN 'deepseek' THEN 'deepseek-v4-flash'
WHEN 'siliconflow' THEN 'Pro/zai-org/GLM-4.7'
WHEN 'zhipu' THEN 'glm-5.2'
END,
'openai_chat_completions',
ciphertext, nonce, algorithm, key_version, created_at, updated_at, expires_at
FROM model_credentials_fixed;

DROP TABLE model_credentials_fixed;

CREATE INDEX IF NOT EXISTS idx_model_credentials_expiry
ON model_credentials (expires_at);
7 changes: 7 additions & 0 deletions apps/scut-senior/api/migrations/0019_byok_model_catalog.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- DSH-style custom connections keep one encrypted key with a selectable model
-- catalog. Existing connections remain valid through the loader fallback to
-- their legacy model_id.

ALTER TABLE model_credentials
ADD COLUMN models_json TEXT NOT NULL DEFAULT '[]'
CHECK (json_valid(models_json));
Loading
Loading