Merge branch 'telemetry' into develop
This commit is contained in:
@@ -726,7 +726,7 @@ class Config:
|
|||||||
WEBSOCKET_PORT = ManagedProperty('WEBSOCKET_PORT', type_=int)
|
WEBSOCKET_PORT = ManagedProperty('WEBSOCKET_PORT', type_=int)
|
||||||
|
|
||||||
# --- Telemetry Settings ---
|
# --- Telemetry Settings ---
|
||||||
TELEMETRY_ENABLED = ManagedProperty('TELEMETRY_ENABLED', type_=bool)
|
ENABLE_TELEMETRY = ManagedProperty('ENABLE_TELEMETRY', type_=bool)
|
||||||
|
|
||||||
# --- Selection properties with validation (ManagedProperty) ---
|
# --- Selection properties with validation (ManagedProperty) ---
|
||||||
SELECTED_TAB_NO = ManagedProperty('SELECTED_TAB_NO', type_=str, allowed=lambda v, inst: v in inst.SELECTABLE_TAB_NO_LIST)
|
SELECTED_TAB_NO = ManagedProperty('SELECTED_TAB_NO', type_=str, allowed=lambda v, inst: v in inst.SELECTABLE_TAB_NO_LIST)
|
||||||
@@ -1027,7 +1027,7 @@ class Config:
|
|||||||
self._WEBSOCKET_PORT = 2231
|
self._WEBSOCKET_PORT = 2231
|
||||||
|
|
||||||
## Telemetry
|
## Telemetry
|
||||||
self._TELEMETRY_ENABLED = True # デフォルト有効
|
self._ENABLE_TELEMETRY = True # デフォルト有効
|
||||||
|
|
||||||
def load_config(self):
|
def load_config(self):
|
||||||
if os_path.isfile(self.PATH_CONFIG) is not False:
|
if os_path.isfile(self.PATH_CONFIG) is not False:
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class Controller:
|
|||||||
dict with status 200 and result True on success.
|
dict with status 200 and result True on success.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
model.shutdown()
|
model.telemetryShutdown()
|
||||||
return {"status": 200, "result": True}
|
return {"status": 200, "result": True}
|
||||||
except Exception:
|
except Exception:
|
||||||
errorLogging()
|
errorLogging()
|
||||||
@@ -2595,6 +2595,24 @@ class Controller:
|
|||||||
model.updateOverlayLargeLog(overlay_image)
|
model.updateOverlayLargeLog(overlay_image)
|
||||||
return {"status":200, "result":data}
|
return {"status":200, "result":data}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def getTelemetry(*args, **kwargs) -> dict:
|
||||||
|
return {"status":200, "result":config.ENABLE_TELEMETRY}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def setEnableTelemetry(*args, **kwargs) -> dict:
|
||||||
|
if config.ENABLE_TELEMETRY is False:
|
||||||
|
config.ENABLE_TELEMETRY = True
|
||||||
|
model.telemetryInit(enabled=config.ENABLE_TELEMETRY, app_version=config.VERSION)
|
||||||
|
return {"status":200, "result":config.ENABLE_TELEMETRY}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def setDisableTelemetry(*args, **kwargs) -> dict:
|
||||||
|
if config.ENABLE_TELEMETRY is True:
|
||||||
|
config.ENABLE_TELEMETRY = False
|
||||||
|
model.telemetryShutdown()
|
||||||
|
return {"status":200, "result":config.ENABLE_TELEMETRY}
|
||||||
|
|
||||||
def swapYourLanguageAndTargetLanguage(self, *args, **kwargs) -> dict:
|
def swapYourLanguageAndTargetLanguage(self, *args, **kwargs) -> dict:
|
||||||
your_languages = config.SELECTED_YOUR_LANGUAGES
|
your_languages = config.SELECTED_YOUR_LANGUAGES
|
||||||
your_language_temp = your_languages[config.SELECTED_TAB_NO]["1"]
|
your_language_temp = your_languages[config.SELECTED_TAB_NO]["1"]
|
||||||
@@ -3457,6 +3475,11 @@ class Controller:
|
|||||||
printLog("Revalidate Selected Models")
|
printLog("Revalidate Selected Models")
|
||||||
config.revalidate_selected_models()
|
config.revalidate_selected_models()
|
||||||
|
|
||||||
|
# telemetry Init
|
||||||
|
printLog("Telemetry Init")
|
||||||
|
if config.ENABLE_TELEMETRY is True:
|
||||||
|
model.telemetryInit(enabled=config.ENABLE_TELEMETRY, app_version=config.VERSION)
|
||||||
|
|
||||||
# Update Settings
|
# Update Settings
|
||||||
printLog("Update settings")
|
printLog("Update settings")
|
||||||
self.updateConfigSettings()
|
self.updateConfigSettings()
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ VRCT の **匿名な使用状況** を取得し、プロダクトの改善に役
|
|||||||
|
|
||||||
| 項目 | 方針 |
|
| 項目 | 方針 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| **デフォルト状態** | 有効(`telemetry_enabled = true`) |
|
| **デフォルト状態** | 有効(`ENABLE_TELEMETRY = true`) |
|
||||||
| **ユーザー制御** | 設定から任意で無効化可能 |
|
| **ユーザー制御** | 設定から任意で無効化可能 |
|
||||||
| **無効時の動作** | 一切の通信・スレッド・処理を停止 |
|
| **無効時の動作** | 一切の通信・スレッド・処理を停止 |
|
||||||
| **送信内容** | イベント名と固定属性のみ |
|
| **送信内容** | イベント名と固定属性のみ |
|
||||||
@@ -164,9 +164,9 @@ Timeline:
|
|||||||
```
|
```
|
||||||
1. アプリ起動
|
1. アプリ起動
|
||||||
↓
|
↓
|
||||||
2. config.json から telemetry_enabled 読込
|
2. config.json から ENABLE_TELEMETRY 読込
|
||||||
↓
|
↓
|
||||||
3. telemetry.init(enabled=config.telemetry_enabled)
|
3. telemetry.init(enabled=config.ENABLE_TELEMETRY)
|
||||||
├─ enabled=True の場合
|
├─ enabled=True の場合
|
||||||
│ ├─ Aptabase SDK 初期化
|
│ ├─ Aptabase SDK 初期化
|
||||||
│ ├─ heartbeat スレッド開始
|
│ ├─ heartbeat スレッド開始
|
||||||
@@ -180,7 +180,7 @@ Timeline:
|
|||||||
```
|
```
|
||||||
操作発生(翻訳/ASR/テキスト入力)
|
操作発生(翻訳/ASR/テキスト入力)
|
||||||
↓
|
↓
|
||||||
telemetry_enabled チェック
|
ENABLE_TELEMETRY チェック
|
||||||
├─ False → 何もしない
|
├─ False → 何もしない
|
||||||
└─ True
|
└─ True
|
||||||
↓
|
↓
|
||||||
@@ -217,7 +217,7 @@ telemetry.init(enabled=True)
|
|||||||
```
|
```
|
||||||
config.json 更新
|
config.json 更新
|
||||||
↓
|
↓
|
||||||
telemetry_enabled: false に変更
|
ENABLE_TELEMETRY: false に変更
|
||||||
↓
|
↓
|
||||||
telemetry.shutdown()
|
telemetry.shutdown()
|
||||||
├─ heartbeat スレッド停止
|
├─ heartbeat スレッド停止
|
||||||
@@ -383,7 +383,7 @@ class Model:
|
|||||||
|
|
||||||
# Telemetry 初期化
|
# Telemetry 初期化
|
||||||
try:
|
try:
|
||||||
telemetry.init(enabled=config.TELEMETRY_ENABLED)
|
telemetry.init(enabled=config.ENABLE_TELEMETRY)
|
||||||
except Exception:
|
except Exception:
|
||||||
errorLogging()
|
errorLogging()
|
||||||
|
|
||||||
@@ -1073,11 +1073,11 @@ def test_full_flow():
|
|||||||
|
|
||||||
```python
|
```python
|
||||||
# config.py 修正
|
# config.py 修正
|
||||||
TELEMETRY_ENABLED = True # デフォルト有効
|
ENABLE_TELEMETRY = True # デフォルト有効
|
||||||
|
|
||||||
# config.json への保存
|
# config.json への保存
|
||||||
{
|
{
|
||||||
"telemetry_enabled": true
|
"ENABLE_TELEMETRY": true
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1122,7 +1122,7 @@ UI に以下を表示:
|
|||||||
| 1 | `__init__.py`, `state.py` 作成 | 高 |
|
| 1 | `__init__.py`, `state.py` 作成 | 高 |
|
||||||
| 2 | `client.py`, `core.py` 作成 | 高 |
|
| 2 | `client.py`, `core.py` 作成 | 高 |
|
||||||
| 3 | `heartbeat.py` 作成・テスト | 高 |
|
| 3 | `heartbeat.py` 作成・テスト | 高 |
|
||||||
| 4 | `config.py` に `telemetry_enabled` 追加 | 高 |
|
| 4 | `config.py` に `ENABLE_TELEMETRY` 追加 | 高 |
|
||||||
| 5 | `controller.py` に API 呼び出し追加 | 高 |
|
| 5 | `controller.py` に API 呼び出し追加 | 高 |
|
||||||
| 6 | `mainloop.py` に init/shutdown 追加 | 高 |
|
| 6 | `mainloop.py` に init/shutdown 追加 | 高 |
|
||||||
| 7 | ユニット・統合テスト | 高 |
|
| 7 | ユニット・統合テスト | 高 |
|
||||||
|
|||||||
@@ -129,6 +129,9 @@ mapping = {
|
|||||||
|
|
||||||
"/run/send_text_overlay": {"status": True, "variable":controller.sendTextOverlay},
|
"/run/send_text_overlay": {"status": True, "variable":controller.sendTextOverlay},
|
||||||
|
|
||||||
|
"/get/data/telemetry" : {"status": True, "variable":controller.getTelemetry},
|
||||||
|
"/set/enable/telemetry" : {"status": True, "variable":controller.setEnableTelemetry},
|
||||||
|
"/set/disable/telemetry" : {"status": True, "variable":controller.setDisableTelemetry},
|
||||||
"/run/shutdown": {"status": True, "variable":controller.shutdown},
|
"/run/shutdown": {"status": True, "variable":controller.shutdown},
|
||||||
|
|
||||||
"/run/swap_your_language_and_target_language": {"status": True, "variable":controller.swapYourLanguageAndTargetLanguage},
|
"/run/swap_your_language_and_target_language": {"status": True, "variable":controller.swapYourLanguageAndTargetLanguage},
|
||||||
|
|||||||
@@ -144,7 +144,6 @@ class Model:
|
|||||||
|
|
||||||
# Telemetry 初期化(Model 内でインスタンスを保持)
|
# Telemetry 初期化(Model 内でインスタンスを保持)
|
||||||
self.telemetry = Telemetry()
|
self.telemetry = Telemetry()
|
||||||
self.telemetry.init(enabled=config.TELEMETRY_ENABLED, app_version=config.VERSION)
|
|
||||||
|
|
||||||
self._inited = True
|
self._inited = True
|
||||||
|
|
||||||
@@ -1297,7 +1296,11 @@ class Model:
|
|||||||
errorLogging()
|
errorLogging()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def shutdown(self):
|
def telemetryInit(self, enabled: bool, app_version: str):
|
||||||
|
"""Model 内で Telemetry を初期化"""
|
||||||
|
self.telemetry.init(enabled=enabled, app_version=app_version)
|
||||||
|
|
||||||
|
def telemetryShutdown(self):
|
||||||
"""Model cleanup on application shutdown."""
|
"""Model cleanup on application shutdown."""
|
||||||
# Telemetry 終了(app_closed 送信)
|
# Telemetry 終了(app_closed 送信)
|
||||||
if hasattr(self, "telemetry") and self.telemetry:
|
if hasattr(self, "telemetry") and self.telemetry:
|
||||||
|
|||||||
Reference in New Issue
Block a user