Files
QuestionProject/ai_knowledge_base_v2/reports/legacy_reuse_evaluation.md

7.5 KiB

Legacy Reuse Evaluation

Date: 2026-07-06

Conclusion

The existing project can provide useful engineering references, but it should not be directly extended as-is for the new requirement.

The old project is a 大本营答疑资产后台系统 MVP. Its core flow is:

Feishu session/transcript -> AI cleaning -> raw QA -> manual review -> standard QA -> manually marked callable QA

The new project is an AI 企业知识库问答系统. Its core flow is:

User login -> authorized knowledge bases -> real-time Feishu retrieval -> Prompt assembly -> model streaming answer -> chat/history/log persistence

These two systems both touch "QA" and "Feishu", but their domain models, permissions, APIs, database tables, and user workflows are different. For long-term maintainability, V2 should use a new domain model and only reuse selected implementation patterns or small infrastructure pieces.

New Requirement Snapshot

Source documents define the V2 target as:

  • Feishu knowledge base is the only phase-one knowledge source.
  • Phase one does not build an independent local knowledge base, does not manually sync content, and does not maintain a vector database sync.
  • User login uses phone number + SMS verification code.
  • Admin login uses username + password.
  • AI chat supports sessions, history, streaming output, stop generation, Markdown rendering, auto title, and daily chat quota.
  • AI can only answer from the user's authorized knowledge bases and retrieved snippets.
  • No-hit answer must be: 当前知识库中未检索到相关内容,请联系管理员补充相关知识。
  • Feishu/model failures need unified fallback messages and logs.
  • Admin backend includes dashboard, user management, admin management, knowledge base management, Prompt management, model management, chat records, system config, and operation logs.
  • Core database tables include sys_user, sys_admin, sys_role, sys_knowledge, sys_user_kb, sys_chat_session, sys_chat_message, sys_prompt, sys_model, sys_system_config, sys_ai_request_log, and sys_operation_log.

Existing Code Overview

The old project currently uses:

  • Backend: FastAPI, SQLAlchemy, Pydantic, APScheduler, HTTPX.
  • Frontend: Next.js, React, TypeScript, TailwindCSS.
  • Database: PostgreSQL preferred, SQLite fallback.
  • AI: OpenAI-compatible chat completions with mock fallback.
  • Feishu: Bitable/document adapter with mock fallback.
  • Existing H5 page: mobile-first chat surface connected to /api/standard-qa/callable.

The old database model centers on:

  • users
  • feishu_sessions
  • raw_qa_items
  • standard_qa_items
  • task_runs
  • audit_logs
  • system_settings

Reuse Assessment

Area Reuse Level Recommendation
FastAPI application skeleton High Reuse routing style, settings pattern, CORS setup, dependency injection, and service layering ideas.
SQLAlchemy/Pydantic conventions Medium Reuse coding style, but rebuild models for sys_* tables required by V2.
Next.js/Tailwind frontend setup Medium Reuse project setup and visual implementation experience; rebuild pages around V2 user/admin flows.
H5 chat UI interaction Medium Reuse mobile-first interaction ideas such as compact header, chat bubbles, input ergonomics, and local loading states. Replace old callable-QA matching with real /chat/completions SSE.
Feishu service adapter Medium Reuse token acquisition, HTTP wrapper, document text extraction ideas, and mock-mode pattern. V2 still needs a new Feishu knowledge retrieval service matching SpaceID/NodeID and real-time search.
AI API wrapper Medium Reuse OpenAI-compatible request pattern. V2 needs streaming, cancellation, Prompt assembly, token logging, and model config from database.
Operation/task logs Low to Medium Reuse audit/logging ideas. V2 needs sys_operation_log and sys_ai_request_log, not old QA audit semantics.
Scheduler/task runner Low V2 phase one says no manual sync or vector DB sync, so scheduled QA processing is not core. Keep only if later needed for maintenance jobs.
Old QA review domain Low Do not reuse as V2 core. Raw/standard QA review, risk/desensitization, and callable status are old-domain concepts.
Existing /standard-qa/callable H5 API Low Replace with V2 chat/session/history APIs. It can stay as old system behavior but should not drive V2.
Docker Compose Medium Reuse containerization pattern, but V2 should switch DB target to MySQL 8.x per documents or explicitly record a deviation if PostgreSQL remains.

Gap Analysis

Must build or redesign for V2:

  • User SMS login, token/session invalidation, account expiry, and daily quota.
  • Admin username/password login and role/permission control.
  • Knowledge base management using SpaceID and NodeID.
  • User-to-knowledge permission table with effective/expired dates.
  • Chat session and message persistence.
  • SSE streaming endpoint POST /chat/completions.
  • Stop-generation endpoint POST /chat/stop.
  • Prompt management and active Prompt loading.
  • Model management with API URL/API key/model settings.
  • System config for login expiry, daily chat count, AI timeout, Feishu retries, context length, source display, and disabled web search.
  • Real-time Feishu retrieval with permission filtering.
  • AI request log with prompt, retrieval knowledge IDs, token usage, latency, status, and error.
  • Admin chat query/detail/export APIs.
  • UAT/test coverage around permission isolation and no-hallucination fallback.
  1. Keep ai_knowledge_base_v2/ as the new context and planning workspace.
  2. Create a new V2 application folder after architecture confirmation, rather than mutating old V1 files in place.
  3. Keep backend modular from day one:
    • auth
    • users
    • admins
    • knowledge
    • chat
    • rag
    • prompts
    • models
    • config
    • logs
  4. Keep services separated:
    • SmsCodeService
    • TokenService
    • FeishuKnowledgeService
    • RagService
    • ModelClient
    • ChatService
    • AuditLogService
  5. Make mock providers explicit for local development:
    • mock SMS code
    • mock model response
    • mock Feishu retrieval
  6. Do not store production model API keys in plain text unless a security decision is documented. Prefer environment secret references or encrypted storage.

Risk Notes

  • The new documents specify MySQL 8.x, while the existing project uses PostgreSQL/SQLite. This is a deployment and migration decision, not a small code change.
  • The documents say "Feishu updates immediately effective" and "real-time retrieval"; this depends on actual Feishu APIs and tenant permissions. A technical spike should validate retrieval behavior early.
  • Streaming and stop-generation affect backend request lifecycle, frontend rendering, and persistence semantics. This should be implemented as a first-class chat capability, not as an afterthought.
  • Permissions are central to the product. Every chat retrieval path must filter knowledge bases before retrieval and log what was used.

Immediate Next Steps

  1. Confirm whether V2 should be implemented in this repository under a new app folder, or whether this repository should become the V2 repository.
  2. Draft V2 architecture and module plan in development_records/.
  3. Scaffold V2 backend with the sys_* domain model and auth boundary.
  4. Scaffold V2 H5/user frontend around the documented chat APIs and SSE.
  5. Add admin frontend pages according to the prototype document.
  6. Keep old V1 code untouched until a deliberate migration or replacement decision is made.