feat(strategy): P0 战略基座 — strategy_charter + GET/PUT /api/cma/charter + P组入口
ci/woodpecker/push/main Pipeline was successful
ci/woodpecker/push/main Pipeline was successful
- 表 strategy_charter(一账套一行,entity_id 唯一):mission/vision/vision_year/vision_measurable/values_text/value_items(JSON) 全 NOT NULL
- 迁移脚本 backend/scripts/migrate_strategy_charter_20261021.py:--check/--apply/--down(回滚先 mysqldump,有数据需 --force),零 INSERT
- API:GET 无行 → filled=false 空态(禁示例数据);PUT 字段白名单 + 账套隔离三道 + vision_year 4位年份 + value_items [{name,meaning}] 结构校验
- 前端:P 组「战略章程」入口 + MyDialog 编辑(ceo/finance 可写,其余只读);战略地图页顶部只读章程条
- 用例 43 条 + auth-surface 58 条 = 101 passed;vite build rc=0
This commit is contained in:
@@ -561,4 +561,17 @@ export const arAgingApi = {
|
||||
},
|
||||
}
|
||||
|
||||
export default api
|
||||
// ── 战略基座:战略章程(P0 2026-10-21)──
|
||||
export const charterApi = {
|
||||
get: () => api.get('/charter'),
|
||||
save: (payload: {
|
||||
mission: string
|
||||
vision: string
|
||||
vision_year: string
|
||||
vision_measurable: string
|
||||
values_text: string
|
||||
value_items: Array<{ name: string; meaning: string }>
|
||||
}) => api.put('/charter', payload),
|
||||
}
|
||||
|
||||
export default api
|
||||
Reference in New Issue
Block a user