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:
@@ -30,6 +30,9 @@ Thumbs.db
|
||||
*.token
|
||||
credentials.*
|
||||
|
||||
# Env examples are safe to commit
|
||||
!.env.example
|
||||
|
||||
# Database
|
||||
*.sqlite3
|
||||
*.db
|
||||
|
||||
@@ -78,3 +78,28 @@ python cli/demo_sentiment_detail.py --ts_code 600519.SH --date 20260603
|
||||
| NLP | Qwen (DashScope / Ollama) | .env 配置 |
|
||||
| Agent | 自研编排器 | finance/agents/ |
|
||||
| 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"
|
||||
```
|
||||
|
||||
@@ -13,7 +13,7 @@ import logging
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
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):
|
||||
"""
|
||||
|
||||
@@ -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
|
||||
@@ -18,7 +18,7 @@ MARIADB_CONFIG = {
|
||||
"host": os.getenv("MAC_DB_HOST", "127.0.0.1"),
|
||||
"port": int(os.getenv("MAC_DB_PORT", "13306")),
|
||||
"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"),
|
||||
"charset": "utf8mb4",
|
||||
"pool_size": 5,
|
||||
|
||||
Reference in New Issue
Block a user