security: 安全规范 + 敏感数据脱敏

- CLAUDE.md 新增安全规范章节(禁止提交 / 必须提供 .env.example)
- finance/config/settings.py 硬编码密码移除
- djapi/api/video/audioRead.py API Key 替换为占位符
- 新增 finance/.env.example 示例配置
- .gitignore 解除 .env.example 排除

Co-Authored-By: Simon <simon@doorcome.cn>
This commit is contained in:
2026-06-17 21:20:07 +08:00
co-authored by Simon
parent bb1a9c4470
commit 22ce3a6aea
5 changed files with 494 additions and 439 deletions
+3
View File
@@ -30,6 +30,9 @@ Thumbs.db
*.token *.token
credentials.* credentials.*
# Env examples are safe to commit
!.env.example
# Database # Database
*.sqlite3 *.sqlite3
*.db *.db
+25
View File
@@ -78,3 +78,28 @@ python cli/demo_sentiment_detail.py --ts_code 600519.SH --date 20260603
| NLP | Qwen (DashScope / Ollama) | .env 配置 | | NLP | Qwen (DashScope / Ollama) | .env 配置 |
| Agent | 自研编排器 | finance/agents/ | | Agent | 自研编排器 | finance/agents/ |
| API | Django 5.2 + uWSGI | djapi/ | | API | Django 5.2 + uWSGI | djapi/ |
## 安全规范
### 禁止提交
- `.env`(含真实 key
- API Key`sk-*``TUSHARE_TOKEN` 等)
- Cookie / Session
- Token / 密钥
- 个人隐私数据(手机号、身份证、密码)
### 必须提供
- `.env.example` — 仅含占位符的示例配置,如:
```
TUSHARE_TOKEN=your_token_here
QWEN_API_KEY=sk-your-key-here
MAC_DB_PASSWORD=your_password_here
```
### 提交前检查
```bash
grep -r "sk-\|token\|_H(lU\|password" --include="*.py" --include="*.md" --include="*.yaml" | grep -v ".example\|your_token\|your_password"
```
+1 -1
View File
@@ -13,7 +13,7 @@ import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# 设置环境变量 # 设置环境变量
#os.environ["DASHSCOPE_API_KEY"] = "sk-d2d65b726068445b98b88fc3b675dbf1" # 替换为你的API Key # os.environ["DASHSCOPE_API_KEY"] = "sk-your-dashscope-key"
def convert_mp3_to_wav(mp3_path, output_wav_path): def convert_mp3_to_wav(mp3_path, output_wav_path):
""" """
+27
View File
@@ -0,0 +1,27 @@
# ── Qwen API 配置(DashScope) ─────────────────────────────
# API Key 获取:https://dashscope.console.aliyun.com/apiKey
QWEN_API_KEY=sk-your-key-here
QWEN_MODEL=qwen-turbo
# ── 本地 Qwen 部署(可选,优先级高于 API) ──────────────────
# QWEN_LOCAL_BASE_URL=http://localhost:11434/v1
# QWEN_LOCAL_MODEL=qwen2.5:7b
# ── Tushare 数据源 ─────────────────────────────────────────
# Token 获取:https://tushare.pro 注册后在 "个人主页→接口TOKEN" 复制
TUSHARE_TOKEN=your_token_here
# ── 数据库 ──────────────────────────────────────────────────
MAC_DB_HOST=127.0.0.1
MAC_DB_PORT=13306
MAC_DB_USER=myquant
MAC_DB_PASSWORD=your_password_here
MAC_DB_NAME=myquant
# ── 情绪分析范围 ────────────────────────────────────────────
SENTIMENT_SCOPE_TYPE=index
SENTIMENT_SCOPE_INDEXES=000300,000905
SENTIMENT_MAX_NEWS_PER_STOCK=30
# ── MCP 新闻服务(可选) ────────────────────────────────────
# NEWS_MCP_URL=http://192.168.1.160:3333/mcp
+1 -1
View File
@@ -18,7 +18,7 @@ MARIADB_CONFIG = {
"host": os.getenv("MAC_DB_HOST", "127.0.0.1"), "host": os.getenv("MAC_DB_HOST", "127.0.0.1"),
"port": int(os.getenv("MAC_DB_PORT", "13306")), "port": int(os.getenv("MAC_DB_PORT", "13306")),
"user": os.getenv("MAC_DB_USER", "myquant"), "user": os.getenv("MAC_DB_USER", "myquant"),
"password": os.getenv("MAC_DB_PASSWORD", "_H(lU1_fF*9baRTp"), "password": os.getenv("MAC_DB_PASSWORD", ""),
"database": os.getenv("MAC_DB_NAME", "myquant"), "database": os.getenv("MAC_DB_NAME", "myquant"),
"charset": "utf8mb4", "charset": "utf8mb4",
"pool_size": 5, "pool_size": 5,