mj_bale_chat/inProcees_md.txt
2026-02-01 09:04:29 +00:00

271 lines
14 KiB
Plaintext

result ==> # Flowchart: Bale-Bot Backend System
## Main Application Flow
```
┌─────────────────────────────────────┐
│ main.py │
└──────────┬────────────────────────┘
┌─────────────────────────────────────┐
│ Lifespan Manager (Startup) │
│ ┌─────────────────────────────┐ │
│ │ Load .env variables │ │
│ │ Validate required vars │ │
│ │ Initialize ElasticHelper │ │
│ │ Set webhook URL │ │
│ │ Initialize UserManager │ │
│ │ Initialize Formatter │ │
│ │ Initialize RequestManager │ │
│ │ Initialize Operation │ │
│ │ Initialize BaleBotCore │ │
│ └─────────────────────────────┘ │
└──────────┬────────────────────────┘
┌─────────────────────────────────────┐
│ Application Factory │
│ ┌─────────────────────────────┐ │
│ │ Create FastAPI app │ │
│ │ Add CORS middleware │ │
│ │ Add health routes (/, /ping)│ │
│ │ Include Bale router │ │
│ └─────────────────────────────┘ │
└──────────┬────────────────────────┘
┌─────────────────────────────────────┐
│ FastAPI App Running │
└─────────────────────────────────────┘
```
## Core Classes Flow
### 1. ElasticHelper Class
```
┌─────────────────────────────────────┐
│ ElasticHelper │
├─────────────────────────────────────┤
│ __init__(es_url, es_pass, es_user) │
│ ┌─────────────────────────────┐ │
│ │ Connect to Elasticsearch │ │
│ │ Retry connection 10 times │ │
│ └─────────────────────────────┘ │
│ │
│ search(**params) │
│ get_document(index, id) │
│ exist_document(index, id) │
│ update_index_doc(is_update, ...) │
└─────────────────────────────────────┘
```
### 2. Formatter Class
```
┌─────────────────────────────────────┐
│ Formatter │
├─────────────────────────────────────┤
│ __init__(max_len) │
│ ┌─────────────────────────────┐ │
│ │ Initialize formatting tools │ │
│ │ Number mapping │ │
│ └─────────────────────────────┘ │
│ │
│ __getattr__(name) │
│ _bold(text) │
│ _number(value) │
│ _pretier1(text) │
│ __make_link_qq(src) │
│ __make_link_qs(src) │
│ │
│ form_search_in_law_rules(...) │
│ form_search_in_law(...) │
│ form_law_chat(answer_text) │
│ form_title_repeated(...) │
│ form_chat(llm_text, header) │
│ form_llm_answer_chat(...) │
│ form_subject_unity(...) │
│ structed_form_subject_unity(...) │
│ form_rule_making(...) │
│ get_asl(_in) │
│ get_in_form_single(asl, ...) │
│ form_constitution(input) │
│ form_constitution_low(...) │
│ form_ss_rules(...) │
│ form2_ss_rules(...) │
│ form_conflict_detection(...) │
│ form_conflict_type_detection(...) │
│ form_relation_identification(...) │
│ form_evaluation(...) │
│ from_law_writing_policy(...) │
└─────────────────────────────────────┘
```
### 3. RequestManager Class
```
┌─────────────────────────────────────┐
│ RequestManager │
├─────────────────────────────────────┤
│ __init__(host_url) │
│ ┌─────────────────────────────┐ │
│ │ Set base URL │ │
│ │ Define task URLs │ │
│ └─────────────────────────────┘ │
│ │
│ get_result(payload, url, ...) │
│ ┌─────────────────────────────┐ │
│ │ Async HTTP POST request │ │
│ │ Handle timeouts/errors │ │
│ └─────────────────────────────┘ │
│ │
│ stream_result(url, payload) │
│ ┌─────────────────────────────┐ │
│ │ Stream HTTP POST response │ │
│ │ Yield JSON lines │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
```
### 4. Operation Class
```
┌─────────────────────────────────────┐
│ Operation │
├─────────────────────────────────────┤
│ __init__(request_manager) │
│ │
│ search_in_law(query, limit, ...) │
│ stream_search_in_law(...) │
│ stream_rule_making(...) │
│ stream_chat_in_law(...) │
│ stream_rule_semantic_search(...) │
│ chat_in_law(query, effort, ...) │
│ title_repeated(qanontitle, ...) │
│ talk(query) │
│ conflict_qanon_asasi_low(...) │
│ conflict_qanon_asasi_steps(...) │
│ stream_logical_chat_in_law(...) │
│ conflict_law_writing_policy(...) │
└─────────────────────────────────────┘
```
### 5. UserManager Class
```
┌─────────────────────────────────────┐
│ UserManager │
├─────────────────────────────────────┤
│ __init__() │
│ ┌─────────────────────────────┐ │
│ │ Load VIP usernames │ │
│ │ Load temporary data │ │
│ └─────────────────────────────┘ │
│ │
│ get_or_create(update) │
│ ┌─────────────────────────────┐ │
│ │ Extract user info │ │
│ │ Check VIP status │ │
│ │ Create/update user object │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
```
### 6. BaleBotCore Class
```
┌─────────────────────────────────────┐
│ BaleBotCore │
├─────────────────────────────────────┤
│ __init__(...) │
│ ┌─────────────────────────────┐ │
│ │ Initialize UI handler │ │
│ │ Setup components │ │
│ └─────────────────────────────┘ │
│ │
│ render_user_state(user) │
│ ┌─────────────────────────────┐ │
│ │ Get user state │ │
│ │ Call appropriate handler │ │
│ └─────────────────────────────┘ │
│ │
│ render_update(update) │
│ ┌─────────────────────────────┐ │
│ │ Process incoming updates │ │
│ │ Route to handlers │ │
│ └─────────────────────────────┘ │
│ │
│ handle_main(user) │
│ handle_search_in_law(user) │
│ handle_rule_making(user) │
│ handle_chat_in_law(user) │
│ handle_qanon_title_repeat(user) │
│ handle_talk(user) │
│ handle_logical_chat_in_law(user) │
│ handle_conflict_qanon_asasi(user) │
│ handle_conflict_law_writing_policy(user) │
│ handle_subject_unities_to_evalution(user) │
│ handle_summary_conflict_all_qavanin(user) │
│ handle_full_conflict_all_qavanin(user) │
│ handle_conflict_general_policy(user) │
│ handle_advanced_check_conflict(user) │
│ handle_stream_chat(user) │
│ handle_beta(user) │
│ │
│ save_to_db(user, data) │
└─────────────────────────────────────┘
```
### 7. BaleBotBase Class
```
┌─────────────────────────────────────┐
│ BaleBotBase │
├─────────────────────────────────────┤
│ __init__(send_msg_url, ...) │
│ │
│ delete_bale_message(chat_id, message_id) │
│ update_bale_message(user, text, buttons) │
│ serialize(obj) │
│ normalize_messages(...) │
│ send_message_helper(...) │
│ send_bale_message(...) │
└─────────────────────────────────────┘
```
### 8. BaleBotUI Class
```
┌─────────────────────────────────────┐
│ BaleBotUI │
├─────────────────────────────────────┤
│ __init__(delay_time, ...) │
│ ┌─────────────────────────────┐ │
│ │ Initialize heartbeat settings │ │
│ └─────────────────────────────┘ │
│ │
│ active(user) │
│ cancel(user) │
│ create(user, main_text, waiting_list) │
│ heartbeat_loop(user, waiting_list) │
└─────────────────────────────────────┘
```
### 9. StackManager Class
```
┌─────────────────────────────────────┐
│ StackManager │
├─────────────────────────────────────┤
│ push(output_pure_data, ...) │
│ last_item(user) │
│ get_last_item_metadata(user) │
│ prev_item(user) │
│ get(user, name) │
│ cleanup(user) │
│ set_runtime(user, index, runtime_ms) │
└─────────────────────────────────────┘
```
## Data Flow Between Components
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ FastAPI App │───▶│ BaleBotCore │───▶│ RequestManager │
└─────────────────┘ │ │ │ │
│ │ │ │
│ │ │ │