""" 测试浏览视图功能 创建测试数据并启动浏览视图进行验证 """ import sys from datetime import datetime from pathlib import Path from PyQt6.QtWidgets import QApplication from PyQt6.QtCore import Qt # 添加项目路径 sys.path.insert(0, str(Path(__file__).parent.parent)) from src.models.database import init_database, Record, RecordCategory, get_db from src.gui.widgets.browse_view import BrowseView def create_test_data(): """创建测试数据""" print("正在创建测试数据...") # 初始化数据库 db_path = "sqlite:////home/congsh/CodeSpace/ClaudeSpace/CutThenThink/data/cutnthink.db" init_database(db_path) session = get_db() # 检查是否已有数据 existing_count = session.query(Record).count() if existing_count > 0: print(f"数据库中已有 {existing_count} 条记录,跳过创建测试数据") session.close() return # 创建测试记录 test_records = [ { "image_path": "/tmp/test_todo_1.png", "ocr_text": "完成项目报告\n需要在周五之前提交季度报告给老板", "category": RecordCategory.TODO, "ai_result": """# 任务分析 这是一个待办事项,需要在周五之前完成。 ## 行动建议 1. 整理季度数据和成果 2. 撰写报告草稿 3. 请同事审阅 4. 最终修改并提交 **截止时间**: 本周五""", "tags": ["工作", "报告"], "notes": "重要优先级高" }, { "image_path": "/tmp/test_note_1.png", "ocr_text": "Python学习笔记\n\n1. 列表推导式: [x*2 for x in range(10)]\n2. 装饰器: @property\n3. 生成器: yield", "category": RecordCategory.NOTE, "ai_result": """# Python笔记摘要 这份笔记涵盖了三个重要的Python概念: - 列表推导式: 简洁的列表创建方式 - 装饰器: 修改函数行为的工具 - 生成器: 内存友好的迭代器 **建议**: 可以添加更多实际例子加深理解。""", "tags": ["编程", "Python"], "notes": "需要复习装饰器部分" }, { "image_path": "/tmp/test_idea_1.png", "ocr_text": "产品创意:智能日程助手\n\n功能:\n- 自动识别会议邀请\n- 智能安排时间\n- 提醒重要事项", "category": RecordCategory.IDEA, "ai_result": """# 创意评估 这是一个很好的产品方向! ## 优势 - 解决实际痛点 - 技术可行性高 ## 建议 1. 先做MVP验证核心功能 2. 考虑与现有日历应用集成 3. 加入AI推荐功能 **推荐指数**: ⭐⭐⭐⭐⭐""", "tags": ["产品", "创意"], "notes": "可以作为下一个项目" }, { "image_path": "/tmp/test_ref_1.png", "ocr_text": "Django REST Framework 官方文档\n\nhttps://www.django-rest-framework.org/\n\nViewSets和Routers的使用", "category": RecordCategory.REF, "ai_result": """# 学习资源 Django REST Framework 是构建Web API的强大工具。 ## 核心概念 - **Serializers**: 数据序列化和验证 - **ViewSets**: 视图逻辑组织 - **Routers**: URL自动生成 ## 建议学习路径 1. 快速入门教程 2. 序列化器深入 3. 认证和权限""", "tags": ["文档", "Django"], "notes": "需要深入学习认证部分" }, { "image_path": "/tmp/test_funny_1.png", "ocr_text": "程序员段子\n\n程序员最讨厌的四件事:\n1. 写注释\n2. 写文档\n3. 别人不写注释\n4. 别人不写文档", "category": RecordCategory.FUNNY, "ai_result": """# 😄 经典段子 这是一个程序员圈子里很火的段子! ## 为什么好笑 - 说出了程序员的心声 - 既矛盾又真实 - 自嘲式幽默 ## 启示 代码质量很重要,但也不能忽视文档工作啊~ 😅""", "tags": ["幽默", "程序员"], "notes": "太真实了" }, { "image_path": "/tmp/test_text_1.png", "ocr_text": "这是一段普通的文本内容,用于测试纯文本类型的记录。\n\n可以包含各种文字信息,比如会议记录、聊天记录等。", "category": RecordCategory.TEXT, "ai_result": None, "tags": ["测试"], "notes": "测试用文本记录" }, # TODO类型更多测试数据 { "image_path": "/tmp/test_todo_2.png", "ocr_text": "买咖啡 ☕\n\n- 意式浓缩豆\n- 拿铁咖啡豆\n- 滤纸", "category": RecordCategory.TODO, "ai_result": "# 购物清单\n\n记得去超市买咖啡用品!", "tags": ["购物", "咖啡"], "notes": "周末去买" }, # NOTE类型更多测试数据 { "image_path": "/tmp/test_note_2.png", "ocr_text": "会议记录 - 产品评审\n\n日期: 2024-01-15\n\n讨论内容:\n1. 新功能开发计划\n2. 用户反馈处理\n3. 下季度规划", "category": RecordCategory.NOTE, "ai_result": """# 会议要点 ## 产品评审会议 **日期**: 2024-01-15 ### 决策事项 1. 新功能开发优先级已确定 2. 用户反馈需要建立跟进机制 3. 下季度开始筹备规划会议 ### 行动项 - [ ] 整理会议纪要 - [ ] 跟进各个部门负责人""", "tags": ["会议", "工作"], "notes": "重要会议" }, ] # 添加记录到数据库 for i, data in enumerate(test_records): record = Record( image_path=data["image_path"], ocr_text=data["ocr_text"], category=data["category"], ai_result=data.get("ai_result"), tags=data.get("tags"), notes=data.get("notes"), created_at=datetime.now(), ) session.add(record) print(f"已创建测试记录 {i+1}/{len(test_records)}: {data['category']}") session.commit() print(f"\n成功创建 {len(test_records)} 条测试记录") session.close() def main(): """主函数""" # 创建应用 app = QApplication(sys.argv) app.setApplicationName("CutThenThink 浏览视图测试") # 创建测试数据 create_test_data() # 创建并显示浏览视图 view = BrowseView() view.setWindowTitle("浏览视图测试") view.resize(1200, 800) view.show() # 运行应用 sys.exit(app.exec()) if __name__ == "__main__": main()