Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
11 KiB
<EFBFBD>唳旿摨栞挽霈∟<EFBFBD><EFBFBD>?
*<EFBFBD><EFBFBD>𧋦嚗? v2.0
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD> 2025-11-06
<EFBFBD>唳旿摨橒<EFBFBD> PostgreSQL 15+
*ORM嚗? Prisma
*<EFBFBD><EFBFBD>鍂<EFBFBD><EFBFBD>凒嚗? 撟喳蝱撅?+ <20>賢<EFBFBD>撅?+ 銝𡁜𦛚璅∪<E79285>撅?
<EFBFBD><EFBFBD> <20>詨<EFBFBD><E8A9A8>笔<EFBFBD>
<EFBFBD>祈<EFBFBD><EFBFBD><EFBFBD>糓<EFBFBD><EFBFBD><EFBFBD>㗇芋<EFBFBD>埈㺭<EFBFBD>桀<EFBFBD>霈曇恣<EFBFBD><EFBFBD>抅蝖<EFBFBD>閫<EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD>憿颱艇<EFBFBD>潮<EFBFBD>摰<EFBFBD><EFBFBD>?
*霈曇恣<EFBFBD>笔<EFBFBD>嚗?
- <EFBFBD>?<3F>萄儐蝚砌<E89D9A><E7A08C><EFBFBD><EFBFBD>嚗?NF嚗?
- <EFBFBD>?雿輻鍂SERIAL雿靝蛹銝駁睸嚗<E79DB8>㟲<EFBFBD>啗䌊憓痹<E68693><E797B9>扯<EFBFBD><E689AF>游末嚗?
- <EFBFBD>?<3F><><EFBFBD>㕑”<E39591><E2809D>鉄created_at<61>吴pdated_at<61>園𡢿<E59C92>?
- <EFBFBD>?<3F>滩<EFBFBD>銵其蝙<E585B6>刻蔓<E588BB>𣳇膄嚗<E88684><E59A97><EFBFBD>羮eleted_at摮埈挾嚗?
- <EFBFBD>?憭㚚睸蝥行<E89DA5>雿輻鍂ON DELETE CASCADE
- <EFBFBD>?<3F>𤩺<EFBFBD>摮埈挾<E59F88>惩<EFBFBD>摮睃<E691AE>嚗<EFBFBD><E59A97><EFBFBD><EFBFBD>蝙<EFBFBD>灸crypt嚗?
<EFBFBD><EFBFBD>儭?Schema<6D>𠉛氖蝑𣇉裦 潃?<3F><><EFBFBD>滩<EFBFBD>
銝箔<EFBFBD>銋<EFBFBD><EFBFBD>閬<EFBFBD>chema<EFBFBD>𠉛氖
*<EFBFBD>詨<EFBFBD><EFBFBD>笔<EFBFBD>嚗?
- <EFBFBD>?**璅∪<E79285><E288AA>祉<EFBFBD><E7A589>?*嚗𡁏<E59A97>銝芯<E98A9D><E88AAF>⊥芋<E28AA5>埈<EFBFBD><E59F88>祉<EFBFBD><E7A589><EFBFBD>chema
- <EFBFBD>?<EFBFBD>舀<EFBFBD><EFBFBD>祉<EFBFBD><EFBFBD>函蔡嚗𡁜虾隞亙<EFBFBD><EFBFBD>砍紡<EFBFBD>箸<EFBFBD>銝芣芋<EFBFBD>㛖<EFBFBD><EFBFBD>唳旿
- <EFBFBD>?**<2A>舀<EFBFBD><E88880>祉<EFBFBD><E7A589><EFBFBD><EFBFBD>?*嚗𡁜虾隞亙<E99A9E><E4BA99>砌漱隞䀹<E99A9E>銝芣芋<E88AA3>?
- <EFBFBD>?<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠉛氖嚗𡁜虾隞乩蛹銝滚<EFBFBD>Schema霈曄蔭銝滚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <EFBFBD>?**<2A>踹<EFBFBD><E8B8B9>賢<EFBFBD><E8B3A2>脩<EFBFBD>**嚗帋<E59A97><E5B88B>峕芋<E5B395>堒虾隞交<E99A9E><E4BAA4>詨<EFBFBD><E8A9A8><EFBFBD>”<EFBFBD>?
Schema<EFBFBD>賢<EFBFBD>閫<EFBFBD><EFBFBD>
platform_schema # 撟喳蝱<E596B3>箇<EFBFBD>撅<EFBFBD><E69285><EFBFBD>典<EFBFBD><E585B8>曹澈嚗?
aia_schema # AI<41>箄<EFBFBD><E7AE84>桃<EFBFBD>
asl_schema # AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃
pkb_schema # 銝芯犖<E88AAF>亥<EFBFBD>摨?
dc_schema # <20>唳旿皜<E697BF><E79A9C><EFBFBD>渡<EFBFBD>
ssa_schema # <20>箄<EFBFBD>蝏蠘恣<E8A098><E681A3><EFBFBD>
st_schema # 蝏蠘恣<E8A098><E681A3><EFBFBD>撌亙<E6928C>
rvw_schema # 蝔蹂辣摰⊥䰻蝟餌<E89D9F>
Schema<EFBFBD>𥕦遣
-- <20>𥕦遣Schema
CREATE SCHEMA IF NOT EXISTS platform_schema;
CREATE SCHEMA IF NOT EXISTS asl_schema;
CREATE SCHEMA IF NOT EXISTS aia_schema;
-- ...<2E>嗡<EFBFBD>Schema
頝沒chema靘肽<EFBFBD>閫<EFBFBD><EFBFBD> 潃?敹<>◆<EFBFBD>萄<EFBFBD>
<EFBFBD><EFBFBD>捂<EFBFBD><EFBFBD><EFBFBD>韏吔<EFBFBD>
-- <20>?<3F><>捂嚗帋<E59A97><E5B88B>⊥芋<E28AA5>堒<EFBFBD><E5A092>私latform_schema
CREATE TABLE asl_schema.literature_projects (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES platform_schema.users(id) ON DELETE CASCADE,
...
);
-- <20>?<3F><>捂嚗𡁻<E59A97>𡁶鍂<F0A181B6>賢<EFBFBD>撘閧鍂platform_schema
CREATE TABLE platform_schema.llm_usage (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES platform_schema.users(id) ON DELETE CASCADE,
...
);
蝳<EFBFBD>迫<EFBFBD><EFBFBD><EFBFBD>韏吔<EFBFBD>
-- <20>?蝳<>迫嚗帋<E59A97><E5B88B>⊥芋<E28AA5>𦯀<EFBFBD><F0A6AF80>港<EFBFBD><E6B8AF>詨<EFBFBD><E8A9A8>?
CREATE TABLE ssa_schema.analysis_projects (
id SERIAL PRIMARY KEY,
-- <20>躰秤嚗<E7A7A4><E59A97><EFBFBD>賢<EFBFBD><E8B3A2>典<EFBFBD>隞碶<E99A9E><E7A2B6>⊥芋<E28AA5>?
literature_project_id INTEGER REFERENCES asl_schema.literature_projects(id)
);
-- <20>?蝳<>迫嚗䮝latform_schema<6D>滚<EFBFBD>靘肽<E99D98>銝𡁜𦛚璅∪<E79285>
CREATE TABLE platform_schema.users (
id SERIAL PRIMARY KEY,
-- <20>躰秤嚗<E7A7A4>latform_schema銝滩<E98A9D>靘肽<E99D98>銝𡁜𦛚璅∪<E79285>
current_project_id INTEGER REFERENCES asl_schema.literature_projects(id)
);
*甇<EFBFBD>&<EFBFBD>𡁏<EFBFBD>嚗?
頝冽芋<EFBFBD>埈㺭<EFBFBD>桀<EFBFBD><EFBFBD>𥪜銁摨𠉛鍂撅<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滚銁<EFBFBD>唳旿摨枏<EFBFBD>嚗?
<0A>孵<EFBFBD>1嚗𡁻<E59A97>朞<EFBFBD>user_id<69>唾<EFBFBD>
- 銝支葵璅∪<E79285><E288AA>賢<EFBFBD><E8B3A2>私latform_schema.users
- <20>典<EFBFBD><E585B8>典<EFBFBD><E585B8>朞<EFBFBD>user_id<69>亥砭銝支葵璅∪<E79285><E288AA><EFBFBD>㺭<EFBFBD>?
- <20>典<EFBFBD><E585B8>典<EFBFBD>蝏<EFBFBD><E89D8F><EFBFBD>唳旿
<0A>孵<EFBFBD>2嚗𡁜<E59A97><F0A1819C>其<EFBFBD><E585B6>!D摮㛖泵銝?
- <20>刻”銝剖<E98A9D><E58996>典<EFBFBD>隞𡝗芋<F0A19D97>㛖<EFBFBD>銝𡁜𦛚ID嚗ĀARCHAR嚗?
- 銝滚遣蝡见<E89DA1><E8A781>桀<EFBFBD>蝟?
- <20>典<EFBFBD><E585B8>典<EFBFBD>撉諹<E69289>ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD><EFBFBD> <20>賢<EFBFBD>閫<EFBFBD><E996AB>
銵典𦶢<EFBFBD>?
*閫<EFBFBD><EFBFBD>嚗?
- 撠誩<EFBFBD>摮埈<EFBFBD>
- 銝见<EFBFBD>蝥踹<EFBFBD><EFBFBD>?
- 憭齿㺭敶W<EFBFBD>
- Schema<EFBFBD>滨<EFBFBD>嚗<EFBFBD>䰻霂X𧒄雿輻鍂嚗?
*蝷箔<EFBFBD>嚗?
-- <20>?甇<>&
CREATE TABLE asl_schema.literature_projects (...);
CREATE TABLE platform_schema.users (...);
CREATE TABLE pkb_schema.knowledge_bases (...);
-- <20>?<3F>躰秤
CREATE TABLE ASLSchema.LiteratureProject (...); -- 撽澆陸
CREATE TABLE asl_schema.project (...); -- <20>閙㺭
CREATE TABLE literature-projects (...); -- 雿輻鍂餈𧼮<E9A488>蝚?
摮埈挾<EFBFBD>賢<EFBFBD>
*閫<EFBFBD><EFBFBD>嚗?
- 撠誩<EFBFBD>摮埈<EFBFBD>
- 銝见<EFBFBD>蝥踹<EFBFBD><EFBFBD>?
- 霂凋<EFBFBD>皜<EFBFBD>苊
*蝷箔<EFBFBD>嚗?
-- <20>?甇<>&
user_id
created_at
project_name
is_active
-- <20>?<3F>躰秤
userId -- 撽澆陸
createdat -- 瘝⊥<E7989D>銝见<E98A9D>蝥?
prjName -- 蝻拙<E89DBB>銝齿<E98A9D><E9BDBF>?
蝝W<EFBFBD><EFBFBD>賢<EFBFBD>
*閫<EFBFBD><EFBFBD>嚗? `idx_銵典<E98AB5>_摮埈挾<E59F88>崾
*蝷箔<EFBFBD>嚗?
-- <20>?甇<>&
CREATE INDEX idx_users_email ON platform_schema.users(email);
CREATE INDEX idx_projects_user_id ON asl_schema.literature_projects(user_id);
CREATE INDEX idx_projects_user_status ON asl_schema.literature_projects(user_id, status);
-- <20>?<3F>躰秤
CREATE INDEX user_email_idx ... -- 憿箏<E686BF><E7AE8F>躰秤
CREATE INDEX index_on_email ... -- <20>滨妍銝齿<E98A9D><E9BDBF>?
憭㚚睸<EFBFBD>賢<EFBFBD>
*閫<EFBFBD><EFBFBD>嚗? fk_銵典<EFBFBD>_<EFBFBD>唾<EFBFBD>銵典<EFBFBD>
*蝷箔<EFBFBD>嚗?
-- <20>?甇<>&
CONSTRAINT fk_projects_users
FOREIGN KEY (user_id) REFERENCES platform_schema.users(id);
CONSTRAINT fk_items_projects
FOREIGN KEY (project_id) REFERENCES asl_schema.literature_projects(id);
-- <20>?<3F>躰秤
CONSTRAINT user_fk ... -- <20>滨妍銝齿<E98A9D><E9BDBF>?
CONSTRAINT foreign_key_users ... -- 憭芷鵭
<EFBFBD><EFBFBD> <20>𡁶鍂摮埈挾 潃?敹<>◆<EFBFBD><E29786>鉄
<EFBFBD><EFBFBD><EFBFBD>㕑”敹<EFBFBD>◆<EFBFBD><EFBFBD>鉄
CREATE TABLE xxx_schema.table_name (
-- 銝駁睸嚗<E79DB8><E59A97>憿鳴<E686BF>
id SERIAL PRIMARY KEY,
-- 銝𡁜𦛚摮埈挾
...
-- <20>園𡢿<E59C92>喉<EFBFBD>敹<EFBFBD>◆嚗?
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP DEFAULT NOW() NOT NULL
);
<EFBFBD>滩<EFBFBD>銵典<EFBFBD><EFBFBD><EFBFBD>鉄嚗<EFBFBD>蔓<EFBFBD>𣳇膄嚗?
CREATE TABLE xxx_schema.important_table (
id SERIAL PRIMARY KEY,
-- 銝𡁜𦛚摮埈挾
...
-- 頧臬<E9A0A7><E887AC>文<EFBFBD>畾蛛<E795BE><E89B9B>舫<EFBFBD>㚁<EFBFBD><E39A81>滩<EFBFBD>銵典遣霈格溶<E6A0BC>𩤃<EFBFBD>
deleted_at TIMESTAMP,
-- <20>園𡢿<E59C92>喉<EFBFBD>敹<EFBFBD>◆嚗?
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP DEFAULT NOW() NOT NULL
);
-- <20>亥砭<E4BAA5>嗉<EFBFBD>皛文歇<E69687>𣳇膄<F0A3B387>唳旿
SELECT * FROM xxx_schema.important_table WHERE deleted_at IS NULL;
<EFBFBD>冽<EFBFBD><EFBFBD>唾<EFBFBD>銵典<EFBFBD>憿餃<EFBFBD><EFBFBD>?
CREATE TABLE xxx_schema.user_related_table (
id SERIAL PRIMARY KEY,
-- <20>冽<EFBFBD>憭㚚睸嚗<E79DB8><E59A97>憿鳴<E686BF>
user_id INTEGER REFERENCES platform_schema.users(id) ON DELETE CASCADE NOT NULL,
-- 銝𡁜𦛚摮埈挾
...
-- <20>園𡢿<E59C92>喉<EFBFBD>敹<EFBFBD>◆嚗?
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP DEFAULT NOW() NOT NULL
);
<EFBFBD><EFBFBD> 蝝W<E89D9D>霈曇恣閫<E681A3><E996AB>
敹<EFBFBD>◆瘛餃<EFBFBD>蝝W<EFBFBD><EFBFBD><EFBFBD><EFBFBD>畾?
1. 銝駁睸
-- <20>芸𢆡<E88AB8>𥕦遣嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>见𢆡瘛餃<E7989B>
id SERIAL PRIMARY KEY
2. 憭㚚睸摮埈挾
-- 敹<>◆瘛餃<E7989B>嚗峕<E59A97>擃𧁓OIN<49>扯<EFBFBD>
CREATE INDEX idx_projects_user_id ON asl_schema.literature_projects(user_id);
3. 撣貊鍂<E8B28A>亥砭摮埈挾
-- status嚗<73>𠶖<EFBFBD><F0A0B696><EFBFBD>畾蛛<E795BE>撣貊鍂鈭竝HERE嚗?
CREATE INDEX idx_projects_status ON asl_schema.literature_projects(status);
-- created_at嚗<74>𧒄<EFBFBD>游<EFBFBD>畾蛛<E795BE>撣貊鍂鈭擧<E988AD>摨𧶏<E691A8>
CREATE INDEX idx_projects_created_at ON asl_schema.literature_projects(created_at DESC);
4. <20>臭<EFBFBD>蝥行<E89DA5>摮埈挾
-- email蝑匧𣈲銝<F0A388B2>摮埈挾
CREATE UNIQUE INDEX idx_users_email ON platform_schema.users(email);
憭滚<EFBFBD>蝝W<EFBFBD>
*閫<EFBFBD><EFBFBD>嚗?
- 擃㗛<EFBFBD>蝏<EFBFBD><EFBFBD><EFBFBD>亥砭雿輻鍂憭滚<EFBFBD>蝝W<EFBFBD>
- <EFBFBD><EFBFBD>撣豢䰻霂Y<EFBFBD>摮埈挾<EFBFBD>曉銁<EFBFBD>漤𢒰
- 憭滚<EFBFBD>蝝W<EFBFBD><EFBFBD><EFBFBD>憭?銝芸<E98A9D>畾?
*蝷箔<EFBFBD>嚗?
-- <20>?甇<>&嚗鮁ser_id + status 蝏<><E89D8F><EFBFBD>亥砭
CREATE INDEX idx_projects_user_status
ON asl_schema.literature_projects(user_id, status);
-- <20>臭誑隡睃<E99AA1>隞乩<E99A9E><E4B9A9>亥砭嚗?
-- WHERE user_id = ? AND status = ?
-- WHERE user_id = ? 嚗<>蘨<EFBFBD>典<EFBFBD>蝻<EFBFBD>嚗?
-- <20>?<3F>躰秤嚗𡁜<E59A97>畾菔<E795BE>憭?
CREATE INDEX idx_projects_complex
ON asl_schema.literature_projects(user_id, status, created_at, updated_at);
<EFBFBD><EFBFBD> 憭㚚睸蝥行<E89DA5>閫<EFBFBD><E996AB>
ON DELETE蝑𣇉裦
*閫<EFBFBD><EFBFBD>嚗?
-- <20>冽<EFBFBD><E586BD>𣳇膄<F0A3B387>塚<EFBFBD>蝥扯<E89DA5><E689AF>𣳇膄<F0A3B387>唾<EFBFBD><E594BE>唳旿
FOREIGN KEY (user_id)
REFERENCES platform_schema.users(id)
ON DELETE CASCADE;
-- <20>嗉扇敶訫<E695B6><E8A8AB>斗𧒄嚗𣬚漣<F0A3AC9A>𥪜<EFBFBD><F0A5AA9C>文<EFBFBD>霈啣<E99C88>
FOREIGN KEY (project_id)
REFERENCES asl_schema.literature_projects(id)
ON DELETE CASCADE;
-- <20>寞<EFBFBD><E5AF9E><EFBFBD><EFBFBD>嚗帋<E59A97><E5B88B>賢<EFBFBD><E8B3A2>?
FOREIGN KEY (parent_id)
REFERENCES xxx_schema.parent_table(id)
ON DELETE RESTRICT; -- <20>匧<EFBFBD>霈啣<E99C88><E595A3>嗥<EFBFBD>甇W<E79487><EFBCB7>?
憭㚚睸蝝W<EFBFBD>
*閫<EFBFBD><EFBFBD>嚗? <20><><EFBFBD>匧<EFBFBD><E58CA7>桀<EFBFBD>憿餅溶<E9A485>删揣撘?
-- <20>𥕦遣憭㚚睸
ALTER TABLE asl_schema.literature_items
ADD CONSTRAINT fk_items_projects
FOREIGN KEY (project_id) REFERENCES asl_schema.literature_projects(id)
ON DELETE CASCADE;
-- 敹<>◆瘛餃<E7989B>蝝W<E89D9D>
CREATE INDEX idx_items_project_id ON asl_schema.literature_items(project_id);
<EFBFBD>?<3F>扯<EFBFBD>隡睃<E99AA1>閫<EFBFBD><E996AB>
憭扯”<EFBFBD><EFBFBD>躹嚗<EFBFBD>虾<EFBFBD>㚁<EFBFBD>
*<EFBFBD><EFBFBD>鍂<EFBFBD>箸艶嚗? 撟游<E6929F><E6B8B8>?> 100銝<30>扇敶?
-- <20>㗇<EFBFBD><E39787><EFBFBD>躹嚗<E8BAB9><E59A97>llm_usage銵剁<E98AB5>
CREATE TABLE platform_schema.llm_usage (
id SERIAL,
user_id INTEGER NOT NULL,
created_at TIMESTAMP NOT NULL,
...
) PARTITION BY RANGE (created_at);
-- <20>𥕦遣<F0A595A6><E981A3>躹
CREATE TABLE platform_schema.llm_usage_2025_11
PARTITION OF platform_schema.llm_usage
FOR VALUES FROM ('2025-11-01') TO ('2025-12-01');
<EFBFBD>唳旿敶埝﹝蝑𣇉裦
-- <20><>蟮<EFBFBD>唳旿敶埝﹝嚗<EFB99D><E59A97>1撟游<E6929F><E6B8B8><EFBFBD>𠯫敹梹<E695B9>
CREATE TABLE platform_schema.admin_logs_archive (
LIKE platform_schema.admin_logs INCLUDING ALL
);
-- 摰𡁏<E691B0>敶埝﹝
INSERT INTO platform_schema.admin_logs_archive
SELECT * FROM platform_schema.admin_logs
WHERE created_at < NOW() - INTERVAL '1 year';
DELETE FROM platform_schema.admin_logs
WHERE created_at < NOW() - INTERVAL '1 year';
<EFBFBD><EFBFBD> 摰匧<E691B0>閫<EFBFBD><E996AB>
<EFBFBD>𤩺<EFBFBD>摮埈挾<EFBFBD>惩<EFBFBD>
-- 撖<><E69296>摮埈挾
password VARCHAR(255) NOT NULL -- 雿輻鍂bcrypt<70>惩<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>典<EFBFBD>撣<EFBFBD><E692A3>?
-- API Key摮埈挾
api_key_encrypted TEXT NOT NULL -- 雿輻鍂AES-256<35>惩<EFBFBD>
-- 銝芯犖<E88AAF>𤩺<EFBFBD>靽⊥<E99DBD>
phone_encrypted VARCHAR(255) -- <20>𧢲㦤<F0A7A2B2>瑕<EFBFBD>撖?
id_card_encrypted VARCHAR(255) -- 頨思遢霂<E981A2>噡<EFBFBD>惩<EFBFBD>
<EFBFBD>唳旿<EFBFBD>望<EFBFBD>
-- <20>亙<EFBFBD>銝凋<E98A9D>霈啣<E99C88><E595A3>𤩺<EFBFBD>摮埈挾
-- 撘<><E69298>?瘚贝<E7989A><E8B49D>臬<EFBFBD>雿輻鍂<E8BCBB>望<EFBFBD><E69C9B>唳旿
UPDATE platform_schema.users
SET
email = CONCAT('user', id, '@example.com'),
phone = '138****0000'
WHERE environment = 'development';
<EFBFBD><EFBFBD> <20>唳旿蝐餃<E89D90><E9A483>㗇𥋘
撣貊鍂摮埈挾蝐餃<EFBFBD>
| <EFBFBD>券<EFBFBD>? | <EFBFBD>刻<EFBFBD>蝐餃<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|
| 銝駁睸 | SERIAL | <EFBFBD>湔㺭<EFBFBD>芸<EFBFBD> |
| 憭㚚睸 | INTEGER | 銝𦒘蜓<EFBFBD>桃掩<EFBFBD>衤<EFBFBD><EFBFBD>? |
| <EFBFBD>剜<EFBFBD><EFBFBD>? | VARCHAR(N) | N<500嚗<30><E59A97>憪枏<E686AA><E69E8F><EFBFBD><EFBFBD>憸? |
| <EFBFBD>踵<EFBFBD><EFBFBD>? | TEXT | <EFBFBD>𣳇鵭摨阡<EFBFBD><EFBFBD>塚<EFBFBD>憒<EFBFBD><EFBFBD>餈啜<EFBFBD><EFBFBD><EFBFBD>摰? |
| 撣<EFBFBD><EFBFBD><EFBFBD>? | BOOLEAN | true/false |
| <EFBFBD>交<EFBFBD><EFBFBD>園𡢿 | TIMESTAMP | 蝎曄&<EFBFBD>唳神蝘? |
| <EFBFBD>煾<EFBFBD> | DECIMAL(10,2) | <EFBFBD>踹<EFBFBD>蝎曉漲<EFBFBD>桅<EFBFBD> |
| JSON | JSONB | <EFBFBD>舀<EFBFBD>蝝W<EFBFBD>嚗峕<EFBFBD>扯<EFBFBD><EFBFBD>游末 |
摮埈挾<EFBFBD>踹漲撱箄悅
-- <20>剜<EFBFBD><E5899C>?
name VARCHAR(100) -- 憪枏<E686AA>
title VARCHAR(200) -- <20><><EFBFBD>
email VARCHAR(255) -- <20>桃拳
phone VARCHAR(20) -- <20>𧢲㦤<F0A7A2B2>?
-- <20>嗆<EFBFBD><E59786><EFBFBD>銝?
status VARCHAR(20) -- active, inactive, deleted
role VARCHAR(20) -- user, admin
-- <20>踵<EFBFBD><E8B8B5>?
description TEXT -- <20>讛膩
content TEXT -- <20><>捆
<EFBFBD>?璉<><E79289>交<EFBFBD><E4BAA4>?
霈曇恣<EFBFBD>啗”<EFBFBD>嗅<EFBFBD>憿餅<EFBFBD><EFBFBD>伐<EFBFBD>
- 銵典<EFBFBD>蝚血<EFBFBD><EFBFBD>賢<EFBFBD>閫<EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>?銝见<E98A9D>蝥?憭齿㺭嚗?
- 雿輻鍂甇<EFBFBD>&<EFBFBD><EFBFBD>chema嚗īlatform/aia/asl/pkb蝑㚁<E89D91>
- <EFBFBD><EFBFBD>鉄id銝駁睸嚗𠄎ERIAL PRIMARY KEY嚗?
- <EFBFBD><EFBFBD>鉄created_at<EFBFBD>吴pdated_at<EFBFBD>園𡢿<EFBFBD>?
- <EFBFBD>冽<EFBFBD><EFBFBD>唾<EFBFBD>銵典<EFBFBD><EFBFBD>哎ser_id憭㚚睸
- <EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>桅<EFBFBD><EFBFBD>伨N DELETE蝑𣇉裦
- <EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>桅<EFBFBD>瘛餃<EFBFBD>鈭<EFBFBD>揣撘?
- 撣貊鍂<EFBFBD>亥砭摮埈挾瘛餃<EFBFBD>鈭<EFBFBD>揣撘?
- 憭㚚睸蝥行<EFBFBD>蝚血<EFBFBD>頝沒chema靘肽<EFBFBD>閫<EFBFBD><EFBFBD>
- <EFBFBD>𤩺<EFBFBD>摮埈挾撌脣<EFBFBD>撖<EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD><EFBFBD> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
*<EFBFBD>餉<EFBFBD>嚗?
- <EFBFBD>唳旿摨枏<EFBFBD>撅<EFBFBD>閫<EFBFBD>㦛 潃?<3F>亦<EFBFBD><E4BAA6><EFBFBD><EFBFBD>农chema<6D>諹”
*璅⊥踎嚗?
- [<5B>唳旿摨栞挽霈⊥芋<E28AA5>瓢(../_templates/<2F>唳旿摨栞挽霈?璅⊥踎.md)
<EFBFBD><EFBFBD>芋<EFBFBD>𡑒挽霈∴<EFBFBD>
- [撟喳蝱<E596B3>箇<EFBFBD>撅<EFBFBD>(../01-撟喳蝱<E596B3>箇<EFBFBD>撅?README.md)
- [<5B>𡁶鍂<F0A181B6>賢<EFBFBD>撅<EFBFBD>(../02-<2D>𡁶鍂<F0A181B6>賢<EFBFBD>撅?README.md)
- [銝𡁜𦛚璅∪<E79285>撅<EFBFBD>(../03-銝𡁜𦛚璅∪<E79285>/README.md)
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD> 2025-11-06
蝏湔擪鈭綽<EFBFBD> <20><><EFBFBD>舀沲<E88880><E6B2B2><EFBFBD>
*<EFBFBD><EFBFBD>𧋦嚗? v2.0