| Name | botrun-log JSON |
| Version |
0.3.0
JSON |
| download |
| home_page | https://github.com/bohachu/bigquery_log_jc |
| Summary | A Python package for botrun-application logging, using Google BigQuery and PostgreSQL. |
| upload_time | 2024-08-22 07:23:08 |
| maintainer | None |
| docs_url | None |
| author | JcXGTcW |
| requires_python | >=3.8 |
| license | None |
| keywords |
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# botrun-log
**botrun-log** 是一個用於將操作記錄儲存到 Google BigQuery 和 PostgreSQL 的 Python 套件,並提供 ETL 操作功能。此套件適用於記錄使用者行為,並能進行資料的分析和統計。
## 特色
- 支援 Google BigQuery 與 PostgreSQL 資料庫
- 針對機關和使用者的每日字元使用量進行 ETL 操作
- ~~支援加密操作細節,並使用 Google KMS 進行密鑰管理~~ 待開發
- 支援多種操作類型的記錄和字元統計
## 安裝
### 使用 pip 安裝
```bash
pip install botrun-log
```
### 安裝開發環境需求
如果你想進行套件的開發或測試,可以使用以下命令安裝額外的開發需求:
```bash
pip install -e .[dev]
```
## 環境變數設定與使用方式
botrun-log 支援從環境變數或直接通過參數設置config。環境變數會在初始化 Logger 時自動讀取。如果同時設置了環境變數和輸入參數,參數的優先級更高。
### 環境變數
對於 BigQuery:
- BOTRUN_LOG_CREDENTIALS_PATH: service account 憑證檔案的路徑
- BOTRUN_LOG_PROJECT_ID: Google Cloud 專案 ID
- BOTRUN_LOG_DATASET_NAME: BigQuery 資料集名稱
對於 PostgreSQL:
- BOTRUN_LOG_PG_DBNAME: PostgreSQL DB 名稱
- BOTRUN_LOG_PG_USER: PostgreSQL DB username
- BOTRUN_LOG_PG_PASSWORD: PostgreSQL DB password
- BOTRUN_LOG_PG_HOST: PostgreSQL DB主機 IP
- BOTRUN_LOG_PG_PORT: PostgreSQL DB主機 port
共通的環境變數:
- BOTRUN_LOG_DEPARTMENT: 部門名稱,用於建立資料表和進行資料分析
### 初始化 Logger
botrun-log 支援兩種資料庫:Google BigQuery 和 PostgreSQL。以下是兩種資料庫的初始化方式:
#### 使用 Google BigQuery
```python
from botrun_log import Logger
# 使用環境變數
logger_bq = Logger(db_type='bigquery', department='your_department')
# 或者直接提供參數
logger_bq = Logger(
db_type='bigquery',
department='your_department',
credentials_path='/path/to/your/credentials.json',
project_id='your_project_id',
dataset_name='your_dataset_name'
)
```
#### 使用 PostgreSQL
```python
from botrun_log import Logger
# 使用環境變數
logger_pg = Logger(db_type='postgresql', department='your_department')
# 或者直接提供參數
logger_pg = Logger(
db_type='postgresql',
department='your_department',
pg_config={
'dbname': 'botrun_db',
'user': 'botrun_user',
'password': 'botrun_password',
'host': 'localhost',
'port': '5432'
}
)
```
在這兩種初始化方式中,你可以選擇使用環境變數或直接提供參數。使用環境變數時,請確保你已經正確設置了相應的環境變數。直接提供參數時,你需要填寫所有必要的配置信息。
初始化完成後,你就可以使用 `logger` 對象來插入各種類型的日誌記錄了。
### 插入記錄
botrun-log 支援四種類型的記錄:文字、音訊、圖片和向量資料庫操作。以下是各種記錄的插入方式:
#### 文字記錄
```python
from botrun_log import TextLogEntry
from datetime import datetime
text_log = TextLogEntry(
timestamp=datetime.now().isoformat(),
domain_name='botrun.ai',
user_department='your_department',
user_name='user_1',
source_ip='127.0.0.1',
session_id='session_1',
action_type='交談',
developer='JcXGTcW',
action_details='使用者輸入的文字',
model='gpt-4o',
botrun='波程.botrun',
user_agent='user_agent',
resource_id='resource_1'
)
logger.insert_text_log(text_log)
```
#### 音訊記錄
```python
from botrun_log import AudioLogEntry
audio_log = AudioLogEntry(
timestamp=datetime.now().isoformat(),
domain_name='botrun.ai',
user_department='your_department',
user_name='user_2',
source_ip='127.0.0.1',
session_id='session_2',
action_type='上傳音檔',
developer='JcXGTcW',
action_details='音檔文件上傳',
model='whisper-1',
botrun='波程.botrun',
user_agent='user_agent',
resource_id='audio_1',
file_size_mb=20
)
logger.insert_audio_log(audio_log)
```
#### 圖片記錄
```python
from botrun_log import ImageLogEntry
image_log = ImageLogEntry(
timestamp=datetime.now().isoformat(),
domain_name='botrun.ai',
user_department='your_department',
user_name='user_3',
source_ip='127.0.0.1',
session_id='session_3',
action_type='上傳圖片',
developer='JcXGTcW',
action_details='圖片文件上傳',
model='dall-e-3',
botrun='波程.botrun',
user_agent='user_agent',
resource_id='image_1',
img_size_mb=1.5
)
logger.insert_image_log(image_log)
```
#### 向量資料庫操作記錄
```python
from botrun_log import VectorDBLogEntry
vector_log = VectorDBLogEntry(
timestamp=datetime.now().isoformat(),
domain_name='botrun.ai',
user_department='your_department',
user_name='user_4',
source_ip='127.0.0.1',
session_id='session_4',
action_type='向量操作',
developer='JcXGTcW',
action_details='向量資料庫操作',
model='text-embedding-ada-002',
botrun='波程.botrun',
user_agent='user_agent',
resource_id='1AE5_wQsEretANgmgIFAkSVY5JUepZ767',
page_num=10
)
logger.insert_vector_log(vector_log)
```
### 執行 ETL 操作
```python
from botrun_log import ETLManager
from datetime import date
etl_manager = ETLManager(db_manager)
etl_manager.write_etl_summary(department='your_department', date=date(2023, 8, 22))
```
### 讀取 ETL 結果
```python
results = etl_manager.read_etl_summary(
start_date=date(2023, 8, 1),
end_date=date(2023, 8, 31),
department='your_department'
)
for result in results:
print(result)
```
## 資料表欄位說明
### 文字記錄表 ({department}_logs)
- `timestamp`: 操作的時間戳 (TIMESTAMP)
- `domain_name`: 操作所屬的網域名稱 (STRING)
- `user_department`: 使用者所屬的部門或機關 (STRING)
- `user_name`: 使用者的名稱或帳號 (STRING)
- `source_ip`: 發出操作請求的 IP 地址 (STRING)
- `session_id`: 當前操作的工作階段 ID (STRING)
- `action_type`: 操作類型 (STRING)
- `developer`: 記錄這次操作的開發者名稱或寫入記錄的套件名稱 (STRING)
- `action_details`: 操作的具體內容 (STRING)
- `model`: 使用的模型名稱 (STRING)
- `botrun`: 使用的 botrun 版本 (STRING)
- `user_agent`: 使用者的客戶端資訊 (STRING)
- `resource_id`: 與此次操作相關的資源 ID (STRING)
- `ch_characters`: 中文字元數量 (INTEGER)
- `en_characters`: 英文字元數量 (INTEGER)
- `total_characters`: 總字元數量 (INTEGER)
- `create_timestamp`: 記錄創建時間 (TIMESTAMP)
### 音訊記錄表 ({department}_audio_logs)
包含與文字記錄表相同的欄位,另外增加:
- `file_size_mb`: 音訊檔案大小 (FLOAT)
### 圖片記錄表 ({department}_image_logs)
包含與文字記錄表相同的欄位,另外增加:
- `img_size_mb`: 圖片檔案大小 (FLOAT)
### 向量資料庫操作記錄表 ({department}_vector_logs)
包含與文字記錄表相同的欄位,另外增加:
- `page_num`: 操作的頁數 (INTEGER)
### ETL 摘要表 (daily_character_usage)
- `date`: 日期 (DATE)
- `department`: 部門或機關 (STRING)
- `user_name`: 使用者名稱 (STRING)
- `ch_characters`: 中文字元使用量 (INTEGER)
- `en_characters`: 英文字元使用量 (INTEGER)
## 欄位必填與選填說明
### 必填欄位
- `timestamp`: 操作的時間戳
- `domain_name`: 操作所屬的網域名稱
- `user_department`: 使用者所屬的部門或機關
- `user_name`: 使用者的名稱或帳號
- `source_ip`: 發出操作請求的 IP 地址
- `session_id`: 當前操作的工作階段 ID
- `action_type`: 操作類型
- `developer`: 記錄這次操作的開發者名稱或寫入記錄的套件名稱
- `model`: 使用的模型名稱
- `botrun`: 使用的 botrun 版本
### 選填欄位
- `action_details`: 操作的具體內容
- `user_agent`: 使用者的客戶端資訊
- `resource_id`: 與此次操作相關的資源 ID
對於特定類型的記錄,還有以下必填欄位:
- 音訊記錄:`file_size_mb`
- 圖片記錄:`img_size_mb`
- 向量資料庫操作記錄:`page_num`
## 測試
套件使用 `pytest` 進行單元測試。你可以在專案根目錄執行以下命令來跑測試:
```bash
pytest
```
## 貢獻
歡迎貢獻!如有問題或建議,請透過 [issues](https://github.com/bohachu/bigquery_log_jc/issues) 頁面與我們聯繫。
## 授權
此專案採用 [MIT License](https://opensource.org/licenses/MIT) 授權。
Raw data
{
"_id": null,
"home_page": "https://github.com/bohachu/bigquery_log_jc",
"name": "botrun-log",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "JcXGTcW",
"author_email": "jcxgtcw@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/bc/57/56a72eeec98749cebf2520d17fe8adac4a6508d1f5468d1a91565b6af043/botrun-log-0.3.0.tar.gz",
"platform": null,
"description": "# botrun-log\r\n\r\n**botrun-log** \u662f\u4e00\u500b\u7528\u65bc\u5c07\u64cd\u4f5c\u8a18\u9304\u5132\u5b58\u5230 Google BigQuery \u548c PostgreSQL \u7684 Python \u5957\u4ef6\uff0c\u4e26\u63d0\u4f9b ETL \u64cd\u4f5c\u529f\u80fd\u3002\u6b64\u5957\u4ef6\u9069\u7528\u65bc\u8a18\u9304\u4f7f\u7528\u8005\u884c\u70ba\uff0c\u4e26\u80fd\u9032\u884c\u8cc7\u6599\u7684\u5206\u6790\u548c\u7d71\u8a08\u3002\r\n\r\n## \u7279\u8272\r\n\r\n- \u652f\u63f4 Google BigQuery \u8207 PostgreSQL \u8cc7\u6599\u5eab\r\n- \u91dd\u5c0d\u6a5f\u95dc\u548c\u4f7f\u7528\u8005\u7684\u6bcf\u65e5\u5b57\u5143\u4f7f\u7528\u91cf\u9032\u884c ETL \u64cd\u4f5c\r\n- ~~\u652f\u63f4\u52a0\u5bc6\u64cd\u4f5c\u7d30\u7bc0\uff0c\u4e26\u4f7f\u7528 Google KMS \u9032\u884c\u5bc6\u9470\u7ba1\u7406~~ \u5f85\u958b\u767c\r\n- \u652f\u63f4\u591a\u7a2e\u64cd\u4f5c\u985e\u578b\u7684\u8a18\u9304\u548c\u5b57\u5143\u7d71\u8a08\r\n\r\n\r\n## \u5b89\u88dd\r\n\r\n### \u4f7f\u7528 pip \u5b89\u88dd\r\n\r\n```bash\r\npip install botrun-log\r\n```\r\n\r\n### \u5b89\u88dd\u958b\u767c\u74b0\u5883\u9700\u6c42\r\n\r\n\u5982\u679c\u4f60\u60f3\u9032\u884c\u5957\u4ef6\u7684\u958b\u767c\u6216\u6e2c\u8a66\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88dd\u984d\u5916\u7684\u958b\u767c\u9700\u6c42\uff1a\r\n\r\n```bash\r\npip install -e .[dev]\r\n```\r\n\r\n## \u74b0\u5883\u8b8a\u6578\u8a2d\u5b9a\u8207\u4f7f\u7528\u65b9\u5f0f\r\n\r\nbotrun-log \u652f\u63f4\u5f9e\u74b0\u5883\u8b8a\u6578\u6216\u76f4\u63a5\u901a\u904e\u53c3\u6578\u8a2d\u7f6econfig\u3002\u74b0\u5883\u8b8a\u6578\u6703\u5728\u521d\u59cb\u5316 Logger \u6642\u81ea\u52d5\u8b80\u53d6\u3002\u5982\u679c\u540c\u6642\u8a2d\u7f6e\u4e86\u74b0\u5883\u8b8a\u6578\u548c\u8f38\u5165\u53c3\u6578\uff0c\u53c3\u6578\u7684\u512a\u5148\u7d1a\u66f4\u9ad8\u3002\r\n\r\n### \u74b0\u5883\u8b8a\u6578\r\n\r\n\u5c0d\u65bc BigQuery\uff1a\r\n\r\n- BOTRUN_LOG_CREDENTIALS_PATH: service account \u6191\u8b49\u6a94\u6848\u7684\u8def\u5f91\r\n- BOTRUN_LOG_PROJECT_ID: Google Cloud \u5c08\u6848 ID\r\n- BOTRUN_LOG_DATASET_NAME: BigQuery \u8cc7\u6599\u96c6\u540d\u7a31\r\n\r\n\u5c0d\u65bc PostgreSQL\uff1a\r\n\r\n- BOTRUN_LOG_PG_DBNAME: PostgreSQL DB \u540d\u7a31\r\n- BOTRUN_LOG_PG_USER: PostgreSQL DB username\r\n- BOTRUN_LOG_PG_PASSWORD: PostgreSQL DB password\r\n- BOTRUN_LOG_PG_HOST: PostgreSQL DB\u4e3b\u6a5f IP\r\n- BOTRUN_LOG_PG_PORT: PostgreSQL DB\u4e3b\u6a5f port\r\n\r\n\u5171\u901a\u7684\u74b0\u5883\u8b8a\u6578\uff1a\r\n\r\n- BOTRUN_LOG_DEPARTMENT: \u90e8\u9580\u540d\u7a31\uff0c\u7528\u65bc\u5efa\u7acb\u8cc7\u6599\u8868\u548c\u9032\u884c\u8cc7\u6599\u5206\u6790\r\n\r\n### \u521d\u59cb\u5316 Logger\r\n\r\nbotrun-log \u652f\u63f4\u5169\u7a2e\u8cc7\u6599\u5eab\uff1aGoogle BigQuery \u548c PostgreSQL\u3002\u4ee5\u4e0b\u662f\u5169\u7a2e\u8cc7\u6599\u5eab\u7684\u521d\u59cb\u5316\u65b9\u5f0f\uff1a\r\n\r\n#### \u4f7f\u7528 Google BigQuery\r\n\r\n```python\r\nfrom botrun_log import Logger\r\n\r\n# \u4f7f\u7528\u74b0\u5883\u8b8a\u6578\r\nlogger_bq = Logger(db_type='bigquery', department='your_department')\r\n\r\n# \u6216\u8005\u76f4\u63a5\u63d0\u4f9b\u53c3\u6578\r\nlogger_bq = Logger(\r\n db_type='bigquery',\r\n department='your_department',\r\n credentials_path='/path/to/your/credentials.json',\r\n project_id='your_project_id',\r\n dataset_name='your_dataset_name'\r\n)\r\n```\r\n\r\n#### \u4f7f\u7528 PostgreSQL\r\n\r\n```python\r\nfrom botrun_log import Logger\r\n\r\n# \u4f7f\u7528\u74b0\u5883\u8b8a\u6578\r\nlogger_pg = Logger(db_type='postgresql', department='your_department')\r\n\r\n# \u6216\u8005\u76f4\u63a5\u63d0\u4f9b\u53c3\u6578\r\nlogger_pg = Logger(\r\n db_type='postgresql',\r\n department='your_department',\r\n pg_config={\r\n 'dbname': 'botrun_db',\r\n 'user': 'botrun_user',\r\n 'password': 'botrun_password',\r\n 'host': 'localhost',\r\n 'port': '5432'\r\n }\r\n)\r\n```\r\n\r\n\u5728\u9019\u5169\u7a2e\u521d\u59cb\u5316\u65b9\u5f0f\u4e2d\uff0c\u4f60\u53ef\u4ee5\u9078\u64c7\u4f7f\u7528\u74b0\u5883\u8b8a\u6578\u6216\u76f4\u63a5\u63d0\u4f9b\u53c3\u6578\u3002\u4f7f\u7528\u74b0\u5883\u8b8a\u6578\u6642\uff0c\u8acb\u78ba\u4fdd\u4f60\u5df2\u7d93\u6b63\u78ba\u8a2d\u7f6e\u4e86\u76f8\u61c9\u7684\u74b0\u5883\u8b8a\u6578\u3002\u76f4\u63a5\u63d0\u4f9b\u53c3\u6578\u6642\uff0c\u4f60\u9700\u8981\u586b\u5beb\u6240\u6709\u5fc5\u8981\u7684\u914d\u7f6e\u4fe1\u606f\u3002\r\n\r\n\u521d\u59cb\u5316\u5b8c\u6210\u5f8c\uff0c\u4f60\u5c31\u53ef\u4ee5\u4f7f\u7528 `logger` \u5c0d\u8c61\u4f86\u63d2\u5165\u5404\u7a2e\u985e\u578b\u7684\u65e5\u8a8c\u8a18\u9304\u4e86\u3002\r\n\r\n### \u63d2\u5165\u8a18\u9304\r\n\r\nbotrun-log \u652f\u63f4\u56db\u7a2e\u985e\u578b\u7684\u8a18\u9304\uff1a\u6587\u5b57\u3001\u97f3\u8a0a\u3001\u5716\u7247\u548c\u5411\u91cf\u8cc7\u6599\u5eab\u64cd\u4f5c\u3002\u4ee5\u4e0b\u662f\u5404\u7a2e\u8a18\u9304\u7684\u63d2\u5165\u65b9\u5f0f\uff1a\r\n\r\n#### \u6587\u5b57\u8a18\u9304\r\n\r\n```python\r\nfrom botrun_log import TextLogEntry\r\nfrom datetime import datetime\r\n\r\ntext_log = TextLogEntry(\r\n timestamp=datetime.now().isoformat(),\r\n domain_name='botrun.ai',\r\n user_department='your_department',\r\n user_name='user_1',\r\n source_ip='127.0.0.1',\r\n session_id='session_1',\r\n action_type='\u4ea4\u8ac7',\r\n developer='JcXGTcW',\r\n action_details='\u4f7f\u7528\u8005\u8f38\u5165\u7684\u6587\u5b57',\r\n model='gpt-4o',\r\n botrun='\u6ce2\u7a0b.botrun',\r\n user_agent='user_agent',\r\n resource_id='resource_1'\r\n)\r\n\r\nlogger.insert_text_log(text_log)\r\n```\r\n\r\n#### \u97f3\u8a0a\u8a18\u9304\r\n\r\n```python\r\nfrom botrun_log import AudioLogEntry\r\n\r\naudio_log = AudioLogEntry(\r\n timestamp=datetime.now().isoformat(),\r\n domain_name='botrun.ai',\r\n user_department='your_department',\r\n user_name='user_2',\r\n source_ip='127.0.0.1',\r\n session_id='session_2',\r\n action_type='\u4e0a\u50b3\u97f3\u6a94',\r\n developer='JcXGTcW',\r\n action_details='\u97f3\u6a94\u6587\u4ef6\u4e0a\u50b3',\r\n model='whisper-1',\r\n botrun='\u6ce2\u7a0b.botrun',\r\n user_agent='user_agent',\r\n resource_id='audio_1',\r\n file_size_mb=20\r\n)\r\n\r\nlogger.insert_audio_log(audio_log)\r\n```\r\n\r\n#### \u5716\u7247\u8a18\u9304\r\n\r\n```python\r\nfrom botrun_log import ImageLogEntry\r\n\r\nimage_log = ImageLogEntry(\r\n timestamp=datetime.now().isoformat(),\r\n domain_name='botrun.ai',\r\n user_department='your_department',\r\n user_name='user_3',\r\n source_ip='127.0.0.1',\r\n session_id='session_3',\r\n action_type='\u4e0a\u50b3\u5716\u7247',\r\n developer='JcXGTcW',\r\n action_details='\u5716\u7247\u6587\u4ef6\u4e0a\u50b3',\r\n model='dall-e-3',\r\n botrun='\u6ce2\u7a0b.botrun',\r\n user_agent='user_agent',\r\n resource_id='image_1',\r\n img_size_mb=1.5\r\n)\r\n\r\nlogger.insert_image_log(image_log)\r\n```\r\n\r\n#### \u5411\u91cf\u8cc7\u6599\u5eab\u64cd\u4f5c\u8a18\u9304\r\n\r\n```python\r\nfrom botrun_log import VectorDBLogEntry\r\n\r\nvector_log = VectorDBLogEntry(\r\n timestamp=datetime.now().isoformat(),\r\n domain_name='botrun.ai',\r\n user_department='your_department',\r\n user_name='user_4',\r\n source_ip='127.0.0.1',\r\n session_id='session_4',\r\n action_type='\u5411\u91cf\u64cd\u4f5c',\r\n developer='JcXGTcW',\r\n action_details='\u5411\u91cf\u8cc7\u6599\u5eab\u64cd\u4f5c',\r\n model='text-embedding-ada-002',\r\n botrun='\u6ce2\u7a0b.botrun',\r\n user_agent='user_agent',\r\n resource_id='1AE5_wQsEretANgmgIFAkSVY5JUepZ767',\r\n page_num=10\r\n)\r\n\r\nlogger.insert_vector_log(vector_log)\r\n```\r\n\r\n### \u57f7\u884c ETL \u64cd\u4f5c\r\n\r\n```python\r\nfrom botrun_log import ETLManager\r\nfrom datetime import date\r\n\r\netl_manager = ETLManager(db_manager)\r\netl_manager.write_etl_summary(department='your_department', date=date(2023, 8, 22))\r\n```\r\n\r\n### \u8b80\u53d6 ETL \u7d50\u679c\r\n\r\n```python\r\nresults = etl_manager.read_etl_summary(\r\n start_date=date(2023, 8, 1),\r\n end_date=date(2023, 8, 31),\r\n department='your_department'\r\n)\r\n\r\nfor result in results:\r\n print(result)\r\n```\r\n\r\n## \u8cc7\u6599\u8868\u6b04\u4f4d\u8aaa\u660e\r\n\r\n### \u6587\u5b57\u8a18\u9304\u8868 ({department}_logs)\r\n\r\n- `timestamp`: \u64cd\u4f5c\u7684\u6642\u9593\u6233 (TIMESTAMP)\r\n- `domain_name`: \u64cd\u4f5c\u6240\u5c6c\u7684\u7db2\u57df\u540d\u7a31 (STRING)\r\n- `user_department`: \u4f7f\u7528\u8005\u6240\u5c6c\u7684\u90e8\u9580\u6216\u6a5f\u95dc (STRING)\r\n- `user_name`: \u4f7f\u7528\u8005\u7684\u540d\u7a31\u6216\u5e33\u865f (STRING)\r\n- `source_ip`: \u767c\u51fa\u64cd\u4f5c\u8acb\u6c42\u7684 IP \u5730\u5740 (STRING)\r\n- `session_id`: \u7576\u524d\u64cd\u4f5c\u7684\u5de5\u4f5c\u968e\u6bb5 ID (STRING)\r\n- `action_type`: \u64cd\u4f5c\u985e\u578b (STRING)\r\n- `developer`: \u8a18\u9304\u9019\u6b21\u64cd\u4f5c\u7684\u958b\u767c\u8005\u540d\u7a31\u6216\u5beb\u5165\u8a18\u9304\u7684\u5957\u4ef6\u540d\u7a31 (STRING)\r\n- `action_details`: \u64cd\u4f5c\u7684\u5177\u9ad4\u5167\u5bb9 (STRING)\r\n- `model`: \u4f7f\u7528\u7684\u6a21\u578b\u540d\u7a31 (STRING)\r\n- `botrun`: \u4f7f\u7528\u7684 botrun \u7248\u672c (STRING)\r\n- `user_agent`: \u4f7f\u7528\u8005\u7684\u5ba2\u6236\u7aef\u8cc7\u8a0a (STRING)\r\n- `resource_id`: \u8207\u6b64\u6b21\u64cd\u4f5c\u76f8\u95dc\u7684\u8cc7\u6e90 ID (STRING)\r\n- `ch_characters`: \u4e2d\u6587\u5b57\u5143\u6578\u91cf (INTEGER)\r\n- `en_characters`: \u82f1\u6587\u5b57\u5143\u6578\u91cf (INTEGER)\r\n- `total_characters`: \u7e3d\u5b57\u5143\u6578\u91cf (INTEGER)\r\n- `create_timestamp`: \u8a18\u9304\u5275\u5efa\u6642\u9593 (TIMESTAMP)\r\n\r\n### \u97f3\u8a0a\u8a18\u9304\u8868 ({department}_audio_logs)\r\n\r\n\u5305\u542b\u8207\u6587\u5b57\u8a18\u9304\u8868\u76f8\u540c\u7684\u6b04\u4f4d\uff0c\u53e6\u5916\u589e\u52a0\uff1a\r\n\r\n- `file_size_mb`: \u97f3\u8a0a\u6a94\u6848\u5927\u5c0f (FLOAT)\r\n\r\n### \u5716\u7247\u8a18\u9304\u8868 ({department}_image_logs)\r\n\r\n\u5305\u542b\u8207\u6587\u5b57\u8a18\u9304\u8868\u76f8\u540c\u7684\u6b04\u4f4d\uff0c\u53e6\u5916\u589e\u52a0\uff1a\r\n\r\n- `img_size_mb`: \u5716\u7247\u6a94\u6848\u5927\u5c0f (FLOAT)\r\n\r\n### \u5411\u91cf\u8cc7\u6599\u5eab\u64cd\u4f5c\u8a18\u9304\u8868 ({department}_vector_logs)\r\n\r\n\u5305\u542b\u8207\u6587\u5b57\u8a18\u9304\u8868\u76f8\u540c\u7684\u6b04\u4f4d\uff0c\u53e6\u5916\u589e\u52a0\uff1a\r\n\r\n- `page_num`: \u64cd\u4f5c\u7684\u9801\u6578 (INTEGER)\r\n\r\n### ETL \u6458\u8981\u8868 (daily_character_usage)\r\n\r\n- `date`: \u65e5\u671f (DATE)\r\n- `department`: \u90e8\u9580\u6216\u6a5f\u95dc (STRING)\r\n- `user_name`: \u4f7f\u7528\u8005\u540d\u7a31 (STRING)\r\n- `ch_characters`: \u4e2d\u6587\u5b57\u5143\u4f7f\u7528\u91cf (INTEGER)\r\n- `en_characters`: \u82f1\u6587\u5b57\u5143\u4f7f\u7528\u91cf (INTEGER)\r\n\r\n## \u6b04\u4f4d\u5fc5\u586b\u8207\u9078\u586b\u8aaa\u660e\r\n\r\n### \u5fc5\u586b\u6b04\u4f4d\r\n\r\n- `timestamp`: \u64cd\u4f5c\u7684\u6642\u9593\u6233\r\n- `domain_name`: \u64cd\u4f5c\u6240\u5c6c\u7684\u7db2\u57df\u540d\u7a31\r\n- `user_department`: \u4f7f\u7528\u8005\u6240\u5c6c\u7684\u90e8\u9580\u6216\u6a5f\u95dc\r\n- `user_name`: \u4f7f\u7528\u8005\u7684\u540d\u7a31\u6216\u5e33\u865f\r\n- `source_ip`: \u767c\u51fa\u64cd\u4f5c\u8acb\u6c42\u7684 IP \u5730\u5740\r\n- `session_id`: \u7576\u524d\u64cd\u4f5c\u7684\u5de5\u4f5c\u968e\u6bb5 ID\r\n- `action_type`: \u64cd\u4f5c\u985e\u578b\r\n- `developer`: \u8a18\u9304\u9019\u6b21\u64cd\u4f5c\u7684\u958b\u767c\u8005\u540d\u7a31\u6216\u5beb\u5165\u8a18\u9304\u7684\u5957\u4ef6\u540d\u7a31\r\n- `model`: \u4f7f\u7528\u7684\u6a21\u578b\u540d\u7a31\r\n- `botrun`: \u4f7f\u7528\u7684 botrun \u7248\u672c\r\n\r\n### \u9078\u586b\u6b04\u4f4d\r\n\r\n- `action_details`: \u64cd\u4f5c\u7684\u5177\u9ad4\u5167\u5bb9\r\n- `user_agent`: \u4f7f\u7528\u8005\u7684\u5ba2\u6236\u7aef\u8cc7\u8a0a\r\n- `resource_id`: \u8207\u6b64\u6b21\u64cd\u4f5c\u76f8\u95dc\u7684\u8cc7\u6e90 ID\r\n\r\n\u5c0d\u65bc\u7279\u5b9a\u985e\u578b\u7684\u8a18\u9304\uff0c\u9084\u6709\u4ee5\u4e0b\u5fc5\u586b\u6b04\u4f4d\uff1a\r\n\r\n- \u97f3\u8a0a\u8a18\u9304\uff1a`file_size_mb`\r\n- \u5716\u7247\u8a18\u9304\uff1a`img_size_mb`\r\n- \u5411\u91cf\u8cc7\u6599\u5eab\u64cd\u4f5c\u8a18\u9304\uff1a`page_num`\r\n\r\n## \u6e2c\u8a66\r\n\r\n\u5957\u4ef6\u4f7f\u7528 `pytest` \u9032\u884c\u55ae\u5143\u6e2c\u8a66\u3002\u4f60\u53ef\u4ee5\u5728\u5c08\u6848\u6839\u76ee\u9304\u57f7\u884c\u4ee5\u4e0b\u547d\u4ee4\u4f86\u8dd1\u6e2c\u8a66\uff1a\r\n\r\n```bash\r\npytest\r\n```\r\n\r\n## \u8ca2\u737b\r\n\r\n\u6b61\u8fce\u8ca2\u737b\uff01\u5982\u6709\u554f\u984c\u6216\u5efa\u8b70\uff0c\u8acb\u900f\u904e [issues](https://github.com/bohachu/bigquery_log_jc/issues) \u9801\u9762\u8207\u6211\u5011\u806f\u7e6b\u3002\r\n\r\n## \u6388\u6b0a\r\n\r\n\u6b64\u5c08\u6848\u63a1\u7528 [MIT License](https://opensource.org/licenses/MIT) \u6388\u6b0a\u3002\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python package for botrun-application logging, using Google BigQuery and PostgreSQL.",
"version": "0.3.0",
"project_urls": {
"Homepage": "https://github.com/bohachu/bigquery_log_jc"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bc5756a72eeec98749cebf2520d17fe8adac4a6508d1f5468d1a91565b6af043",
"md5": "0b96b3fa0132442424eca6e2dfcb2552",
"sha256": "5f9aee5a75b6faa9cfe7ace334018a4c09b2d1a83c652f0c575209cc5cb399d9"
},
"downloads": -1,
"filename": "botrun-log-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "0b96b3fa0132442424eca6e2dfcb2552",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 13212,
"upload_time": "2024-08-22T07:23:08",
"upload_time_iso_8601": "2024-08-22T07:23:08.973612Z",
"url": "https://files.pythonhosted.org/packages/bc/57/56a72eeec98749cebf2520d17fe8adac4a6508d1f5468d1a91565b6af043/botrun-log-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-22 07:23:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bohachu",
"github_project": "bigquery_log_jc",
"github_not_found": true,
"lcname": "botrun-log"
}