import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / 'base_platform'))
from seed.taxonomy import seed_taxonomy
from seed.regulations import seed_tax_regulations, vectorize_imported_documents, auto_tag_imported_documents
from seed.cases import seed_cases
from seed.sop_models import seed_sop_models
from seed.knowledge import init_tax_knowledge_base

def init_taxonomy(tenant_id: int):
    seed_taxonomy(tenant_id)

def init_knowledge_base(tenant_id: int, user_id: int=None):
    return init_tax_knowledge_base(tenant_id, user_id)

def init_regulations(tenant_id: int, user_id: int=None, years: list=None, auto_vectorize: bool=True, auto_tag: bool=True):
    seed_tax_regulations(tenant_id, user_id, years)
    if auto_tag:
        print('\n→ Auto-tagging documents...')
        auto_tag_imported_documents(tenant_id)
    if auto_vectorize:
        print('\n→ Vectorizing documents...')
        vectorize_imported_documents(tenant_id, user_id)

def init_cases(tenant_id: int):
    seed_cases(tenant_id)

def init_sop_models(tenant_id: int):
    seed_sop_models(tenant_id)

def init_all(tenant_id: int, user_id: int=None, years: list=None):
    print(f'Initializing tax data for tenant {tenant_id}...')
    init_knowledge_base(tenant_id, user_id)
    init_taxonomy(tenant_id)
    init_regulations(tenant_id, user_id, years=years, auto_vectorize=True, auto_tag=True)
    print(f'\n✓ Tax data initialization completed for tenant {tenant_id}')
if __name__ == '__main__':
    import argparse
    parser = argparse.ArgumentParser(description='Initialize tax data')
    parser.add_argument('--tenant-id', type=int, required=True, help='Tenant ID')
    parser.add_argument('--user-id', type=int, help='User ID (defaults to platform admin)')
    parser.add_argument('--years', type=str, help="Year range (e.g., '2010-2023' or '2010,2011,2012')")
    args = parser.parse_args()
    years = None
    if args.years:
        if '-' in args.years:
            start, end = args.years.split('-')
            years = list(range(int(start), int(end) + 1))
        else:
            years = [int(y.strip()) for y in args.years.split(',')]
    user_id = args.user_id
    if not user_id:
        from app.db.session import SessionLocal
        from app.models.user import User
        db = SessionLocal()
        admin = db.query(User).filter_by(email='admin@hellotax.cn').first()
        if admin:
            user_id = admin.id
        db.close()
    init_all(args.tenant_id, user_id, years)