import os
import csv
from collections import defaultdict
ccm_apis = []
with open('/Users/zool/RustroverProjects/open-lark/api_list_export.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
if row['bizTag'] == 'ccm':
ccm_apis.append(row)
project_stats = defaultdict(list)
for api in ccm_apis:
project = api['meta.Project']
project_stats[project].append(api)
api_file_mapping = {
'create': 'create',
'get_document_meta': 'meta',
'get_sheet_meta': 'sheet_meta',
'get_raw_content': 'raw_content',
'get_content': 'content',
'batch_update': 'batch_update',
'search_object': 'search_object',
'get_meta': 'meta',
}
base_path = '/Users/zool/RustroverProjects/open-lark/crates/openlark-docs/src/ccm'
def extract_api_name_from_url(url):
parts = url.split('/')
if len(parts) > 0:
return parts[-1]
return ""
def check_implementation(project, api_name):
project_path = os.path.join(base_path, project)
if not os.path.exists(project_path):
return False, f"Project {project} directory not found"
for version in ['v1', 'v2']:
old_path = os.path.join(project_path, 'old', version)
if os.path.exists(old_path):
for root, dirs, files in os.walk(old_path):
for file in files:
if file.endswith('.rs') and file != 'mod.rs' and file != 'models.rs':
file_base = file.replace('.rs', '').lower()
if api_name.lower() in file_base or file_base in api_name.lower():
return True, os.path.join(root, file)
for root, dirs, files in os.walk(project_path):
for file in files:
if file.endswith('.rs') and file != 'mod.rs' and file != 'models.rs':
file_base = file.replace('.rs', '').lower()
if api_name.lower() in file_base or file_base in api_name.lower():
return True, os.path.join(root, file)
return False, f"API {api_name} not found"
total_apis = 0
implemented_apis = 0
missing_apis = []
print("=== CCM API实现情况检查 ===\n")
for project, apis in project_stats.items():
print(f"\n{project}: {len(apis)}个API")
project_implemented = 0
for api in apis:
total_apis += 1
url_parts = api['url'].split('/')
api_name = extract_api_name_from_url(api['url'])
if ':' in api_name:
api_name = api_name.split(':')[0]
implemented, path = check_implementation(project, api_name)
if implemented:
project_implemented += 1
implemented_apis += 1
else:
missing_apis.append({
'project': project,
'name': api['name'],
'url': api['url'],
'api_name': api_name
})
print(f" 已实现: {project_implemented}/{len(apis)}")
print(f"\n总计:")
print(f" 总API数: {total_apis}")
print(f" 已实现: {implemented_apis}")
print(f" 缺失: {len(missing_apis)}")
if missing_apis:
print(f"\n缺失的API:")
for missing in missing_apis:
print(f" - {missing['project']}: {missing['name']} ({missing['api_name']}) - {missing['url']}")