Files
TEMP_spec_system_V3/test_org_search.py
beabigegg 4f7f46b07a 2ND
2025-08-28 08:59:46 +08:00

126 lines
4.4 KiB
Python

#!/usr/bin/env python3
"""
測試組織架構搜尋功能的獨立腳本
根據您提供的組織架構圖進行測試
"""
from ldap_utils import search_ldap_groups
from app import app
def test_org_units():
"""測試組織單位搜尋"""
print("=== 測試組織單位搜尋 ===")
# 根據您的組織架構圖測試這些關鍵字
test_terms = [
"PANJIT", # 主要組織
"Audit Office", # 稽核室
"Fab bu", # 晶圓事業部
"CFPU", # 客戶產品事業部
"GMO", # 總經理室
"RBU", # 新創事業處
"kM_ESP", # 知識管理
"SBG", # 特殊應用事業群
"AUBU", # 車載事業處
"IQBU", # 檢測事業處
"MBU1", # 行銷事業處1
"AssEng", # 製程工程
"scottlee", # 個人帳號
"staceychu", # 個人帳號
"ymirliu" # 劉經理
]
for term in test_terms:
print(f"\n搜尋: '{term}'")
print("-" * 50)
try:
results = search_ldap_groups(term, limit=10)
if results:
print(f"找到 {len(results)} 個結果:")
for i, result in enumerate(results, 1):
type_text = "組織單位" if result['type'] == 'organizationalUnit' else "群組"
print(f" {i}. {result['name']} ({type_text})")
print(f" 成員: {result['member_count']}")
if result.get('email'):
print(f" 郵件: {result['email']}")
print(f" DN: {result['dn']}")
print()
else:
print("沒有找到結果")
except Exception as e:
print(f"搜尋錯誤: {e}")
import traceback
traceback.print_exc()
def test_specific_search():
"""測試特定搜尋詞"""
print("\n=== 特定搜尋測試 ===")
while True:
term = input("\n請輸入要搜尋的組織名稱 (或輸入 'quit' 結束): ").strip()
if term.lower() == 'quit':
break
if not term:
continue
print(f"\n搜尋組織: '{term}'")
print("-" * 40)
try:
results = search_ldap_groups(term, limit=15)
if results:
print(f"找到 {len(results)} 個組織:")
for i, result in enumerate(results, 1):
type_text = "組織單位" if result['type'] == 'organizationalUnit' else "群組"
print(f"{i}. {result['name']} ({type_text}, 成員: {result['member_count']})")
# 提供選擇選項
if results:
choice = input(f"\n要查看哪個組織的詳細資訊? (1-{len(results)}, 或按 Enter 跳過): ").strip()
if choice.isdigit() and 1 <= int(choice) <= len(results):
selected = results[int(choice) - 1]
print(f"\n{selected['name']} 詳細資訊:")
print(f" 類型: {selected['type']}")
print(f" 成員數: {selected['member_count']}")
print(f" DN: {selected['dn']}")
if selected.get('email'):
print(f" 群組郵件: {selected['email']}")
else:
print("沒有找到相符的組織")
except Exception as e:
print(f"搜尋失敗: {e}")
def main():
"""主測試函式"""
print("組織架構搜尋測試工具")
print("=" * 50)
print("此工具將測試根據您的 AD 組織架構搜尋群組和組織單位")
with app.app_context():
# 自動測試常見組織名稱
test_org_units()
# 互動式測試
choice = input("\n是否要進行互動式組織搜尋測試? (y/N): ").strip().lower()
if choice == 'y':
test_specific_search()
print("\n測試完成!")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n\n測試已中斷")
except Exception as e:
print(f"\n測試發生錯誤: {e}")
import traceback
traceback.print_exc()