126 lines
4.4 KiB
Python
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() |