1058 lines
61 KiB
JavaScript
1058 lines
61 KiB
JavaScript
// 史料表 —— 《汉书·百官公卿表上》的官制事实,抠成可查询的常量。
|
||
//
|
||
// 定位:与 dynasties.js / talents.js 同级的【纯常量表 + 纯函数】。无 IO、无 DB、无 LLM。
|
||
//
|
||
// 用途:这是「注」的数据源。dynasties.js 的正文是【推演】(性格×制度→位阶),
|
||
// 本表是【原文】。推演可以错,原文不能错——所以这张表的规矩比别处严。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【封条已摘】2026-07-16 —— 本表已用 curl 拿生 HTML 逐字目验,两个独立见证比对。
|
||
//
|
||
// 本表 2026-07 之前是【封存】状态,因为它是用 WebFetch 抠的,而 WebFetch 不给逐字原文,
|
||
// 它把页面交给一个小模型转述——那个模型在本功能历史上被抓到过多次编造。抠它的 agent
|
||
// 自己在报告里写:「我始终没能拿到逐字原文……仍非逐字目验」。
|
||
//
|
||
// 本轮(2026-07-16)做的事:
|
||
// 1. curl -sk 拿【生 HTML】,自己剥标签,自己断句。全程没有任何模型转述原文。
|
||
// 2. 取【两个独立见证】比对:
|
||
// 见证 A:漢川草廬 https://www.sidneyluo.net/a/a02/019.htm (正文 + 注混排)
|
||
// 见证 B:ctext https://ctext.org/han-shu/bai-guan-gong-qing-biao-shang/zh (只有正文)
|
||
// B 只收正文、不收注,这一点【本身就是一个可用的判别器】:凡在 A 里出现而 B 里没有的
|
||
// 句子,就是注不是正文。下面「真二千石」「御史大夫中二千石」两条就是这么判出来的。
|
||
// 3. 把 A 的注(師古曰/應劭曰/臣瓚曰……共 213 条、12 家)程序化剥掉,得到 A 的正文,
|
||
// 再与 B 的正文【逐字对齐**diff**】。全卷 41 段,实际分歧只有下面「两本异文」那几处。
|
||
//
|
||
// ⚠ 两个见证【不是】点校本,是网络转录本。它们各自都有手民之误(互不相同,这恰好说明
|
||
// 二者是独立转录、不是同一份数字祖本):
|
||
// · A 作「文帝一年復置一丞相」,B 作「文帝二年」——B 是。
|
||
// · B 作「易敘宓羲、神農、皇帝」,A 作「黃帝」——A 是。
|
||
// · B 作「更置二輔都尉」,A 作「三輔」——A 是(三辅=京兆尹/左冯翊/右扶风)。
|
||
// · A 作「吏員自佐史至丞相,十三萬二百八十五人」,B 作「十二萬」——未决,本表不收此句。
|
||
// → 所以本表的 confidence 仍然有意义:它标的是「两个网络转录本能证到什么程度」,
|
||
// 【不是】「点校本核过了」。要引用到出版物级别,仍需目验中华书局点校本。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【两本异文,未决】—— 这两处两个见证读法不同,本表取【保守读法】并如实标注
|
||
//
|
||
// 一、大司马条的「初」字:
|
||
// A 作「成帝綏和元年【初】賜大司馬金印紫綬」,B 作「成帝綏和元年賜大司馬金印紫綬」。
|
||
// 本表 quote 取 B(不带「初」)——【保守:不把只有一个见证有的字写进引文】。
|
||
// variant 字段记着 A 的读法。confidence='需核实'。
|
||
// 二、大司空条的「金印紫綬」四字:
|
||
// B 作「成帝綏和元年更名大司空,【金印紫綬】,祿比丞相……」,A 无此四字。
|
||
// 本表 quote 取 A(不带这四字)——【保守:不把只有一个见证有的字写进引文】。
|
||
// variant 字段记着 B 的读法。confidence='需核实'。
|
||
//
|
||
// ⚠ 保守读法【不等于】判定另一个见证是错的。两处都是【未决】,不许在别处当定论用。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【字形(异体字)的处理口径】
|
||
//
|
||
// 两个见证的字形不一致(这是转录本的常态,不是异文):
|
||
// A: 衞 隷 厨 衆 羣 菀 蹏 B: 衛 隸 廚 眾 群 苑 蹄
|
||
// 本表【统一取 B 的字形】(通行字形),因为 B 是只收正文的那个见证,且与本仓已有代码一致。
|
||
// 这是【本项目的排版选择,不是校勘结论】——异体字无义别,不影响任何一条秩石。
|
||
// ⚠ 但「比千石 vs 千石」「二千石 vs 中二千石 vs 比二千石」【不是字形问题,是史实问题】,
|
||
// 那几个字一个都不许动。见下「本表的三条铁律」第二条。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 法务
|
||
//
|
||
// · 引文原文属【公有领域】:班固卒于公元 92 年,《汉书》原文早已过任何著作权期限。
|
||
// · 引文的【标点为本项目所加】。原文无标点;今人点校本(中华书局本等)的标点与分段
|
||
// 是受保护的独创性表达,本表【未采用】任何点校本的标点。本表统一只用「。」断句、
|
||
// 「、」列举——这是本项目自己的断句体例,与 ctext 的「,。」体例、与中华书局本的
|
||
// 体例均不相同。改本表引文时不许照抄任何点校本的逗号位置。
|
||
// ⚠ 本轮的 curl 比对【进一步证实了这条法务口径的必要性】:两个见证的标点各不相同,
|
||
// 而它们的【字】几乎完全一样——标点确实是人加的、各家不同的,正因如此才不能抄。
|
||
// · 本表抠取的是【事实】:官名、秩石、员额、沿革、职掌。依思想/事实与表达二分法,
|
||
// 事实不受著作权保护。
|
||
// · 每条引文控制在数十字以内,属最小必要引用。省略处用「……」标出,不作暗省。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 本表的三条铁律
|
||
//
|
||
// 一、【原文没写的,留空,不许补】。rank 为 '' 就是原文真没写,不是漏抠。
|
||
// 丞相、太尉、御史大夫、大司马、大司空——本表【都没有秩石】,只记印绶。
|
||
// 「祿比丞相」是俸禄比拟,不是秩石名目。
|
||
//
|
||
// 二、【四个秩名严格分开】:中二千石 ≠ 真二千石 ≠ 二千石 ≠ 比二千石。
|
||
// 一个「比」字差一级,混了就是硬伤。本表全部照原文用字。
|
||
//
|
||
// 三、【本表只记西汉】。era 一律 xihan,donghan 一条都没有——本卷记的是西汉制度。
|
||
// ✗ 不许把本表的秩石安到东汉头上。这个坑本产品已经踩过一次(见下)。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【正文 vs 注 —— 本表最重要的一条纪律】
|
||
//
|
||
// 本卷在网页上(见证 A)是【正文与注混排】的。注有 12 家:
|
||
// 師古(顏師古,唐,卒 645)、應劭(东汉)、臣瓚(晋)、如淳、張晏、服虔、
|
||
// 文穎、孟康、伏儼、晉灼、鄧展、荀悅。
|
||
// 【只有班固正文进本表。注一个字都不进 quote。】理由:注是后人对汉制的解释与考证,
|
||
// 不是汉制本身;顏師古注尤其——他是唐人,隔了六百年。
|
||
//
|
||
// ⚠ 但「注不进 quote」不等于「可以假装注不存在」。下面三条是本轮 curl 目验的【新发现】,
|
||
// 它们纠正了本表上一版的说法(上一版是 WebFetch 抠的,看不见注):
|
||
//
|
||
// ① 「三公万石」有出处,出处是【顏師古注】:
|
||
// 卷首即有「師古曰:『漢制,三公號稱萬石,其俸月各三百五十斛穀。其稱中二千石者
|
||
// 月各百八十斛……』」——这就是坊间「丞相万石」的来历。
|
||
// → 不许拿它当汉制史料:(a) 唐人注,不是班固正文;(b) 它自己说的是「號【稱】萬石」
|
||
// 与【月俸斛数】,本来就不是本表的秩石名目。丞相条的 rank 仍然留空。
|
||
// ② 「御史大夫中二千石」有出处,出处是【臣瓚注引《茂陵書》】:
|
||
// 御史大夫条下有「臣瓚曰:『茂陵書御史大夫秩中二千石。』」
|
||
// → 见证 B(只收正文)里【没有这一句】,可证它是注不是正文。
|
||
// → 不许拿它当班固正文;但也【不许再说「本表无据」】(上一版就是这么说的,错了)。
|
||
// 准确说法:班固正文未记御史大夫秩石;本卷臣瓚注引《茂陵書》作「秩中二千石」,
|
||
// 注非正文,且《茂陵書》已佚,无从覆核。
|
||
// ③ 「真二千石」在本卷【出现过一次】,也在【臣瓚注引《茂陵書》】里:
|
||
// 詹事条下有「臣瓚曰:『茂陵書詹事秩真二千石。』」
|
||
// → 见证 B 正文里没有,可证是注。
|
||
// → 上一版说「真二千石在本表未出现」——【不准确】,见下「不许复活」。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【已删除的错误说法,不许复活】
|
||
//
|
||
// ── A. 经本轮 curl 目验,仍然成立的禁令 ──
|
||
//
|
||
// · ✗「县令秩千石至六百石、县长秩五百石至三百石」是【东汉】制 → 错,是【西汉】制,
|
||
// 出处正是本表(两见证一致)。东汉制在《续汉书·百官志五》,作三等定值
|
||
// (令千石/长四百石/长三百石),是另一回事,【不可合并】。
|
||
// dynasties.js 的东汉阶梯里已明令禁用本表这一条——本表的 era='xihan' 与
|
||
// test/shiliao.test.js 的回归断言一起守着这个坑。
|
||
// · ✗「奉常/太常条本身写着中二千石」→ 错。九卿【各条都不写秩石】(两见证一致)。
|
||
// 见下「中二千石的来历」。
|
||
// · ✗ 郡府属吏(决曹、功曹、五官掾、督邮等)在本表 → 错,本表【全无】。
|
||
// 本轮已把全卷 41 段正文逐段过了一遍,确认没有这些官名。那些在《续汉书·百官志》,
|
||
// 且是东汉制。要郡府属吏必须换史源,不能拿来充西汉。
|
||
// · ✗ 县尉「大县二人、小县一人」之类员额在本表 → 错,本表无(本轮目验确认)。
|
||
// 那是《续汉书·百官志》的写法。本表明确记了员额的只有大夫「皆無員、多至數十人」、
|
||
// 侍御史「員十五人」、博士「員多至數十人」、謁者「員七十人」等有限几处。
|
||
// · ✗ 把「御史大夫」的秩石写进 rank → 仍然禁止。班固正文【只给】它记
|
||
// 「位上卿、銀印青綬」。rank 只收正文,注不进 rank。
|
||
// (但禁令的【理由变了】,见下 B 组第 3 条——不许再用「本表无据」这个理由。)
|
||
//
|
||
// ── B. 本轮 curl 目验【推翻了的、上一版自己写下的】说法,同样不许复活 ──
|
||
// ⚠ 这一组特别危险:它们是上一版以「已订正」「已验证」的口气写死的,
|
||
// 读起来比真结论还硬。而它们错了。
|
||
//
|
||
// · ✗「大司马条原文【无「初」字】,前一轮误增,已订正」→ 【不成立】。
|
||
// 见证 A 明明作「成帝綏和元年【初】賜大司馬金印紫綬」。上一版是把【一个见证的读法】
|
||
// 当成了「原文」,还反过来把另一个读法判成「误增」并「订正」掉。
|
||
// 真相:两本异文,未决。本表取保守读法(不带「初」)并在 variant 里记着 A 的读法。
|
||
// → 教训:一个见证读不出某个字,只能说明这个见证没有,不能说明原文没有。
|
||
//
|
||
// · ✗「大司空条作『成帝綏和元年更名大司空。金印紫綬。祿比丞相……』」→ 【只有一个见证这么读】。
|
||
// 见证 B 有「金印紫綬」四字,见证 A 没有。上一版把它写进 quote 且标 confidence='原文明载'。
|
||
// 本表改取保守读法(不带这四字),confidence='需核实',variant 里记着 B 的读法。
|
||
//
|
||
// · ✗「『御史大夫中二千石』坊间说法,本表无据」→ 【说法不准确,不许再这么写】。
|
||
// 本卷臣瓚注引《茂陵書》正有此说。禁令(不进 rank)不变,但理由必须换成
|
||
// 「注非正文」,不能说成「本表无据」——那会让人以为翻遍本卷都找不到这四个字,
|
||
// 而实际上一翻就能翻到,一旦被人翻到,本表的可信度就全塌了。
|
||
//
|
||
// · ✗「『真二千石』在本表未出现(已掺假验证)」→ 【不准确】。
|
||
// 班固正文确实未出现(两见证一致,这部分是对的);但本卷【臣瓚注引《茂陵書》】
|
||
// 有「詹事秩真二千石」。准确说法见上「正文 vs 注」③。
|
||
// (officesByRank('xihan','真二千石') 仍然返回 [],因为本表 rank 只收正文——
|
||
// 这个行为是对的,错的只是那句话的说法。)
|
||
//
|
||
// · ✗「二十等爵第三级用字两轮核查不一致,暂从『簪褭』」→ 【已解决】。
|
||
// 两个见证【一致】作「三簪裊」(A 的顏師古注亦作「裊音乃了反」)。
|
||
// 本表从「簪裊」。「簪褭」是常见异体写法,本项目所核两本均未见——
|
||
// 这是异体字问题,不是史实问题,两者所指同一级爵。
|
||
//
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
// 【中二千石的来历——用本表的九卿秩石时必须交代这条推导链】
|
||
//
|
||
// 九卿各条【本身都不写秩石】(两见证一致)。中二千石出自紧接「中尉(執金吾)」条之后、
|
||
// 自成一段的一句总述:
|
||
// 「自太常至執金吾,秩皆中二千石,丞皆千石。」
|
||
//
|
||
// ★ 本轮 curl 的结构性收获:把全卷正文按段列出来之后,「自太常至執金吾」这个范围
|
||
// 【是可以数出来的】,不再是靠印象。本卷正文段序(两见证一致)是:
|
||
// ① 相國、丞相 ② 太尉/大司馬 ③ 御史大夫 ④ 太傅 ⑤ 太師、太保
|
||
// ⑥ 前後左右將軍
|
||
// ⑦ 奉常/太常(博士系此条下) ⑧ 郎中令/光祿勳 ⑨ 衛尉 ⑩ 太僕 ⑪ 廷尉
|
||
// ⑫ 典客/大鴻臚 ⑬ 宗正 ⑭ 治粟內史/大司農 ⑮ 少府 ⑯ 中尉/執金吾
|
||
// ⑰ ★「自太常至執金吾,秩皆中二千石,丞皆千石。」← 总述句在这里
|
||
// ⑱ 太子太傅…(以下另起,另有「自太子太傅至右扶風,皆秩二千石,丞六百石」一句总述)
|
||
// → 所以「自太常至執金吾」覆盖的正好是 ⑦–⑯ 这【十条】,一条不多一条不少。
|
||
// 本表把这十条【全部收齐】了,就是为了让这个范围可以被数、被验,而不是被信。
|
||
// → 御史大夫是 ③,排在 ⑦ 太常【之前】,中间还隔着太傅、太师太保、前后左右将军
|
||
// 三段。它【根本不在】这句总述的范围里——这是可以数出来的结构事实,不是判断。
|
||
//
|
||
// 所以:
|
||
// · 太常、執金吾 是这句【点名的两个端点】→ confidence='原文明载'。
|
||
// · 郎中令、衛尉、太僕、廷尉、典客、宗正、治粟內史、少府 等【在范围内但未被点名】
|
||
// → 要靠「条目次序」才能套进去,是【总述句 + 条目次序】推出来的
|
||
// → confidence='需核实'。
|
||
// · 但十条【全部】rankDerived=true —— 因为没有任何一条是【本条直书】秩石的。
|
||
// 端点也不是本条直书,端点只是被总述句点了名。
|
||
// 前端拿九卿秩石做朝代对照时,【必须显示这条推导链】,不许伪装成本条直书。
|
||
// rankNote 字段就是给前端显示这个用的。
|
||
// ══════════════════════════════════════════════════════════════════════════
|
||
|
||
/**
|
||
* 一条官制记录。
|
||
*
|
||
* name 官名(本表用字)
|
||
* aliases 异名/更名后的名(findOffice 按此匹配)
|
||
* era 'qin' | 'xihan' | 'donghan' —— 本表全部 'xihan',见下方 eraNote
|
||
* origin 沿革,尽量用原文的词(如「秦官」)
|
||
* rank 秩石【原文用字】。原文没写 = '',不许推测。⚠ 只收班固正文,注不进 rank
|
||
* rankDerived true = 这个 rank 不是本条直书,是从总述句推出来的(前端必须提示)
|
||
* rankNote 推导链说明 / 秩石的限定语
|
||
* duty 职掌,尽量用原文的词。原文未记则明说「本表未记」
|
||
* quote 支撑本条的原文片段。⚠ 标点为本项目所加;省略处用「……」标出
|
||
* quoteRank 秩石另出总述句时,总述句的原文
|
||
* source 出处
|
||
* confidence '原文明载' | '需核实'
|
||
* caveat 给「注」用的限定语——注的价值全在这里
|
||
* variant 两个见证读法不同时,另一个见证的读法。有 variant = 这条【未决】
|
||
* verified 何时、用什么方法核的
|
||
*/
|
||
|
||
const SRC = '《汉书·卷十九上·百官公卿表上》';
|
||
|
||
// 本轮核实的口径:curl 生 HTML + 两个独立见证比对 + 程序化剥注 + 逐字 diff。
|
||
// 每条都标,是为了让「哪些条是这么核过的」可以被 grep、被断言,而不是靠这段注释背书。
|
||
const V = '2026-07-16 curl 逐字目验';
|
||
|
||
// ⚠ era 为什么全是 xihan:
|
||
// 本表大量条目写「某官,秦官」,那是在记【沿革的起点】,不是说这条记的是秦制。
|
||
// 班固是以汉表记汉制,顺带注明哪些官承自秦。所以 era 一律 xihan,秦的部分进 origin。
|
||
// 【存疑,已知的编例问题】:像「郡守,秦官,掌治其郡,秩二千石」这种,字面无法断定
|
||
// 这个「二千石」是秦制之秩、还是汉制之秩系于秦官名下——本表未作分别。本表按
|
||
// 「汉表记汉制」标 xihan,但这是【编例判断,不是原文明说】。相关条目已在 caveat 里交代。
|
||
// 若将来要做秦汉对照,这批条目两边都能挂,必须注明。
|
||
|
||
export const OFFICES = [
|
||
// ── 三公及其属官 ──
|
||
{
|
||
id: 'chengxiang',
|
||
name: '相国、丞相',
|
||
aliases: ['丞相', '相国', '相國', '大司徒'],
|
||
era: 'xihan',
|
||
origin: '秦官。高帝即位置一丞相,十一年更名相国;哀帝元寿二年更名大司徒',
|
||
rank: '', // ⚠ 本表【不记】丞相秩石,只记印绶。「丞相万石」出顏師古注,不是正文,不许补
|
||
rankDerived: false,
|
||
rankNote:
|
||
'本表正文只记「金印紫綬」,未记秩石。' +
|
||
'✗ 不许补「万石」——「三公號稱萬石」出【顏師古注】(卷首「師古曰:漢制,三公號稱萬石,' +
|
||
'其俸月各三百五十斛穀」),是唐人注,不是班固正文;且它说的是「號稱」与月俸斛数,' +
|
||
'本来就不是本表的秩石名目。',
|
||
duty: '掌丞天子,助理万机',
|
||
// 省略处(「孝惠、高后置左右丞相……有兩長史,秩千石。」)用「……」标出:
|
||
// 一是长史另立条;二是那段里的「文帝一年/二年」两个见证读法不同,本表不碰。
|
||
quote: '相國、丞相皆秦官。金印紫綬。掌丞天子助理萬機。秦有左右。高帝即位。置一丞相。十一年更名相國。綠綬。……哀帝元壽二年更名大司徒。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'本表未给丞相记秩石,只记印绶。以此条做「三公=万石」的依据是没有的——' +
|
||
'「三公號稱萬石」那句是顏師古注(唐人),且是「号称」与月俸,不是秩石名目。',
|
||
},
|
||
{
|
||
id: 'chengxiang_zhangshi',
|
||
name: '丞相长史',
|
||
aliases: ['丞相长史', '丞相長史'],
|
||
era: 'xihan',
|
||
origin: '丞相属官,两员',
|
||
rank: '千石', // ⚠ 是「千石」不是「比千石」——两见证一致,原文无「比」字
|
||
rankDerived: false,
|
||
rankNote: '原文作「秩千石」,【无「比」字】。两个见证一致。前一轮抠取曾误作「比千石」,已订正。',
|
||
duty: '(本表未记职掌)',
|
||
quote: '有兩長史。秩千石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'一个「比」字差一级。此条曾被误抄为「比千石」,本轮两个见证逐字确认均作「秩千石」。' +
|
||
'⚠ 又:本卷记「有長史,秩千石」的【不止丞相】——太尉/大司马条、前后左右将军条各有一句' +
|
||
'「有長史,秩千石」。所以「长史秩千石」不是丞相长史独有,引用时必须说清是哪个府的长史。',
|
||
},
|
||
{
|
||
id: 'sizhi',
|
||
name: '丞相司直',
|
||
aliases: ['司直'],
|
||
era: 'xihan',
|
||
origin: '武帝元狩五年初置',
|
||
rank: '比二千石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌佐丞相举不法',
|
||
quote: '武帝元狩五年初置司直。秩比二千石。掌佐丞相舉不法。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '「比二千石」,非「二千石」。本条在本表中系于丞相条内,不另立条。两个见证一字不差。',
|
||
},
|
||
{
|
||
id: 'taiwei',
|
||
name: '太尉',
|
||
aliases: [],
|
||
era: 'xihan',
|
||
origin: '秦官。武帝建元二年省',
|
||
rank: '', // ⚠ 本表不记太尉秩石,只记印绶(两见证一致)
|
||
rankDerived: false,
|
||
rankNote: '本表只记「金印紫綬」,未记秩石。',
|
||
duty: '掌武事',
|
||
quote: '太尉秦官。金印紫綬。掌武事。武帝建元二年省。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '西汉太尉屡置屡省,非常设。本表未记其秩石。两个见证一字不差。',
|
||
},
|
||
{
|
||
id: 'dasima',
|
||
name: '大司马',
|
||
aliases: ['大司馬'],
|
||
era: 'xihan',
|
||
origin: '武帝元狩四年初置,以冠将军之号;成帝绥和元年赐金印紫绶、置官属、去将军',
|
||
rank: '', // 「禄比丞相」是俸禄比拟,不是秩石名目 → 留空
|
||
rankDerived: false,
|
||
rankNote: '本表作「祿比丞相」——那是【俸禄比拟】,不是秩石名目,故 rank 留空,不许写成「万石」。',
|
||
duty: '(本表未以职掌语记之,只记印绶、官属与沿革)',
|
||
// ⚠ 两本异文:见证 A 作「綏和元年【初】賜大司馬金印紫綬」,见证 B 无「初」字。
|
||
// 本表取保守读法(不带「初」),异文记在 variant。详见文件头「两本异文,未决」。
|
||
// 省略处是「宣帝地節三年置大司馬。不冠將軍。亦無印綬官屬。」——用「……」标出,不作暗省
|
||
quote: '元狩四年初置大司馬。以冠將軍之號。……成帝綏和元年賜大司馬金印紫綬。置官屬。祿比丞相。去將軍。',
|
||
variant:
|
||
'「成帝綏和元年賜大司馬金印紫綬」一句,见证 A(漢川草廬)作「成帝綏和元年【初】賜大司馬金印紫綬」,' +
|
||
'多一「初」字;见证 B(ctext)无。两本异文,未决——本表取不带「初」的保守读法。',
|
||
source: SRC,
|
||
confidence: '需核实', // 「初」字两本异文,未决
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 本条有【两本异文,未决】:「綏和元年(初)賜大司馬金印紫綬」的「初」字,一个见证有、一个没有。' +
|
||
'本表取不带「初」的保守读法,但这【不是判定 A 错】——请以中华书局点校本复核。' +
|
||
'⚠ 又:本表上一版曾断言「原文无『初』字,前一轮误增,已订正」——那是把一个见证的读法当成了原文,' +
|
||
'不许复活这个说法。' +
|
||
'大司马本冠于将军号上,成帝绥和元年才去将军号成为独立官;「祿比丞相」是俸禄比拟,不是秩石。',
|
||
},
|
||
{
|
||
id: 'yushi_dafu',
|
||
name: '御史大夫',
|
||
aliases: ['御史大夫'],
|
||
era: 'xihan',
|
||
origin: '秦官。成帝绥和元年更名大司空;哀帝建平二年复为御史大夫,元寿二年复为大司空',
|
||
rank: '', // ⚠⚠ 班固正文【不记】御史大夫秩石。注里的「中二千石」不进 rank
|
||
rankDerived: false,
|
||
rankNote:
|
||
'班固正文只记「位上卿、銀印青綬」,【未记秩石】。' +
|
||
'✗ 不许把「中二千石」写进 rank,两条独立理由:' +
|
||
'(1)【结构】御史大夫在本卷正文段序中排第 ③,在 ⑦ 太常【之前】(中间隔着太傅、太师太保、' +
|
||
'前后左右将军三段),根本不在「自太常至執金吾,秩皆中二千石」这句总述的范围内;' +
|
||
'(2)【正文 vs 注】「御史大夫秩中二千石」确实出现在本卷,但它在【臣瓚注引《茂陵書》】里,' +
|
||
'不是班固正文——只收正文的见证 B 里没有这一句,可证其为注。rank 只收正文。',
|
||
duty: '掌副丞相',
|
||
quote: '御史大夫秦官。位上卿。銀印青綬。掌副丞相。',
|
||
source: SRC,
|
||
confidence: '原文明载', // 正文读法两见证一致;不确定的是注,不是正文
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 关于「御史大夫中二千石」,必须【同时】说清两件事,少一件都会翻车:' +
|
||
'① 班固【正文】未记御史大夫秩石,只写「位上卿、銀印青綬」——这是两个见证一致的。' +
|
||
'② 但「中二千石」这四个字【本卷确实有】:御史大夫条下有「臣瓚曰:茂陵書御史大夫秩中二千石」。' +
|
||
'那是【注引已佚的《茂陵書》】,不是班固正文,本表不采(注不进 rank),且《茂陵書》已佚无从覆核。' +
|
||
'✗ 不许再说「中二千石本表无据」——本表上一版就是这么说的,错了:一翻本卷就能翻到那四个字,' +
|
||
'说「无据」反而会把本表自己的可信度赔进去。准确说法是「注有、正文无,本表只收正文」。' +
|
||
'又:结构上「自太常至執金吾」的范围也够不到它(它排在太常之前)。',
|
||
},
|
||
{
|
||
id: 'yushi_zhongcheng',
|
||
name: '御史中丞',
|
||
aliases: ['中丞', '御史长史', '御史長史'],
|
||
era: 'xihan',
|
||
origin: '御史大夫两丞之一。哀帝元寿二年更名御史长史',
|
||
rank: '千石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '在殿中兰台,掌图籍秘书,外督部刺史,内领侍御史员十五人,受公卿奏事,举劾按章',
|
||
quote: '有兩丞。秩千石。一曰中丞。在殿中蘭臺。掌圖籍祕書。外督部刺史。內領侍御史員十五人。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'「外督部刺史、内领侍御史」——中丞秩千石而督秩六百石的刺史(本表:部刺史「秩六百石,員十三人」,' +
|
||
'成帝绥和元年更名牧、秩二千石),且刺史所察者为二千石郡守。以卑临尊是汉代的常态,秩石不等于实权。' +
|
||
'⚠ 引文在「內領侍御史員十五人」处止,原文其下尚有「受公卿奏事。舉劾按章。」——已录入 duty,未入引文(最小必要引用)。',
|
||
},
|
||
{
|
||
id: 'dasikong',
|
||
name: '大司空',
|
||
aliases: ['大司空', '司空'],
|
||
era: 'xihan',
|
||
origin: '成帝绥和元年由御史大夫更名;哀帝建平二年复为御史大夫,元寿二年复为大司空',
|
||
rank: '', // 「禄比丞相」同上,不是秩石
|
||
rankDerived: false,
|
||
rankNote: '本表作「祿比丞相」,是俸禄比拟,不是秩石名目,故留空。',
|
||
duty: '官职如故(即职掌同御史大夫)',
|
||
// ⚠ 两本异文:见证 B 作「更名大司空,【金印紫綬】,祿比丞相……」,见证 A 无这四字。
|
||
// 本表取保守读法(不带这四字),异文记在 variant。
|
||
quote: '成帝綏和元年更名大司空。祿比丞相。置長史如中丞。官職如故。',
|
||
variant:
|
||
'见证 B(ctext)作「成帝綏和元年更名大司空,【金印紫綬】,祿比丞相,置長史如中丞,官職如故」,' +
|
||
'多「金印紫綬」四字;见证 A(漢川草廬)无。两本异文,未决——本表取不带这四字的保守读法。' +
|
||
'⚠ 本表上一版把「金印紫綬」写进了引文并标「原文明载」——那是单见证读法当定论,已降级为「需核实」。',
|
||
source: SRC,
|
||
confidence: '需核实', // 「金印紫綬」四字两本异文,未决
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 本条有【两本异文,未决】:「金印紫綬」四字一个见证有、一个没有。本表取保守读法(不带),' +
|
||
'但这不是判定 B 错——请以中华书局点校本复核。' +
|
||
'⚠ 时代:自元寿二年(前 1)以后为大司空,东汉三公作司空。拿「御史大夫」当东汉官名是时代错置。',
|
||
},
|
||
|
||
// ── 九卿 + 执金吾:「自太常至執金吾」总述句覆盖的【十条】,全部收齐 ──
|
||
// ⚠ 这十条是【一个整体】。收齐的目的是让「自太常至執金吾」的范围可以被【数出来】,
|
||
// 而不是靠印象相信。少收一条,这个范围就又变回一句需要读者信任我们的话。
|
||
// 十条的次序就是本卷正文的段序,不许重排。
|
||
{
|
||
id: 'taichang',
|
||
name: '奉常、太常',
|
||
aliases: ['太常', '奉常', '秩宗'],
|
||
era: 'xihan',
|
||
origin: '秦官。景帝中六年更名太常。王莽改太常曰秩宗',
|
||
rank: '中二千石',
|
||
rankDerived: true, // 端点,被总述句点名 → 但仍非本条直书
|
||
rankNote:
|
||
'⚠ 秩石【不在本条】。奉常/太常条本身不写秩石(两个见证一致)。' +
|
||
'中二千石出自紧接「中尉(執金吾)」条之后、自成一段的总述句' +
|
||
'「自太常至執金吾,秩皆中二千石,丞皆千石。」——太常是这句【点名的起点】,' +
|
||
'故可靠性高于范围内未点名的诸卿。',
|
||
duty: '掌宗庙礼仪',
|
||
quote: '奉常秦官。掌宗廟禮儀。有丞。景帝中六年更名太常。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '原文明载', // 端点,被总述句点名
|
||
verified: V,
|
||
caveat:
|
||
'秩石来自总述句「自太常至執金吾」,【不是本条直书】。太常是该句点名的起点,故此条秩石可靠。丞千石。' +
|
||
'又:「王莽改太常曰秩宗」一句在本卷系于【博士条】末尾,不在奉常条内。',
|
||
},
|
||
{
|
||
id: 'langzhongling',
|
||
name: '郎中令、光禄勋',
|
||
aliases: ['光禄勋', '光祿勳', '郎中令'],
|
||
era: 'xihan',
|
||
origin: '秦官。武帝太初元年更名光禄勋',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote:
|
||
'⚠ 秩石【不在本条】,且郎中令【未被总述句点名】。它是靠「条目次序在太常与執金吾之间」' +
|
||
'(本卷正文段序第 ⑧,在 ⑦ 太常与 ⑯ 執金吾之间)才套进「自太常至執金吾,秩皆中二千石」的' +
|
||
'——这是【总述句 + 条目次序】的推导,不是原文直书。故 confidence 标「需核实」。',
|
||
duty: '掌宫殿掖门户',
|
||
quote: '郎中令秦官。掌宮殿掖門戶。有丞。武帝太初元年更名光祿勳。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实', // 秩石靠推导,非本条直书
|
||
verified: V,
|
||
caveat: '秩石系由总述句加条目次序推出,本条未直书。用此条秩石时必须一并说明推导链。',
|
||
},
|
||
{
|
||
id: 'weiwei',
|
||
name: '卫尉',
|
||
aliases: ['衛尉', '衞尉', '中大夫令'],
|
||
era: 'xihan',
|
||
origin: '秦官。景帝初更名中大夫令,后元年复为卫尉',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑨)。',
|
||
duty: '掌宫门卫屯兵',
|
||
quote: '衛尉秦官。掌宮門衛屯兵。有丞。景帝初更名中大夫令。後元年復為衛尉。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
// ⚠ 上下卷矛盾 —— 本轮已【目验下卷】确认,不再是传闻
|
||
caveat:
|
||
'⚠ 上下卷矛盾,【本轮已目验下卷确认,未解决也不许调和】:' +
|
||
'本表(上卷)作「景帝初更名中大夫令。後元年復為衛尉」(后元年=前 143);' +
|
||
'而下卷(公卿年表)在景帝中六年(前 144)一栏作「中大夫令直不疑更為衞尉」,差一年。' +
|
||
'下卷同栏还有「奉常利更為太常」「廷尉瑕更為大理」,与上卷「景帝中六年更名太常/更名大理」' +
|
||
'对得上——可证下卷那一栏确系【中六年】,故矛盾是真的,不是错栏。' +
|
||
'本条只录上卷原文,【不采下卷年份】,也不替两卷调和。要用精确年份请先目验中华书局点校本两卷。' +
|
||
'(又:秩石亦系推导,非本条直书。)',
|
||
},
|
||
{
|
||
id: 'taipu',
|
||
name: '太仆',
|
||
aliases: ['太僕', '太仆'],
|
||
era: 'xihan',
|
||
origin: '秦官',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑩)。',
|
||
duty: '掌舆马',
|
||
quote: '太僕秦官。掌輿馬。有兩丞。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat:
|
||
'秩石系由总述句加条目次序推出,本条未直书。' +
|
||
'本条收入本表的理由是【让「自太常至執金吾」的范围可以被数出来】:它是范围内的第 ⑩ 段。' +
|
||
'又:本表另记「中太僕掌皇太后輿馬,不常置」,与太仆非一官。',
|
||
},
|
||
{
|
||
id: 'tingwei',
|
||
name: '廷尉',
|
||
aliases: ['大理', '作士'],
|
||
era: 'xihan',
|
||
origin: '秦官。景帝中六年更名大理,武帝建元四年复为廷尉,哀帝元寿二年复为大理。王莽改曰作士',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑪)。',
|
||
duty: '掌刑辟',
|
||
// 省略处是「宣帝地節三年初置左右平。秩皆六百石。」——另立条(tingwei_ping),故用「……」标出
|
||
quote: '廷尉秦官。掌刑辟。有正、左右監。秩皆千石。景帝中六年更名大理。武帝建元四年復為廷尉。……哀帝元壽二年復為大理。王莽改曰作士。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat: '秩石系由总述句加条目次序推出,本条未直书。廷尉自身的秩石与其属官正/左右监的「秩皆千石」不是一回事,别混。',
|
||
},
|
||
{
|
||
id: 'dianke',
|
||
name: '典客、大鸿胪',
|
||
aliases: ['典客', '大鸿胪', '大鴻臚', '大行令', '典乐', '典樂'],
|
||
era: 'xihan',
|
||
origin: '秦官。景帝中六年更名大行令,武帝太初元年更名大鸿胪。王莽改大鸿胪曰典乐',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑫)。',
|
||
duty: '掌诸归义蛮夷',
|
||
quote: '典客秦官。掌諸歸義蠻夷。有丞。景帝中六年更名大行令。武帝太初元年更名大鴻臚。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat:
|
||
'秩石系由总述句加条目次序推出,本条未直书。' +
|
||
'⚠ 本卷有两个「大行令」:一是景帝中六年典客更名的大行令(本条);二是武帝太初元年' +
|
||
'「更名行人為大行令」的大行令,那是大鸿胪的【属官】。两者不是一官,别混。',
|
||
},
|
||
{
|
||
id: 'zongzheng',
|
||
name: '宗正',
|
||
aliases: ['宗正', '宗伯'],
|
||
era: 'xihan',
|
||
origin: '秦官。平帝元始四年更名宗伯。王莽并其官于秩宗',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑬)。',
|
||
duty: '掌亲属',
|
||
quote: '宗正秦官。掌親屬。有丞。平帝元始四年更名宗伯。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat: '秩石系由总述句加条目次序推出,本条未直书。「更名宗伯」是平帝元始四年事,与太常之改称「秩宗」(王莽)不是一回事。',
|
||
},
|
||
{
|
||
id: 'zhisu_neishi',
|
||
name: '治粟内史、大司农',
|
||
aliases: ['治粟內史', '治粟内史', '大司农', '大司農', '大农令', '大農令', '羲和', '纳言', '納言'],
|
||
era: 'xihan',
|
||
origin: '秦官。景帝后元年更名大农令,武帝太初元年更名大司农。王莽改大司农曰羲和,后更为纳言',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑭)。',
|
||
duty: '掌谷货',
|
||
quote: '治粟內史秦官。掌穀貨。有兩丞。景帝後元年更名大農令。武帝太初元年更名大司農。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat: '秩石系由总述句加条目次序推出,本条未直书。「景帝後元年」是景帝后元元年,不是「景帝后·元年」,别断错。',
|
||
},
|
||
{
|
||
id: 'shaofu',
|
||
name: '少府',
|
||
aliases: ['少府', '共工'],
|
||
era: 'xihan',
|
||
origin: '秦官。王莽改少府曰共工',
|
||
rank: '中二千石',
|
||
rankDerived: true,
|
||
rankNote: '⚠ 同郎中令:秩石不在本条,靠总述句 + 条目次序推出(本卷正文段序第 ⑮)。',
|
||
duty: '掌山海池泽之税,以给共养',
|
||
quote: '少府秦官。掌山海池澤之稅。以給共養。有六丞。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '需核实',
|
||
verified: V,
|
||
caveat:
|
||
'秩石系由总述句加条目次序推出,本条未直书。' +
|
||
'⚠ 尚书在本表是少府的【属官】之一(「屬官有尚書、符節、太醫……」),本表【未记尚书秩石】,' +
|
||
'也没有「尚书令」这个条目——要尚书台的秩石必须换史源,不能拿本表充数。',
|
||
},
|
||
{
|
||
id: 'zhongwei',
|
||
name: '中尉、执金吾',
|
||
aliases: ['执金吾', '執金吾', '中尉'],
|
||
era: 'xihan',
|
||
origin: '秦官。武帝太初元年更名执金吾',
|
||
rank: '中二千石',
|
||
rankDerived: true, // 端点,被点名
|
||
rankNote:
|
||
'⚠ 秩石不在本条,出自【紧接本条之后】、自成一段的总述句。' +
|
||
'執金吾是该句【点名的终点】,故可靠性高于范围内未点名的诸卿。',
|
||
duty: '掌徼循京师',
|
||
quote: '中尉秦官。掌徼循京師。有兩丞、候、司馬、千人。武帝太初元年更名執金吾。',
|
||
quoteRank: '自太常至執金吾。秩皆中二千石。丞皆千石。',
|
||
source: SRC,
|
||
confidence: '原文明载', // 端点,被总述句点名
|
||
verified: V,
|
||
caveat:
|
||
'「自太常至執金吾」这句总述【紧接在本条之后、自成一段】——位置与结构自洽,' +
|
||
'这是本表中二千石一句的定位依据(本轮 curl 按段列出全卷正文后确认)。' +
|
||
'⚠ 本条的「中尉」与诸侯王国的「中尉」、与主爵中尉,是三个不同的官,别混。',
|
||
},
|
||
|
||
// ── 光禄勋属官:大夫、郎、博士 ──
|
||
{
|
||
id: 'dafu',
|
||
name: '大夫',
|
||
aliases: ['大夫'],
|
||
era: 'xihan',
|
||
origin: '郎中令(光禄勋)属官,秦官',
|
||
rank: '',
|
||
rankDerived: false,
|
||
rankNote: '「大夫」是类名,其下太中大夫/光禄大夫/谏大夫各有秩,见各条。类名本身无秩。',
|
||
duty: '掌论议。皆无员,多至数十人',
|
||
quote: '大夫掌論議。有太中大夫、中大夫、諫大夫。皆無員。多至數十人。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '「皆無員、多至數十人」是本表【明记】的员额写法,可信。本表记员额的地方极少,别处不许仿造。',
|
||
},
|
||
{
|
||
id: 'guanglu_dafu',
|
||
name: '光禄大夫',
|
||
aliases: ['光祿大夫', '中大夫'],
|
||
era: 'xihan',
|
||
origin: '本名中大夫(郎中令属官,秦官)。武帝太初元年更名中大夫为光禄大夫',
|
||
rank: '比二千石',
|
||
rankDerived: false,
|
||
rankNote: '「比二千石」,非「二千石」。',
|
||
duty: '掌论议',
|
||
quote: '太初元年更名中大夫為光祿大夫。秩比二千石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'职掌承自「大夫掌論議」一句,非本句自带。' +
|
||
'⚠ 光禄大夫虽秩比二千石,却【无印绶】:本卷末总述「凡吏秩比二千石以上,皆銀印青綬,光祿大夫無」' +
|
||
'——秩石与印绶在本表里不是一一对应的,这条是本表自己给出的反例。',
|
||
},
|
||
{
|
||
id: 'taizhong_dafu',
|
||
name: '太中大夫',
|
||
aliases: ['太中大夫'],
|
||
era: 'xihan',
|
||
origin: '郎中令属官,秦官。太初元年改制时「如故」不变',
|
||
rank: '比千石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌论议',
|
||
quote: '太中大夫秩比千石如故。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '「如故」=太初元年改制时此秩不变。职掌承自「大夫掌論議」。',
|
||
},
|
||
{
|
||
id: 'jian_dafu',
|
||
name: '谏大夫',
|
||
aliases: ['諫大夫'],
|
||
era: 'xihan',
|
||
origin: '武帝元狩五年初置',
|
||
rank: '比八百石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌论议',
|
||
quote: '武帝元狩五年初置諫大夫。秩比八百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
// ⚠ 前一轮抠取给此条 origin 补了「(非秦官)」——那是【推论】不是原文。
|
||
// 本表作「屬官有大夫、郎、謁者,皆秦官」,「皆秦官」说的是大夫/郎/谒者这三个【类】,
|
||
// 与「谏大夫武帝初置」并不直接冲突(类是秦官,此一具体职名为武帝所置)。
|
||
// 班固未作分别,我们也不作——已删去「非秦官」三字。
|
||
caveat:
|
||
'⚠ 不许写「谏大夫非秦官」。本表作「屬官有大夫、郎、謁者,皆秦官」,' +
|
||
'「皆秦官」指大夫/郎/谒者三个【类】;「武帝元狩五年初置諫大夫」指这一具体职名。' +
|
||
'班固未就二者关系作分别,这是原文的留白,不是可以替他填的空。' +
|
||
'⚠ 又:本卷末记「成帝陽朔二年除八百石、五百石秩」。此条作「比八百石」——' +
|
||
'「比八百石」是否随「八百石」同废,【本表未明言】,不许替它下结论。',
|
||
},
|
||
{
|
||
id: 'yilang_zhonglang',
|
||
name: '议郎、中郎',
|
||
aliases: ['议郎', '議郎', '中郎'],
|
||
era: 'xihan',
|
||
origin: '郎中令属官。郎,秦官',
|
||
rank: '比六百石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌守门户,出充车骑。皆无员,多至千人',
|
||
quote: '議郎、中郎秩比六百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'职掌承自「郎掌守門戶、出充車騎」一句,非本句自带。' +
|
||
'⚠ 中郎与「中郎将」不是一官:本表另记「中郎有五官、左、右三將。秩皆比二千石」——' +
|
||
'中郎将比二千石,中郎比六百石,差得远,别混。',
|
||
},
|
||
{
|
||
id: 'shilang',
|
||
name: '侍郎',
|
||
aliases: ['侍郎'],
|
||
era: 'xihan',
|
||
origin: '郎中令属官。郎,秦官',
|
||
rank: '比四百石',
|
||
rankDerived: false,
|
||
rankNote: '原文作「侍郎比四百石」,【无「秩」字】——与前句「議郎、中郎秩比六百石」共用一个「秩」。',
|
||
duty: '掌守门户,出充车骑',
|
||
quote: '侍郎比四百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '职掌承自「郎掌守門戶、出充車騎」一句。两个见证一字不差。',
|
||
},
|
||
{
|
||
id: 'langzhong',
|
||
name: '郎中',
|
||
aliases: ['郎中'],
|
||
era: 'xihan',
|
||
origin: '郎中令属官。郎,秦官',
|
||
rank: '比三百石',
|
||
rankDerived: false,
|
||
rankNote: '原文作「郎中比三百石」,【无「秩」字】,同侍郎。',
|
||
duty: '掌守门户,出充车骑',
|
||
quote: '郎中比三百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
// ⚠ 注意:dynasties.js 的【东汉】阶梯里有「郎,比三百石」。那一条【不许】拿本条当依据——
|
||
// 本条是西汉制。东汉的郎中比三百石另出《续汉书·百官志二》,两处数字碰巧相同,
|
||
// 但史源不同、时代不同。数字相同不等于可以互相引用。
|
||
caveat:
|
||
'⚠ 本条是【西汉】制。dynasties.js 的东汉阶梯亦作「郎,比三百石」,数字虽同,' +
|
||
'但那须以《续汉书·百官志二》为据,【不可拿本条充数】。数字巧合不是史源。' +
|
||
'⚠ 又:郎中与「郎中令」不是一官,与郎中三将(车、户、骑,秩皆比千石)也不是一官。',
|
||
},
|
||
{
|
||
id: 'boshi',
|
||
name: '博士',
|
||
aliases: ['博士'],
|
||
era: 'xihan',
|
||
origin: '秦官。属太常。武帝建元五年初置五经博士;宣帝黄龙元年稍增员十二人',
|
||
rank: '比六百石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌通古今。员多至数十人',
|
||
quote: '博士秦官。掌通古今。秩比六百石。員多至數十人。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'博士在本表属【太常】条下(太常条明记「又博士及諸陵縣皆屬焉」),不属光禄勋。' +
|
||
'「員多至數十人」是本表明记的员额。' +
|
||
'⚠ 分段提示:见证 A 把博士另起一段,见证 B 把它并在太常段末——【文字完全相同】,' +
|
||
'只是分段不同。分段是今人排版的产物,不是原文自带的,两者不构成异文。' +
|
||
'⚠ 又:博士秩比六百石却【无印绶】(本卷末「秩比六百石以上,皆銅印黑綬,大夫、博士、御史、謁者、郎無」)。',
|
||
},
|
||
|
||
// ── 郡 ──
|
||
{
|
||
id: 'junshou',
|
||
name: '太守、郡守',
|
||
aliases: ['太守', '郡守'],
|
||
era: 'xihan',
|
||
origin: '秦官曰郡守。景帝中二年更名太守',
|
||
rank: '二千石', // ⚠ 是「二千石」,不是「中二千石」也不是「真二千石」
|
||
rankDerived: false,
|
||
rankNote: '「二千石」——非中二千石、非真二千石、非比二千石。四者严格分开。',
|
||
duty: '掌治其郡',
|
||
quote: '郡守秦官。掌治其郡。秩二千石。有丞。邊郡又有長史。掌兵馬。秩皆六百石。景帝中二年更名太守。',
|
||
source: SRC,
|
||
confidence: '需核实', // 秩石的时代归属有编例上的歧义,见 caveat
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 时代归属存疑(【编例问题,不是抄写问题】——本轮 curl 目验确认原文就是这么写的,' +
|
||
'两个见证一字不差,存疑的不是文字而是它的含义):「秩二千石」写在「郡守,秦官,掌治其郡」' +
|
||
'这一句之内,字面无法断定它是【秦制之秩】还是【班固以汉表记汉制而顺带系于秦官名下】。' +
|
||
'本表未作分别。本表按「汉表记汉制」标 era=xihan,但这是【编例判断,不是原文明说】。' +
|
||
'做秦汉对照时此条两边都能挂,必须注明。',
|
||
},
|
||
{
|
||
id: 'juncheng',
|
||
name: '郡丞',
|
||
aliases: ['郡丞'],
|
||
era: 'xihan',
|
||
origin: '郡守属官',
|
||
rank: '六百石',
|
||
rankDerived: false,
|
||
rankNote: '秩石出自「秩皆六百石」的「皆」字——该「皆」同时覆盖郡丞与边郡长史。',
|
||
duty: '(本表未单记郡丞职掌。同句的「掌兵馬」是承边郡长史而言,不是郡丞的职掌)',
|
||
quote: '有丞。邊郡又有長史。掌兵馬。秩皆六百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 断句陷阱:「有丞,邊郡又有長史,掌兵馬,秩皆六百石」——「掌兵馬」紧承长史,' +
|
||
'【不要读成郡丞掌兵马】;「秩皆六百石」的「皆」才是覆盖丞与长史两者的。' +
|
||
'(本项目的断句作「有丞。邊郡又有長史。掌兵馬。秩皆六百石。」,责任在本项目。)',
|
||
},
|
||
{
|
||
id: 'bianjun_zhangshi',
|
||
name: '边郡长史',
|
||
aliases: ['边郡长史', '邊郡長史'],
|
||
era: 'xihan',
|
||
origin: '边郡特置,非诸郡皆有',
|
||
rank: '六百石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '掌兵马',
|
||
quote: '有丞。邊郡又有長史。掌兵馬。秩皆六百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'「邊郡【又】有長史」——只有边郡才置,不是诸郡通制。' +
|
||
'⚠ 此「长史」秩六百石,与丞相长史/太尉长史/前后左右将军长史的「秩千石」不是一回事,别混。',
|
||
},
|
||
{
|
||
id: 'duwei',
|
||
name: '都尉、郡尉',
|
||
aliases: ['都尉', '郡尉'],
|
||
era: 'xihan',
|
||
origin: '秦官曰郡尉。景帝中二年更名都尉',
|
||
rank: '比二千石', // ⚠ 太守二千石、都尉比二千石——差一级,别混
|
||
rankDerived: false,
|
||
rankNote: '「比二千石」。⚠ 与太守的「二千石」差一级,不许混。',
|
||
duty: '掌佐守典武职甲卒',
|
||
quote: '郡尉秦官。掌佐守典武職甲卒。秩比二千石。有丞。秩皆六百石。景帝中二年更名都尉。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'郡尉「比二千石」低于郡守「二千石」一级——「佐守」二字与秩石对得上,这是本表内部自洽的一处。' +
|
||
'⚠ 本表另有关都尉、农都尉、属国都尉、水衡都尉、护军都尉、驸马都尉等,与郡都尉不是一官,别混。',
|
||
},
|
||
{
|
||
id: 'duwei_cheng',
|
||
name: '郡尉丞、都尉丞',
|
||
aliases: ['都尉丞', '郡尉丞'],
|
||
era: 'xihan',
|
||
origin: '郡尉属官',
|
||
rank: '六百石',
|
||
rankDerived: false,
|
||
rankNote: '',
|
||
duty: '(本表未记职掌)',
|
||
quote: '郡尉秦官。掌佐守典武職甲卒。秩比二千石。有丞。秩皆六百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat: '本表未记职掌。⚠「秩皆六百石」的「皆」在郡尉条里只跟着一个「丞」,这个「皆」字是原文如此,不是抄错。',
|
||
},
|
||
|
||
// ── 县 ──
|
||
// ⚠⚠ 本产品踩过的坑就在这里:这两条是【西汉】制。
|
||
// 东汉制在《续汉书·百官志五》,作三等定值(令千石/长四百石/长三百石),是另一回事。
|
||
// test/shiliao.test.js 有回归断言守着:era='donghan' 的条目里不许出现这两个秩级。
|
||
{
|
||
id: 'xianling',
|
||
name: '县令',
|
||
aliases: ['縣令', '县令'],
|
||
era: 'xihan', // ⚠ 不许改成 donghan
|
||
origin: '秦官(县令、长皆秦官)',
|
||
rank: '千石至六百石',
|
||
rankDerived: false,
|
||
rankNote: '⚠【西汉】制。不许安到东汉头上。',
|
||
duty: '掌治其县。万户以上为令',
|
||
quote: '縣令、長皆秦官。掌治其縣。萬戶以上為令。秩千石至六百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'⚠⚠ 这是【西汉】制,本产品已经在此栽过一次。东汉县令的秩级在《续汉书·百官志五》,' +
|
||
'作三等定值:「大者置令一人,千石;其次置長,四百石;小者置長,三百石」——与本表的' +
|
||
'「千石至六百石」区间制【不是一回事,不可合并、不可互引】。dynasties.js 的东汉阶梯已明令禁用本条。' +
|
||
'(本轮 curl 目验:两个见证均作「萬戶以上為令。秩千石至六百石」,一字不差。)',
|
||
},
|
||
{
|
||
id: 'xianzhang',
|
||
name: '县长',
|
||
aliases: ['縣長', '县长'],
|
||
era: 'xihan', // ⚠ 不许改成 donghan
|
||
origin: '秦官(县令、长皆秦官)',
|
||
rank: '五百石至三百石',
|
||
rankDerived: false,
|
||
rankNote: '⚠【西汉】制。不许安到东汉头上。',
|
||
duty: '掌治其县。减万户为长',
|
||
quote: '減萬戶為長。秩五百石至三百石。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 原文是「【減】萬戶為長」,不是「萬戶以下」——本轮两个见证逐字确认一致。' +
|
||
'同上:这是西汉制,东汉制另在《续汉书·百官志五》,不可合并。' +
|
||
'⚠ 时限:本卷末明记「成帝陽朔二年除八百石、五百石秩」——故「五百石至三百石」是' +
|
||
'【陽朔二年(前 23)以前】的写法。本表未在县长条重申这一点,是原文的编例,不是漏抄;' +
|
||
'但拿这个区间去说成帝后期以后的县长,就是时代错置。',
|
||
},
|
||
{
|
||
id: 'xiancheng_xianwei',
|
||
name: '县丞、县尉',
|
||
aliases: ['县丞', '縣丞', '县尉', '縣尉', '长吏', '長吏'],
|
||
era: 'xihan',
|
||
origin: '县令、长属官。本表丞、尉同条并记,未分别立秩',
|
||
rank: '四百石至二百石',
|
||
rankDerived: false,
|
||
rankNote: '本表丞、尉【同秩】并记,未分别立秩。不许替它们各拆一个秩。',
|
||
duty: '(本表未分记丞、尉职掌)。丞、尉同为「长吏」',
|
||
quote: '皆有丞、尉。秩四百石至二百石。是為長吏。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 本表【未记】县尉员额。「大县二人、小县一人」之说不出本表(本轮 curl 目验全卷确认无此文),' +
|
||
'那是《续汉书·百官志》的写法,不许拿来充西汉。',
|
||
},
|
||
{
|
||
id: 'shaoli',
|
||
name: '斗食、佐史',
|
||
aliases: ['斗食', '佐史', '少吏'],
|
||
era: 'xihan',
|
||
origin: '县级百石以下之秩',
|
||
rank: '百石以下',
|
||
rankDerived: false,
|
||
rankNote: '「百石以下」是本表原文的表述,不是一个具体秩名。',
|
||
duty: '(本表未记职掌)。是为少吏',
|
||
quote: '百石以下有斗食、佐史之秩。是為少吏。',
|
||
source: SRC,
|
||
confidence: '原文明载',
|
||
verified: V,
|
||
caveat:
|
||
'长吏(丞尉,四百石至二百石)与少吏(斗食、佐史,百石以下)的分界,是本表明记的一条界线。' +
|
||
'⚠ 斗食、佐史的【月俸斛数】(斗食月奉十一斛、佐史月奉八斛)出顏師古注引《汉官名秩簿》,' +
|
||
'是唐人注引汉简式材料,【不是班固正文】,本表不收。',
|
||
},
|
||
|
||
// ── 爵 ──
|
||
{
|
||
id: 'ershideng_jue',
|
||
name: '二十等爵',
|
||
aliases: ['爵', '二十等爵', '彻侯', '徹侯', '通侯', '列侯', '关内侯', '關內侯'],
|
||
era: 'xihan',
|
||
origin: '皆秦制,以赏功劳;西汉沿用。彻侯避武帝讳曰通侯,或曰列侯',
|
||
rank: '',
|
||
rankDerived: false,
|
||
rankNote: '爵不是秩石。⚠ 秦汉是【爵—秩二元结构】,爵与秩是两套东西,不可换算、不可混为一谈。',
|
||
duty: '以赏功劳',
|
||
quote: '皆秦制。以賞功勞。徹侯金印紫綬。避武帝諱。曰通侯。或曰列侯。',
|
||
// 二十等爵的名目——这是【事实数据】,不是引文,故不加标点、不作引文处理。
|
||
// ⚠ 第三级:两个见证【一致】作「三簪裊」,本表从之(scale 用简体作「簪袅」)。
|
||
// 上一版作「簪褭」并标「两轮核查不一致」——那是 WebFetch 时代的产物,已解决。
|
||
scale: [
|
||
'公士', '上造', '簪袅', '不更', '大夫', '官大夫', '公大夫', '公乘', '五大夫', '左庶长',
|
||
'右庶长', '左更', '中更', '右更', '少上造', '大上造', '驷车庶长', '大庶长', '关内侯', '彻侯',
|
||
],
|
||
source: SRC,
|
||
confidence: '原文明载', // 二十级两个见证全部一致(上一版的「需核实」是 WebFetch 造成的,已解除)
|
||
verified: V,
|
||
caveat:
|
||
'⚠ 爵不是秩石。秦汉是爵—秩二元结构,二十等爵才是跟人走的品位序列,秩石附丽于职位。两者不可换算。' +
|
||
'⚠ 第三级用字:本项目所核【两个见证一致】作「簪裊」(见证 A 的顏師古注亦作「裊音乃了反」),' +
|
||
'scale 从之(简体作「簪袅」)。「簪褭」是常见的异体写法,本项目所核两本均未见——' +
|
||
'这是【异体字问题,不是史实问题】,两者指同一级爵。上一版「两轮核查不一致、暂从簪褭」的说法已解除。' +
|
||
'⚠ 时代:本条 era 标 xihan(本表记西汉沿用,且「避武帝諱」明属西汉),但原文明写「皆秦制」——' +
|
||
'做秦汉对照时此条两边都能挂,须注明。',
|
||
},
|
||
];
|
||
|
||
// ── 索引 ──
|
||
const BY_ERA = {};
|
||
for (const o of OFFICES) (BY_ERA[o.era] ||= []).push(o);
|
||
|
||
// 官名规范化:去掉标点与空白,简繁不作转换(aliases 里两种都列了)
|
||
const norm = (s) => String(s ?? '').replace(/[\s、,,..。]/g, '');
|
||
|
||
/**
|
||
* 按朝代 + 官名查一条官制记录。
|
||
* name 可以是本名,也可以是异名/更名后的名(如「光禄勋」找得到「郎中令、光禄勋」)。
|
||
* 查不到返回 null —— 【不许猜】,查不到就是查不到。
|
||
*/
|
||
export function findOffice(era, name) {
|
||
const list = BY_ERA[era];
|
||
if (!list || !name) return null;
|
||
const q = norm(name);
|
||
if (!q) return null;
|
||
// 先精确匹配 name / aliases / id,再退到「官名包含」的宽松匹配
|
||
for (const o of list) {
|
||
if (o.id === q) return o;
|
||
if (norm(o.name) === q) return o;
|
||
if ((o.aliases || []).some((a) => norm(a) === q)) return o;
|
||
}
|
||
for (const o of list) {
|
||
if (norm(o.name).includes(q)) return o;
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/**
|
||
* 按朝代 + 秩石查。rank 为原文用字,【精确匹配】。
|
||
* ⚠ 「二千石」不会匹配到「比二千石」/「中二千石」—— 这是【故意的】。
|
||
* 四个秩名严格分开,一个「比」字差一级。要模糊匹配请自己在调用点写清楚为什么。
|
||
*/
|
||
export function officesByRank(era, rank) {
|
||
const list = BY_ERA[era];
|
||
if (!list || !rank) return [];
|
||
const q = norm(rank);
|
||
return list.filter((o) => o.rank && norm(o.rank) === q);
|
||
}
|
||
|
||
/**
|
||
* 「注」的数据源:给一条官,返回 {source, quote, caveat, confidence, rankDerived, variant}。
|
||
*
|
||
* ⚠ caveat 是这个函数的全部价值所在——正文是推演,注是原文,而【限定语才是注的诚实】。
|
||
* 前端渲染时 caveat 不许省略;rankDerived=true 的条目尤其不许把推导链藏起来。
|
||
* ⚠ variant(两本异文)也【必须】显示:一条引文如果两个见证读法不同,
|
||
* 把它当成定论展示出去,就是本表被封存过的那个毛病。故 variant 同时并进 caveat 串,
|
||
* 即使前端只读 caveat 也漏不掉。
|
||
* 查不到返回 null。
|
||
*/
|
||
export function citeOffice(era, name) {
|
||
const o = findOffice(era, name);
|
||
if (!o) return null;
|
||
const parts = [o.caveat, o.rankNote, o.variant ? `【两本异文】${o.variant}` : ''].filter(Boolean);
|
||
return {
|
||
source: o.source,
|
||
// 有 quoteRank(秩石另出总述句)的,把两处原文一并给出,别让前端以为秩石在本条里
|
||
quote: o.quoteRank ? `${o.quote}(秩石另见总述句:${o.quoteRank})` : o.quote,
|
||
caveat: parts.join(' '),
|
||
// 前端据此决定要不要打「需核实」的标,以及要不要显示推导链
|
||
confidence: o.confidence,
|
||
rankDerived: !!o.rankDerived,
|
||
variant: o.variant || '',
|
||
verified: o.verified || '',
|
||
};
|
||
}
|
||
|
||
/** 列出某朝的全部官名(给前端做选择器用,不吐内部字段) */
|
||
export function listOffices(era) {
|
||
return (BY_ERA[era] || []).map((o) => ({
|
||
id: o.id, name: o.name, rank: o.rank, duty: o.duty,
|
||
confidence: o.confidence, rankDerived: !!o.rankDerived,
|
||
}));
|
||
}
|
||
|
||
/** 本表出现过的秩石名目(原文用字),按高低【不排序】——秩石的高低不是本表的断言 */
|
||
export const RANK_NAMES = [...new Set(OFFICES.map((o) => o.rank).filter(Boolean))];
|