增加代码知识库;修复文档处理内容;增加API设置

This commit is contained in:
2026-05-16 20:20:10 +08:00
parent 69b49d28b2
commit 7aa3ce3294
119 changed files with 182273 additions and 793 deletions

View File

@@ -1,7 +1,7 @@
from datetime import datetime
import sqlalchemy as sa
from sqlalchemy import Column, DateTime, ForeignKey, Integer, JSON, String, Text
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, JSON, String, Text
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.orm import relationship
@@ -102,3 +102,70 @@ class TestingGeneration(Base, TimestampMixin):
job = relationship("ToolJob", back_populates="testing_generation", foreign_keys=[job_id])
class CodeKnowledgeBase(Base, TimestampMixin):
__tablename__ = "code_knowledge_bases"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
name = Column(String(255), nullable=False)
project_path = Column(String(1024), nullable=True)
vector_path = Column(String(1024), nullable=False)
metadata_path = Column(String(1024), nullable=False)
graph_path = Column(String(1024), nullable=False)
status = Column(String(32), nullable=False, default="active", index=True)
metadata_summary = Column(JSON, nullable=True)
user = relationship("User")
consistency_jobs = relationship(
"ConsistencyJob",
back_populates="code_kb",
cascade="all, delete-orphan",
)
class ConsistencyJob(Base, TimestampMixin):
__tablename__ = "consistency_jobs"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
srs_extraction_id = Column(Integer, ForeignKey("srs_extractions.id"), nullable=False, index=True)
code_kb_id = Column(Integer, ForeignKey("code_knowledge_bases.id"), nullable=False, index=True)
status = Column(String(32), nullable=False, default="pending", index=True)
total_requirements = Column(Integer, nullable=False, default=0)
completed_requirements = Column(Integer, nullable=False, default=0)
output_summary = Column(JSON, nullable=True)
error_message = Column(Text, nullable=True)
started_at = Column(DateTime, nullable=True)
completed_at = Column(DateTime, nullable=True)
user = relationship("User")
srs_extraction = relationship("SRSExtraction")
code_kb = relationship("CodeKnowledgeBase", back_populates="consistency_jobs")
results = relationship(
"ConsistencyResult",
back_populates="job",
cascade="all, delete-orphan",
order_by="ConsistencyResult.id",
)
class ConsistencyResult(Base, TimestampMixin):
__tablename__ = "consistency_results"
id = Column(Integer, primary_key=True, index=True)
job_id = Column(Integer, ForeignKey("consistency_jobs.id", ondelete="CASCADE"), nullable=False, index=True)
requirement_uid = Column(String(64), nullable=False, index=True)
verdict = Column(String(32), nullable=False, index=True)
coverage_score = Column(Float, nullable=False, default=0.0)
confidence = Column(Float, nullable=False, default=0.0)
matched_functions = Column(JSON, nullable=False)
covered_points = Column(JSON, nullable=False)
missing_points = Column(JSON, nullable=False)
conflict_points = Column(JSON, nullable=False)
call_chain_evidence = Column(JSON, nullable=False)
suggestion = Column(Text, nullable=True)
raw_judgment = Column(JSON, nullable=True)
job = relationship("ConsistencyJob", back_populates="results")