diff --git a/AGENTS.md b/AGENTS.md index 5ec5d48..1dca7f6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,9 +12,9 @@ Read the exact versioned docs at https://docs.expo.dev/versions/v57.0.0/ before 你是react native+expo开发工程师 做任务前,先检查问题有没有错误前提、逻辑跳跃和信息缺失。 不要迎合我,要独立判断,区分事实、预测和主观观点。 涉及数字、人物和结论时尽量核实来源。 不同意就直接指出并给出依据、风险和替代解释。 还要主动提醒我忽略的变量、成本和偏差。 需要填充图片的地方,没有图片的话,请标明这里需要填充什么图片,便于后续填充。 - +整个项目所有卡片的圆角都必须是8px,无阴影,边距间隔一致 仓库:https://gitea.baskbuddy.com/baskbuddy/mydreamjob -请在每周的周一-周五的9:20的时候拉取一次远端仓库、每天17:50提交一次git仓库,其他时间可以改动但不需要提交,说明今天新增与改动的内容,上班时间是9:00-18:00,有页面出口就一定要有入口。 +严格要求:请在每周的工作日的9:20的时候拉取一次远端仓库、每天17:50提交一次git仓库并推送到远端,每天一次,其他时间可以改动但不需要提交,说明今天新增与改动的内容,上班时间是9:00-18:00,有页面出口就一定要有入口。 > **提交之后必须推送(2026-09-18 补充)**。原约定只写了「提交」,没写「推送」,实际后果是 > **2026-09-11 至 09-17 整整一周的 12 个提交从未离开本机**,远端一直停在 09-10: diff --git a/app/(enterprise)/enterprise-chat.tsx b/app/(enterprise)/enterprise-chat.tsx index a38a19f..6c8bc63 100644 --- a/app/(enterprise)/enterprise-chat.tsx +++ b/app/(enterprise)/enterprise-chat.tsx @@ -440,7 +440,7 @@ const styles = StyleSheet.create({ retryText: { color: colors.white, fontSize: 13, fontWeight: '600' }, pendingCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 12, }, @@ -518,12 +518,12 @@ const styles = StyleSheet.create({ gap: 10, paddingVertical: 32, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, }, emptyListText: { fontSize: 13, color: colors.textSecondary }, chatListCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', marginBottom: 12, }, @@ -615,7 +615,7 @@ const styles = StyleSheet.create({ quickActionsCard: { flexDirection: 'row', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, paddingVertical: 14, }, quickAction: { @@ -629,7 +629,7 @@ const styles = StyleSheet.create({ }, emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', }, @@ -669,7 +669,7 @@ const styles = StyleSheet.create({ dataCard: { width: '100%', backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 16, alignItems: 'flex-start', }, diff --git a/app/(enterprise)/enterprise-overview.tsx b/app/(enterprise)/enterprise-overview.tsx index 455e1fa..6f36095 100644 --- a/app/(enterprise)/enterprise-overview.tsx +++ b/app/(enterprise)/enterprise-overview.tsx @@ -325,12 +325,7 @@ const styles = StyleSheet.create({ marginTop: 8, padding: 16, backgroundColor: colors.white, - borderRadius: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.06, - shadowRadius: 8, - elevation: 3, + borderRadius: 8, }, companyHeader: { flexDirection: 'row', @@ -399,14 +394,9 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, cardHeader: { flexDirection: 'row', @@ -542,14 +532,9 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, candidateIconWrap: { width: 44, diff --git a/app/(enterprise)/job-management.tsx b/app/(enterprise)/job-management.tsx index 48ce42e..67c85f0 100644 --- a/app/(enterprise)/job-management.tsx +++ b/app/(enterprise)/job-management.tsx @@ -683,7 +683,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 12, }, statIconWrap: { @@ -761,7 +761,7 @@ const styles = StyleSheet.create({ }, jobCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 12, }, @@ -1056,7 +1056,7 @@ const styles = StyleSheet.create({ }, emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', }, @@ -1096,7 +1096,7 @@ const styles = StyleSheet.create({ benefitCard: { width: '100%', backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 16, alignItems: 'flex-start', }, diff --git a/app/(enterprise)/talent-recommendation.tsx b/app/(enterprise)/talent-recommendation.tsx index 9ee8581..1373e6b 100644 --- a/app/(enterprise)/talent-recommendation.tsx +++ b/app/(enterprise)/talent-recommendation.tsx @@ -430,7 +430,7 @@ const styles = StyleSheet.create({ gap: 10, paddingVertical: 32, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, }, emptyListText: { fontSize: 13, color: colors.textSecondary }, emptyListBtn: { @@ -538,7 +538,7 @@ const styles = StyleSheet.create({ }, candidateCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 12, }, @@ -666,7 +666,7 @@ const styles = StyleSheet.create({ }, poolCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 4, }, @@ -712,7 +712,7 @@ const styles = StyleSheet.create({ }, emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', }, @@ -752,7 +752,7 @@ const styles = StyleSheet.create({ actionCard: { width: '100%', backgroundColor: colors.actionLight, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 16, alignItems: 'flex-start', @@ -790,7 +790,7 @@ const styles = StyleSheet.create({ dataCard: { width: '100%', backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 16, alignItems: 'flex-start', }, diff --git a/app/(tabs)/growth.tsx b/app/(tabs)/growth.tsx index ca06c96..561995f 100644 --- a/app/(tabs)/growth.tsx +++ b/app/(tabs)/growth.tsx @@ -419,7 +419,7 @@ const styles = StyleSheet.create({ /* ---- 通用分区标题 ---- */ emptyBox: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, paddingVertical: 32, paddingHorizontal: 16, alignItems: 'center', diff --git a/app/(tabs)/jobs.tsx b/app/(tabs)/jobs.tsx index 4902451..551eff1 100644 --- a/app/(tabs)/jobs.tsx +++ b/app/(tabs)/jobs.tsx @@ -449,11 +449,6 @@ const styles = StyleSheet.create({ paddingHorizontal: 14, marginHorizontal: 8, marginTop: 4, - shadowColor: colors.shadow, - shadowOpacity: 0.06, - shadowRadius: 8, - shadowOffset: { width: 0, height: 2 }, - elevation: 2, }, searchInput: { flex: 1, diff --git a/app/(tabs)/profile.tsx b/app/(tabs)/profile.tsx index 3ef75ae..8de224e 100644 --- a/app/(tabs)/profile.tsx +++ b/app/(tabs)/profile.tsx @@ -697,7 +697,7 @@ const styles = StyleSheet.create({ statsCard: { flexDirection: 'row', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, paddingVertical: 16, marginBottom: 12, }, @@ -715,7 +715,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, paddingHorizontal: 16, paddingVertical: 16, marginBottom: 12, diff --git a/app/ability.tsx b/app/ability.tsx index 150291e..a6dd013 100644 --- a/app/ability.tsx +++ b/app/ability.tsx @@ -281,7 +281,7 @@ const styles = StyleSheet.create({ scoreCard: { flexDirection: 'row', backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 18, marginBottom: 12, borderWidth: 1, @@ -299,7 +299,7 @@ const styles = StyleSheet.create({ section: { marginTop: 16 }, emptyBox: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, paddingVertical: 28, paddingHorizontal: 16, alignItems: 'center', @@ -309,7 +309,7 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 18, fontWeight: '700', color: colors.textPrimary, marginBottom: 12 }, dimCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 10, borderWidth: 1, @@ -345,7 +345,7 @@ const styles = StyleSheet.create({ subItemScore: { width: 50, fontSize: 12, color: colors.textPrimary, textAlign: 'right' }, chartCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 16, borderWidth: 1, @@ -360,7 +360,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, diff --git a/app/appeal.tsx b/app/appeal.tsx index 1c92d0f..79900b6 100644 --- a/app/appeal.tsx +++ b/app/appeal.tsx @@ -473,7 +473,7 @@ const styles = StyleSheet.create({ retryText: { fontSize: 13, fontWeight: '600', color: colors.primaryText }, noticeCard: { backgroundColor: colors.infoLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, borderWidth: 1, @@ -490,7 +490,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, @@ -580,7 +580,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 10, + borderRadius: 8, paddingHorizontal: 14, borderWidth: 1, borderColor: colors.borderLight, diff --git a/app/assessment.tsx b/app/assessment.tsx index ec15aff..1ea13da 100644 --- a/app/assessment.tsx +++ b/app/assessment.tsx @@ -172,7 +172,7 @@ const styles = StyleSheet.create({ alignItems: 'center', justifyContent: 'space-between', backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 18, marginBottom: 16, borderWidth: 1, @@ -190,7 +190,7 @@ const styles = StyleSheet.create({ entryCard: { flexDirection: 'row', alignItems: 'center', - borderRadius: 12, + borderRadius: 8, padding: 16, }, entryIcon: { diff --git a/app/audit-report.tsx b/app/audit-report.tsx index 443c6f6..1eba15f 100644 --- a/app/audit-report.tsx +++ b/app/audit-report.tsx @@ -274,7 +274,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.success, - borderRadius: 16, + borderRadius: 8, padding: 20, }, gradeCircle: { @@ -307,7 +307,7 @@ const styles = StyleSheet.create({ kpiCard: { width: '48%', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 12, }, @@ -326,7 +326,7 @@ const styles = StyleSheet.create({ kpiChange: { fontSize: 12, fontWeight: '600', marginLeft: 3 }, chartCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, }, chartGap: { height: 12 }, diff --git a/app/candidate-detail.tsx b/app/candidate-detail.tsx index 4e8f066..cddfda9 100644 --- a/app/candidate-detail.tsx +++ b/app/candidate-detail.tsx @@ -390,14 +390,9 @@ const styles = StyleSheet.create({ }, infoCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, infoHeader: { flexDirection: 'row', @@ -434,7 +429,7 @@ const styles = StyleSheet.create({ matchBox: { alignItems: 'center', backgroundColor: colors.successLight, - borderRadius: 12, + borderRadius: 8, paddingHorizontal: 12, paddingVertical: 8, }, @@ -475,7 +470,7 @@ const styles = StyleSheet.create({ }, scoreCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 20, marginBottom: 16, flexDirection: 'row', @@ -507,14 +502,9 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, cardTitle: { fontSize: 16, @@ -650,7 +640,7 @@ const styles = StyleSheet.create({ salaryBox: { marginTop: 12, padding: 14, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.infoLight, }, salaryLabel: { diff --git a/app/chat/[id].tsx b/app/chat/[id].tsx index 2d9c118..b677740 100644 --- a/app/chat/[id].tsx +++ b/app/chat/[id].tsx @@ -579,7 +579,7 @@ const styles = StyleSheet.create({ cardBase: { width: 260, backgroundColor: colors.white, - borderRadius: 10, + borderRadius: 8, padding: 12, marginTop: 6, }, @@ -634,7 +634,7 @@ const styles = StyleSheet.create({ cardOffer: { width: 260, backgroundColor: colors.actionLight, - borderRadius: 10, + borderRadius: 8, padding: 12, marginTop: 6, }, diff --git a/app/enterprise-certification.tsx b/app/enterprise-certification.tsx index b9879bf..0819f73 100644 --- a/app/enterprise-certification.tsx +++ b/app/enterprise-certification.tsx @@ -269,7 +269,7 @@ const styles = StyleSheet.create({ topCard: { margin: 12, backgroundColor: colors.primary, - borderRadius: 16, + borderRadius: 8, padding: 20, }, topHeader: { flexDirection: 'row', alignItems: 'center', marginBottom: 16 }, @@ -298,7 +298,7 @@ const styles = StyleSheet.create({ formCard: { marginHorizontal: 12, backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 20, }, formTitle: { fontSize: 16, fontWeight: '700', color: colors.textPrimary, marginBottom: 16 }, @@ -326,7 +326,7 @@ const styles = StyleSheet.create({ successCard: { marginHorizontal: 12, backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 32, alignItems: 'center', }, @@ -343,7 +343,7 @@ const styles = StyleSheet.create({ pendingCard: { marginHorizontal: 12, backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 32, alignItems: 'center', }, diff --git a/app/holland-result.tsx b/app/holland-result.tsx index 58da1c5..25782bf 100644 --- a/app/holland-result.tsx +++ b/app/holland-result.tsx @@ -312,7 +312,7 @@ const styles = StyleSheet.create({ headerTitle: { fontSize: 17, fontWeight: '700', color: colors.textPrimary }, body: { padding: 16, paddingBottom: 32 }, heroCard: { - borderRadius: 16, + borderRadius: 8, padding: 20, flexDirection: 'row', alignItems: 'center', @@ -327,7 +327,7 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 18, fontWeight: '700', color: colors.textPrimary, marginBottom: 12 }, typeCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 10, borderWidth: 1, @@ -356,7 +356,7 @@ const styles = StyleSheet.create({ careerTagText: { fontSize: 12, color: colors.primaryText }, jobCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, @@ -385,7 +385,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, diff --git a/app/holland.tsx b/app/holland.tsx index 4c687ee..e769bde 100644 --- a/app/holland.tsx +++ b/app/holland.tsx @@ -180,7 +180,7 @@ const styles = StyleSheet.create({ retryText: { fontSize: 13, fontWeight: '600', color: colors.primaryText }, heroCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', marginBottom: 20, @@ -264,7 +264,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, }, featureIcon: { @@ -292,7 +292,7 @@ const styles = StyleSheet.create({ }, advantageCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, }, advantageTitle: { diff --git a/app/holland/question.tsx b/app/holland/question.tsx index 6efd523..4897a9e 100644 --- a/app/holland/question.tsx +++ b/app/holland/question.tsx @@ -203,7 +203,7 @@ const styles = StyleSheet.create({ body: { padding: 16, paddingBottom: 32 }, dimCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, @@ -244,7 +244,7 @@ const styles = StyleSheet.create({ }, questionCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 24, marginBottom: 12, borderWidth: 1, diff --git a/app/hr-evaluation.tsx b/app/hr-evaluation.tsx index fd0398f..aaeeac0 100644 --- a/app/hr-evaluation.tsx +++ b/app/hr-evaluation.tsx @@ -336,7 +336,7 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 18, marginBottom: 12, borderWidth: 1, @@ -361,7 +361,7 @@ const styles = StyleSheet.create({ scoreIcon: { alignItems: 'center', justifyContent: 'center' }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, @@ -369,7 +369,7 @@ const styles = StyleSheet.create({ }, chartCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, @@ -404,7 +404,7 @@ const styles = StyleSheet.create({ sectionHeader: { marginBottom: 10, marginTop: 4 }, emptyBox: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, paddingVertical: 28, paddingHorizontal: 16, alignItems: 'center', @@ -414,7 +414,7 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 16, fontWeight: '700', color: colors.textPrimary }, reviewCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, diff --git a/app/interview-score.tsx b/app/interview-score.tsx index cae5a6e..cf16c0c 100644 --- a/app/interview-score.tsx +++ b/app/interview-score.tsx @@ -396,7 +396,7 @@ const styles = StyleSheet.create({ }, infoCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, }, @@ -419,7 +419,7 @@ const styles = StyleSheet.create({ }, scoreCard: { backgroundColor: colors.primary, - borderRadius: 16, + borderRadius: 8, padding: 20, marginBottom: 16, flexDirection: 'row', @@ -447,14 +447,9 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, cardTitle: { fontSize: 16, @@ -571,7 +566,7 @@ const styles = StyleSheet.create({ justifyContent: 'space-between', alignItems: 'center', backgroundColor: colors.infoLight, - borderRadius: 12, + borderRadius: 8, padding: 16, }, salaryRange: { @@ -620,7 +615,7 @@ const styles = StyleSheet.create({ backgroundColor: colors.infoLight, borderWidth: 1, borderColor: colors.infoBorder, - borderRadius: 12, + borderRadius: 8, paddingHorizontal: 12, paddingVertical: 10, marginBottom: 12, diff --git a/app/interview.tsx b/app/interview.tsx index 2cc2e9a..e18827b 100644 --- a/app/interview.tsx +++ b/app/interview.tsx @@ -393,7 +393,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, @@ -413,7 +413,7 @@ const styles = StyleSheet.create({ modeDesc: { fontSize: 12, color: colors.textSecondary, marginTop: 2 }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, diff --git a/app/job-evaluations.tsx b/app/job-evaluations.tsx index 31ddff5..afb4368 100644 --- a/app/job-evaluations.tsx +++ b/app/job-evaluations.tsx @@ -549,7 +549,7 @@ const styles = StyleSheet.create({ }, scoreCard: { backgroundColor: colors.primary, - borderRadius: 16, + borderRadius: 8, padding: 20, marginBottom: 16, }, @@ -605,14 +605,9 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, cardTitle: { fontSize: 16, @@ -622,14 +617,14 @@ const styles = StyleSheet.create({ }, chartCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, alignItems: 'center', }, radarCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, alignItems: 'center', @@ -779,7 +774,7 @@ const styles = StyleSheet.create({ }, modalCard: { backgroundColor: colors.surface, - borderRadius: 14, + borderRadius: 8, padding: 18, }, modalTitle: { @@ -874,7 +869,7 @@ const styles = StyleSheet.create({ }, emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', marginTop: 8, @@ -910,7 +905,7 @@ const styles = StyleSheet.create({ tipCard: { width: '100%', backgroundColor: colors.actionLight, - borderRadius: 12, + borderRadius: 8, padding: 16, alignItems: 'flex-start', }, diff --git a/app/job-publish.tsx b/app/job-publish.tsx index 439c6b9..6cd776f 100644 --- a/app/job-publish.tsx +++ b/app/job-publish.tsx @@ -439,14 +439,9 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - shadowColor: colors.shadow, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.04, - shadowRadius: 6, - elevation: 2, }, cardTitle: { fontSize: 16, diff --git a/app/jobs/[id].tsx b/app/jobs/[id].tsx index 41a2df6..37acba5 100644 --- a/app/jobs/[id].tsx +++ b/app/jobs/[id].tsx @@ -350,14 +350,6 @@ export default function JobDetailScreen() { ); } -// 跨平台阴影 -const shadow = { - shadowColor: colors.textPrimary, - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.06, - shadowRadius: 8, - elevation: 3, -}; const styles = StyleSheet.create({ safeArea: { @@ -431,15 +423,14 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 16, - ...shadow, }, /* ---- 空态 ---- */ emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, paddingVertical: 32, paddingHorizontal: 16, marginBottom: 16, diff --git a/app/jobs/compare.tsx b/app/jobs/compare.tsx index 1123398..68e92f3 100644 --- a/app/jobs/compare.tsx +++ b/app/jobs/compare.tsx @@ -232,7 +232,7 @@ const styles = StyleSheet.create({ jobCard: { flex: 1, padding: 12, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.surface, borderWidth: StyleSheet.hairlineWidth, borderColor: colors.borderLight, @@ -252,7 +252,7 @@ const styles = StyleSheet.create({ }, sectionTitle: { fontSize: 15, fontWeight: '500', color: colors.textPrimary }, card: { - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.surface, borderWidth: StyleSheet.hairlineWidth, borderColor: colors.borderLight, diff --git a/app/jobs/offer-compare.tsx b/app/jobs/offer-compare.tsx index 2d33059..bc26fc8 100644 --- a/app/jobs/offer-compare.tsx +++ b/app/jobs/offer-compare.tsx @@ -400,7 +400,7 @@ const styles = StyleSheet.create({ offerCard: { width: 150, padding: 14, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.white, borderWidth: 1, borderColor: colors.border, @@ -448,7 +448,7 @@ const styles = StyleSheet.create({ /* ---- 通用卡片与分区标题 ---- */ card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 12, }, @@ -577,7 +577,7 @@ const styles = StyleSheet.create({ /* ---- AI 建议 ---- */ aiCard: { marginTop: 12, - borderRadius: 12, + borderRadius: 8, padding: 16, }, aiHeader: { diff --git a/app/jobs/rank.tsx b/app/jobs/rank.tsx index 177485a..53d9a76 100644 --- a/app/jobs/rank.tsx +++ b/app/jobs/rank.tsx @@ -460,7 +460,7 @@ const styles = StyleSheet.create({ /* ---- 综合排名卡片 ---- */ rankCard: { backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.primaryBorder, @@ -523,7 +523,7 @@ const styles = StyleSheet.create({ /* ---- 分区 ---- */ section: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 16, }, @@ -628,7 +628,7 @@ const styles = StyleSheet.create({ }, emptyCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 28, alignItems: 'center', }, @@ -667,7 +667,7 @@ const styles = StyleSheet.create({ }, progressCard: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 20, marginTop: 16, }, diff --git a/app/jobs/weight-settings.tsx b/app/jobs/weight-settings.tsx index 5066fba..eae6edd 100644 --- a/app/jobs/weight-settings.tsx +++ b/app/jobs/weight-settings.tsx @@ -198,7 +198,7 @@ const styles = StyleSheet.create({ alignItems: 'center', justifyContent: 'space-between', padding: 16, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.primaryLight, }, summaryCardWarn: { backgroundColor: colors.dangerLight }, @@ -219,7 +219,7 @@ const styles = StyleSheet.create({ templateCard: { width: 140, padding: 12, - borderRadius: 10, + borderRadius: 8, backgroundColor: colors.surface, borderWidth: StyleSheet.hairlineWidth, borderColor: colors.borderLight, @@ -227,7 +227,7 @@ const styles = StyleSheet.create({ templateName: { fontSize: 14, fontWeight: '500', color: colors.textPrimary, marginBottom: 4 }, templateDesc: { fontSize: 11, color: colors.textSecondary }, dimensionCard: { - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.surface, borderWidth: StyleSheet.hairlineWidth, borderColor: colors.borderLight, diff --git a/app/legal.tsx b/app/legal.tsx index ff957ae..accf5d1 100644 --- a/app/legal.tsx +++ b/app/legal.tsx @@ -424,7 +424,7 @@ const styles = StyleSheet.create({ }, emptyHint: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, paddingVertical: 28, alignItems: 'center', gap: 8, diff --git a/app/legal/template.tsx b/app/legal/template.tsx index b7f263f..1ddc808 100644 --- a/app/legal/template.tsx +++ b/app/legal/template.tsx @@ -106,7 +106,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', padding: 16, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.white, marginBottom: 12, }, @@ -126,7 +126,7 @@ const styles = StyleSheet.create({ }, contentCard: { padding: 16, - borderRadius: 12, + borderRadius: 8, backgroundColor: colors.white, borderWidth: 1, borderColor: colors.borderLight, diff --git a/app/onboarding.tsx b/app/onboarding.tsx index e8c2a58..7f94302 100644 --- a/app/onboarding.tsx +++ b/app/onboarding.tsx @@ -444,7 +444,7 @@ const styles = StyleSheet.create({ backgroundColor: colors.primaryLight, }, retryText: { fontSize: 13, fontWeight: '600', color: colors.primaryText }, - countdownCard: { borderRadius: 16, padding: 18, marginBottom: 12 }, + countdownCard: { borderRadius: 8, padding: 18, marginBottom: 12 }, countdownTop: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }, countdownLabel: { fontSize: 13, color: colors.textInverse, opacity: 0.9 }, countdownValueRow: { flexDirection: 'row', alignItems: 'baseline', marginTop: 6 }, @@ -477,7 +477,7 @@ const styles = StyleSheet.create({ countdownFill: { height: 8, borderRadius: 4, backgroundColor: colors.white }, groupCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, marginBottom: 10, borderWidth: 1, borderColor: colors.borderLight, @@ -517,7 +517,7 @@ const styles = StyleSheet.create({ requiredText: { fontSize: 10, color: colors.dangerText, fontWeight: '600' }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 8, borderWidth: 1, @@ -577,7 +577,7 @@ const styles = StyleSheet.create({ justifyContent: 'center', paddingHorizontal: 32, }, - modalCard: { backgroundColor: colors.white, borderRadius: 16, padding: 20 }, + modalCard: { backgroundColor: colors.white, borderRadius: 8, padding: 20 }, modalTitle: { fontSize: 16, fontWeight: '700', color: colors.textPrimary }, modalInput: { marginTop: 14, diff --git a/app/operation-rules.tsx b/app/operation-rules.tsx index b3435d7..8cc8312 100644 --- a/app/operation-rules.tsx +++ b/app/operation-rules.tsx @@ -354,7 +354,7 @@ const styles = StyleSheet.create({ card: { marginHorizontal: 12, backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, paddingHorizontal: 16, paddingVertical: 8, }, diff --git a/app/personal-data-export.tsx b/app/personal-data-export.tsx index 1b340a4..d0998cb 100644 --- a/app/personal-data-export.tsx +++ b/app/personal-data-export.tsx @@ -426,7 +426,7 @@ const styles = StyleSheet.create({ introCard: { flexDirection: 'row', backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 16, }, @@ -470,7 +470,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', }, rowBorder: { @@ -519,7 +519,7 @@ const styles = StyleSheet.create({ formatCard: { flex: 1, backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.borderLight, @@ -594,7 +594,7 @@ const styles = StyleSheet.create({ }, previewCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, }, previewTitle: { diff --git a/app/progress.tsx b/app/progress.tsx index 3fb60fe..fa4b6de 100644 --- a/app/progress.tsx +++ b/app/progress.tsx @@ -320,7 +320,7 @@ const styles = StyleSheet.create({ headerTitle: { fontSize: 17, fontWeight: '700', color: colors.textPrimary }, body: { padding: 16, paddingBottom: 32 }, statsCard: { - borderRadius: 16, + borderRadius: 8, padding: 20, marginBottom: 12, }, @@ -332,7 +332,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 12, borderWidth: 1, @@ -357,7 +357,7 @@ const styles = StyleSheet.create({ tabTextActive: { color: colors.white, fontWeight: '600' }, emptyBox: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, paddingVertical: 32, paddingHorizontal: 16, alignItems: 'center', @@ -375,7 +375,7 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 16, fontWeight: '700', color: colors.textPrimary }, companyCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, @@ -410,7 +410,7 @@ const styles = StyleSheet.create({ nextAction: { fontSize: 12, color: colors.textSecondary }, offerCard: { backgroundColor: colors.successLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, @@ -431,7 +431,7 @@ const styles = StyleSheet.create({ offerDeadline: { fontSize: 12, color: colors.actionText, marginLeft: 4 }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginTop: 8, borderWidth: 1, diff --git a/app/resume.tsx b/app/resume.tsx index e6fefb4..0accdd1 100644 --- a/app/resume.tsx +++ b/app/resume.tsx @@ -893,7 +893,7 @@ const styles = StyleSheet.create({ retryText: { fontSize: 13, fontWeight: '600', color: colors.primaryText }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, @@ -901,7 +901,7 @@ const styles = StyleSheet.create({ }, scoreCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 18, marginBottom: 12, borderWidth: 1, @@ -1014,7 +1014,7 @@ const styles = StyleSheet.create({ alignItems: 'center', marginTop: 10, backgroundColor: colors.infoLight, - borderRadius: 10, + borderRadius: 8, paddingHorizontal: 10, paddingVertical: 6, }, diff --git a/app/resume/export.tsx b/app/resume/export.tsx index a5e3060..fffd656 100644 --- a/app/resume/export.tsx +++ b/app/resume/export.tsx @@ -629,7 +629,7 @@ const styles = StyleSheet.create({ retryText: { fontSize: 13, fontWeight: '600', color: colors.primaryText }, previewCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 20, alignItems: 'center', marginBottom: 16, @@ -661,7 +661,7 @@ const styles = StyleSheet.create({ formatCard: { flex: 1, backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, alignItems: 'center', borderWidth: 1, @@ -678,7 +678,7 @@ const styles = StyleSheet.create({ templateCard: { flex: 1, backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 10, alignItems: 'center', borderWidth: 1, @@ -700,7 +700,7 @@ const styles = StyleSheet.create({ templateNameActive: { color: colors.primaryText, fontWeight: '700' }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.borderLight, diff --git a/app/settings/account-cancel.tsx b/app/settings/account-cancel.tsx index 9f517e7..0a4d6f0 100644 --- a/app/settings/account-cancel.tsx +++ b/app/settings/account-cancel.tsx @@ -235,7 +235,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', gap: 8, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, }, @@ -256,7 +256,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', }, bulletRow: { diff --git a/app/settings/delete-data.tsx b/app/settings/delete-data.tsx index 4ca382e..006061d 100644 --- a/app/settings/delete-data.tsx +++ b/app/settings/delete-data.tsx @@ -252,7 +252,7 @@ const styles = StyleSheet.create({ }, introCard: { backgroundColor: colors.infoLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, }, @@ -272,7 +272,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', padding: 4, }, @@ -319,7 +319,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'flex-start', gap: 8, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, }, diff --git a/app/settings/privacy.tsx b/app/settings/privacy.tsx index 1bb035c..8a5872d 100644 --- a/app/settings/privacy.tsx +++ b/app/settings/privacy.tsx @@ -231,7 +231,7 @@ const styles = StyleSheet.create({ paddingBottom: 24, }, levelCard: { - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 16, }, @@ -276,7 +276,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', }, row: { @@ -321,7 +321,7 @@ const styles = StyleSheet.create({ }, explanationCard: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 8, }, diff --git a/app/settings/privacy/[id].tsx b/app/settings/privacy/[id].tsx index ac66568..af9a950 100644 --- a/app/settings/privacy/[id].tsx +++ b/app/settings/privacy/[id].tsx @@ -210,7 +210,7 @@ const styles = StyleSheet.create({ }, introCard: { backgroundColor: colors.infoLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, }, @@ -230,7 +230,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', }, row: { @@ -266,7 +266,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'flex-start', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, gap: 8, }, diff --git a/app/settings/privacy/dnd.tsx b/app/settings/privacy/dnd.tsx index 077a0b4..6162360 100644 --- a/app/settings/privacy/dnd.tsx +++ b/app/settings/privacy/dnd.tsx @@ -215,7 +215,7 @@ const styles = StyleSheet.create({ color: colors.white, }, statCard: { - borderRadius: 12, + borderRadius: 8, padding: 20, alignItems: 'center', marginBottom: 16, @@ -240,7 +240,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, overflow: 'hidden', }, row: { @@ -282,7 +282,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'flex-start', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, gap: 8, }, diff --git a/app/settings/privacy/keywords.tsx b/app/settings/privacy/keywords.tsx index f16a038..a15e914 100644 --- a/app/settings/privacy/keywords.tsx +++ b/app/settings/privacy/keywords.tsx @@ -235,7 +235,7 @@ const styles = StyleSheet.create({ color: colors.white, }, statCard: { - borderRadius: 12, + borderRadius: 8, padding: 20, alignItems: 'center', marginBottom: 16, @@ -251,7 +251,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 16, marginBottom: 16, }, @@ -309,7 +309,7 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'flex-start', backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, gap: 8, }, diff --git a/app/settings/qualifications.tsx b/app/settings/qualifications.tsx index af2f14d..3d4ab46 100644 --- a/app/settings/qualifications.tsx +++ b/app/settings/qualifications.tsx @@ -154,7 +154,7 @@ const styles = StyleSheet.create({ }, companyCard: { backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, borderWidth: 1, borderColor: colors.primaryBorder, padding: 16, @@ -179,7 +179,7 @@ const styles = StyleSheet.create({ }, card: { backgroundColor: colors.surface, - borderRadius: 12, + borderRadius: 8, borderWidth: 1, borderColor: colors.border, padding: 16, diff --git a/app/tools/salary-calculator.tsx b/app/tools/salary-calculator.tsx index 1179173..f2dcad4 100644 --- a/app/tools/salary-calculator.tsx +++ b/app/tools/salary-calculator.tsx @@ -572,7 +572,7 @@ const styles = StyleSheet.create({ body: { padding: 16, paddingBottom: 32 }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, @@ -607,7 +607,7 @@ const styles = StyleSheet.create({ selectBox: { flexDirection: 'row', alignItems: 'center' }, selectValue: { fontSize: 15, fontWeight: '600', color: colors.textPrimary, marginRight: 4 }, resultCard: { - borderRadius: 16, + borderRadius: 8, padding: 24, alignItems: 'center', marginBottom: 12, diff --git a/app/tools/skill-cloud.tsx b/app/tools/skill-cloud.tsx index 069c590..dbd9a1b 100644 --- a/app/tools/skill-cloud.tsx +++ b/app/tools/skill-cloud.tsx @@ -566,7 +566,7 @@ const styles = StyleSheet.create({ sectionTitle: { fontSize: 15, fontWeight: '700', color: colors.textPrimary, marginBottom: 10 }, cloudCard: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, paddingVertical: 8, paddingHorizontal: 4, borderWidth: 1, @@ -577,7 +577,7 @@ const styles = StyleSheet.create({ card: { marginTop: 16, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.borderLight, @@ -621,7 +621,7 @@ const styles = StyleSheet.create({ matchCard: { marginTop: 16, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.borderLight, @@ -670,7 +670,7 @@ const styles = StyleSheet.create({ gap: 10, paddingVertical: 32, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, borderWidth: 1, borderColor: colors.borderLight, }, @@ -696,7 +696,7 @@ const styles = StyleSheet.create({ modalBody: { paddingHorizontal: 16, paddingBottom: 12 }, pathSummary: { backgroundColor: colors.primaryLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginTop: 14, marginBottom: 4, @@ -726,7 +726,7 @@ const styles = StyleSheet.create({ detailCard: { marginTop: 12, backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 16, borderWidth: 1, borderColor: colors.successBorder, diff --git a/components/onboarding/screens/P17Reference.tsx b/components/onboarding/screens/P17Reference.tsx index ccfa27c..cb40c9c 100644 --- a/components/onboarding/screens/P17Reference.tsx +++ b/components/onboarding/screens/P17Reference.tsx @@ -80,7 +80,7 @@ const styles = StyleSheet.create({ swapText: { fontSize: 13, color: colors.primary, fontWeight: '600' }, card: { backgroundColor: colors.white, - borderRadius: 14, + borderRadius: 8, padding: 18, gap: 12, borderWidth: 1, diff --git a/components/onboarding/screens/P3Identity.tsx b/components/onboarding/screens/P3Identity.tsx index c95a904..fd9d3a6 100644 --- a/components/onboarding/screens/P3Identity.tsx +++ b/components/onboarding/screens/P3Identity.tsx @@ -70,7 +70,7 @@ export function P3Identity() { const styles = StyleSheet.create({ heading: { fontSize: 22, fontWeight: '800', color: colors.textPrimary, textAlign: 'center', marginVertical: 16 }, - card: { backgroundColor: colors.white, borderRadius: 18, padding: 18, alignItems: 'center', borderWidth: 1, borderColor: colors.border }, + card: { backgroundColor: colors.white, borderRadius: 8, padding: 18, alignItems: 'center', borderWidth: 1, borderColor: colors.border }, cardTop: { marginBottom: 16 }, cardBtn: { width: '100%', diff --git a/components/onboarding/ui/Modal.tsx b/components/onboarding/ui/Modal.tsx index 6762861..8750271 100644 --- a/components/onboarding/ui/Modal.tsx +++ b/components/onboarding/ui/Modal.tsx @@ -31,7 +31,7 @@ const styles = StyleSheet.create({ card: { width: '84%', backgroundColor: colors.white, - borderRadius: 20, + borderRadius: 8, padding: 22, maxHeight: '80%', }, diff --git a/components/resume/EditKit.tsx b/components/resume/EditKit.tsx index f8bc75d..7bdcf1f 100644 --- a/components/resume/EditKit.tsx +++ b/components/resume/EditKit.tsx @@ -176,7 +176,7 @@ const styles = StyleSheet.create({ note: { fontSize: 12, color: colors.textHint, lineHeight: 18 }, card: { backgroundColor: colors.white, - borderRadius: 16, + borderRadius: 8, padding: 16, marginBottom: 12, borderWidth: 1, diff --git a/src/components/JobCard.tsx b/src/components/JobCard.tsx index 121118e..f9f3057 100644 --- a/src/components/JobCard.tsx +++ b/src/components/JobCard.tsx @@ -49,7 +49,7 @@ export function JobCard({ job, onPress }: { job: JobSummary; onPress: () => void const styles = StyleSheet.create({ card: { backgroundColor: colors.white, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 10, borderWidth: 1, diff --git a/src/components/LegalDocScreen.tsx b/src/components/LegalDocScreen.tsx index 32b4f0f..637901b 100644 --- a/src/components/LegalDocScreen.tsx +++ b/src/components/LegalDocScreen.tsx @@ -171,7 +171,7 @@ const styles = StyleSheet.create({ }, preambleCard: { backgroundColor: colors.infoLight, - borderRadius: 12, + borderRadius: 8, padding: 14, marginBottom: 16, }, diff --git a/项目开发状态.md b/项目开发状态.md index 5ad58e6..8201cd6 100644 --- a/项目开发状态.md +++ b/项目开发状态.md @@ -1318,12 +1318,136 @@ export function clampSocialBase(city: string, value: number): number { --- +### 4.17 全站卡片圆角统一 8px + 去卡片阴影(2026-09-20 批次,接 4.16) + +#### 1. 起点:一条新增的硬规则,来自用户而非本轮排查 + +`AGENTS.md` 于 2026-09-20 14:12 新增一行(用户改动,本轮首次实现): + +> 整个项目所有卡片的圆角都必须是8px,无阴影 + +同一次编辑还把提交规则从「每天 17:50 提交」改成「**提交并推送到远端**」。两处都写进本批。 + +**为什么不能靠 `grep 'borderRadius'` 一把梭**:项目从来没有「卡片」的样式键约定 —— +同一屏里 `card` / `box` / `panel` / `section` / `wrapper` 混用,`cardBtn`(胶囊按钮)、 +`cardTag`(标签)、`cardIcon`(圆形图标底)也共用 `card` 前缀。**先立判定口径,再动手**, +否则「统一 8px」会连胶囊按钮和圆形头像一起压成方角,这是本批最大的一次性风险。 + +#### 2. 判定口径(本轮定义,后续沿用) + +| 判为「卡片」 | 判为「非卡片」 | +|---|---| +| 样式键为 `card` 或以 Card 结尾/内嵌(`scoreCard`、`emptyCard`、`preambleCard`) | 同名前缀的子件:`CardBtn`/`CardBullet`/`CardDot`/`CardBadge`/`CardIcon`/`CardWrap`/`CardTag`/`CardChip` | +| 逐条读过块体、确认是「独立承载一组内容的面板」的 17 个非 card 命名样式(`emptyBox`/`emptyList`/`emptyHint`/`searchEmpty`/`pathSummary`/`section`/`cardBase`/`cardOffer`/`salaryBox`/`draftBanner`/`matchBox`/`aiTip`) | 按钮、标签、chip、输入框、Tab、列表行(`row`/`*Item`)、头像与圆点 | + +**圆 / 胶囊排除规则**:`半径 × 2 ≥ min(字面量宽, 字面量高)` 时判为圆或胶囊,**不动**。 +命中并被正确跳过的实例:`cardBtn` 48 高 / 半径 24、`radioOuter` 18×18 / 半径 9、 +`countdownCard` 60×60 / 半径 30、Holland 结果的类型序号圆标。 + +#### 3. 改动规模(`git diff` 实测,非估计) + +| 项 | 数量 | +|---|---| +| 圆角半径改为 8 | **147 处**(分布于 50 个 `.tsx`/`.ts`) | +| 删除的阴影行(`shadowColor`/`shadowOffset`/`shadowOpacity`/`shadowRadius`/`elevation`) | **54 行**,7 个文件 | +| 其中:删除模块级 `const shadow = {…}` 常量 + 其 `...shadow` 展开点 | `app/jobs/[id].tsx` 共 7 行 | +| 卡片类样式总数 / 其中仍非 8px | **167 / 0** | + +改动前 `167` 个卡片类样式里,`130` 个由脚本改、`37` 个本来已是 8; +另有 `17` 个走人工复核的面板命名,`130 + 17 = 147` 与 `git diff` 行数**逐一对上**。 + +#### 4. 两个审计脚本自身的缺陷(差点改错别人的圆角,如实记录) + +审计脚本(临时工具,不入库)第一版把**单行样式块**当成普通块解析: + +```ts +modalCard: { backgroundColor: colors.white, borderRadius: 16, padding: 20 }, +``` + +这类样式在本行内就闭合了,脚本却继续往下读,**把下一个样式块的值算成了它的值**。 +后果不是漏改,是**可能取到邻居的半径然后改到邻居头上**。发现的路径是抽样复核时看到 +`countdownCard` 被报成「半径 30 / 60×60 的圆」(它实际是单行 `borderRadius: 16`, +那个 60×60 是隔壁 `countdownItem` 的),以及 `P3Identity` 的 `card` 被误判成 +「100%×48 的胶囊」而整块漏掉 —— 修掉解析后它才被正确识别并改成 8。 + +第二个缺陷更隐蔽:`shadowOffset: { width: 0, height: 2 }` 里的 `width`/`height` +被当成**元素尺寸**,于是所有带阴影的卡片都满足「半径×2 ≥ 尺寸」而被判为胶囊、 +**整类静默跳过** —— 而带阴影的恰恰是最该改的卡片。修法是取尺寸前先剔掉 `shadowOffset` +与全部 `shadow*` 行。修复后重新审计,`P3Identity` 等一批真卡片才浮出来。 + +两个缺陷都属于「**报错方式为静默漏判**」而非崩溃,所以本批不采信任何一次性的脚本输出, +而是用 `verify-radius.js` 对 `git diff -U0` 的**每一行新增半径**反查它落在哪个样式块内 +(结论:`147` 行中 `130` 行在 card 命名样式内、`17` 行在人工复核的面板白名单内、**0 行在名单外**)。 + +#### 5. 一次被拒绝的批量回滚,以及随之改走的「前向验证」 + +第一版脚本在 `app/onboarding.tsx:580` 崩溃(单行块无独立 `borderRadius` 行), +此时已写入 79 处改动。我尝试用 `git diff --name-only | grep -v AGENTS.md | xargs git checkout --` +整体回滚重来,**被权限策略拒绝**(判定为对未提交工作的不可逆本地销毁)。 + +我没有绕过它,而是改走**前向验证**:不回滚,直接证明这 79 处(连后续的 68 处)全部合法。 +事后看这个方向更对 —— 那次回滚还会连带**抹掉用户自己刚写的 `AGENTS.md` 编辑**, +而当时我并不知道那份编辑的存在(它不在我这条命令的视野里)。**教训:把「回到干净状态」 +当作修复手段之前,先确认干净状态里没有别人的东西。** + +#### 6. 刻意不动的两处(范围边界,不是遗漏) + +- `components/onboarding/ui/SliderCaptcha.tsx:294-297` 的滑块阴影**保留**: + 它是**控件**不是卡片,去阴影会让滑块与轨道在视觉上糊成一体。全库 `elevation:` / + `shadowOpacity:` 现仅此一处(已 `grep` 全库确认)。 +- `src/theme/colors.ts` 的 `shadow: '#000000'` token **保留**:`colors.test.ts:11` 仍在断言它。 + 代价是「卡片不再用阴影」这条约定**在 token 层看不出来**,属已知的文档-代码缝隙,未加注释(避免 + 为一个零引用的 token 增加维护面)。 + +#### 7. 覆盖边界:116 条「像卡片但不叫 card」的样式**未动** + +以「白/浅底 + 内边距或描边 + 圆角 ≠ 8 + 非圆非胶囊」反查,全库仍有 **116 条**这样的样式 +(口径见审计脚本注释)。逐类看过:**几乎全是按钮、标签、chip、输入框、Tab 项、列表行、头像底** +—— 它们不是卡片,压成 8 反而是错的。**这不是「差不多改完了」的余数,是本轮口径的边界**; +若将来真要把某一类纳入,需要单独一次「这一类算不算卡片」的判定,不能顺手改。 + +#### 8. 真机实测(Android 模拟器 `emulator-5554`,截图核对,非代码走查) + +| 页面 | 看什么 | 结果 | +|---|---|---| +| `jobs` 岗位列表 | 卡片原本带阴影(`searchBox` 5 行) | 已平;8px 直角;仍能与 `pageBg #F6F8F9` 区分 | +| `jobs/1` 岗位详情 | 3 张卡片 + 模块级 `shadow` 常量已删 | 已平;层级靠白底与描边区分,未塌成一片 | +| `(tabs)/profile` 求职端 | `statsCard`/`enterpriseCard` | 8px;语义色(蓝/橙/绿)未受影响 | +| `(enterprise)/enterprise-overview` | 4 张卡片共删 15 行阴影(本批最多) | 已平;数据块仍可辨认 | +| `job-publish` | `card` 删 5 行阴影 | 已平;表单分区仍清晰 | +| `tools/skill-cloud` | 4 张卡由 14 → 8 | 8px;**注:行业 Tab 行存在既有的纵向裁切/重叠,与本批无关,未追** | +| `holland-result` | 渐变横幅 + 3 张类型卡 | 8px;内部序号圆标与标签胶囊**未误伤** | +| `resume/export` | 预览卡 / 格式卡 / 模板卡 | 8px;模板缩略图内框圆角独立,未被压平 | + +**未实测**:`components/resume/EditKit.tsx`、`components/onboarding/ui/Modal.tsx`、 +`components/onboarding/screens/P3Identity.tsx`、`LegalDocScreen` 的圆角改动只有代码级验证 +(它们嵌在弹层/引导流/长文档里,深链直达需先走完前置流程),**未截图**。 + +#### 9. 本批次门槛复跑(2026-09-20 实测) + +`tsc --noEmit` **0 错误** · `eslint .` **0 error / 0 warning** · `npm test` +**26 个文件 365 例全绿** · `check-routes` **0 失效跳转** · `check-affordances` **0 处** · +`check:icons` **0 处无效图标名**(194 文件 / 1357 字形) · `check-backend-stubs` **140 个接口函数**。 + +#### 10. 本批次仍未做 + +- 第 7 条的 **116 条同名前缀样式**是否要纳入「卡片」口径(需产品/设计定夺,不擅自扩大)。 +- 4.16 第 5/6 条的两项产品定夺(「良好」取色分歧、`'1年以内'` 死值)**状态不变**。 +- 4.15/4.16 列的其余开放项**状态不变**(`companies` 全量 vs 抽样、`formatSalaryRange` 未下沉、 + `chats: 8` 与测评勋章字面量、`CITIES` / `EXPECTED_CITY_OPTIONS` 两份词表有意保留、 + 数据层 `color: string` 未收紧)。 +- **4.16 第七节列出的 A–E 五条重复声明发现**(skill-cloud 行业 Tab 6 选 3 有数据、 + `GROUP_LABEL` ≡ `SKILL_GROUP_LABEL`、发岗表单选项表未上锁、「全部行业」同音异义、 + jobs 页三个筛选 chip 落在假交互脚本盲区)**本批未实现**,已分析完,留待下一批。 + +--- + ## 五、后续增量开发建议(优先级) - **P0(上架前必做)**:~~图标替换~~ **应用图标【已完成,`878710c`,1024×1024「有职」logo】** · ~~隐私 / 协议内容填充~~ **隐私/协议草案【已存在,含 18 岁门槛,待填【待确认】占位】** · ~~EAS 初始化~~ **EAS 配置骨架【已完成,`owner` / `projectId` 两处占位符阻塞 `eas build`,需 `eas init` 注入,详见 4.5】** · ~~18 岁门槛核对~~ **18 岁门槛【已在隐私政策第六章 + 用户协议前言落地】** · ~~微信登录接入评估~~ **微信登录接入评估【已完成 → 见 `微信登录接入方案.md`,SDK 接入阻塞于微信开放平台 AppID】** · ~~启动屏接线~~ **启动屏【已完成,`expo-splash-screen` + `splash-icon.png`,需出包验证】**。 - **P0(补充 · 2026-09-15 新发现)**:① ~~页脚服务热线 / 举报监督电话待填~~ **已填 `15154608969`**,且 **`SupportFooter` 已挂在 P1Login / P2QuickLogin 两页上,页脚实际渲染**(2026-09-20 复核;4.10 第 7 条那句「无消费者 / 缺页脚组件」已撤回,见 4.14 第 7 条);**隐私政策里【待确认】的客服电话应与之对齐**(同一个号,两处别填成两个)。② ~~缺「资质证照」页~~ **页面【已完成,见 4.10】—— 四层链路齐备(`src/types/qualification.ts` / `fetchQualifications` / `useQualifications` / `app/settings/qualifications.tsx`),设置页与「关于我们」页两处入口已恢复,三类证照的补图占位已逐张标明;**但证照的真实编号 / 发证机关 / 有效期 / 证照图仍全部待法务与资质方提供**(材料到位后只改 `MOCK_QUALIFICATIONS` 字段 + 更新测试断言),**未编造任何证件编号**。③ **注册引导链 + 简历导出的真机手工验证均未执行**(见 4.3 / 4.4 末条)。 - **P1(核心差异化)**:~~微信登录接入方案~~ **微信登录接入方案【已落文档,真实 SDK 接入阻塞于微信开放平台移动应用申请】** · ~~企业端快捷入口话术统一~~ **企业端快捷入口话术统一【已完成,6 处 label 对齐规范词;含沟通页快捷操作 onPress 接线,tsc/eslint 0 问题】** · ~~付费法律服务支付~~ **付费法律服务支付【已完成:mock 支付闭环,选套餐→结算→模拟支付→会员激活持久化,tsc/eslint 0 问题】** · ~~通关小游戏 7 关内容~~ **通关小游戏 7 关内容【已完成:结构原已建成,本次增厚至 7 关 22 题,tsc/eslint 0 问题】**。 -- **P2(打磨)**:~~技术债清理~~ **技术债已清理(8 处 `any` → 明确类型,`eslint` 0 warning)** · ~~死控件清零~~ **死控件已清零(22 → 0,2026-09-17,见 4.8)** · ~~假交互清零~~ **假交互已清零(37 → 0,2026-09-18,**但 4.8 当时的「已完成」结论是错的,见 4.9 首条**)** · 真实后端对接 · OTA 通道验证。 +- **P2(打磨)**:~~技术债清理~~ **技术债已清理(8 处 `any` → 明确类型,`eslint` 0 warning)** · ~~死控件清零~~ **死控件已清零(22 → 0,2026-09-17,见 4.8)** · ~~假交互清零~~ **假交互已清零(37 → 0,2026-09-18,**但 4.8 当时的「已完成」结论是错的,见 4.9 首条**)** · ~~卡片圆角统一 8px + 去阴影~~ **已完成(147 处圆角 + 54 行阴影,覆盖边界见 4.17;新增卡片须从 `src/theme` 出圆角常量这一层尚未建立)** · 真实后端对接 · OTA 通道验证。 - **P1(补充 · 2026-09-20 第三批,需产品定夺)**:① **「良好」这一档在个人页与其余五处取色不同** —— `app/(tabs)/profile.tsx` 的 `DIMENSION_LEVEL.good.text` 是 `textSecondary`(灰), 而岗位评级那五处一律 `primary`(蓝)。两处不同屏、后果有限,故**未擅自统一**;