        groups=output.get('groups',[]);question_map={r['id']:r for r in original['questions']};seen=[];mix=[];rows=[]
        for g in groups:
            ids=g.get('question_ids',[]);seen.extend(ids)
            if any(x not in question_map or question_map[x]['sku']!=g.get('sku') for x in ids):mix.append(g)
            rows.append({'sku':g.get('sku'),'question_ids':'|'.join(ids),'draft':g.get('draft','')})
        check('20个原问题恰好归组一次',sorted(seen)==sorted(question_map) and len(set(seen))==20);check('不同容量SKU从未混组',not mix);check('输出只有两种SKU且未知时长待确认',{g.get('sku') for g in groups}=={'CUP-300','CUP-500'} and all(any(x in g.get('draft','') for x in ['确认','未知','未提供','暂无']) for g in groups));write_csv(artifact('qa-groups.csv'),rows);result={'groups':groups,'mixedGroups':mix,'questionCount':len(seen)}
