import json, subprocess
names = subprocess.check_output(['docker','network','ls','--format','{{.Name}}'], text=True).splitlines()
rows = []
for name in names:
    raw = subprocess.check_output(['docker','network','inspect',name], text=True)
    obj = json.loads(raw)[0]
    containers = []
    for _, c in (obj.get('Containers') or {}).items():
        containers.append(c.get('Name'))
    containers = sorted([c for c in containers if c])
    rows.append({
        'name': name,
        'driver': obj.get('Driver'),
        'containers': containers,
    })
print('=== NETWORK -> CONTAINERS ===')
for r in rows:
    print(f"{r['name']}: {', '.join(r['containers']) if r['containers'] else '(empty)'}")
print('\n=== REVIEW ===')
for r in rows:
    name = r['name']
    cs = r['containers']
    if name in ('bridge','host','none'):
        verdict = '保留（Docker 系统网络）'
    elif name == 'infra_shared':
        verdict = '保留（新建共享网络，当前空）'
    elif name in ('new-api_default','nanobot-nthk90_default','nanobot-sqyyqssqyyqs_default'):
        verdict = '保留（你指定保留）'
    elif not cs:
        verdict = '可删（空网络）'
    elif name == 'deploy_sub2api-network' and cs == ['sub2api-postgres']:
        verdict = '大概率可清理（只剩 sub2api-postgres 遗留）'
    elif any(c.startswith('nanobot-') for c in cs):
        verdict = '保留（机器人业务）'
    elif name == 'nginx-proxy':
        verdict = '保留（反向代理相关）'
    elif name == 'stratum-proxy_stratum-net':
        verdict = '保留（矿池/代理业务在用）'
    else:
        verdict = '看业务决定（当前有运行容器）'
    print(f"{name}: {verdict}")
