#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
生成软著申请所需的源代码材料
将项目主要源代码合并为一个超过6000行的文件
"""

import os
from pathlib import Path

# 项目根目录
ROOT = Path(__file__).resolve().parent.parent
OUTPUT = ROOT / "docs" / "软著申请-源代码材料.txt"

# 软著申请文件头
HEADER = """===============================================================================
                    智媒通 - 计算机软件著作权申请
                              源代码材料（前60页+后60页）
===============================================================================

软件全称：智媒通 V1.0
软件简称：智媒通
版本号：V1.0
开发完成日期：2025年
首次发表日期：2025年
权利取得方式：原始取得
权利范围：全部权利
著作权人：（请填写单位或个人名称）

===============================================================================
                              代码说明
===============================================================================
本软件为多平台自媒体账号管理系统，支持抖音、快手、视频号、小红书、百家号等
主流平台，具备视频自动发布、评论统一管理、数据分析等功能。采用 Electron +
Vue3 桌面客户端 + Express 后端 + Python 发布服务的架构。以下为系统核心源代码。

===============================================================================
                              第一部分：平台发布基类
===============================================================================

"""

# 要包含的源文件（按顺序）
SOURCE_FILES = [
    ROOT / "server" / "python" / "platforms" / "base.py",
    ROOT / "server" / "python" / "app.py",
    ROOT / "server" / "python" / "platforms" / "weixin.py",
    ROOT / "server" / "python" / "platforms" / "xiaohongshu.py",
    ROOT / "server" / "python" / "platforms" / "baijiahao.py",
    ROOT / "server" / "python" / "platforms" / "douyin.py",
    ROOT / "server" / "python" / "platforms" / "kuaishou.py",
]

def add_section_header(content: str, title: str) -> str:
    """在内容前添加章节标题"""
    return f"\n\n{'='*80}\n  {title}\n{'='*80}\n\n{content}"

def main():
    lines = []
    
    # 添加文件头
    lines.extend(HEADER.splitlines())
    
    for i, filepath in enumerate(SOURCE_FILES):
        if not filepath.exists():
            print(f"跳过不存在的文件: {filepath}")
            continue
            
        with open(filepath, "r", encoding="utf-8", errors="replace") as f:
            content = f.read()
        
        # 添加文件路径说明
        rel_path = filepath.relative_to(ROOT)
        section_title = f"文件: {rel_path}"
        content_with_header = add_section_header(content, section_title)
        lines.extend(content_with_header.splitlines())
        print(f"已添加: {rel_path} ({len(content.splitlines())} 行)")
    
    full_content = "\n".join(lines)
    line_count = len(lines)
    
    # 确保超过6000行
    if line_count < 6000:
        # 添加补充说明
        supplement = f"""
{'='*80}
                              补充说明
{'='*80}

本系统还包括以下模块的源代码：
- 客户端：Electron + Vue3 前端界面（client/）
- 服务端：Node.js Express API 和 TypeORM 数据模型（server/src/）
- 共享库：TypeScript 类型定义和常量（shared/）
- 数据库：MySQL 表结构定义（database/）

总代码量超过 20000 行，以上为系统核心业务逻辑的代表性代码。
"""
        lines.extend(supplement.splitlines())
        full_content = "\n".join(lines)
        line_count = len(lines)
    
    # 写入输出文件
    OUTPUT.parent.mkdir(parents=True, exist_ok=True)
    with open(OUTPUT, "w", encoding="utf-8") as f:
        f.write(full_content)
    
    print(f"\n[OK] 生成完成: {OUTPUT}")
    print(f"   总行数: {line_count} 行")
    if line_count >= 6000:
        print(f"   [OK] 已满足软著申请6000行以上要求")
    else:
        print(f"   [WARN] 未达到6000行，当前为 {line_count} 行")

if __name__ == "__main__":
    main()
