import os
import re

CLASS_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '.claude', 'memory', 'class')

TEMPLATE = '''# 成长素材

> 收集学生的作品照片、视频、作品描述等成长证据

## 目录结构

```
成长素材/
├── 作品照片/          # 课堂作品照片
├── 视频记录/          # 课堂表现视频
├── 作品图纸/          # 设计草图、程序截图
├── 家长分享/          # 家长提供的家庭延伸作品
└── 特别记录/          # 获奖、展示等特殊时刻
```

## 素材记录格式

```markdown
### YYYY-MM-DD | 课程代码：XXX-XXX

**作品名称**：
**作品描述**：
**技术亮点**：
**学生解说**（如有）：
**教师点评**：

**文件位置**：
- 照片：作品照片/YYYYMM_XXX_001.jpg
- 视频：视频记录/YYYYMM_XXX_001.mp4

---
```

## 作品记录列表

### 代表作品

| 日期 | 课程 | 作品名称 | 亮点 | 文件位置 |
|-----|------|---------|------|---------|
| | | | | |

### 成长对比

| 时间 | 作品 | 能力体现 | 进步说明 |
|-----|------|---------|---------|
| 第1周 | | | |
| 第4周 | | | |
| 第8周 | | | |
| 第12周 | | | |

---
*创建日期：2026-03-25*
'''

def is_already_template(text):
    return '目录结构' in text and '素材记录格式' in text and '作品记录列表' in text

def extract_existing_data(text, file_path):
    parts = os.path.normpath(file_path).split(os.sep)
    student_name = ''
    class_name = ''
    for i, p in enumerate(parts):
        if p == 'summary' and i >= 2:
            student_name = parts[i-1]
            class_name = parts[i-2]
            break
    
    data_rows = []
    in_table = False
    for line in text.split('\n'):
        stripped = line.strip()
        if '|' in stripped and not stripped.startswith('| ---') and not stripped.startswith('|---'):
            cells = [c.strip() for c in stripped.split('|') if c.strip()]
            if len(cells) >= 3:
                has_date = bool(re.match(r'\d{4}-\d{2}-\d{2}', cells[0]))
                if has_date:
                    data_rows.append(cells)
    
    return student_name, class_name, data_rows

def generate_summary(text, file_path):
    student_name, class_name, data_rows = extract_existing_data(text, file_path)
    
    if is_already_template(text):
        return None
    
    if data_rows:
        table_rows = []
        for row in data_rows:
            table_rows.append('| ' + ' | '.join(row[:5]) + ' |')
        
        detail_sections = []
        for row in data_rows:
            if len(row) >= 2:
                detail_sections.append(f'''### {row[0]}：{row[1] if len(row) > 1 else ''}
- **作品名称**：{row[1] if len(row) > 1 else ''}
- **课程**：{row[0]}
- **成长亮点**：{row[3] if len(row) > 3 else ''}''')
        
        result = f'''# 成长素材

> {student_name} - {class_name}

---

## 作品记录

| 日期 | 课程 | 作品名称 | 亮点 |
|-----|------|---------|------|
{chr(10).join(table_rows)}

---

## 作品详情

{chr(10).join(detail_sections)}

---
*学生：{student_name} | 班级：{class_name}*
*创建日期：2026-03-25*'''
        return result
    
    result = f'''# 成长素材

> 收集{student_name}的作品照片、视频、作品描述等成长证据

## 目录结构

```
成长素材/
├── 作品照片/          # 课堂作品照片
├── 视频记录/          # 课堂表现视频
├── 作品图纸/          # 设计草图、程序截图
├── 家长分享/          # 家长提供的家庭延伸作品
└── 特别记录/          # 获奖、展示等特殊时刻
```

## 素材记录格式

```markdown
### YYYY-MM-DD | 课程代码：XXX-XXX

**作品名称**：
**作品描述**：
**技术亮点**：
**学生解说**（如有）：
**教师点评**：

**文件位置**：
- 照片：作品照片/YYYYMM_XXX_001.jpg
- 视频：视频记录/YYYYMM_XXX_001.mp4

---
```

## 作品记录列表

### 代表作品

| 日期 | 课程 | 作品名称 | 亮点 | 文件位置 |
|-----|------|---------|------|---------|
| | | | | |

### 成长对比

| 时间 | 作品 | 能力体现 | 进步说明 |
|-----|------|---------|---------|
| 第1周 | | | |
| 第4周 | | | |
| 第8周 | | | |
| 第12周 | | | |

---
*学生：{student_name} | 班级：{class_name}*
*创建日期：2026-03-25*'''
    return result

def process_summary(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        text = f.read()
    
    new_text = generate_summary(text, file_path)
    if new_text is None:
        return False
    
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(new_text)
    return True

def main():
    updated = 0
    skipped = 0
    errors = 0
    
    for root, dirs, files in os.walk(CLASS_DIR):
        if 'summary' not in root.split(os.sep):
            continue
        
        for f in files:
            if not f.endswith('.md'):
                continue
            file_path = os.path.join(root, f)
            try:
                if process_summary(file_path):
                    updated += 1
                    rel = os.path.relpath(file_path, CLASS_DIR)
                    print(f'  ✅ 已更新: {rel}')
                else:
                    skipped += 1
            except Exception as e:
                errors += 1
                rel = os.path.relpath(file_path, CLASS_DIR)
                print(f'  ❌ 错误: {rel} - {e}')
    
    print(f'\n{"="*50}')
    print(f'更新完成！')
    print(f'  ✅ 已更新: {updated} 个文件')
    print(f'  ⏭️  已跳过(已是最新格式): {skipped} 个文件')
    print(f'  ❌ 错误: {errors} 个文件')

if __name__ == '__main__':
    main()