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, andsys_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:
usersfeishu_sessionsraw_qa_itemsstandard_qa_itemstask_runsaudit_logssystem_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
SpaceIDandNodeID. - 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.
Recommended Technical Direction
- Keep
ai_knowledge_base_v2/as the new context and planning workspace. - Create a new V2 application folder after architecture confirmation, rather than mutating old V1 files in place.
- Keep backend modular from day one:
authusersadminsknowledgechatragpromptsmodelsconfiglogs
- Keep services separated:
SmsCodeServiceTokenServiceFeishuKnowledgeServiceRagServiceModelClientChatServiceAuditLogService
- Make mock providers explicit for local development:
- mock SMS code
- mock model response
- mock Feishu retrieval
- 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
- Confirm whether V2 should be implemented in this repository under a new app folder, or whether this repository should become the V2 repository.
- Draft V2 architecture and module plan in
development_records/. - Scaffold V2 backend with the
sys_*domain model and auth boundary. - Scaffold V2 H5/user frontend around the documented chat APIs and SSE.
- Add admin frontend pages according to the prototype document.
- Keep old V1 code untouched until a deliberate migration or replacement decision is made.