修改多个问题,优化代码结构

This commit is contained in:
strepsiades
2026-04-01 16:23:43 +08:00
parent 8f4727a772
commit 7c49df94fc
29 changed files with 968 additions and 504 deletions
+9 -3
View File
@@ -48,7 +48,6 @@ from ..config import (
from ..config.strategy_config import resolve_domain_option_config
from ..sync_system.strategy import BaseSyncStrategy
from ..logging import configure_app_logging, ensure_app_logging, get_logger
from .run_logger import init_pipeline_logger
from .full_sync_pipeline import FullSyncPipeline
@@ -458,9 +457,16 @@ async def run_profile_from_file(
cfg_path = Path(config_path)
raw = load_overrides_from_file(cfg_path, project_root)
if is_multi_project_payload(raw):
from .multi_project_pipeline import MultiProjectPipeline
from .multi_project_pipeline import MultiProjectPipeline, _resolve_embedded_config_path
multi_cfg = MultiProjectRunConfig.model_validate(raw)
global_cfg_path = _resolve_embedded_config_path(
multi_cfg.global_config,
project_root=project_root,
profile_path=cfg_path,
)
global_config = build_config_from_file(project_root=project_root, file_path=global_cfg_path)
configure_app_logging(global_config.logging, replace_handlers=True)
pipeline = MultiProjectPipeline(project_root=project_root, config_path=cfg_path, config=multi_cfg)
if print_summary:
logger.info("\n%s", "=" * 80)
@@ -469,7 +475,7 @@ async def run_profile_from_file(
return await pipeline.run()
config = build_config(project_root=project_root, overrides=raw)
configure_app_logging(config.logging, replace_handlers=False)
configure_app_logging(config.logging, replace_handlers=True)
mode = f"{config.local_datasource.type}->{config.remote_datasource.type}"
return await run_pipeline_from_config(
config,
@@ -15,17 +15,19 @@ if TYPE_CHECKING:
from ..datasource.jsonl import JsonlDataSource
from ..common.collection import DataCollection
from ..common.binding import BindingManager
from ..logging import get_logger
from ..common.persistence import PersistenceBackend
from ..sync_system.strategy import BaseSyncStrategy
from ..sync_system.config import OrphanAction, UpdateDirection
from ..engine import StateMachineConfig, StateMachineRuntime
from ..engine import e41_post_create_ready
from ..sync_system.strategy_ops import finalize_peer_creating_sources, run_phase2_cleanup
from ..sync_system.strategy_ops.bind_ops import refresh_bind_data_id
from ..sync_system.strategy_ops.post_check_ops import evaluate_consistency_for_node_type
from .summary_report import print_pipeline_summary
logger = logging.getLogger(__name__)
logger = get_logger(__name__)
class FullSyncPipeline:
@@ -211,10 +213,24 @@ class FullSyncPipeline:
try:
created = await strategy.create()
self._logger.info(f"✅ Strategy create: {node_type} (created={len(created)})")
created_local_node_ids = {
node.node_id for node in created if self.local_collection.get_by_node_id(node.node_id) is not None
}
created_remote_node_ids = {
node.node_id for node in created if self.remote_collection.get_by_node_id(node.node_id) is not None
}
create_written = await self.commit_creates(node_type)
await self.normalize_create_success_to_update_entry(node_type)
if create_written:
await self._reload_node_type(node_type, reason="create wrote data")
await refresh_bind_data_id(
node_type=node_type,
local_collection=self.local_collection,
remote_collection=self.remote_collection,
binding_manager=self.binding_manager,
local_node_ids=created_local_node_ids,
remote_node_ids=created_remote_node_ids,
)
except Exception as exc:
self.stats["failed"] += 1
self._logger.error(f"❌ Strategy create failed but pipeline continues: {node_type} | {type(exc).__name__}: {exc}")
@@ -12,10 +12,11 @@ from ..config import (
apply_config_overrides,
build_config_from_file,
)
from ..logging import get_logger
from .factory import create_pipeline_from_config
logger = logging.getLogger(__name__)
logger = get_logger(__name__)
class _SharedStateSnapshot(TypedDict):