Skip to content

Latest commit

 

History

History
270 lines (268 loc) · 16.1 KB

File metadata and controls

270 lines (268 loc) · 16.1 KB

Project Structure

This document contains the current project structure. It keeps only the directory skeleton and core files, omitting runtime/cache directories such as .git, .venv, .pytest_cache, .ruff_cache, and __pycache__.

toLink-Rag/                         # 仓库根目录
├── .agents/                      # Agent/Skill 配置
│   └── skills/                   # 项目专用 Agent 技能
│       ├── agents-tree-sync/     # AGENTS.md 目录树同步规则
│       ├── auto-test/            # 自动化测试生成工作流
│       ├── branch-pr-workflow/   # dev 分支交付收口与 PR 创建工作流
│       ├── code-annotator/       # 代码注释生成工作流
│       ├── code-review-and-quality/ # 代码审查与质量门禁
│       ├── contract-guard/       # 跨模块公共契约校验
│       ├── doc-maintenance-sync/ # 项目文档同步维护规则
│       ├── implementation-execution/ # 需求实现执行流程
│       ├── mq-middleware/        # MQ 中台开发规范
│       ├── mysql-ddl-conventions/ # MySQL DDL 规范
│       ├── acceptance-generator/ # Gherkin 验收契约生成工作流(替代旧版 PRD)
│       ├── brief-generator/      # 需求 brief 生成工作流(替代旧版需求预分析)
│       ├── run-all-tests/        # 全量测试运行工作流
│       ├── skill-optimizer/      # 既有 Skill 优化工作流
│       ├── swagger-annotation/   # Swagger 注解生成工作流
│       ├── tdd/                  # 测试驱动开发工作流
│       └── technical-design/     # 技术设计生成工作流
├── .env.example                  # 环境变量样例
├── AGENTS.md                     # 项目级 Agent 入口(与 CLAUDE.md 内容同步)
├── CLAUDE.md                     # 项目统一入口:使用说明 + 文档目录
├── README.md                     # 面向用户的项目介绍
├── docker-compose.yml            # 本地依赖编排
├── pyproject.toml                # Python 依赖与项目配置
├── docs/                         # 项目文档(按读者旅程组织)
│   ├── README.md                 # 一页索引
│   ├── api/                      # 对外契约:HTTP / MQ / Schema / 错误码
│   │   ├── http_contracts.md
│   │   ├── mq_contracts.md
│   │   ├── error_codes.md
│   │   └── schemas/              # MySQL / Qdrant / Elasticsearch
│   ├── internals/                # 内部实现:模块、约定
│   │   ├── project_structure.md
│   │   ├── pipeline_architecture.md
│   │   ├── parse_task_pipeline.md
│   │   ├── recall_pipeline.md
│   │   ├── recall_http_api.md
│   │   ├── file_parser.md
│   │   ├── markdown_parser.md
│   │   ├── chunking.md
│   │   ├── vectorization.md
│   │   ├── sparse_vector.md
│   │   ├── preprocessor.md
│   │   ├── es_index_storage.md
│   │   ├── mq.md
│   │   ├── llm.md
│   │   ├── cache.md
│   │   ├── object_storage.md
│   │   └── naming_conventions.md
│   ├── ops/                      # 部署与配置
│   │   ├── deploy.md
│   │   └── configure.md
│   └── contributing.md           # 分支/提交/测试/迁移/文档同步
├── alembic.ini                   # Alembic 配置入口
├── migrations/                   # Alembic 数据库迁移
│   ├── env.py                    # 运行环境:DB URL + 合并 Base.metadata
│   ├── script.py.mako            # 迁移文件模板
│   ├── db.sql                    # 0001 baseline 冻结快照(DDL,冷启动用;禁止改动)
│   └── versions/                 # 版本化迁移脚本(NNNN_YYYYMMDD_slug.py)
├── scripts/                      # 可执行脚本
│   ├── db/                       # 数据库初始化脚本
│   │   ├── init.sql              # 叠加全部 migration 后的当前完整结构快照(仅供查阅)
│   │   └── schema.sql            # 初始化数据脚本
├── src/                          # 应用源码
│   ├── config.py                 # 全局配置
│   ├── database.py               # 数据库初始化入口
│   ├── main.py                   # FastAPI 应用入口
│   ├── nltk_bootstrap.py         # NLTK 数据路径引导(项目内 nltk_data 优先)
│   ├── api/                      # HTTP API 分层
│   │   ├── internal_auth.py       # Java 管理端内部接口鉴权
│   │   ├── recall_session_auth.py # 召回会话鉴权
│   │   ├── recall_pipeline_provider.py # 召回 Pipeline 装配/提供
│   │   ├── recall_stream_runtime.py    # 召回流式运行时
│   │   ├── routes/               # 路由层
│   │   │   ├── internal.py        # Java 管理端内部 LLM 配置/用量接口
│   │   │   ├── llm.py
│   │   │   ├── mq.py
│   │   │   ├── parse.py
│   │   │   ├── recall.py          # 召回 HTTP 入口
│   │   │   └── recall_direct.py   # 直连召回入口
│   │   └── schemas/              # HTTP 请求/响应模型
│   │       ├── mq.py
│   │       └── parse.py
│   ├── cache/                    # 缓存客户端与缓存基础设施
│   │   ├── redis_client.py       # 异步 Redis 连接单例
│   │   └── cache_manager.py      # CacheManager + 后端抽象(Redis / Null)
│   ├── core/                     # 核心能力与基础设施
│   │   ├── database.py
│   │   ├── llm/                  # LLM 抽象、工厂与厂商适配
│   │   │   ├── factory.py
│   │   │   ├── interfaces.py
│   │   │   ├── base_provider.py
│   │   │   ├── circuit_breaker.py  # 厂商调用熔断
│   │   │   ├── encryption.py       # 用户密钥加解密
│   │   │   ├── exceptions.py
│   │   │   ├── response.py
│   │   │   ├── tokenizer.py
│   │   │   ├── user_model_resolver.py # 用户模型选择解析
│   │   │   └── providers/        # LLM 提供方实现(openai/anthropic/qwen/glm/deepseek)
│   │   ├── pipeline/             # 业务流水线编排
│   │   │   ├── parse_task/        # 解析任务主编排
│   │   │   │   ├── pipeline.py     # ParseTaskPipeline 薄编排(分流/幂等/校验/重试)
│   │   │   │   ├── constants.py    # 解析任务状态、通知文案等流水线常量
│   │   │   │   ├── error_codes.py
│   │   │   │   ├── models.py
│   │   │   │   ├── log_repository.py / source.py / notifier.py / validator.py / temp_workspace.py / _utils.py
│   │   │   │   ├── stages/         # 类化阶段编排(base/context/services + cleaning/chunking/
│   │   │   │   │                   #   vectorizing/sparse_vectorizing/pretokenize/es_indexing)
│   │   │   │   └── post_process/   # 文件级后处理状态机(constants/models/repository)
│   │   │   └── recall/            # 多路召回 Pipeline(pipeline/models/protocols/fusion/exceptions)
│   │   ├── preprocessor/         # ES 预分词:RAGFlow 分词 → FilePostIndexPlan
│   │   │   ├── service.py         # Preprocessor:读 chunk 构建预分词计划
│   │   │   ├── ragflow_tokenizer.py # RagFlowTokenizer 适配
│   │   │   └── models.py          # FileIndexMeta / ChunkWithTokens / FilePostIndexPlan
│   │   ├── sparse_vector/        # BGE-M3 稀疏向量编码与索引
│   │   │   ├── encoder.py / http_encoder.py / remote_encoder.py # 本地 / 远程编码器
│   │   │   ├── factory.py         # 按 provider 装配 SparseVectorService
│   │   │   ├── pipeline.py        # SparseVectorService 服务接口
│   │   │   ├── indexing.py        # SparseIndexingPipeline 文件级索引阶段
│   │   │   ├── sparse_retriever.py # 召回 Pipeline 适配器
│   │   │   ├── deploy_bge_m3.py   # 本地模型部署/冒烟脚本
│   │   │   └── constants.py / models.py / exceptions.py
│   │   ├── prompts/              # LLM 提示词模板
│   │   │   └── markdown_enhancement.py
│   │   ├── markdown_parser/      # Markdown 解析与增强编排
│   │   │   ├── image_extractor.py
│   │   │   ├── llm_integration.py
│   │   │   ├── models.py
│   │   │   ├── orchestrator.py
│   │   │   ├── parser.py
│   │   │   ├── provider_clients.py
│   │   │   └── scanner.py
│   │   ├── mq/                   # MQ 中台核心实现
│   │   │   ├── factory.py        # MQFactory
│   │   │   ├── interfaces.py
│   │   │   ├── message.py        # AbstractMessage / MessagePayload
│   │   │   ├── exceptions.py
│   │   │   ├── retry.py          # 消费重试策略
│   │   │   ├── topic_admin.py    # Topic 初始化逻辑
│   │   │   ├── consumers/        # MQ 消费者
│   │   │   │   └── parse_task_consumer.py
│   │   │   ├── messages/         # MQ 业务消息
│   │   │   │   ├── parse_task.py
│   │   │   │   ├── parse_result.py
│   │   │   │   ├── cache_sync.py
│   │   │   │   └── usage_report.py
│   │   │   └── vendors/          # MQ 厂商适配
│   │   │       ├── rabbitmq_adapter.py
│   │   │       └── kafka/        # Kafka 适配与 Topic 管理
│   │   │           ├── kafka_adapter.py
│   │   │           └── topic_admin.py
│   │   ├── parser/               # 文档解析器抽象与实现
│   │   │   ├── base.py
│   │   │   ├── factory.py
│   │   │   ├── html/             # HTML DOM 解析、表格处理和图片引用重写
│   │   │   │   ├── image_rewriter.py
│   │   │   │   ├── models.py
│   │   │   │   ├── renderer.py
│   │   │   │   ├── service.py
│   │   │   │   └── table_processor.py
│   │   │   ├── pdf/              # PDF 解析服务与后端
│   │   │   │   ├── base.py
│   │   │   │   ├── models.py
│   │   │   │   ├── registry.py    # PDF 解析后端注册表
│   │   │   │   ├── service.py
│   │   │   │   └── backends/     # PDF 解析后端实现
│   │   │   │       ├── mineru_backend.py
│   │   │   │       ├── opendataloader_backend.py
│   │   │   │       └── naive_backend.py
│   │   │   └── providers/        # 多格式解析器实现
│   │   │       ├── html_parser.py
│   │   │       ├── pdf_parser.py
│   │   │       └── word_parser.py
│   │   ├── splitter/             # 文本切分与嵌入流水线
│   │   │   ├── base.py
│   │   │   ├── chunking_engine.py
│   │   │   ├── embedding_pipeline.py
│   │   │   ├── models.py
│   │   │   ├── pipeline_chunker.py
│   │   │   ├── rule_chunker.py
│   │   │   └── semantic_chunker.py
│   │   ├── chunk_fact_storage/   # Chunk SQL 事实存储
│   │   │   ├── constants.py
│   │   │   ├── exceptions.py
│   │   │   ├── models.py
│   │   │   └── repository.py
│   │   ├── es_index_storage/      # ES 入库 + BM25 检索
│   │   │   ├── client.py          # 进程级 AsyncElasticsearch 单例
│   │   │   ├── mapping.py         # ES index settings + mappings
│   │   │   ├── document_factory.py / batcher.py # chunk → bulk action / 分批
│   │   │   ├── pipeline.py        # EsIndexingPipeline 入库阶段
│   │   │   ├── retrieval.py       # EsBm25Retriever BM25 检索
│   │   │   ├── bm25_retriever.py  # 召回 Pipeline 适配器
│   │   │   ├── retrieval_models.py # Bm25RecallRequest / Bm25ChunkHit
│   │   │   ├── smoke.py           # 集成测试冒烟工具
│   │   │   └── models.py / exceptions.py
│   │   ├── qdrant_vector_storage/ # Qdrant 向量索引存储
│   │   │   ├── bucket_router.py
│   │   │   ├── constants.py
│   │   │   ├── exceptions.py
│   │   │   ├── models.py
│   │   │   ├── point_factory.py
│   │   │   └── qdrant_store.py
│   │   └── vector_storage/       # 向量存储编排层
│   │       ├── compensation_pipeline.py
│   │       ├── constants.py
│   │       ├── draft_factory.py
│   │       ├── exceptions.py
│   │       ├── facade.py
│   │       ├── factory.py
│   │       ├── management_pipeline.py
│   │       ├── models.py
│   │       ├── pipeline.py
│   │       ├── repair_policy.py
│   │       └── _transaction.py
│   ├── models/                   # ORM 模型
│   │   ├── chunk_record.py
│   │   ├── db_models.py
│   │   ├── parse_task.py
│   │   ├── system_provider.py
│   │   ├── usage_log.py
│   │   └── user_llm_config.py
│   ├── services/                 # 服务层
│   │   ├── mq_service.py
│   │   ├── parse_task_service.py
│   │   ├── cache_sync_service.py
│   │   ├── config_reader_service.py
│   │   ├── usage_log_service.py
│   │   └── storage/              # 对象存储抽象与实现
│   │       ├── base.py
│   │       ├── factory.py
│   │       ├── minio_storage.py
│   │       └── oss_storage.py
│   └── utils/                    # 通用工具函数
│       ├── logger.py
│       └── text_formatter.py
└── tests/                        # 测试目录
    ├── README.md                 # pytest 统一入口(marker/集成测试开关)
    ├── conftest.py               # 测试分层与运行约定
    ├── unit/                     # 单元测试 (Mock 驱动)
    │   ├── api/                  # API 层单元测试
    │   ├── core/                 # 核心模块单元测试
    │   │   ├── llm/              # LLM 模块单元测试
    │   │   ├── mq/               # MQ 模块单元测试
    │   │   ├── parser/           # 解析器模块单元测试
    │   │   ├── chunk_fact_storage/ # Chunk 事实存储单元测试
    │   │   ├── es_index_storage/ # ES 入库阶段单元测试
    │   │   ├── pipeline/         # 解析流水线单元测试
    │   │   ├── qdrant_vector_storage/ # Qdrant 存储单元测试
    │   │   ├── splitter/         # 切分模块单元测试
    │   │   └── vector_storage/   # 向量存储编排单元测试
    │   └── services/             # 服务层单元测试
    └── integration/              # 集成测试
        ├── api/                  # API 层集成测试
        ├── core/                 # 核心模块集成测试
        │   ├── llm/              # LLM 模块集成测试
        │   ├── markdown_parser/  # Markdown 解析集成测试
        │   ├── qdrant_vector_storage/ # Qdrant 存储集成测试
        │   ├── splitter/         # 切分模块集成测试
        │   └── vector_storage/   # 向量存储编排集成测试
        ├── services/             # 服务层集成测试
        └── test_connectivity.py